Commit graph

20 commits

Author SHA1 Message Date
John Lightner
3c78f874fb MAESTRO: Implement Dashboard page with stats, active sweeps, recent projects, and quick actions 2026-04-07 03:37:31 -05:00
John Lightner
74ccc1a8ed MAESTRO: Implement Admin page with settings, API keys, stats, and webhook management 2026-04-07 03:34:32 -05:00
John Lightner
32535a92ea MAESTRO: Build ScoreChart component with scatter, bar, and line chart types
Custom SVG-based charts with no external dependencies. Scatter plot for
score vs parameter value, bar chart for top N configs comparison, line
chart for score progression over time. Interactive tooltips, click
callbacks, chart type switching, dark mode support. 30 tests added.
2026-04-07 03:29:17 -05:00
John Lightner
1d3917a44e MAESTRO: Implement Compare page with side-by-side run comparison, config/response diffs, and score overlay
- Two-column run selectors with experiment→run cascading dropdowns and URL state sync
- Config diff with color-coded same/changed/added/removed entries using key-level comparison
- Line-level LCS response diff with added/removed/same highlighting
- Score comparison with overlaid indigo/emerald bars per scorer
- Pick Winner buttons submit human_preference score via API
- Full RunCard detail view for each run side by side
- 15 tests added (5 diff helper unit tests + 10 component integration tests)
- App.test.tsx updated to mock experiments.list for ComparePage route
2026-04-07 03:25:37 -05:00
John Lightner
e6c344d554 MAESTRO: Build RunCard expandable component with scores, prompts, responses, and stage timing
Implements RunCard.tsx with expandable card showing config summary, cache
status badge, score bars, config JSON, per-stage timing breakdown,
collapsible prompt/response sections (with copy button), and metadata footer.
26 tests added, all 310 tests pass.
2026-04-07 03:20:38 -05:00
John Lightner
59f18a11c3 MAESTRO: Extract SteeringControls into standalone component with Fork, Export, and ETA
Extracted inline SteeringControls from LivePage into standalone component.
Added Fork button (modal to clone experiment config), Export Best dropdown
(JSON/YAML/.env download), and estimated time remaining stat. LivePage
updated to import the new component. 33 tests added, all 284 tests pass.
2026-04-07 03:17:47 -05:00
John Lightner
1253994c9e MAESTRO: Extract Activity Timeline into standalone component with filter, auto-scroll, and color-coded events 2026-04-07 03:13:31 -05:00
John Lightner
cf49e9c888 MAESTRO: Extract Leaderboard into standalone component with expand, sort, and animation
Extract the inline LeaderboardTable from LivePage into a standalone
Leaderboard component with click-to-expand detail rows, sortable
columns, smooth slide-in animation for new entries, and a subtle
glow effect on the best run. 29 tests added.
2026-04-07 03:10:08 -05:00
John Lightner
16c56b13f2 MAESTRO: Implement Live Observability page with real-time WebSocket dashboard
Full LivePage implementation with 60/40 split layout:
- Left column: Activity Timeline with color-coded event cards (run.started, run.completed, new_best_found, cache_hit, run.failed), event type filtering, and auto-scroll toggle
- Right column: Leaderboard table with sortable columns, best-run highlighting, and status badges; Steering Controls with pause/resume/stop (with confirmation dialogs), progress bar, token counter, cost estimate, and cache hit rate
- WebSocket integration with exponential backoff reconnect, connection status indicator, and experiment subscription
- 35 tests covering loading/error states, WebSocket events, timeline filtering, leaderboard updates, progress tracking, and steering control interactions
2026-04-07 03:06:16 -05:00
John Lightner
7fc2a2b8c3 MAESTRO: Implement ModelSelector component with endpoint grouping, refresh, and connectivity indicators 2026-04-07 03:00:10 -05:00
John Lightner
f2e6baa56f MAESTRO: Implement PromptEditor component with Jinja2 syntax highlighting, variable sidebar, and preview
Built standalone PromptEditor with transparent-textarea overlay for syntax
highlighting of Jinja2 expressions, statements, and comments. Includes
clickable variable sidebar for insertion and preview panel with sample data
substitution. Integrated into ExperimentPage PipelineStageCard. 27 tests added.
2026-04-07 02:56:48 -05:00
John Lightner
e8ce2f016b MAESTRO: Implement Experiment Builder page with all six sections and comprehensive tests
Build the full Experiment Builder (ExperimentPage.tsx) with: basic info form,
sample data input (text/JSON/file upload), pipeline stage builder with template
variables and preview, scoring configuration with enable toggles and weight
sliders, parameter space definition (fixed/range/options types), and action
buttons (Save Draft, Run Single, Start Sweep). Supports both creating new
experiments and editing existing ones. 20 tests added.
2026-04-07 02:52:52 -05:00
John Lightner
04a96f3dc3 MAESTRO: Implement Projects page with card grid, creation modal, and comprehensive tests 2026-04-07 02:47:24 -05:00
John Lightner
0e6ae49b3c MAESTRO: Implement AuthContext provider with JWT management, session validation, and protected route redirects 2026-04-07 02:38:23 -05:00
John Lightner
060f399789 MAESTRO: Implement Login page with form validation, error handling, and guest access link 2026-04-07 02:35:34 -05:00
John Lightner
1050109777 MAESTRO: Implement Setup page with first-boot admin creation flow
- Full setup form with username, password, confirm password
- Auth detection on mount (redirects if already authenticated)
- Client-side validation (empty username, short password, mismatch)
- Server error handling (409 conflict, network errors)
- Welcoming UI with gradient background, dark mode support
- 9 new tests covering all states and error paths
- Updated App.test.tsx to handle async SetupPage rendering
- Added @testing-library/user-event dependency
2026-04-07 02:34:00 -05:00
John Lightner
43d2aafbbe MAESTRO: Create typed API client with in-memory JWT auth, fetch wrappers, and WebSocket helper 2026-04-07 02:07:03 -05:00
John Lightner
4cd0b8a1c8 MAESTRO: Initialize frontend routing with 8 placeholder page components and vitest test suite
Add SetupPage, LoginPage, DashboardPage, ProjectsPage, ExperimentPage, LivePage,
ComparePage, and AdminPage as placeholder components. Wire up react-router-dom routing
in App.tsx with BrowserRouter in main.tsx. Unknown routes redirect to dashboard.
Install vitest + @testing-library/react and add 9 routing tests. Build passes cleanly.
2026-04-07 02:03:48 -05:00
John Lightner
9e2961d648 MAESTRO: Create multi-stage Dockerfile, nginx.conf, and frontend/backend scaffolding
Three-stage Dockerfile: frontend-build (Node 20), api (Python 3.12 + uvicorn),
web (nginx 1.27). nginx.conf proxies /api and /ws to the API service with
WebSocket upgrade support. Includes backend/requirements.txt with all Python
deps, frontend scaffolding (Vite + React + TypeScript + Tailwind), and
placeholder alembic files for Docker COPY compatibility.
2026-04-07 01:44:52 -05:00
John Lightner
cb4af5f707 MAESTRO: Create full directory structure with placeholder files
Set up all directories from the spec's Project Structure section:
- backend/ with routers/, engine/adapters/, engine/scorers/, mcp/,
  websocket/, tests/ (all with __init__.py)
- frontend/src/ with pages/, components/, api/ (.gitkeep)
- docker/ (.gitkeep)
- alembic/versions/ (.gitkeep)
2026-04-07 01:40:27 -05:00