"""AI Worker schemas.""" from pydantic import BaseModel, Field from typing import Optional from datetime import datetime class WorkerCreate(BaseModel): name: str = Field(..., min_length=1, max_length=200) description: str = "" provider: str = "openai" model_name: str = "gpt-4o-mini" api_key: Optional[str] = None # If None, uses platform default base_url: Optional[str] = None temperature: float = 0.7 system_prompt: str = "You are a helpful AI assistant." tools: str = "[]" max_cost_per_task_cents: Optional[int] = None max_cost_per_month_cents: Optional[int] = None available_hours: str = '{"start": "00:00", "end": "23:59"}' max_concurrent_tasks: int = 1 class WorkerUpdate(BaseModel): name: Optional[str] = None description: Optional[str] = None provider: Optional[str] = None model_name: Optional[str] = None api_key: Optional[str] = None base_url: Optional[str] = None temperature: Optional[float] = None system_prompt: Optional[str] = None tools: Optional[str] = None max_cost_per_task_cents: Optional[int] = None max_cost_per_month_cents: Optional[int] = None is_active: Optional[bool] = None available_hours: Optional[str] = None max_concurrent_tasks: Optional[int] = None status: Optional[str] = None class WorkerResponse(BaseModel): id: int name: str description: str provider: str model_name: str base_url: Optional[str] = None temperature: float system_prompt: str tools: str max_cost_per_task_cents: Optional[int] = None max_cost_per_month_cents: Optional[int] = None status: str is_active: bool current_task_count: int max_concurrent_tasks: int tenant_id: int created_at: datetime updated_at: datetime model_config = {"from_attributes": True} class WorkerTestRequest(BaseModel): test_prompt: str = "Hello, respond with 'OK' if you can hear me." class WorkerTestResult(BaseModel): success: bool response: str = "" latency_ms: int = 0 error: Optional[str] = None