"""Configuration management for Mem0 Interface POC.""" import os from typing import List, Optional from pydantic import Field from pydantic_settings import BaseSettings class Settings(BaseSettings): """Application settings loaded from environment variables.""" # API Configuration openai_api_key: str = Field(..., env="OPENAI_API_KEY") openai_base_url: str = Field(..., env="OPENAI_BASE_URL") embedder_api_key: str = Field(..., env="EMBEDDER_API_KEY") # Database Configuration postgres_host: str = Field("localhost", env="POSTGRES_HOST") postgres_port: int = Field(5432, env="POSTGRES_PORT") postgres_db: str = Field("mem0_db", env="POSTGRES_DB") postgres_user: str = Field("mem0_user", env="POSTGRES_USER") postgres_password: str = Field("mem0_password", env="POSTGRES_PASSWORD") # Neo4j Configuration neo4j_uri: str = Field("bolt://localhost:7687", env="NEO4J_URI") neo4j_username: str = Field("neo4j", env="NEO4J_USERNAME") neo4j_password: str = Field("mem0_neo4j_password", env="NEO4J_PASSWORD") # Application Configuration log_level: str = Field("INFO", env="LOG_LEVEL") cors_origins: str = Field("http://localhost:3000", env="CORS_ORIGINS") # Model Configuration - Ultra-minimal (single model) default_model: str = Field("claude-sonnet-4", env="DEFAULT_MODEL") @property def postgres_url(self) -> str: """Build PostgreSQL connection URL.""" return f"postgresql://{self.postgres_user}:{self.postgres_password}@{self.postgres_host}:{self.postgres_port}/{self.postgres_db}" @property def cors_origins_list(self) -> List[str]: """Convert CORS origins string to list.""" return [origin.strip() for origin in self.cors_origins.split(",")] class Config: env_file = ".env" case_sensitive = False # Global settings instance settings = Settings()