"""Request and response schemas for the model configuration center.""" from datetime import datetime from pydantic import BaseModel, Field from agenteval.models import ModelCapability from agenteval.storage.db import ModelConfigDB, iso_utc class ModelConfigCreate(BaseModel): name: str = Field(min_length=1, max_length=100) provider: str = "openai_compatible" capability: ModelCapability endpoint_url: str model_name: str | None = None api_key: str | None = None enabled: bool = True is_default: bool = False description: str = "" class ModelConfigUpdate(ModelConfigCreate): clear_api_key: bool = False class ModelConfigResponse(BaseModel): id: str name: str provider: str capability: ModelCapability endpoint_url: str model_name: str | None has_api_key: bool enabled: bool is_default: bool description: str created_at: str | None updated_at: str | None @classmethod def from_db(cls, config: ModelConfigDB) -> "ModelConfigResponse": return cls( id=config.id or "", name=config.name, provider=config.provider, capability=ModelCapability(config.capability), endpoint_url=config.endpoint_url, model_name=config.model_name, has_api_key=bool(config.api_key_encrypted), enabled=config.enabled, is_default=config.is_default, description=config.description, created_at=iso_utc(config.created_at), updated_at=iso_utc(config.updated_at), ) class ModelConfigReference(BaseModel): scenario_id: str scenario_name: str purpose: str class ModelConnectionTestResponse(BaseModel): ok: bool message: str tested_at: datetime