| import type { Command } from "commander"; |
| import { danger } from "../../globals.js"; |
| import { defaultRuntime } from "../../runtime.js"; |
| import { runBrowserResizeWithOutput } from "../browser-cli-resize.js"; |
| import { callBrowserRequest, type BrowserParentOpts } from "../browser-cli-shared.js"; |
| import { requireRef, resolveBrowserActionContext } from "./shared.js"; |
|
|
| export function registerBrowserNavigationCommands( |
| browser: Command, |
| parentOpts: (cmd: Command) => BrowserParentOpts, |
| ) { |
| browser |
| .command("navigate") |
| .description("Navigate the current tab to a URL") |
| .argument("<url>", "URL to navigate to") |
| .option("--target-id <id>", "CDP target id (or unique prefix)") |
| .action(async (url: string, opts, cmd) => { |
| const { parent, profile } = resolveBrowserActionContext(cmd, parentOpts); |
| try { |
| const result = await callBrowserRequest<{ url?: string }>( |
| parent, |
| { |
| method: "POST", |
| path: "/navigate", |
| query: profile ? { profile } : undefined, |
| body: { |
| url, |
| targetId: opts.targetId?.trim() || undefined, |
| }, |
| }, |
| { timeoutMs: 20000 }, |
| ); |
| if (parent?.json) { |
| defaultRuntime.log(JSON.stringify(result, null, 2)); |
| return; |
| } |
| defaultRuntime.log(`navigated to ${result.url ?? url}`); |
| } catch (err) { |
| defaultRuntime.error(danger(String(err))); |
| defaultRuntime.exit(1); |
| } |
| }); |
|
|
| browser |
| .command("resize") |
| .description("Resize the viewport") |
| .argument("<width>", "Viewport width", (v: string) => Number(v)) |
| .argument("<height>", "Viewport height", (v: string) => Number(v)) |
| .option("--target-id <id>", "CDP target id (or unique prefix)") |
| .action(async (width: number, height: number, opts, cmd) => { |
| const { parent, profile } = resolveBrowserActionContext(cmd, parentOpts); |
| try { |
| await runBrowserResizeWithOutput({ |
| parent, |
| profile, |
| width, |
| height, |
| targetId: opts.targetId, |
| timeoutMs: 20000, |
| successMessage: `resized to ${width}x${height}`, |
| }); |
| } catch (err) { |
| defaultRuntime.error(danger(String(err))); |
| defaultRuntime.exit(1); |
| } |
| }); |
|
|
| |
| void requireRef; |
| } |
|
|