import type { OpenClawConfig } from "../config/types.openclaw.js"; import { loadBundledPluginPublicSurfaceModuleSync } from "./facade-loader.js"; export type BrowserControlAuth = { token?: string; password?: string; }; type EnsureBrowserControlAuthParams = { cfg: OpenClawConfig; env?: NodeJS.ProcessEnv; }; type EnsureBrowserControlAuthResult = { auth: BrowserControlAuth; generatedToken?: string; }; type BrowserControlAuthSurface = { resolveBrowserControlAuth: (cfg?: OpenClawConfig, env?: NodeJS.ProcessEnv) => BrowserControlAuth; shouldAutoGenerateBrowserAuth: (env: NodeJS.ProcessEnv) => boolean; ensureBrowserControlAuth: ( params: EnsureBrowserControlAuthParams, ) => Promise; }; let cachedBrowserControlAuthSurface: BrowserControlAuthSurface | undefined; function loadBrowserControlAuthSurface(): BrowserControlAuthSurface { cachedBrowserControlAuthSurface ??= loadBundledPluginPublicSurfaceModuleSync({ dirName: "browser", artifactBasename: "browser-control-auth.js", }); return cachedBrowserControlAuthSurface; } export function resolveBrowserControlAuth( cfg?: OpenClawConfig, env: NodeJS.ProcessEnv = process.env, ): BrowserControlAuth { return loadBrowserControlAuthSurface().resolveBrowserControlAuth(cfg, env); } export function shouldAutoGenerateBrowserAuth(env: NodeJS.ProcessEnv): boolean { return loadBrowserControlAuthSurface().shouldAutoGenerateBrowserAuth(env); } export async function ensureBrowserControlAuth( params: EnsureBrowserControlAuthParams, ): Promise { return await loadBrowserControlAuthSurface().ensureBrowserControlAuth(params); }