"""Enums for the domain layer.""" from enum import Enum class ModelProvider(str, Enum): """LLM model providers.""" OPENAI = "openai" MISTRALAI = "mistralai" class ModelName(str, Enum): """Available LLM models.""" # OpenAI models # GPT_5 = "gpt-5" # GPT_5_CHAT = "gpt-5-chat-latest" # GPT_4 = "gpt-4" # GPT_4_TURBO = "gpt-4-turbo-preview" # GPT_4O = "gpt-4o" # GPT_35_TURBO = "gpt-3.5-turbo" # Mistral AI models MISTRAL_LARGE = "mistral-large-latest" MAGISTRAL_MEDIUM = "magistral-medium-latest" @property def provider(self) -> ModelProvider: """Get the provider for this model.""" if self.value.startswith("gpt-"): return ModelProvider.OPENAI elif self.value.startswith("mistral-") or self.value.startswith("magistral-"): return ModelProvider.MISTRALAI raise ValueError(f"Unknown provider for model: {self.value}") @classmethod def list_by_provider(cls, provider: ModelProvider) -> list[str]: """List all models for a given provider.""" return [ model.value for model in cls if model.provider == provider ] class AgentType(str, Enum): """Available agent types.""" SIMPLE = "simple" RAG = "rag" TOOLS = "tools" CUSTOM = "custom"