Spaces:
Running
Running
| """API routes.""" | |
| from __future__ import annotations | |
| from fastapi import APIRouter, Depends, HTTPException | |
| from app.api.dependencies import get_service | |
| from app.api.schemas import ( | |
| BatchInferRequest, | |
| EvidenceQueryRequest, | |
| OrchestrateRequest, | |
| ResetRequest, | |
| StepCandidateRequest, | |
| StepRequest, | |
| ) | |
| from app.api.service import APIService | |
| router = APIRouter() | |
| def health() -> dict[str, str]: | |
| return {"status": "ok"} | |
| def env_reset(payload: ResetRequest, service: APIService = Depends(get_service)) -> dict: | |
| try: | |
| return service.reset(**payload.model_dump(mode="json")) | |
| except ValueError as exc: | |
| raise HTTPException(status_code=422, detail=str(exc)) from exc | |
| def env_step(payload: StepRequest, service: APIService = Depends(get_service)) -> dict: | |
| return service.step(payload.model_dump(mode="json")) | |
| def env_step_candidate(payload: StepCandidateRequest, service: APIService = Depends(get_service)) -> dict: | |
| result = service.step_candidate( | |
| candidate_id=payload.candidate_id, | |
| confidence=payload.confidence, | |
| rationale_brief=payload.rationale_brief, | |
| ) | |
| if result is None: | |
| raise HTTPException(status_code=404, detail=f"Candidate {payload.candidate_id!r} is not legal in this state.") | |
| return result | |
| def env_catalog(service: APIService = Depends(get_service)) -> dict: | |
| return service.catalog() | |
| def env_state(service: APIService = Depends(get_service)) -> dict: | |
| return service.env.get_state() | |
| def env_trace(service: APIService = Depends(get_service)) -> list[dict]: | |
| return service.env.get_trace() | |
| def env_legal_actions(service: APIService = Depends(get_service)) -> list[dict]: | |
| return service.env.get_legal_actions() | |
| def env_reward_breakdown(service: APIService = Depends(get_service)) -> dict: | |
| return service.env.get_reward_breakdown() | |
| def env_uncertainty(service: APIService = Depends(get_service)) -> dict: | |
| return service.env.get_uncertainty_report().model_dump(mode="json") | |
| def agents_orchestrate( | |
| payload: OrchestrateRequest = OrchestrateRequest(), | |
| service: APIService = Depends(get_service), | |
| ) -> dict: | |
| return service.orchestrate(coordination_mode=payload.coordination_mode) | |
| def policy_infer(service: APIService = Depends(get_service)) -> dict: | |
| return service.infer_policy() | |
| def policy_batch_infer( | |
| payload: BatchInferRequest = BatchInferRequest(), | |
| service: APIService = Depends(get_service), | |
| ) -> list[dict]: | |
| return service.batch_infer(batch_size=payload.batch_size) | |
| def eval_baselines(service: APIService = Depends(get_service)) -> dict: | |
| return service.run_baselines() | |
| def eval_run_policy(service: APIService = Depends(get_service)) -> dict: | |
| return service.run_policy_eval() | |
| def eval_run_dosing(service: APIService = Depends(get_service)) -> dict: | |
| return service.run_dosing_eval() | |
| def metrics_training(service: APIService = Depends(get_service)) -> dict: | |
| return service.get_metrics() | |
| def cases_sample(service: APIService = Depends(get_service)) -> dict: | |
| return service.sample_case() | |
| def cases_search(q: str, service: APIService = Depends(get_service)) -> list[dict]: | |
| return service.search_cases(q) | |
| def evidence_query(payload: EvidenceQueryRequest, service: APIService = Depends(get_service)) -> list[dict]: | |
| return service.evidence_query(query=payload.query, top_k=payload.top_k) | |