"""Configuration management for mosaic-coordinator."""

from pydantic_settings import BaseSettings, SettingsConfigDict


class Settings(BaseSettings):
    """Application settings loaded from environment variables."""

    model_config = SettingsConfigDict(
        env_file=".env",
        env_file_encoding="utf-8",
        case_sensitive=False,
        extra="ignore",
    )

    # Gitea Configuration
    gitea_webhook_secret: str
    gitea_url: str = "https://git.mosaicstack.dev"

    # Anthropic API
    anthropic_api_key: str

    # Server Configuration
    # Container-bound: listen on all interfaces inside Docker
    host: str = "0.0.0.0"  # nosec B104
    port: int = 8000

    # Logging
    log_level: str = "info"

    # Coordinator Configuration
    coordinator_poll_interval: float = 5.0
    coordinator_max_concurrent_agents: int = 10
    coordinator_enabled: bool = True


def get_settings() -> Settings:
    """Get settings instance (lazy loaded)."""
    return Settings()  # type: ignore[call-arg]


# Global settings instance
settings = get_settings()
