import os from typing import Dict from app.core.settings import EDGE_BOTS_WORKSPACE_ROOT, EDGE_BASE_IMAGE from app.runtime.docker_manager import EdgeDockerManager from app.runtime.native_manager import EdgeNativeRuntimeBackend def edge_runtime_mode() -> str: runtime_kind = str(os.getenv("EDGE_RUNTIME_KIND", "all") or "all").strip().lower() if runtime_kind in {"docker", "native"}: return runtime_kind return "all" def build_edge_runtime_backends() -> Dict[str, object]: mode = edge_runtime_mode() backends: Dict[str, object] = {} if mode in {"all", "docker"}: backends["docker"] = EdgeDockerManager(host_data_root=EDGE_BOTS_WORKSPACE_ROOT, base_image=EDGE_BASE_IMAGE) if mode in {"all", "native"}: backends["native"] = EdgeNativeRuntimeBackend() return backends def preferred_edge_runtime_kind(backends: Dict[str, object]) -> str: if "docker" in backends: return "docker" if "native" in backends: return "native" return "docker"