openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
64 lines (63 loc) • 3.12 kB
JavaScript
import { t as createSubsystemLogger } from "./subsystem-BlrgtxyM.mjs";
import { r as getRuntimeConfig } from "./io.runtime-FunTy0y1.mjs";
import "./runtime-config-snapshot-DPEZoubb.mjs";
import "./logging-core-D09a-xJP.mjs";
import { i as resolveBrowserConfig, s as resolveProfile } from "./config-HztiUSlV.mjs";
import { a as loadBrowserConfigForRuntimeRefresh } from "./server-context-DsDmQZY8.mjs";
import { t as getExtensionRelayModule } from "./extension-relay.runtime.js";
import { t as ensureBrowserControlAuth } from "./control-auth-B4nwpwO0.mjs";
import { a as stopBrowserControlRuntime, n as ensureBrowserControlRuntime, o as withBrowserControlStart, r as getBrowserControlState } from "./browser-control-state-B-F0BJmc.mjs";
import { n as resolveBrowserPluginEnableState } from "./plugin-enabled-211d5JAm.mjs";
//#region extensions/browser/src/control-service.ts
const logService = createSubsystemLogger("browser").child("service");
async function startBrowserControlServiceUnlocked() {
const current = getBrowserControlState();
if (current) return current;
const cfg = getRuntimeConfig();
const browserCfg = loadBrowserConfigForRuntimeRefresh();
if (!resolveBrowserPluginEnableState(cfg).enabled) 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-BVujdECj.mjs");
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;
}
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-C6MZ4G1O.mjs");
disposeGatewayExtensionRelay();
const { stopBrowserScreencasts } = await import("./session-DOdPqKXp.mjs");
await stopBrowserScreencasts();
}
}
//#endregion
export { stopBrowserControlService as n, startBrowserControlServiceFromConfig as t };