import os

from dotenv import load_dotenv

load_dotenv()


class Settings:
    """Plain env-backed settings - deliberately not pydantic-settings to keep the
    dependency list small; FastAPI/pydantic is still used for request/response schemas.
    """

    def __init__(self) -> None:
        # Which LLMProvider implementation to construct - see app/providers/factory.py.
        # "openai" and "ollama" both use the OpenAI-compatible wire format (same class,
        # different base_url/model); "anthropic" uses the native Messages API.
        self.llm_provider = os.getenv("LLM_PROVIDER", "openai").lower()

        self.openai_api_key = os.getenv("OPENAI_API_KEY")
        self.openai_model = os.getenv("OPENAI_MODEL", "gpt-4o-mini")

        self.anthropic_api_key = os.getenv("ANTHROPIC_API_KEY")
        self.anthropic_model = os.getenv("ANTHROPIC_MODEL", "claude-sonnet-4-5")

        self.ollama_base_url = os.getenv("OLLAMA_BASE_URL", "http://127.0.0.1:11434/v1")
        self.ollama_api_key = os.getenv("OLLAMA_API_KEY", "ollama")
        self.ollama_model = os.getenv("OLLAMA_MODEL", "llama3.2:3b")

        # Gemini — free tier via Google AI Studio's OpenAI-compatible endpoint.
        # Get a key at https://aistudio.google.com/apikey (free, no card required).
        self.gemini_api_key = os.getenv("GEMINI_API_KEY")
        self.gemini_model = os.getenv("GEMINI_MODEL", "gemini-2.0-flash")

        # Shared secret Meridian-Backend authenticates with (never the end user's own
        # session token - see ../README.md 4.1). Left unset only for local dev.
        self.service_token = os.getenv("MERIDIAN_AI_SERVICE_TOKEN")

        self.request_timeout_seconds = int(os.getenv("LLM_TIMEOUT_SECONDS", "60"))


settings = Settings()
