UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

183 lines (182 loc) • 8.49 kB
import { r as defaultRuntime } from "./runtime-DlO3PTAd.mjs"; import { t as formatCliCommand } from "./command-format-DwEdrDKL.mjs"; import { r as theme } from "./theme-DzaUZY4q.mjs"; import { t as formatDocsLink } from "./links-4Bgsoz0M.mjs"; import { t as addGatewayClientOptions } from "./gateway-rpc-0aouJxQt.mjs"; import { t as danger } from "./globals-DyT306Z_.mjs"; import "./runtime-env-C0XPA9NZ.mjs"; import { n as shouldEagerRegisterSubcommands } from "./command-registration-policy-BO2dweLS.mjs"; import "./setup-tools-8zAOgl__.mjs"; import "./gateway-runtime-CAr3K4tf.mjs"; import { n as formatHelpExamples } from "./help-format-xds_bDSp.mjs"; import { i as registerCommandGroups } from "./register-command-groups-D4NKpo80.mjs"; import "./cli-runtime-BSsYr5WY.mjs"; import { n as resolveBrowserLazySubcommand } from "./cli-output-mode-DViuKRjY.mjs"; //#region extensions/browser/src/cli/browser-cli-examples.ts const browserCoreExamples = [ "openclaw browser status", "openclaw browser start", "openclaw browser start --headless", "openclaw browser stop", "openclaw browser tabs", "openclaw browser open https://example.com", "openclaw browser focus abcd1234", "openclaw browser close abcd1234", "openclaw browser screenshot", "openclaw browser screenshot --full-page", "openclaw browser screenshot --ref 12", "openclaw browser snapshot", "openclaw browser snapshot --format aria --limit 200", "openclaw browser snapshot --efficient", "openclaw browser snapshot --labels" ]; const browserActionExamples = [ "openclaw browser navigate https://example.com", "openclaw browser resize 1280 720", "openclaw browser click 12 --double", "openclaw browser click-coords 120 340", "openclaw browser type 23 \"hello\" --submit", "openclaw browser press Enter", "openclaw browser hover 44", "openclaw browser drag 10 11", "openclaw browser select 9 OptionA OptionB", "openclaw browser upload /tmp/openclaw/uploads/file.pdf", "openclaw browser upload media://inbound/file.pdf", "openclaw browser fill --fields '[{\"ref\":\"1\",\"value\":\"Ada\"}]'", "openclaw browser dialog --accept", "openclaw browser wait --text \"Done\"", "openclaw browser evaluate --fn '(el) => el.textContent' --ref 7", "openclaw browser evaluate --fn 'const title = document.title; return title;'", "openclaw browser console --level error", "openclaw browser pdf", "openclaw browser batch --actions-file plan.json", "openclaw browser batch --actions '[{\"kind\":\"wait\",\"timeMs\":500},{\"kind\":\"click\",\"ref\":\"12\"},{\"kind\":\"type\",\"ref\":\"23\",\"text\":\"hello\"}]'", "openclaw browser batch --actions-file plan.json --continue" ]; //#endregion //#region extensions/browser/src/cli/browser-cli.ts const command = (name, description, options) => ({ name, description, ...options ? { options } : {} }); function browserCommandGroups(browser, parentOpts, pluginRoot) { return [ { placeholders: [ command("status", "Show browser status"), command("start", "Start the browser (no-op if already running)"), command("stop", "Stop the browser (best-effort)"), command("reset-profile", "Reset browser profile (moves it to Trash)"), command("tabs", "List open tabs"), command("tab", "Tab shortcuts (index-based)"), command("open", "Open a URL in a new tab"), command("focus", "Focus a tab by tab reference"), command("close", "Close a tab (tab reference optional)"), command("profiles", "List all browser profiles"), command("system-profiles", "List Chrome-family profiles available for cookie import"), command("import-profile", "Import cookies from a macOS Chrome-family profile"), command("create-profile", "Create a new browser profile"), command("delete-profile", "Delete a browser profile"), command("doctor", "Check browser plugin readiness", [{ flags: "--deep", description: "Run a live snapshot probe" }]) ], register: async () => { (await import("./browser-cli-manage-DK6Wk6vl.mjs")).registerBrowserManageCommands(browser, parentOpts); } }, { placeholders: [command("cookie-sync", "Sync allowlisted macOS browser cookies to a managed profile")], register: async () => { (await import("./browser-cli-cookie-sync-DIX4BiPH.mjs")).registerBrowserCookieSyncCommand(browser, parentOpts); } }, { placeholders: [command("screenshot", "Capture a screenshot (prints the saved path)"), command("snapshot", "Capture a snapshot (default: ai; aria is the accessibility tree)")], register: async () => { (await import("./browser-cli-inspect-DBpzH2hF.mjs")).registerBrowserInspectCommands(browser, parentOpts); } }, { placeholders: [ command("navigate", "Navigate the current tab to a URL"), command("resize", "Resize the viewport"), command("click", "Click an element by ref from snapshot"), command("click-coords", "Click viewport coordinates"), command("type", "Type into an element by ref from snapshot"), command("press", "Press a key"), command("hover", "Hover an element by ai ref"), command("scrollintoview", "Scroll an element into view by ref from snapshot"), command("drag", "Drag from one ref to another"), command("select", "Select option(s) in a select element"), command("upload", "Arm file upload for the next file chooser"), command("waitfordownload", "Wait for the next download (and save it)"), command("download", "Click a ref and save the resulting download"), command("dialog", "Arm the next modal dialog (alert/confirm/prompt)"), command("fill", "Fill a form with JSON field descriptors"), command("wait", "Wait for time, selector, URL, load state, or JS conditions"), command("evaluate", "Evaluate a function against the page or a ref"), command("batch", "Run a batch of browser actions in one call") ], register: async () => { (await import("./register-B1VQfRYo.mjs")).registerBrowserActionInputCommands(browser, parentOpts); } }, { placeholders: [ command("console", "Get recent console messages"), command("pdf", "Save page as PDF"), command("responsebody", "Wait for a network response and return its body") ], register: async () => { (await import("./browser-cli-actions-observe-DvHwZkaT.mjs")).registerBrowserActionObserveCommands(browser, parentOpts); } }, { placeholders: [ command("highlight", "Highlight an element by ref"), command("errors", "Get recent page errors"), command("requests", "Get recent network requests (best-effort)"), command("trace", "Record a Playwright trace") ], register: async () => { (await import("./browser-cli-debug-C5JWKo9_.mjs")).registerBrowserDebugCommands(browser, parentOpts); } }, { placeholders: [ command("cookies", "Read/write cookies"), command("storage", "Read/write localStorage/sessionStorage"), command("set", "Browser environment settings") ], register: async () => { (await import("./browser-cli-state-q3BmbzZc.mjs")).registerBrowserStateCommands(browser, parentOpts); } }, { placeholders: [command("extension", "Chrome extension install, status, and pairing")], register: async () => { (await import("./browser-cli-extension-CDVzbVGR.mjs")).registerBrowserExtensionCommands(browser, parentOpts, pluginRoot); } } ]; } function registerBrowserCli(program, argv = process.argv, pluginRoot) { const browser = program.command("browser").description("Manage OpenClaw's dedicated browser (Chrome/Chromium)").option("--browser-profile <name>", "Browser profile name (default from config)").option("--json", "Output machine-readable JSON", false).addHelpText("after", () => `\n${theme.heading("Examples:")}\n${formatHelpExamples([...browserCoreExamples, ...browserActionExamples].map((cmd) => [cmd, ""]), true)}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/browser", "docs.openclaw.ai/cli/browser")}\n`).action(() => { browser.outputHelp(); defaultRuntime.error(danger(`Missing subcommand. Try: "${formatCliCommand("openclaw browser status")}"`)); defaultRuntime.exit(1); }); addGatewayClientOptions(browser); const parentOpts = () => browser.opts(); const subcommand = resolveBrowserLazySubcommand(argv); registerCommandGroups(browser, browserCommandGroups(browser, parentOpts, pluginRoot), { eager: shouldEagerRegisterSubcommands(), primary: subcommand, registerPrimaryOnly: subcommand !== null }); } //#endregion export { registerBrowserCli };