PraisonAI / app /config.py
Sanyam400's picture
Create config.py
65b5b97 verified
"""
Persistent config — survives across requests within the same container session.
Falls back to env vars, then to saved JSON file.
"""
import os, json
from pathlib import Path
CONFIG_FILE = Path(os.environ.get("HOME", "/home/user")) / ".praison_config.json"
_config: dict = {}
def _load():
global _config
# Start with env vars
_config = {
"longcat_api_key": os.environ.get("LONGCAT_API_KEY", ""),
"longcat_model": os.environ.get("LONGCAT_MODEL", "LongCat-Flash-Lite"),
"telegram_token": os.environ.get("TELEGRAM_BOT_TOKEN", ""),
}
# Override with saved file if it exists
if CONFIG_FILE.exists():
try:
saved = json.loads(CONFIG_FILE.read_text())
for k, v in saved.items():
if v: # only override if non-empty
_config[k] = v
except Exception:
pass
def _save():
try:
CONFIG_FILE.write_text(json.dumps(_config, indent=2))
except Exception:
pass
# Load on import
_load()
def get(key: str, default: str = "") -> str:
return _config.get(key, default) or default
def set(key: str, value: str):
_config[key] = value
_save()
def get_longcat_key() -> str:
return get("longcat_api_key")
def get_model() -> str:
return get("longcat_model", "LongCat-Flash-Lite")
def get_telegram_token() -> str:
return get("telegram_token")
def set_longcat_key(key: str):
set("longcat_api_key", key)
os.environ["LONGCAT_API_KEY"] = key
def set_telegram_token(token: str):
set("telegram_token", token)
os.environ["TELEGRAM_BOT_TOKEN"] = token
def set_model(model: str):
set("longcat_model", model)
def all_config() -> dict:
return {k: ("***" if "key" in k or "token" in k else v)
for k, v in _config.items()}