from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parent.parent TEMPLATES_DIR = PROJECT_ROOT / "templates" STORAGE_DIR = PROJECT_ROOT / "storage" FRONTEND_DIST = PROJECT_ROOT / "frontend" / "dist" DB_PATH = STORAGE_DIR / "guides.db" PROJECTS_DIR = PROJECT_ROOT / "projects" PROJECTS_CACHE_DIR = STORAGE_DIR / "projects" ALLOWED_FORMATS = [ "OnePager", "Cheatsheet", "MiniGuide", "Guide", "EndGuide", ] FORMAT_META = { "OnePager": {"pages": "1 Seite", "time": "~5 Min"}, "Cheatsheet": {"pages": "1 Seite", "time": "~10 Min"}, "MiniGuide": {"pages": "3-5 Seiten", "time": "~15-25 Min"}, "Guide": {"pages": "10-30 Seiten", "time": "variabel"}, "EndGuide": {"pages": "50-250 Seiten", "time": "variabel"}, } AGENT_TIMEOUT = 3600 MAX_CONCURRENT_GENERATIONS = 10 # Provider-Stacks: komplett unabhängig, einer kann jederzeit entfernt werden. # Rollen: "guide" = große Generierung/Review, "fast" = Bausteine/Chat/Sortierung. DEFAULT_PROVIDER = "claude" PROVIDERS = { "claude": { "cli": "claude", "guide": "claude-opus-4-8[1m]", "fast": "claude-sonnet-4-6", "env_key": None, # Auth via CLAUDE_CODE_OAUTH_TOKEN oder ~/.claude "timeout_factor": 1, }, "minimax": { "cli": "opencode", "guide": "minimax/MiniMax-M3", "fast": "minimax/MiniMax-M3", "env_key": "MINIMAX_API_KEY", "timeout_factor": 3, # M3 ist bei großen Dokumenten deutlich langsamer }, }