"""Memory System Configuration""" import os import json class Config: # MySQL MYSQL_HOST = os.getenv("MYSQL_HOST", "127.0.0.1") MYSQL_PORT = int(os.getenv("MYSQL_PORT", "3306")) MYSQL_USER = os.getenv("MYSQL_USER", "your_db_user") MYSQL_PASSWORD = os.getenv("MYSQL_PASSWORD", "CHANGE_ME_MYSQL_PASSWORD") MYSQL_DATABASE = os.getenv("MYSQL_DATABASE", "memory_system") MYSQL_CHARSET = "utf8mb4" MYSQL_UNIX_SOCKET = os.getenv("MYSQL_UNIX_SOCKET", "/var/run/mysqld/mysqld.sock") # Redis REDIS_HOST = os.getenv("REDIS_HOST", "127.0.0.1") REDIS_PORT = int(os.getenv("REDIS_PORT", "6379")) REDIS_PASSWORD = os.getenv("REDIS_PASSWORD", "CHANGE_ME_REDIS_PASSWORD") REDIS_DB = int(os.getenv("REDIS_DB", "0")) # BGE Embedding Service EMBEDDING_SERVICE_URL = os.getenv("EMBEDDING_SERVICE_URL", "http://127.0.0.1:8080") EMBEDDING_DIM = 512 # Working memory TTL (seconds) WORKING_MEMORY_TTL = int(os.getenv("WORKING_MEMORY_TTL", "259200")) # 72h # Cleanup defaults CLEANUP_MAX_AGE_DAYS = 90 CLEANUP_MIN_IMPORTANCE = 0.2 # API API_HOST = os.getenv("API_HOST", "127.0.0.1") API_PORT = int(os.getenv("API_PORT", "8081")) # LLM providers (JSON list, priority=1 is primary, higher = fallback) LLM_PROVIDERS_JSON = os.getenv("LLM_PROVIDERS", "[]") @property def llm_providers(self) -> list: try: val = self.LLM_PROVIDERS_JSON providers = json.loads(val) if val else [] for p in providers: key = p.get("api_key", "") if isinstance(key, str) and key.startswith("${") and key.endswith("}"): p["api_key"] = os.getenv(key[2:-1], "") or "" return providers except (json.JSONDecodeError, TypeError): return []