from uuid import UUID from datetime import datetime from typing import Optional, List from pydantic import BaseModel, Field class Agent(BaseModel): id: str name: str project_id: str input_variables: Optional[List[str]] prompt: str is_template: Optional[bool] routes: Optional[List[str]] routes_description: Optional[List[str]] output_collector: Optional[str] output_variables: Optional[List[str]] input_api_endpoints: Optional[List[str]] output_api_endpoints: Optional[List[str]] conversation_style: float = Field(..., ge=-9.9, le=9.9) creativity: float = Field(..., ge=0.0, le=1.0) fallback_message: str fallback_threshold: float class OutputCollector(BaseModel): id: str project_id: str keys: List[str] descriptions: List[str] data_types: List[str] class APIEndpoint(BaseModel): id: str project_id: str name: str description: Optional[str] input_variables: Optional[list] url: str method: str headers: Optional[dict] params: Optional[dict] request_body: Optional[dict] html_to_markdown: Optional[bool] html_tags_to_extract: Optional[list] response_type: Optional[str]