from bootstrap_env import load_project_env load_project_env() from SimpleLLMFunc import OpenAICompatible from functools import lru_cache import os from typing import Optional from dotenv import load_dotenv # Load the .env file under the working directory. load_dotenv() current_file_dir = ( __file__.rsplit("/", 1)[0] if "/" in __file__ else __file__.rsplit("\\", 1)[0] ) class Config: JSON_FILE = current_file_dir + "/provider.json" INTERFACE_COLLECTION = OpenAICompatible.load_from_json_file(JSON_FILE) BASIC_INTERFACE = INTERFACE_COLLECTION["openrouter"]["anthropic/claude-sonnet-4.6"] CODE_INTERFACE = INTERFACE_COLLECTION["openrouter"]["google/gemini-3.1-pro-preview"] REASONING_INTERFACE = INTERFACE_COLLECTION["openrouter"]["anthropic/claude-sonnet-4.6"] QUICK_INTERFACE = INTERFACE_COLLECTION["openrouter"]["google/gemini-3-flash-preview"] MULTIMODALITY_INTERFACE = INTERFACE_COLLECTION["openrouter"]["google/gemini-3-flash-preview"] CONTEXT_SUMMARY_INTERFACE = INTERFACE_COLLECTION["openrouter"]["google/gemini-3-flash-preview"] # ==================== Context & Sketch configuration parameters ==================== # redis url REDIS_DB: int = int(os.getenv("REDIS_DB", 0)) REDIS_PASSWORD: Optional[str] = os.getenv("REDIS_PASSWORD", None) REDIS_HOST: str = os.getenv("REDIS_HOST", "localhost") REDIS_PORT: int = int(os.getenv("REDIS_PORT", 9736)) # Context storage directory configuration. CONTEXT_DIR: str = os.getenv("CONTEXT_DIR", "workspace/data/contexts") CONTEXT_MAX_HISTORY_LENGTH: int = int(os.getenv("CONTEXT_MAX_HISTORY_LENGTH", 10)) CONTEXT_AUTO_SUMMARIZE_TRIGGER: int = int( os.getenv("CONTEXT_AUTO_SUMMARIZE_TRIGGER", 1000000) ) # SketchPad storage directory configuration. SKETCH_DIR: str = os.getenv("SKETCH_DIR", "workspace/data/sketches") @lru_cache() def get_config() -> Config: """Get the configuration instance.""" return Config()