codex-control-chrome-mcp 1.3.2 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,7 +6,11 @@ This project follows semantic versioning.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- ## [1.3.2] - 2026-07-04
9
+ ## [1.3.3] - 2026-07-04
10
+
11
+ ### Fixed
12
+
13
+ - `chrome_cdp_send` now attaches first and self-heals a stale debugger attachment, matching `chrome_evaluate`/`chrome_navigate`/`chrome_screenshot` (added in 1.3.1). Previously it sent the raw CDP command with no preceding `attach` and no recovery, so any command routed through it (e.g. `Page.close`, `Network.enable`) dead-ended on `Debugger is not attached` whenever the attachment had gone stale — which happens more often when multiple sessions share one browser and contend for the single debugger per tab. It now wraps the command in the same attach → run → (on "not attached") detach → attach → retry-once helper. Note this only recovers one-shot commands: flows that need the debugger to stay attached over time (e.g. `Network.enable` then streaming events via `chrome_read_events`) remain fragile under contention, so prefer page-side APIs (Resource Timing / PerformanceObserver) there.
10
14
 
11
15
  ### Added
12
16
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-control-chrome-mcp",
3
- "version": "1.3.2",
3
+ "version": "1.3.3",
4
4
  "description": "MCP server and native host bridge for controlling Chrome through the Codex Chrome extension.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/mcp-server.js CHANGED
@@ -92,7 +92,7 @@ class ChromeUseRuntime {
92
92
  }
93
93
  }
94
94
 
95
- function registerTools(server, runtime) {
95
+ export function registerTools(server, runtime) {
96
96
  server.registerTool(
97
97
  "chrome_status",
98
98
  {
@@ -217,7 +217,10 @@ function registerTools(server, runtime) {
217
217
  timeoutMs: z.number().int().positive().optional(),
218
218
  },
219
219
  },
220
- async (args) => toolResult(await executeCdp(runtime, args)),
220
+ async ({ tabId, method, params, timeoutMs }) =>
221
+ toolResult(await withReattach(runtime, tabId, () =>
222
+ executeCdp(runtime, { tabId, method, params, timeoutMs }),
223
+ )),
221
224
  );
222
225
 
223
226
  server.registerTool(