UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

109 lines (108 loc) 3.91 kB
import { n as getRuntimeConfig } from "./io.runtime-B9iJRs3w.js"; import "./config-Cs0XXL3x.js"; import "./constants-DE2EIeEP.js"; import "./tool-policy-WMCUEiT6.js"; import "./config-RoLkL_H5.js"; import "./runtime-status-6c8Jb1Kg.js"; import "./sanitize-env-vars-BMa_hV9u.js"; import "./docker-BzxWmWPm.js"; import { n as resolveSandboxAgentId } from "./shared-DdMEwpA0.js"; import { a as readRegistry, c as removeRegistryEntry, r as readBrowserRegistry, s as removeBrowserRegistryEntry } from "./registry-Blki4jt_.js"; import { M as dockerSandboxBackendManager } from "./ssh-backend-Bi2dY2r6.js"; import { o as getSandboxBackendManager, r as stopCachedBrowserBridgesForContainer } from "./browser-bridges-Cf8_qfWT.js"; import "./context-B_khSODz.js"; //#region src/agents/sandbox/manage.ts /** * CLI-facing sandbox management helpers. * * Lists and removes registered runtime and browser containers using backend manager status. */ function toBrowserDockerRuntimeEntry(entry) { return { ...entry, backendId: "docker", runtimeLabel: entry.containerName, configLabelKind: "BrowserImage" }; } /** Lists registered sandbox containers with live backend status and config-label match state. */ async function listSandboxContainers() { const config = getRuntimeConfig(); const registry = await readRegistry(); const results = []; for (const entry of registry.entries) { const backendId = entry.backendId ?? "docker"; const manager = getSandboxBackendManager(backendId); if (!manager) { results.push({ ...entry, running: false, imageMatch: true }); continue; } const agentId = resolveSandboxAgentId(entry.sessionKey); const runtime = await manager.describeRuntime({ entry, config, agentId }); results.push({ ...entry, image: runtime.actualConfigLabel ?? entry.image, running: runtime.running, imageMatch: runtime.configLabelMatch }); } return results; } /** Lists registered browser sandbox containers with live Docker status. */ async function listSandboxBrowsers() { const config = getRuntimeConfig(); const registry = await readBrowserRegistry(); const results = []; for (const entry of registry.entries) { const agentId = resolveSandboxAgentId(entry.sessionKey); const runtime = await dockerSandboxBackendManager.describeRuntime({ entry: toBrowserDockerRuntimeEntry(entry), config, agentId }); results.push({ ...entry, image: runtime.actualConfigLabel ?? entry.image, running: runtime.running, imageMatch: runtime.configLabelMatch }); } return results; } /** Removes one sandbox container from its backend and registry. */ async function removeSandboxContainer(containerName) { const config = getRuntimeConfig(); const entry = (await readRegistry()).entries.find((item) => item.containerName === containerName); if (entry) { const backendId = entry.backendId ?? "docker"; const manager = getSandboxBackendManager(backendId); if (!manager) throw new Error(`Sandbox backend "${backendId}" is unavailable; enable its plugin before removing this runtime.`); await manager.removeRuntime({ entry, config, agentId: resolveSandboxAgentId(entry.sessionKey) }); } await removeRegistryEntry(containerName); } /** Removes one browser sandbox container, registry entry, and any in-process bridge server. */ async function removeSandboxBrowserContainer(containerName) { const config = getRuntimeConfig(); const entry = (await readBrowserRegistry()).entries.find((item) => item.containerName === containerName); await stopCachedBrowserBridgesForContainer(containerName); if (entry) await dockerSandboxBackendManager.removeRuntime({ entry: toBrowserDockerRuntimeEntry(entry), config }); await removeBrowserRegistryEntry(containerName); } //#endregion export { removeSandboxContainer as i, listSandboxContainers as n, removeSandboxBrowserContainer as r, listSandboxBrowsers as t };