UNPKG

@gguf/claw

Version:

Multi-channel AI gateway with extensible messaging integrations

88 lines (85 loc) 3.25 kB
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js"; import { t as createSubsystemLogger } from "./subsystem-BCQGGxdd.js"; import { i as loadConfig } from "./config-PQiujvsf.js"; import { x as ensureChromeExtensionRelayServer } from "./chrome-Dd5zBIFu.js"; import { a as resolveProfile, i as resolveBrowserConfig, n as listKnownProfileNames, p as ensureBrowserControlAuth, t as createBrowserRouteContext } from "./server-context-DAWsUNUs.js"; //#region src/browser/server-lifecycle.ts async function ensureExtensionRelayForProfiles(params) { for (const name of Object.keys(params.resolved.profiles)) { const profile = resolveProfile(params.resolved, name); if (!profile || profile.driver !== "extension") continue; await ensureChromeExtensionRelayServer({ cdpUrl: profile.cdpUrl }).catch((err) => { params.onWarn(`Chrome extension relay init failed for profile "${name}": ${String(err)}`); }); } } async function stopKnownBrowserProfiles(params) { const current = params.getState(); if (!current) return; const ctx = createBrowserRouteContext({ getState: params.getState, refreshConfigFromDisk: true }); try { for (const name of listKnownProfileNames(current)) try { await ctx.forProfile(name).stopRunningBrowser(); } catch {} } catch (err) { params.onWarn(`openclaw browser stop failed: ${String(err)}`); } } //#endregion //#region src/browser/control-service.ts var control_service_exports = /* @__PURE__ */ __exportAll({ createBrowserControlContext: () => createBrowserControlContext, getBrowserControlState: () => getBrowserControlState, startBrowserControlServiceFromConfig: () => startBrowserControlServiceFromConfig, stopBrowserControlService: () => stopBrowserControlService }); let state = null; const logService = createSubsystemLogger("browser").child("service"); function getBrowserControlState() { return state; } function createBrowserControlContext() { return createBrowserRouteContext({ getState: () => state, refreshConfigFromDisk: true }); } async function startBrowserControlServiceFromConfig() { if (state) return state; const cfg = loadConfig(); const resolved = resolveBrowserConfig(cfg.browser, cfg); 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)}`); } state = { server: null, port: resolved.controlPort, resolved, profiles: /* @__PURE__ */ new Map() }; await ensureExtensionRelayForProfiles({ resolved, onWarn: (message) => logService.warn(message) }); logService.info(`Browser control service ready (profiles=${Object.keys(resolved.profiles).length})`); return state; } async function stopBrowserControlService() { if (!state) return; await stopKnownBrowserProfiles({ getState: () => state, onWarn: (message) => logService.warn(message) }); state = null; try { await (await import("./pw-ai-BY71AwoE.js")).closePlaywrightBrowserConnection(); } catch {} } //#endregion export { createBrowserControlContext as n, startBrowserControlServiceFromConfig as r, control_service_exports as t };