From 2d36ae63263c69ab79fc2a912c67741334578040 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 13 Dec 2025 15:16:42 +0000 Subject: [PATCH] fix(browser): derive cdp port from control url --- src/browser/config.test.ts | 8 ++++++++ src/browser/config.ts | 8 ++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/browser/config.test.ts b/src/browser/config.test.ts index 1c64cc7d6..9dc83d19f 100644 --- a/src/browser/config.test.ts +++ b/src/browser/config.test.ts @@ -38,6 +38,14 @@ describe("browser config", () => { expect(shouldStartLocalBrowserServer(resolved)).toBe(false); }); + it("derives CDP port as control port + 1", () => { + const resolved = resolveBrowserConfig({ + controlUrl: "http://127.0.0.1:19000", + }); + expect(resolved.controlPort).toBe(19000); + expect(resolved.cdpPort).toBe(19001); + }); + it("rejects unsupported protocols", () => { expect(() => resolveBrowserConfig({ controlUrl: "ws://127.0.0.1:18790" }), diff --git a/src/browser/config.ts b/src/browser/config.ts index 9307c3278..f8182de45 100644 --- a/src/browser/config.ts +++ b/src/browser/config.ts @@ -1,6 +1,5 @@ import type { BrowserConfig } from "../config/config.js"; import { - DEFAULT_CLAWD_BROWSER_CDP_PORT, DEFAULT_CLAWD_BROWSER_COLOR, DEFAULT_CLAWD_BROWSER_CONTROL_URL, DEFAULT_CLAWD_BROWSER_ENABLED, @@ -55,7 +54,12 @@ export function resolveBrowserConfig( throw new Error(`browser.controlUrl has invalid port: ${parsed.port}`); } - const cdpPort = DEFAULT_CLAWD_BROWSER_CDP_PORT; + const cdpPort = port + 1; + if (cdpPort > 65535) { + throw new Error( + `browser.controlUrl port (${port}) is too high; cannot derive CDP port (${cdpPort})`, + ); + } if (port === cdpPort) { throw new Error( `browser.controlUrl port (${port}) must not equal CDP port (${cdpPort})`,