from datetime import datetime

from pydantic import BaseModel


class AgentBase(BaseModel):
    name: str
    description: str | None = None
    type: str = "chat"
    status: str = "online"
    running: bool = False
    model_id: int | None = None
    max_iterations: int = 10
    temperature: float = 0.7
    max_tokens: int = 2048
    system_prompt: str | None = None
    welcome_message: str | None = None
    knowledge_bases: list[int] | None = []
    actions: list[int] | None = []
    skills: list[int] | None = []
    quick_actions: list[dict] | None = None


class AgentCreate(AgentBase):
    pass


class AgentUpdate(BaseModel):
    name: str | None = None
    description: str | None = None
    type: str | None = None
    status: str | None = None
    running: bool | None = None
    model_id: int | None = None
    max_iterations: int | None = None
    temperature: float | None = None
    max_tokens: int | None = None
    system_prompt: str | None = None
    welcome_message: str | None = None
    knowledge_bases: list[int] | None = None
    actions: list[int] | None = None
    skills: list[int] | None = None
    quick_actions: list[dict] | None = None


class AgentResponse(AgentBase):
    id: int
    created_at: datetime
    updated_at: datetime

    class Config:
        from_attributes = True
