"""Environment adapter - auto-detect and adapt to different runtime environments.""" import os from pathlib import Path from enum import Enum class Environment(Enum): HF_SPACES = "hf_spaces" DOCKER = "docker" LOCAL = "local" class EnvAdapter: """Environment adapter for HF Spaces / Docker / local.""" def __init__(self): self.env = self._detect_environment() self.data_dir = self._get_data_dir() self.browser_headless = self._should_be_headless() def _detect_environment(self) -> Environment: if os.getenv("HF_SPACE_ID"): return Environment.HF_SPACES elif os.getenv("DOCKER_CONTAINER"): return Environment.DOCKER return Environment.LOCAL def _get_data_dir(self) -> Path: override = os.getenv("DATA_DIR") if override: return Path(override) if self.env == Environment.HF_SPACES: return Path("/data") return Path("data") def _should_be_headless(self) -> bool: if self.env == Environment.HF_SPACES: return True return os.getenv("BROWSER_HEADLESS", "true").lower() == "true" def get_memory_path(self) -> Path: return self.data_dir / "memory" def get_plugins_path(self) -> Path: return self.data_dir / "plugins" def get_browser_profile_path(self) -> Path: return self.data_dir / "browser" / "profiles" def get_log_path(self) -> Path: return self.data_dir / "logs" # Global instance env = EnvAdapter()