"""AI Copilot schemas — query, execute, history.""" from __future__ import annotations from pydantic import BaseModel, Field class CopilotQueryRequest(BaseModel): """Natural language query to the AI copilot.""" query: str = Field(..., min_length=1, max_length=2000) conversation_id: str | None = None context: dict = Field(default_factory=dict) class CopilotAction(BaseModel): """A proposed API action derived from NL input.""" method: str = Field(..., pattern="^(GET|POST|PATCH|DELETE)$") path: str = Field(..., min_length=1) body: dict | None = None description: str = "" confidence: float = Field(0.0, ge=0.0, le=1.0) class CopilotQueryResponse(BaseModel): """Response from copilot query — proposed actions for user confirmation.""" conversation_id: str message: str proposed_actions: list[CopilotAction] = Field(default_factory=list) class CopilotExecuteRequest(BaseModel): """Execute a proposed action after user confirmation.""" conversation_id: str action: CopilotAction class CopilotExecuteResponse(BaseModel): """Result of executing a proposed action.""" conversation_id: str success: bool status_code: int data: dict | list | None = None error: str | None = None class CopilotMessageResponse(BaseModel): """A single message in conversation history.""" id: str role: str content: str proposed_actions: list[dict] | None = None executed_action: dict | None = None execution_result: dict | None = None created_at: str | None = None class CopilotHistoryResponse(BaseModel): """Paginated conversation history.""" items: list[CopilotMessageResponse] total: int page: int page_size: int