Commit Graph

28 Commits

Author SHA1 Message Date
Ken 9d118d60ce feat: wire MCPAppRenderer into ChatPanel for MCP App tool results 2026-05-26 19:39:34 +00:00
Ken 12d1df417f feat: MCPAppRenderer for inline MCP App iframes with JSON-RPC postMessage bridge 2026-05-26 19:36:28 +00:00
Ken 3723c5bf93 feat: App shell with login, session sidebar, chat panel, right panel
- Create RightPanel component with browser/artifacts tab switching
- Replace App.tsx with 3-column layout (auth loading/login/app states)
- Replace main.tsx with globals.css import (remove index.css)
- Remove Vite template files (App.css, index.css, assets/react.svg)
- Fix LoginPage.tsx FormEvent type-only import for verbatimModuleSyntax
- Fix vite.config.ts to use vitest/config for proper test property typing
- Add tests: RightPanel (10 tests), App rendering states (7 tests)
2026-05-26 19:34:07 +00:00
Ken 3b01753336 feat: chat panel with SSE streaming and tool call cards 2026-05-26 19:28:12 +00:00
Ken c24fd11f03 feat: session sidebar component with create, select, logout 2026-05-26 19:20:37 +00:00
Ken 77fe2bafd4 feat: login page component 2026-05-26 19:17:16 +00:00
Ken c24fd035eb feat: API client and hooks for auth, sessions, chat SSE, artifacts 2026-05-26 19:13:46 +00:00
Ken 5069676914 feat: global styles with Tabler dark theme, 3-column layout 2026-05-26 19:08:49 +00:00
Ken e1e001c7e0 feat: TypeScript types for sessions, artifacts, A2UI, tool calls, auth 2026-05-26 19:06:01 +00:00
Ken 64b18613e1 feat: scaffold Vite + React + TypeScript frontend 2026-05-26 19:03:56 +00:00
Ken 5ba367af2f fix: code review fixes — auth gap, path traversal, dead code, health-check timeout
- backend/app.py: add Depends(_require_auth) to /api/copilotkit endpoint (critical
  security fix — endpoint was fully unprotected; now requires valid session cookie)
- backend/app.py: move 'from ag_ui.core import RunStartedEvent' from inline function
  body to top-level imports (style consistency)
- backend/auth.py: remove dead AUTH_PASS_HASH module-level constant (verify_password
  already reads from os.environ at call time; the cached binding was unused dead code)
- backend/artifacts.py: add path traversal guards to list_artifacts, get_artifact,
  and save_artifact — resolve paths and verify they stay within ARTIFACTS_DIR
- entrypoint.sh: health-check loop now sets READY flag and exits 1 if amplifierd
  fails to start within 30s (previously fell through silently, causing 502s)
- tests/test_app.py: add TestCopilotKitAuth — verifies unauthenticated requests to
  /api/copilotkit return 401; includes note explaining why streaming is not tested here
- tests/test_structure.sh: update to reflect that Dockerfile and entrypoint.sh now
  exist (created in Tasks 7+8); convert absent-checks to presence-checks

Co-authored-by: Amplifier <amplifier@anthropic.com>
2026-05-26 18:52:12 +00:00
Ken 6be77d1a56 feat: entrypoint.sh starting all services 2026-05-26 18:43:40 +00:00
Ken 2838cff67c feat: Dockerfile with all-in-one container 2026-05-26 18:41:33 +00:00
Ken 9103b3ecf5 feat: FastAPI app with auth, AG-UI endpoint, session proxy, artifact API 2026-05-26 18:38:20 +00:00
Ken 026825ce02 feat: AG-UI adapter translating amplifierd SSE events to AG-UI protocol (with MCP App metadata passthrough) 2026-05-26 18:29:26 +00:00
Ken 8e065266ea feat: artifact storage module with per-session CRUD 2026-05-26 18:23:44 +00:00
Ken 7acad01047 feat: auth module with bcrypt password verification and session tokens 2026-05-26 18:21:18 +00:00
Ken 9b941d173d feat: add backend pyproject.toml with dependencies 2026-05-26 18:18:38 +00:00
Ken 04ae443207 chore: remove old car-help files, prepare new structure 2026-05-26 18:16:07 +00:00
Ken 4656af010e docs: implementation plans for research workbench (3 phases, 30 tasks)
Phase 1: Infrastructure (8 tasks) - Dockerfile, amplifierd, FastAPI, auth, AG-UI adapter
Phase 2: Frontend (10 tasks) - React/TS/Vite, Tabler, CopilotKit headless, SSE streaming
Phase 3: Bundle + Browser + Artifacts (12 tasks) - Amplifier bundle, researcher agent,
  AI-generated visual artifacts (Claude builds visuals style), noVNC browser panel
