"""Configuration from environment variables — no file parsing required for basic use.""" from __future__ import annotations import os from pathlib import Path DATA_DIR = Path(os.environ.get("PAGEPIPER_DATA_DIR", "data")) DB_PATH = str(DATA_DIR / "pagepiper.db") VEC_DB_PATH = str(DATA_DIR / "pagepiper_vecs.db") WATCH_DIR = Path(os.environ.get("PAGEPIPER_WATCH_DIR", "books")) def get_llm_config() -> dict | None: """Build LLMRouter config from env vars. Returns None if PAGEPIPER_OLLAMA_URL is unset.""" url = os.environ.get("PAGEPIPER_OLLAMA_URL", "").strip() if not url: return None return { "fallback_order": ["ollama"], "backends": { "ollama": { "type": "openai_compat", "base_url": url.rstrip("/") + "/v1", "model": os.environ.get("PAGEPIPER_CHAT_MODEL", "mistral:7b"), "embedding_model": os.environ.get( "PAGEPIPER_EMBED_MODEL", "nomic-embed-text" ), "supports_images": False, } }, }