diff --git a/README.md b/README.md index 5fe49b1..4ea79d8 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ agent-browser screenshot [path] # Take screenshot (--full for full page, b agent-browser pdf # Save as PDF agent-browser snapshot # Accessibility tree with refs (best for AI) agent-browser eval # Run JavaScript +agent-browser connect # Connect to browser via CDP agent-browser close # Close browser (aliases: quit, exit) ``` @@ -465,12 +466,16 @@ export async function handler() { Connect to an existing browser via Chrome DevTools Protocol: ```bash -# Connect to Electron app -agent-browser --cdp 9222 snapshot +# Start Chrome with: google-chrome --remote-debugging-port=9222 -# Connect to Chrome with remote debugging -# (Start Chrome with: google-chrome --remote-debugging-port=9222) -agent-browser --cdp 9222 open about:blank +# Connect once, then run commands without --cdp +agent-browser connect 9222 +agent-browser snapshot +agent-browser tab +agent-browser close + +# Or pass --cdp on each command +agent-browser --cdp 9222 snapshot ``` This enables control of: diff --git a/cli/src/commands.rs b/cli/src/commands.rs index ef0c1bf..4bb41e0 100644 --- a/cli/src/commands.rs +++ b/cli/src/commands.rs @@ -337,6 +337,19 @@ pub fn parse_command(args: &[String], flags: &Flags) -> Result Ok(json!({ "id": id, "action": "close" })), + // === Connect (CDP) === + "connect" => { + let port_str = rest.get(0).ok_or_else(|| ParseError::MissingArguments { + context: "connect".to_string(), + usage: "connect ", + })?; + let port: u16 = port_str.parse().map_err(|_| ParseError::MissingArguments { + context: format!("connect: invalid port '{}'", port_str), + usage: "connect ", + })?; + Ok(json!({ "id": id, "action": "launch", "cdpPort": port })) + } + // === Get === "get" => parse_get(&rest, &id), diff --git a/cli/src/output.rs b/cli/src/output.rs index 0889d8d..eebf98f 100644 --- a/cli/src/output.rs +++ b/cli/src/output.rs @@ -1261,6 +1261,7 @@ Core Commands: pdf Save as PDF snapshot Accessibility tree with refs (for AI) eval Run JavaScript + connect Connect to browser via CDP (e.g., connect 9222) close Close browser Navigation: diff --git a/docs/src/app/cdp-mode/page.tsx b/docs/src/app/cdp-mode/page.tsx index daeb4f2..7095dfb 100644 --- a/docs/src/app/cdp-mode/page.tsx +++ b/docs/src/app/cdp-mode/page.tsx @@ -6,12 +6,16 @@ export default function CDPMode() {

CDP Mode

Connect to an existing browser via Chrome DevTools Protocol:

- +# Connect once, then run commands without --cdp +agent-browser connect 9222 +agent-browser snapshot +agent-browser tab +agent-browser close + +# Or pass --cdp on each command +agent-browser --cdp 9222 snapshot`} />

Use cases

This enables control of: