Spaces:
Running
Running
| from __future__ import annotations | |
| import os | |
| from app.feature_overrides import load_feature_overrides | |
| def env_truthy(name: str, default: bool = False) -> bool: | |
| raw = os.environ.get(name) | |
| if raw is None: | |
| return default | |
| return raw.strip().lower() in {"1", "true", "yes", "on"} | |
| def feature_enabled(feature: str) -> bool: | |
| """ | |
| Safety: when Supabase isn't configured, disable dangerous features by default. | |
| """ | |
| has_supabase = bool( | |
| os.environ.get("SUPABASE_URL") | |
| and (os.environ.get("SUPABASE_KEY") or os.environ.get("SUPABASE_ANON_KEY")) | |
| ) | |
| if not has_supabase: | |
| return False | |
| defaults = { | |
| "terminal": True, | |
| "codex": True, | |
| "mcp": True, | |
| "indexing": False, | |
| "rooms": True, | |
| "vault": False, | |
| } | |
| env_map = { | |
| "terminal": "ENABLE_TERMINAL", | |
| "codex": "ENABLE_CODEX", | |
| "mcp": "ENABLE_MCP", | |
| "indexing": "ENABLE_INDEXING", | |
| "rooms": "ENABLE_ROOMS", | |
| "vault": "ENABLE_VAULT", | |
| } | |
| if feature not in env_map: | |
| return False | |
| env_enabled = env_truthy(env_map[feature], default=defaults[feature]) | |
| overrides = load_feature_overrides() | |
| if feature in overrides: | |
| return bool(overrides[feature]) | |
| return env_enabled | |