promptlooper/backend/routers
John Lightner 35d72e7fa8 MAESTRO: Implement LLM endpoints router with CRUD, test_connection, and Fernet-encrypted API key storage
- Add LLMEndpoint model to models.py with encrypted api_key field
- Create encryption.py with Fernet symmetric encryption (key derived from JWT_SECRET via PBKDF2)
- Implement full endpoints router: list, get, create, update, delete + test_connection
- Test endpoint calls adapter.test_connection() and list_models()
- API keys never exposed in responses; has_api_key boolean flag added
- 25 tests in test_endpoints.py, all 444 tests passing
2026-04-07 03:13:52 -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: Scaffold all 8 router stubs in backend/routers/ with 501 placeholder endpoints 2026-04-07 02:01:11 -05:00
export.py MAESTRO: Scaffold all 8 router stubs in backend/routers/ with 501 placeholder endpoints 2026-04-07 02:01:11 -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: Scaffold all 8 router stubs in backend/routers/ with 501 placeholder endpoints 2026-04-07 02:01:11 -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