@gguf/claw
Version:
WhatsApp gateway CLI (Baileys web) with Pi RPC agent
61 lines (59 loc) • 2.44 kB
JavaScript
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
import { t as createSubsystemLogger } from "./subsystem-CAq3uyo7.js";
import { i as loadConfig } from "./config-CAuZ-EkU.js";
import { S as ensureChromeExtensionRelayServer } from "./chrome-BNSd7Bie.js";
import { a as resolveProfile, i as resolveBrowserConfig, t as createBrowserRouteContext } from "./server-context-vChIAqjH.js";
//#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 });
}
async function startBrowserControlServiceFromConfig() {
if (state) return state;
const cfg = loadConfig();
const resolved = resolveBrowserConfig(cfg.browser, cfg);
if (!resolved.enabled) return null;
state = {
server: null,
port: resolved.controlPort,
resolved,
profiles: /* @__PURE__ */ new Map()
};
for (const name of Object.keys(resolved.profiles)) {
const profile = resolveProfile(resolved, name);
if (!profile || profile.driver !== "extension") continue;
await ensureChromeExtensionRelayServer({ cdpUrl: profile.cdpUrl }).catch((err) => {
logService.warn(`Chrome extension relay init failed for profile "${name}": ${String(err)}`);
});
}
logService.info(`Browser control service ready (profiles=${Object.keys(resolved.profiles).length})`);
return state;
}
async function stopBrowserControlService() {
const current = state;
if (!current) return;
const ctx = createBrowserRouteContext({ getState: () => state });
try {
for (const name of Object.keys(current.resolved.profiles)) try {
await ctx.forProfile(name).stopRunningBrowser();
} catch {}
} catch (err) {
logService.warn(`openclaw browser stop failed: ${String(err)}`);
}
state = null;
try {
await (await import("./pw-ai-DYpQO6HI.js")).closePlaywrightBrowserConnection();
} catch {}
}
//#endregion
export { createBrowserControlContext as n, startBrowserControlServiceFromConfig as r, control_service_exports as t };