export type BrowserProfileConfig = { /** CDP port for this profile. Allocated once at creation, persisted permanently. */ cdpPort?: number; /** CDP URL for this profile (use for remote Chrome). */ cdpUrl?: string; /** Profile driver (default: openclaw). */ driver?: "openclaw" | "extension"; /** Profile color (hex). Auto-assigned at creation. */ color: string; }; export type BrowserSnapshotDefaults = { /** Default snapshot mode (applies when mode is not provided). */ mode?: "efficient"; }; export type BrowserSsrFPolicyConfig = { /** Legacy alias for private-network access. Prefer dangerouslyAllowPrivateNetwork. */ allowPrivateNetwork?: boolean; /** If true, permit browser navigation to private/internal networks. Default: true */ dangerouslyAllowPrivateNetwork?: boolean; /** * Explicitly allowed hostnames (exact-match), including blocked names like localhost. * Example: ["localhost", "metadata.internal"] */ allowedHostnames?: string[]; /** * Hostname allowlist patterns for browser navigation. * Supports exact hosts and "*.example.com" wildcard subdomains. */ hostnameAllowlist?: string[]; }; export type BrowserConfig = { enabled?: boolean; /** If false, disable browser act:evaluate (arbitrary JS). Default: true */ evaluateEnabled?: boolean; /** Base URL of the CDP endpoint (for remote browsers). Default: loopback CDP on the derived port. */ cdpUrl?: string; /** Remote CDP HTTP timeout (ms). Default: 1500. */ remoteCdpTimeoutMs?: number; /** Remote CDP WebSocket handshake timeout (ms). Default: max(remoteCdpTimeoutMs * 2, 2000). */ remoteCdpHandshakeTimeoutMs?: number; /** Accent color for the openclaw browser profile (hex). Default: #FF4500 */ color?: string; /** Override the browser executable path (all platforms). */ executablePath?: string; /** Start Chrome headless (best-effort). Default: false */ headless?: boolean; /** Pass --no-sandbox to Chrome (Linux containers). Default: false */ noSandbox?: boolean; /** If true: never launch; only attach to an existing browser. Default: false */ attachOnly?: boolean; /** Default profile to use when profile param is omitted. Default: "chrome" */ defaultProfile?: string; /** Named browser profiles with explicit CDP ports or URLs. */ profiles?: Record; /** Default snapshot options (applied by the browser tool/CLI when unset). */ snapshotDefaults?: BrowserSnapshotDefaults; /** SSRF policy for browser navigation/open-tab operations. */ ssrfPolicy?: BrowserSsrFPolicyConfig; /** * Additional Chrome launch arguments. * Useful for stealth flags, window size overrides, or custom user-agent strings. * Example: ["--window-size=1920,1080", "--disable-infobars"] */ extraArgs?: string[]; };