"""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_PRO = "gpt-5-pro" 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" # MISTRAL_MEDIUM = "mistral-medium-latest" # MISTRAL_SMALL = "mistral-small-latest" # MISTRAL_TINY = "mistral-tiny" @property def provider(self) -> ModelProvider: """Get the provider for this model.""" if self.value.startswith("gpt-"): return ModelProvider.OPENAI elif self.value.startswith("mistral-"): 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"