"""Chat session management endpoints.""" from typing import List, Optional from fastapi import APIRouter, Depends, HTTPException from fastapi.responses import PlainTextResponse from pydantic import BaseModel router = APIRouter(prefix="/api/sessions") class CreateSessionRequest(BaseModel): title: str = "New Chat" document_ids: Optional[List[str]] = None def get_chat_store(): from core.bootstrap import get_chat_store as _get return _get() @router.get("") async def list_sessions(store=Depends(get_chat_store)): sessions = store.list_sessions() return {"sessions": sessions} @router.post("") async def create_session(request: CreateSessionRequest, store=Depends(get_chat_store)): session = store.create_session(request.title, request.document_ids) return session @router.get("/{session_id}/messages") async def get_messages(session_id: str, store=Depends(get_chat_store)): messages = store.get_messages(session_id) return {"messages": messages} @router.post("/{session_id}/export") async def export_session(session_id: str, store=Depends(get_chat_store)): content = store.export_session(session_id) if not content: raise HTTPException(status_code=404, detail="Session not found") return PlainTextResponse(content, media_type="text/plain")