feat(stage14): implement REST API for research lifecycle

- POST /v1/research — start research (non-blocking, background pipeline)
- GET  /v1/research/{id} — research metadata
- GET  /v1/research/{id}/status — detailed state machine status
- GET  /v1/research/{id}/sources — sources list
- GET  /v1/research/{id}/claims — claims list
- GET  /v1/research/{id}/evidence — evidence scores
- GET  /v1/research/{id}/report — research report
- DELETE /v1/research/{id} — delete research (non-completed)
- GET  /v1/research — paginated list of all research runs

Depth budgets (quick/normal/deep) control only resource limits.
In-memory store for now, to be replaced with PostgreSQL later.
Router mounted in main.py as tag "research-api".
This commit is contained in:
NSCT Agent
2026-08-27 16:07:47 +00:00
parent a55e26f3b1
commit 4d5f6747f7
3 changed files with 1036 additions and 0 deletions

View File

@@ -111,6 +111,10 @@ def create_app() -> FastAPI:
from nsct.api.audio import router as audio_router
app.include_router(audio_router, tags=["audio"])
# Mount REST API router (Stage 14)
from nsct.api.rest_research import router as rest_research_router
app.include_router(rest_research_router, tags=["research"])
return app