UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

66 lines (65 loc) 3.15 kB
import { n as getRuntimeConfig } from "./io.runtime-B9iJRs3w.js"; import { t as createSubsystemLogger } from "./subsystem-Dy2tqXOS.js"; import { a as resolveProfile, r as resolveBrowserConfig } from "./config-BosO4Zbt.js"; import { t as getExtensionRelayModule } from "./extension-relay.runtime.js"; import "./subsystem-DbD06g1M.js"; import "./config-C0cjs7WS.js"; import { t as ensureBrowserControlAuth } from "./control-auth-DxPMmxz-.js"; import { a as loadBrowserConfigForRuntimeRefresh } from "./server-context-CSIC6Xps.js"; import { a as withBrowserControlStart, i as stopBrowserControlRuntime, n as ensureBrowserControlRuntime, r as getBrowserControlState } from "./browser-control-state-BwkjlfAE.js"; import { t as isDefaultBrowserPluginEnabled } from "./plugin-enabled-CRVr6jO-.js"; //#region extensions/browser/src/control-service.ts /** * Browser control service lifecycle for plugin-managed, in-process operation. */ const logService = createSubsystemLogger("browser").child("service"); async function startBrowserControlServiceUnlocked() { const current = getBrowserControlState(); if (current) return current; const cfg = getRuntimeConfig(); const browserCfg = loadBrowserConfigForRuntimeRefresh(); if (!isDefaultBrowserPluginEnabled(browserCfg)) return null; const resolved = resolveBrowserConfig(browserCfg.browser, browserCfg); if (!resolved.enabled) return null; try { if ((await ensureBrowserControlAuth({ cfg })).generatedToken) logService.info("No browser auth configured; generated gateway.auth.token automatically."); } catch (err) { logService.warn(`failed to auto-configure browser auth: ${String(err)}`); } const hasExtensionProfiles = Object.values(resolved.profiles).some((profile) => profile.driver === "extension"); if (hasExtensionProfiles) { const { ensureExtensionRelayToken } = await import("./relay-auth-Dm66rLr-.js"); await ensureExtensionRelayToken(); } const state = await ensureBrowserControlRuntime({ server: null, port: resolved.controlPort, resolved, owner: "service", onWarn: (message) => logService.warn(message) }); if (hasExtensionProfiles) { const { startConfiguredExtensionRelays } = await getExtensionRelayModule(); await startConfiguredExtensionRelays(state, (name) => resolveProfile(resolved, name), (message) => logService.warn(message)); } logService.info(`Browser control service ready (profiles=${Object.keys(resolved.profiles).length})`); return state; } /** Starts Browser control without binding the HTTP server when config enables it. */ async function startBrowserControlServiceFromConfig() { return await withBrowserControlStart(startBrowserControlServiceUnlocked); } /** Stops the in-process Browser control service runtime. */ async function stopBrowserControlService() { try { await stopBrowserControlRuntime({ requestedBy: "service", onWarn: (message) => logService.warn(message) }); } finally { const { disposeGatewayExtensionRelay } = await import("./gateway-relay-route-C92voZAt.js"); disposeGatewayExtensionRelay(); } } //#endregion export { stopBrowserControlService as n, startBrowserControlServiceFromConfig as t };