"""Pydantic schemas for the AI auto-fix feature.""" from typing import Any, Literal from pydantic import BaseModel, Field # ── Requests ── class ValidationErrorInput(BaseModel): """A single validation error to fix.""" node_id: str = Field(..., description="ID of the node with the error") message: str = Field(..., description="The validation error message") class AIFixTreeRequest(BaseModel): """Request to generate AI fixes for validation errors.""" tree_structure: dict[str, Any] = Field(..., description="Full tree structure") tree_name: str = Field("", max_length=255, description="Name of the flow") tree_type: Literal["troubleshooting", "procedural", "maintenance"] = Field( "troubleshooting", description="Type of flow" ) validation_errors: list[ValidationErrorInput] = Field( ..., min_length=1, max_length=10, description="Errors to fix" ) # ── Responses ── class AIFixProposal(BaseModel): """A single proposed fix from the AI.""" target_node_id: str error_message: str description: str original_node: dict[str, Any] fixed_node: dict[str, Any] class AIFixTokenUsage(BaseModel): input: int = 0 output: int = 0 class AIFixTreeResponse(BaseModel): """Response with proposed fixes.""" fixes: list[AIFixProposal] tokens_used: AIFixTokenUsage