from __future__ import annotations from fastapi import FastAPI from fastapi.responses import JSONResponse from .agent import AISearchAgent from .audit import AuditLogger from .config import Settings from .models import SearchRequest def create_app() -> FastAPI: settings = Settings.from_env() agent = AISearchAgent(settings) audit_logger = AuditLogger(settings.audit_log_path) app = FastAPI(title="AI Search Agent", version="1.0.0") @app.get("/health") async def health() -> dict[str, str]: return {"status": "ok"} @app.post("/search") async def search(request: SearchRequest) -> JSONResponse: response = await agent.run(request) audit_id = audit_logger.write(request, response) response = response.model_copy(update={"audit_id": audit_id}) return JSONResponse(content=response.model_dump()) return app