2026-05-26 18:01:47 +00:00
Ken dc1a3aee8b refactor: rename to research-workbench, update cloudflared to research.ampbox.io
- Renamed repo from car-help to research-workbench
- Remote now points to git.ampbox.io/ken/research-workbench
- cloudflared: research.ampbox.io (app) + vnc.ampbox.io (browser)
- Updated all references from browser.ampbox.io to research.ampbox.io
2026-05-26 16:11:46 +00:00
Ken 2bbf2c840f docs: research workbench design - generalized chat + browser + artifacts tool
Captures the architecture for generalizing car-help into a universal
research workbench powered by amplifierd + playwright-cli + noVNC.
2026-05-26 15:40:05 +00:00
Ken 7e19b740cb feat: LLM-powered search with free-text query, filter toggles, and auto-generated guide
- Search box: type anything, toggle filter pills (hybrid, price range, distance, etc.)
- Backend calls Anthropic to parse query into search params
- Playwright crawls Craigslist, CarGurus, AutoTempest with dynamic URLs
- Results scored/ranked with car-specific scoring engine
- Second Anthropic call generates a custom buying guide from actual results
- Guide sections: top picks, checklist, mechanics, negotiation, budget
- All visible live in the browser panel via noVNC
2026-05-25 23:31:19 +00:00
Ken 7e8fa0024a fix: split noVNC to separate vnc.ampbox.io host for WebSocket support
- FastAPI httpx proxy can't handle WebSocket upgrades (status 101)
- noVNC iframe now points to vnc.ampbox.io (port 6080 via cloudflared)
- App UI stays at browser.ampbox.io (port 8080 via cloudflared)
- Auto-detects local vs ampbox.io for iframe src
2026-05-25 23:17:51 +00:00
Ken f30af4aefd fix: extract real titles from Craigslist listings, add image URLs
- Parse .cl-search-result inner text for title, price, location
- Fallback to URL slug extraction for missing titles
- Capture listing images for display in UI
- AutoTempest scraper also improved with better selectors
2026-05-25 22:57:14 +00:00
Ken 8dfafcc63d feat: car-help web UI with browser view, search API, and buying guide
- FastAPI backend on port 8080 with noVNC proxy for same-origin iframe
- Split-panel UI: live browser (55%) + search/guide/saved tabs (45%)
- Car buying guide: target models, pre-purchase checklist, mechanics nearby,
  negotiation tips, budget breakdown
- Scoring/ranking engine for listings (Toyota Prius = highest)
- Docker container runs Xvfb + x11vnc + noVNC + FastAPI together
- Accessible at browser.ampbox.io via cloudflared tunnel
2026-05-25 20:34:16 +00:00
Ken f09317f95b feat: add noVNC headed mode for interactive browser sessions
- Dockerfile with Xvfb + x11vnc + noVNC for browser-in-a-URL
- search.py auto-detects DISPLAY env to run headed vs headless
- pause_for_human() function for CAPTCHA/login handoff
- Facebook Marketplace search (headed mode only, needs login)
- Updated README with both modes
2026-05-25 06:56:21 +00:00
Ken 290678635e feat: initial car search setup with Playwright crawler and sites list 2026-05-24 22:56:12 +00:00