diff --git a/extensions/browser/src/cli/browser-cli-actions-input/register.element.ts b/extensions/browser/src/cli/browser-cli-actions-input/register.element.ts index 437e0603396..63d06e84148 100644 --- a/extensions/browser/src/cli/browser-cli-actions-input/register.element.ts +++ b/extensions/browser/src/cli/browser-cli-actions-input/register.element.ts @@ -1,6 +1,7 @@ import type { Command } from "commander"; import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime"; import { + BROWSER_TAB_REFERENCE_HELP, parseBrowserNonNegativeIntegerOption, parseBrowserPositiveIntegerOption, type BrowserParentOpts, @@ -65,10 +66,7 @@ export function registerBrowserElementCommands( .command("click") .description("Click an element by ref from snapshot") .argument("", "Ref id from snapshot") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .option("--double", "Double click", false) .option("--button ", "Mouse button to use") .option("--modifiers ", "Comma-separated modifiers (Shift,Alt,Meta)") @@ -106,10 +104,7 @@ export function registerBrowserElementCommands( .description("Click viewport coordinates") .argument("", "Viewport x coordinate") .argument("", "Viewport y coordinate") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .option("--double", "Double click", false) .option("--button ", "Mouse button to use") .option("--delay-ms ", "Delay between mouse down/up", (v: string) => @@ -147,10 +142,7 @@ export function registerBrowserElementCommands( .argument("", "Text to type") .option("--submit", "Press Enter after typing", false) .option("--slowly", "Type slowly (human-like)", false) - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (ref: string | undefined, text: string, opts, cmd) => { const refValue = requireRef(ref); if (!refValue) { @@ -174,10 +166,7 @@ export function registerBrowserElementCommands( .command("press") .description("Press a key") .argument("", "Key to press (e.g. Enter)") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (key: string, opts, cmd) => { await runElementAction({ cmd, @@ -190,10 +179,7 @@ export function registerBrowserElementCommands( .command("hover") .description("Hover an element by ai ref") .argument("", "Ref id from snapshot") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (ref: string, opts, cmd) => { await runElementAction({ cmd, @@ -206,10 +192,7 @@ export function registerBrowserElementCommands( .command("scrollintoview") .description("Scroll an element into view by ref from snapshot") .argument("", "Ref id from snapshot") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .option("--timeout-ms ", "How long to wait for scroll (default: 20000)", (v: string) => parseBrowserPositiveIntegerOption(v, "--timeout-ms"), ) @@ -237,10 +220,7 @@ export function registerBrowserElementCommands( .description("Drag from one ref to another") .argument("", "Start ref id") .argument("", "End ref id") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (startRef: string, endRef: string, opts, cmd) => { await runElementAction({ cmd, @@ -259,10 +239,7 @@ export function registerBrowserElementCommands( .description("Select option(s) in a select element") .argument("", "Ref id from snapshot") .argument("", "Option values to select") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (ref: string, values: string[], opts, cmd) => { await runElementAction({ cmd, diff --git a/extensions/browser/src/cli/browser-cli-actions-input/register.files-downloads.ts b/extensions/browser/src/cli/browser-cli-actions-input/register.files-downloads.ts index fa26b6a9720..cfef0bb22a6 100644 --- a/extensions/browser/src/cli/browser-cli-actions-input/register.files-downloads.ts +++ b/extensions/browser/src/cli/browser-cli-actions-input/register.files-downloads.ts @@ -1,6 +1,7 @@ import type { Command } from "commander"; import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime"; import { + BROWSER_TAB_REFERENCE_HELP, callBrowserRequest, parseBrowserPositiveIntegerOption, type BrowserParentOpts, @@ -95,10 +96,7 @@ export function registerBrowserFilesAndDownloadsCommands( .option("--ref ", "Ref id from snapshot to click after arming") .option("--input-ref ", "Ref id for to set directly") .option("--element ", "CSS selector for ") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .option( "--timeout-ms ", "How long to wait for the next file chooser (default: 120000)", @@ -137,10 +135,7 @@ export function registerBrowserFilesAndDownloadsCommands( "[path]", "Save path within openclaw temp downloads dir (default: /tmp/openclaw/downloads/...; fallback: os.tmpdir()/openclaw/downloads/...)", ) - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .option( "--timeout-ms ", "How long to wait for the next download (default: 120000)", @@ -163,10 +158,7 @@ export function registerBrowserFilesAndDownloadsCommands( "", "Save path within openclaw temp downloads dir (e.g. report.pdf or /tmp/openclaw/downloads/report.pdf)", ) - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .option( "--timeout-ms ", "How long to wait for the download to start (default: 120000)", @@ -189,10 +181,7 @@ export function registerBrowserFilesAndDownloadsCommands( .option("--dismiss", "Dismiss the dialog", false) .option("--prompt ", "Prompt response text") .option("--dialog-id ", "Pending dialog id from snapshot/browser state") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .option( "--timeout-ms ", "How long to wait for the next dialog (default: 120000)", diff --git a/extensions/browser/src/cli/browser-cli-actions-input/register.form-wait-eval.ts b/extensions/browser/src/cli/browser-cli-actions-input/register.form-wait-eval.ts index 9a389156594..ed3da64babd 100644 --- a/extensions/browser/src/cli/browser-cli-actions-input/register.form-wait-eval.ts +++ b/extensions/browser/src/cli/browser-cli-actions-input/register.form-wait-eval.ts @@ -1,6 +1,7 @@ import type { Command } from "commander"; import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime"; import { + BROWSER_TAB_REFERENCE_HELP, parseBrowserNonNegativeIntegerOption, parseBrowserPositiveIntegerOption, type BrowserParentOpts, @@ -39,10 +40,7 @@ export function registerBrowserFormWaitEvalCommands( .description("Fill a form with JSON field descriptors") .option("--fields ", "JSON array of field objects") .option("--fields-file ", "Read JSON array from a file") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (opts, cmd) => { const { parent, profile } = resolveBrowserActionContext(cmd, parentOpts); try { @@ -83,10 +81,7 @@ export function registerBrowserFormWaitEvalCommands( "How long to wait for each condition (default: 20000)", (v: string) => parseBrowserPositiveIntegerOption(v, "--timeout-ms"), ) - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (selector: string | undefined, opts, cmd) => { const { parent, profile } = resolveBrowserActionContext(cmd, parentOpts); try { @@ -136,10 +131,7 @@ export function registerBrowserFormWaitEvalCommands( "How long to allow the evaluate function to run (default: 20000)", (v: string) => parseBrowserPositiveIntegerOption(v, "--timeout-ms"), ) - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (opts, cmd) => { const { parent, profile } = resolveBrowserActionContext(cmd, parentOpts); if (!opts.fn) { diff --git a/extensions/browser/src/cli/browser-cli-actions-input/register.navigation.ts b/extensions/browser/src/cli/browser-cli-actions-input/register.navigation.ts index 5f64d8ab113..73d027ff465 100644 --- a/extensions/browser/src/cli/browser-cli-actions-input/register.navigation.ts +++ b/extensions/browser/src/cli/browser-cli-actions-input/register.navigation.ts @@ -3,6 +3,7 @@ import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runti import { ACT_MAX_VIEWPORT_DIMENSION } from "../../browser/act-policy.js"; import { runBrowserResizeWithOutput } from "../browser-cli-resize.js"; import { + BROWSER_TAB_REFERENCE_HELP, callBrowserRequest, parseBrowserPositiveIntegerValue, type BrowserParentOpts, @@ -33,10 +34,7 @@ export function registerBrowserNavigationCommands( .command("navigate") .description("Navigate the current tab to a URL") .argument("", "URL to navigate to") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (url: string, opts, cmd) => { const { parent, profile } = resolveBrowserActionContext(cmd, parentOpts); try { @@ -69,10 +67,7 @@ export function registerBrowserNavigationCommands( .description("Resize the viewport") .argument("", "Viewport width") .argument("", "Viewport height") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (width: string, height: string, opts, cmd) => { const normalizedWidth = parsePositiveInteger(width, "width"); const normalizedHeight = parsePositiveInteger(height, "height"); diff --git a/extensions/browser/src/cli/browser-cli-actions-observe.ts b/extensions/browser/src/cli/browser-cli-actions-observe.ts index ee2062ba469..e4c06879c46 100644 --- a/extensions/browser/src/cli/browser-cli-actions-observe.ts +++ b/extensions/browser/src/cli/browser-cli-actions-observe.ts @@ -2,6 +2,7 @@ import type { Command } from "commander"; import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime"; import { runCommandWithRuntime } from "../core-api.js"; import { + BROWSER_TAB_REFERENCE_HELP, callBrowserRequest, parseBrowserPositiveIntegerOption, type BrowserParentOpts, @@ -23,10 +24,7 @@ export function registerBrowserActionObserveCommands( .command("console") .description("Get recent console messages") .option("--level ", "Filter by level (error, warn, info)") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (opts, cmd) => { const parent = parentOpts(cmd); const profile = parent?.browserProfile; @@ -55,10 +53,7 @@ export function registerBrowserActionObserveCommands( browser .command("pdf") .description("Save page as PDF") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (opts, cmd) => { const parent = parentOpts(cmd); const profile = parent?.browserProfile; @@ -85,10 +80,7 @@ export function registerBrowserActionObserveCommands( .command("responsebody") .description("Wait for a network response and return its body") .argument("", "URL (exact, substring, or glob like **/api)") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .option( "--timeout-ms ", "How long to wait for the response (default: 20000)", diff --git a/extensions/browser/src/cli/browser-cli-debug.ts b/extensions/browser/src/cli/browser-cli-debug.ts index 90421858745..e7b9d0c5a0b 100644 --- a/extensions/browser/src/cli/browser-cli-debug.ts +++ b/extensions/browser/src/cli/browser-cli-debug.ts @@ -1,7 +1,11 @@ import type { Command } from "commander"; import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime"; import { runCommandWithRuntime } from "../core-api.js"; -import { callBrowserRequest, type BrowserParentOpts } from "./browser-cli-shared.js"; +import { + BROWSER_TAB_REFERENCE_HELP, + callBrowserRequest, + type BrowserParentOpts, +} from "./browser-cli-shared.js"; import { danger, defaultRuntime, shortenHomePath } from "./core-api.js"; const BROWSER_DEBUG_TIMEOUT_MS = 20000; @@ -75,10 +79,7 @@ export function registerBrowserDebugCommands( .command("highlight") .description("Highlight an element by ref") .argument("", "Ref id from snapshot") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (ref: string, opts, cmd) => { await withDebugContext(cmd, parentOpts, async ({ parent, profile }) => { const result = await callDebugRequest(parent, { @@ -101,10 +102,7 @@ export function registerBrowserDebugCommands( .command("errors") .description("Get recent page errors") .option("--clear", "Clear stored errors after reading", false) - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (opts, cmd) => { await withDebugContext(cmd, parentOpts, async ({ parent, profile }) => { const result = await callDebugRequest<{ @@ -138,10 +136,7 @@ export function registerBrowserDebugCommands( .description("Get recent network requests (best-effort)") .option("--filter ", "Only show URLs that contain this substring") .option("--clear", "Clear stored requests after reading", false) - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (opts, cmd) => { await withDebugContext(cmd, parentOpts, async ({ parent, profile }) => { const result = await callDebugRequest<{ @@ -188,10 +183,7 @@ export function registerBrowserDebugCommands( trace .command("start") .description("Start trace recording") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .option("--no-screenshots", "Disable screenshots") .option("--no-snapshots", "Disable snapshots") .option("--sources", "Include sources (bigger traces)", false) @@ -222,10 +214,7 @@ export function registerBrowserDebugCommands( "--out ", "Output path within openclaw temp dir (e.g. trace.zip or /tmp/openclaw/trace.zip)", ) - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .action(async (opts, cmd) => { await withDebugContext(cmd, parentOpts, async ({ parent, profile }) => { const result = await callDebugRequest<{ path: string }>(parent, { diff --git a/extensions/browser/src/cli/browser-cli-inspect.ts b/extensions/browser/src/cli/browser-cli-inspect.ts index cd374f23201..8ad81ab67a1 100644 --- a/extensions/browser/src/cli/browser-cli-inspect.ts +++ b/extensions/browser/src/cli/browser-cli-inspect.ts @@ -2,6 +2,7 @@ import fs from "node:fs/promises"; import type { Command } from "commander"; import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime"; import { + BROWSER_TAB_REFERENCE_HELP, callBrowserRequest, parseBrowserNonNegativeIntegerValue, parseBrowserPositiveIntegerValue, @@ -42,10 +43,7 @@ export function registerBrowserInspectCommands( browser .command("screenshot") .description("Capture a screenshot (prints the saved path)") - .argument( - "[targetId]", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .argument("[targetId]", BROWSER_TAB_REFERENCE_HELP) .option("--full-page", "Capture full scrollable page", false) .option("--ref ", "ARIA ref from ai snapshot") .option("--element ", "CSS selector for element screenshot") @@ -87,10 +85,7 @@ export function registerBrowserInspectCommands( .command("snapshot") .description("Capture a snapshot (default: ai; aria is the accessibility tree)") .option("--format ", "Snapshot format (default: ai)", "ai") - .option( - "--target-id ", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .option("--target-id ", BROWSER_TAB_REFERENCE_HELP) .option("--limit ", "Max nodes (default: 500/800)") .option("--mode ", "Snapshot preset (efficient)") .option("--efficient", "Use the efficient snapshot preset", false) diff --git a/extensions/browser/src/cli/browser-cli-manage.ts b/extensions/browser/src/cli/browser-cli-manage.ts index f6cdaf0e1db..e138b78b96c 100644 --- a/extensions/browser/src/cli/browser-cli-manage.ts +++ b/extensions/browser/src/cli/browser-cli-manage.ts @@ -1,6 +1,7 @@ import type { Command } from "commander"; import { runCommandWithRuntime } from "../core-api.js"; import { + BROWSER_TAB_REFERENCE_HELP, callBrowserRequest, parseBrowserPositiveIntegerValue, type BrowserParentOpts, @@ -484,10 +485,7 @@ export function registerBrowserManageCommands( tab .command("label") .description("Assign a friendly label to a tab") - .argument( - "", - "Tab reference: suggested target id, tab id, label, raw target id, or unique raw prefix", - ) + .argument("", BROWSER_TAB_REFERENCE_HELP) .argument("