promptlooper/backend/routers
John Lightner e42117c8ee MAESTRO: Implement export router with JSON, .env, YAML, and markdown report endpoints
Four fully authenticated endpoints at /api/export/experiments/{id}/:
- /best: Returns best config as JSON with weighted score and metadata
- /env: Flattened KEY=VALUE format with metadata comments
- /yaml: Simple YAML serialization (no external dependency)
- /report: Full markdown report with config space, top N configs,
  score distributions, token usage, and timing stats

34 tests in test_export.py covering all endpoints, auth, 404s, and helpers.
Updated test_routers.py to expect 401 (auth required) instead of 501 (stub).
2026-04-07 03:30:45 -05:00
..
__init__.py MAESTRO: Create full directory structure with placeholder files 2026-04-07 01:40:27 -05:00
admin.py MAESTRO: Scaffold all 8 router stubs in backend/routers/ with 501 placeholder endpoints 2026-04-07 02:01:11 -05:00
auth.py MAESTRO: Scaffold all 8 router stubs in backend/routers/ with 501 placeholder endpoints 2026-04-07 02:01:11 -05:00
endpoints.py MAESTRO: Implement LLM endpoints router with CRUD, test_connection, and Fernet-encrypted API key storage 2026-04-07 03:13:52 -05:00
experiments.py MAESTRO: Implement experiments router with full CRUD and sweep control endpoints 2026-04-07 03:19:43 -05:00
export.py MAESTRO: Implement export router with JSON, .env, YAML, and markdown report endpoints 2026-04-07 03:30:45 -05:00
projects.py MAESTRO: Scaffold all 8 router stubs in backend/routers/ with 501 placeholder endpoints 2026-04-07 02:01:11 -05:00
runs.py MAESTRO: Implement runs router with full CRUD, filtering, scoring, and leaderboard 2026-04-07 03:24:56 -05:00
webhooks.py MAESTRO: Scaffold all 8 router stubs in backend/routers/ with 501 placeholder endpoints 2026-04-07 02:01:11 -05:00