refactor: finish browser compat untangle

This commit is contained in:
Peter Steinberger
2026-03-26 22:41:46 +00:00
parent 8ee809f3cc
commit 83ca6fbfc6
266 changed files with 424 additions and 179 deletions

View File

@@ -1,3 +1,5 @@
export { startBrowserBridgeServer, stopBrowserBridgeServer } from "./browser/bridge-server.js";
export type { BrowserBridge } from "./browser/bridge-server.js";
export {
browserAct,
browserArmDialog,
@@ -32,8 +34,20 @@ export type {
ProfileStatus,
SnapshotResult,
} from "./browser/client.js";
export type { BrowserExecutable } from "./browser/chrome.executables.js";
export type { ResolvedBrowserConfig, ResolvedBrowserProfile } from "./browser/config.js";
export { resolveBrowserConfig, resolveProfile } from "./browser/config.js";
export { DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./browser/constants.js";
export {
DEFAULT_AI_SNAPSHOT_MAX_CHARS,
DEFAULT_BROWSER_EVALUATE_ENABLED,
DEFAULT_OPENCLAW_BROWSER_COLOR,
DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME,
} from "./browser/constants.js";
export {
parseBrowserMajorVersion,
readBrowserVersion,
resolveGoogleChromeExecutableForPlatform,
} from "./browser/chrome.executables.js";
export { redactCdpUrl } from "./browser/cdp.helpers.js";
export { DEFAULT_UPLOAD_DIR, resolveExistingPathsWithinRoot } from "./browser/paths.js";
export { getBrowserProfileCapabilities } from "./browser/profile-capabilities.js";
@@ -44,10 +58,12 @@ export {
resolveRequestedBrowserProfile,
} from "./browser/request-policy.js";
export {
closeTrackedBrowserTabsForSessions,
trackSessionBrowserTab,
untrackSessionBrowserTab,
} from "./browser/session-tab-registry.js";
export { ensureBrowserControlAuth, resolveBrowserControlAuth } from "./browser/control-auth.js";
export { movePathToTrash } from "./browser/trash.js";
export {
createBrowserControlContext,
getBrowserControlState,

View File

@@ -94,7 +94,6 @@ export {
selectDefaultNodeFromList,
safeParseJson,
shortenHomePath,
startBrowserControlServerIfEnabled,
stringEnum,
theme,
withTimeout,

View File

@@ -1,9 +1,10 @@
import {
startBrowserControlServerIfEnabled,
startLazyPluginServiceModule,
type LazyPluginServiceHandle,
type OpenClawPluginService,
} from "openclaw/plugin-sdk/browser-support";
type BrowserControlHandle = Awaited<ReturnType<typeof startBrowserControlServerIfEnabled>>;
type BrowserControlHandle = LazyPluginServiceHandle | null;
export function createBrowserPluginService(): OpenClawPluginService {
let handle: BrowserControlHandle = null;
@@ -14,7 +15,17 @@ export function createBrowserPluginService(): OpenClawPluginService {
if (handle) {
return;
}
handle = await startBrowserControlServerIfEnabled();
handle = await startLazyPluginServiceModule({
skipEnvVar: "OPENCLAW_SKIP_BROWSER_CONTROL_SERVER",
overrideEnvVar: "OPENCLAW_BROWSER_CONTROL_MODULE",
// Keep the default module import static so compiled builds still bundle it.
loadDefaultModule: async () => await import("./server.js"),
startExportNames: [
"startBrowserControlServiceFromConfig",
"startBrowserControlServerFromConfig",
],
stopExportNames: ["stopBrowserControlService", "stopBrowserControlServer"],
});
},
stop: async () => {
const current = handle;

View File

@@ -1,4 +1,4 @@
import type { BrowserBridge } from "../../browser/bridge-server.js";
import type { BrowserBridge } from "../../plugin-sdk/browser-runtime.js";
export const BROWSER_BRIDGES = new Map<
string,

View File

@@ -1,12 +1,14 @@
import crypto from "node:crypto";
import { startBrowserBridgeServer, stopBrowserBridgeServer } from "../../browser/bridge-server.js";
import { type ResolvedBrowserConfig, resolveProfile } from "../../browser/config.js";
import { deriveDefaultBrowserCdpPortRange } from "../../config/port-defaults.js";
import {
DEFAULT_BROWSER_EVALUATE_ENABLED,
DEFAULT_OPENCLAW_BROWSER_COLOR,
DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME,
} from "../../browser/constants.js";
import { deriveDefaultBrowserCdpPortRange } from "../../config/port-defaults.js";
resolveProfile,
startBrowserBridgeServer,
stopBrowserBridgeServer,
type ResolvedBrowserConfig,
} from "../../plugin-sdk/browser-runtime.js";
import { defaultRuntime } from "../../runtime.js";
import { BROWSER_BRIDGES } from "./browser-bridges.js";
import { computeSandboxBrowserConfigHash } from "./config-hash.js";

View File

@@ -1,8 +1,11 @@
import fs from "node:fs/promises";
import { DEFAULT_BROWSER_EVALUATE_ENABLED } from "../../browser/constants.js";
import { ensureBrowserControlAuth, resolveBrowserControlAuth } from "../../browser/control-auth.js";
import type { OpenClawConfig } from "../../config/config.js";
import { loadConfig } from "../../config/config.js";
import {
DEFAULT_BROWSER_EVALUATE_ENABLED,
ensureBrowserControlAuth,
resolveBrowserControlAuth,
} from "../../plugin-sdk/browser-runtime.js";
import { defaultRuntime } from "../../runtime.js";
import { resolveUserPath } from "../../utils.js";
import { syncSkillsToWorkspace } from "../skills.js";

View File

@@ -1,5 +1,5 @@
import { stopBrowserBridgeServer } from "../../browser/bridge-server.js";
import { loadConfig } from "../../config/config.js";
import { stopBrowserBridgeServer } from "../../plugin-sdk/browser-runtime.js";
import { getSandboxBackendManager } from "./backend.js";
import { BROWSER_BRIDGES } from "./browser-bridges.js";
import { dockerSandboxBackendManager } from "./docker-backend.js";

View File

@@ -1,5 +1,5 @@
import { stopBrowserBridgeServer } from "../../browser/bridge-server.js";
import { loadConfig } from "../../config/config.js";
import { stopBrowserBridgeServer } from "../../plugin-sdk/browser-runtime.js";
import { defaultRuntime } from "../../runtime.js";
import { getSandboxBackendManager } from "./backend.js";
import { BROWSER_BRIDGES } from "./browser-bridges.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser-tool.actions.js";
export * from "../../compat/browser/tools/browser-tool.actions.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser-tool.schema.js";
export * from "../../compat/browser/tools/browser-tool.schema.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser-tool.js";
export * from "../../compat/browser/tools/browser-tool.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/bridge-auth-registry.js";
export * from "../compat/browser/bridge-auth-registry.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/bridge-server.js";
export * from "../compat/browser/bridge-server.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/cdp-proxy-bypass.js";
export * from "../compat/browser/cdp-proxy-bypass.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/cdp-timeouts.js";
export * from "../compat/browser/cdp-timeouts.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/cdp.helpers.js";
export * from "../compat/browser/cdp.helpers.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/cdp.js";
export * from "../compat/browser/cdp.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/chrome-mcp.snapshot.js";
export * from "../compat/browser/chrome-mcp.snapshot.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/chrome-mcp.js";
export * from "../compat/browser/chrome-mcp.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/chrome-user-data-dir.test-harness.js";
export * from "../compat/browser/chrome-user-data-dir.test-harness.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/chrome.executables.js";
export * from "../compat/browser/chrome.executables.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/chrome.profile-decoration.js";
export * from "../compat/browser/chrome.profile-decoration.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/chrome.js";
export * from "../compat/browser/chrome.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/client-actions-core.js";
export * from "../compat/browser/client-actions-core.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/client-actions-observe.js";
export * from "../compat/browser/client-actions-observe.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/client-actions-state.js";
export * from "../compat/browser/client-actions-state.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/client-actions-types.js";
export * from "../compat/browser/client-actions-types.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/client-actions-url.js";
export * from "../compat/browser/client-actions-url.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/client-actions.js";
export * from "../compat/browser/client-actions.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/client-fetch.js";
export * from "../compat/browser/client-fetch.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/client.js";
export * from "../compat/browser/client.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/config.js";
export * from "../compat/browser/config.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/constants.js";
export * from "../compat/browser/constants.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/control-auth.js";
export * from "../compat/browser/control-auth.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/control-service.js";
export * from "../compat/browser/control-service.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/csrf.js";
export * from "../compat/browser/csrf.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/errors.js";
export * from "../compat/browser/errors.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/form-fields.js";
export * from "../compat/browser/form-fields.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/http-auth.js";
export * from "../compat/browser/http-auth.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/navigation-guard.js";
export * from "../compat/browser/navigation-guard.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/output-atomic.js";
export * from "../compat/browser/output-atomic.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/paths.js";
export * from "../compat/browser/paths.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/plugin-enabled.js";
export * from "../compat/browser/plugin-enabled.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/plugin-service.js";
export * from "../compat/browser/plugin-service.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/profile-capabilities.js";
export * from "../compat/browser/profile-capabilities.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/profiles-service.js";
export * from "../compat/browser/profiles-service.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/profiles.js";
export * from "../compat/browser/profiles.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/proxy-files.js";
export * from "../compat/browser/proxy-files.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-ai-module.js";
export * from "../compat/browser/pw-ai-module.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-ai-state.js";
export * from "../compat/browser/pw-ai-state.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-ai.js";
export * from "../compat/browser/pw-ai.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-role-snapshot.js";
export * from "../compat/browser/pw-role-snapshot.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-session.mock-setup.js";
export * from "../compat/browser/pw-session.mock-setup.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-session.page-cdp.js";
export * from "../compat/browser/pw-session.page-cdp.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-session.js";
export * from "../compat/browser/pw-session.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-tools-core.activity.js";
export * from "../compat/browser/pw-tools-core.activity.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-tools-core.downloads.js";
export * from "../compat/browser/pw-tools-core.downloads.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-tools-core.interactions.js";
export * from "../compat/browser/pw-tools-core.interactions.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-tools-core.responses.js";
export * from "../compat/browser/pw-tools-core.responses.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-tools-core.shared.js";
export * from "../compat/browser/pw-tools-core.shared.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-tools-core.snapshot.js";
export * from "../compat/browser/pw-tools-core.snapshot.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-tools-core.state.js";
export * from "../compat/browser/pw-tools-core.state.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-tools-core.storage.js";
export * from "../compat/browser/pw-tools-core.storage.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-tools-core.test-harness.js";
export * from "../compat/browser/pw-tools-core.test-harness.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-tools-core.trace.js";
export * from "../compat/browser/pw-tools-core.trace.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/pw-tools-core.js";
export * from "../compat/browser/pw-tools-core.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/request-policy.js";
export * from "../compat/browser/request-policy.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/resolved-config-refresh.js";
export * from "../compat/browser/resolved-config-refresh.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/agent.act.download.js";
export * from "../../compat/browser/routes/agent.act.download.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/agent.act.hooks.js";
export * from "../../compat/browser/routes/agent.act.hooks.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/agent.act.shared.js";
export * from "../../compat/browser/routes/agent.act.shared.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/agent.act.js";
export * from "../../compat/browser/routes/agent.act.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/agent.debug.js";
export * from "../../compat/browser/routes/agent.debug.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/agent.shared.js";
export * from "../../compat/browser/routes/agent.shared.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/agent.snapshot.plan.js";
export * from "../../compat/browser/routes/agent.snapshot.plan.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/agent.snapshot.js";
export * from "../../compat/browser/routes/agent.snapshot.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/agent.storage.js";
export * from "../../compat/browser/routes/agent.storage.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/agent.js";
export * from "../../compat/browser/routes/agent.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/basic.js";
export * from "../../compat/browser/routes/basic.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/dispatcher.js";
export * from "../../compat/browser/routes/dispatcher.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/index.js";
export * from "../../compat/browser/routes/index.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/output-paths.js";
export * from "../../compat/browser/routes/output-paths.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/path-output.js";
export * from "../../compat/browser/routes/path-output.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/tabs.js";
export * from "../../compat/browser/routes/tabs.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/test-helpers.js";
export * from "../../compat/browser/routes/test-helpers.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/types.js";
export * from "../../compat/browser/routes/types.js";

View File

@@ -1 +1 @@
export * from "../../../extensions/browser/src/browser/routes/utils.js";
export * from "../../compat/browser/routes/utils.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/runtime-lifecycle.js";
export * from "../compat/browser/runtime-lifecycle.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/safe-filename.js";
export * from "../compat/browser/safe-filename.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/screenshot.js";
export * from "../compat/browser/screenshot.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/server-context.availability.js";
export * from "../compat/browser/server-context.availability.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/server-context.chrome-test-harness.js";
export * from "../compat/browser/server-context.chrome-test-harness.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/server-context.constants.js";
export * from "../compat/browser/server-context.constants.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/server-context.remote-tab-ops.harness.js";
export * from "../compat/browser/server-context.remote-tab-ops.harness.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/server-context.reset.js";
export * from "../compat/browser/server-context.reset.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/server-context.selection.js";
export * from "../compat/browser/server-context.selection.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/server-context.tab-ops.js";
export * from "../compat/browser/server-context.tab-ops.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/server-context.js";
export * from "../compat/browser/server-context.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/server-context.types.js";
export * from "../compat/browser/server-context.types.js";

View File

@@ -1 +1 @@
export * from "../../extensions/browser/src/browser/server-lifecycle.js";
export * from "../compat/browser/server-lifecycle.js";

Some files were not shown because too many files have changed in this diff Show More