"""API routes for evaluation reports.""" from fastapi import APIRouter, Depends, HTTPException, Response from sqlmodel import Session from agenteval.evaluation.report import generate_report, render_html_report, render_json_report from agenteval.storage.repository import RunRepository from agenteval.web.deps import get_db router = APIRouter() @router.get("/{run_id}") def get_report(run_id: str, session: Session = Depends(get_db)) -> dict: run = RunRepository(session).get(run_id) if not run: raise HTTPException(status_code=404, detail="run not found") return generate_report(run_id, session) @router.get("/{run_id}/html") def get_html_report(run_id: str, session: Session = Depends(get_db)) -> Response: run = RunRepository(session).get(run_id) if not run: raise HTTPException(status_code=404, detail="run not found") html = render_html_report(run_id, session) return Response(content=html, media_type="text/html") @router.get("/{run_id}/json") def get_json_report(run_id: str, session: Session = Depends(get_db)) -> Response: run = RunRepository(session).get(run_id) if not run: raise HTTPException(status_code=404, detail="run not found") json_text = render_json_report(run_id, session) return Response(content=json_text, media_type="application/json")