"""Agent configuration model.""" from typing import Optional from sqlalchemy import String, Text, Boolean, JSON from sqlalchemy.orm import Mapped, mapped_column from ..db.base import BaseModel class AgentConfig(BaseModel): """Agent configuration model.""" __tablename__ = "agent_configs" id: Mapped[int] = mapped_column(primary_key=True, index=True) name: Mapped[str] = mapped_column(String(100), nullable=False, index=True) description: Mapped[Optional[str]] = mapped_column(Text, nullable=True) # Agent configuration enabled_tools: Mapped[list] = mapped_column(JSON, nullable=False, default=list) max_iterations: Mapped[int] = mapped_column(default=10) temperature: Mapped[str] = mapped_column(String(10), default="0.1") system_message: Mapped[Optional[str]] = mapped_column(Text, nullable=True) verbose: Mapped[bool] = mapped_column(Boolean, default=True) # Model configuration model_name: Mapped[str] = mapped_column(String(100), default="gpt-3.5-turbo") max_tokens: Mapped[int] = mapped_column(default=2048) # Status is_active: Mapped[bool] = mapped_column(default=True) is_default: Mapped[bool] = mapped_column(default=False) def __repr__(self): return f"" def __str__(self): return f"{self.name}[{self.id}] Active: {self.is_active}" def to_dict(self): """Convert to dictionary.""" data = super().to_dict() data['enabled_tools'] = self.enabled_tools or [] return data