from typing import Optional, Dict, Any, List from pydantic import BaseModel, ConfigDict class ChannelConfigRequest(BaseModel): channel_type: str external_app_id: Optional[str] = None app_secret: Optional[str] = None internal_port: Optional[int] = None is_active: bool = True extra_config: Optional[Dict[str, Any]] = None class ChannelConfigUpdateRequest(BaseModel): channel_type: Optional[str] = None external_app_id: Optional[str] = None app_secret: Optional[str] = None internal_port: Optional[int] = None is_active: Optional[bool] = None extra_config: Optional[Dict[str, Any]] = None class BotCreateRequest(BaseModel): model_config = ConfigDict(extra="forbid") id: str name: str enabled: Optional[bool] = True image_tag: str access_password: Optional[str] = None llm_provider: str llm_model: str api_key: str api_base: str temperature: float = 0.2 top_p: float = 1.0 max_tokens: int = 8192 cpu_cores: float = 1.0 memory_mb: int = 1024 storage_gb: int = 10 system_timezone: str soul_md: str agents_md: str user_md: str tools_md: str tools_config: Optional[Dict[str, Any]] = None env_params: Optional[Dict[str, str]] = None identity_md: str channels: Optional[List[ChannelConfigRequest]] = None send_progress: Optional[bool] = None send_tool_hints: Optional[bool] = None class BotUpdateRequest(BaseModel): model_config = ConfigDict(extra="forbid") name: Optional[str] = None enabled: Optional[bool] = None image_tag: Optional[str] = None access_password: Optional[str] = None llm_provider: Optional[str] = None llm_model: Optional[str] = None api_key: Optional[str] = None api_base: Optional[str] = None temperature: Optional[float] = None top_p: Optional[float] = None max_tokens: Optional[int] = None cpu_cores: Optional[float] = None memory_mb: Optional[int] = None storage_gb: Optional[int] = None system_timezone: Optional[str] = None agents_md: Optional[str] = None soul_md: Optional[str] = None user_md: Optional[str] = None tools_md: Optional[str] = None tools_config: Optional[Dict[str, Any]] = None env_params: Optional[Dict[str, str]] = None identity_md: Optional[str] = None send_progress: Optional[bool] = None send_tool_hints: Optional[bool] = None class BotToolsConfigUpdateRequest(BaseModel): tools_config: Optional[Dict[str, Any]] = None class BotMcpConfigUpdateRequest(BaseModel): mcp_servers: Optional[Dict[str, Any]] = None class BotEnvParamsUpdateRequest(BaseModel): env_params: Optional[Dict[str, str]] = None class BotPageAuthLoginRequest(BaseModel): password: str class CommandRequest(BaseModel): command: Optional[str] = None attachments: Optional[List[str]] = None class MessageFeedbackRequest(BaseModel): feedback: Optional[str] = None