"""Загрузка секретов: переменные окружения + файл .env в корне проекта. Ключи НЕ хранятся в коде. Порядок: 1) переменная окружения (OPENROUTER_API_KEY=...); 2) файл .env в корне проекта (строка вида OPENROUTER_API_KEY=sk-or-...). Файл .env.example — шаблон: cp .env.example .env и вписать свой ключ. """ from __future__ import annotations import os from pathlib import Path _PROJECT_ROOT = Path(__file__).resolve().parents[2] def get_secret(name: str) -> str | None: """Взять секрет из окружения или .env (первый источник побеждает).""" value = os.environ.get(name) if value: return value.strip() env_file = _PROJECT_ROOT / ".env" if env_file.is_file(): for line in env_file.read_text(encoding="utf-8").splitlines(): line = line.strip() if not line or line.startswith("#") or "=" not in line: continue key, _, val = line.partition("=") if key.strip() == name: return val.strip().strip('"').strip("'") return None def get_api_key() -> str | None: return get_secret("OPENROUTER_API_KEY")