from __future__ import annotations from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from ..state import GenerateRequest, GenerateResponse from ..graph.router import run_pipeline from ..tools import get_logger logger = get_logger() app = FastAPI( title="Agentic Multiwriter API", version="0.1.0", description="Multi-agent research & writing pipeline using LangGraph and LLMs.", ) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"], ) @app.get("/health") def health() -> dict: return {"status": "ok"} @app.post("/generate", response_model=GenerateResponse) def generate(payload: GenerateRequest) -> GenerateResponse: logger.info("API: /generate called with topic='%s', mode='%s'", payload.topic, payload.mode) state = run_pipeline(topic=payload.topic, mode=payload.mode) return GenerateResponse( topic=state.get("topic", payload.topic), mode=state.get("mode", payload.mode), outline=state.get("outline", []) or [], draft=state.get("draft", "") or "", revised_draft=state.get("revised_draft", "") or "", final_output=state.get("final_output", "") or "", meta=state.get("meta", {}) or {}, )