openchrome-mcp 1.1.0 → 1.2.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"computer.d.ts","sourceRoot":"","sources":["../../src/tools/computer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAguB1C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAE5D"}
1
+ {"version":3,"file":"computer.d.ts","sourceRoot":"","sources":["../../src/tools/computer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAqmB1C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAE5D"}
@@ -6,10 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.registerComputerTool = registerComputerTool;
7
7
  const session_manager_1 = require("../session-manager");
8
8
  const ref_id_manager_1 = require("../utils/ref-id-manager");
9
- const screenshot_scheduler_1 = require("../cdp/screenshot-scheduler");
10
- // Maximum screenshot dimensions to avoid API errors (2000px limit)
11
- const MAX_SCREENSHOT_WIDTH = 1920;
12
- const MAX_SCREENSHOT_HEIGHT = 1080;
13
9
  const definition = {
14
10
  name: 'computer',
15
11
  description: 'Use mouse and keyboard to interact with a web browser, and take screenshots.',
@@ -61,7 +57,7 @@ const definition = {
61
57
  },
62
58
  ref: {
63
59
  type: 'string',
64
- description: 'Element reference ID (ref_N from read_page) or backendNodeId (number from DOM mode). Can be used for scroll_to or as an alternative to coordinate for click actions.',
60
+ description: 'Element reference ID (ref_N from read_page) or backendNodeId (number from DOM mode)',
65
61
  },
66
62
  },
67
63
  required: ['action', 'tabId'],
@@ -84,7 +80,7 @@ const handler = async (sessionId, args) => {
84
80
  };
85
81
  }
86
82
  try {
87
- const page = await sessionManager.getPage(sessionId, tabId, undefined, 'computer');
83
+ const page = await sessionManager.getPage(sessionId, tabId);
88
84
  if (!page) {
89
85
  return {
90
86
  content: [{ type: 'text', text: `Error: Tab ${tabId} not found` }],
@@ -93,95 +89,42 @@ const handler = async (sessionId, args) => {
93
89
  }
94
90
  switch (action) {
95
91
  case 'screenshot': {
96
- // Save original viewport to restore later
97
- const originalViewport = page.viewport();
98
- // ALWAYS ensure viewport is within limits before screenshot
99
- // This prevents the 2000px API error regardless of current state
100
- const currentWidth = originalViewport?.width ?? 1920;
101
- const currentHeight = originalViewport?.height ?? 1080;
102
- const needsResize = !originalViewport ||
103
- currentWidth > MAX_SCREENSHOT_WIDTH ||
104
- currentHeight > MAX_SCREENSHOT_HEIGHT;
105
- if (needsResize) {
106
- // Set viewport to max allowed size
107
- const newWidth = Math.min(currentWidth, MAX_SCREENSHOT_WIDTH);
108
- const newHeight = Math.min(currentHeight, MAX_SCREENSHOT_HEIGHT);
109
- await page.setViewport({
110
- width: newWidth,
111
- height: newHeight,
112
- deviceScaleFactor: 1, // Ensure 1:1 pixel ratio
113
- });
114
- }
115
- // Use ScreenshotScheduler for concurrency-controlled capture
116
- const cdpClient = (0, session_manager_1.getSessionManager)().getCDPClient();
117
- const scheduler = (0, screenshot_scheduler_1.getScreenshotScheduler)();
118
- const { data: screenshot } = await scheduler.capture(page, cdpClient, {
119
- format: 'webp',
120
- quality: 60,
121
- clip: {
122
- x: 0,
123
- y: 0,
124
- width: Math.min(currentWidth, MAX_SCREENSHOT_WIDTH),
125
- height: Math.min(currentHeight, MAX_SCREENSHOT_HEIGHT),
126
- scale: 1,
127
- },
128
- optimizeForSpeed: true,
92
+ const screenshot = await page.screenshot({
93
+ encoding: 'base64',
94
+ type: 'png',
129
95
  });
130
- // Restore original viewport if we changed it
131
- if (needsResize && originalViewport) {
132
- await page.setViewport(originalViewport);
133
- }
134
96
  return {
135
97
  content: [
136
98
  {
137
99
  type: 'image',
138
100
  data: screenshot,
139
- mimeType: 'image/webp',
101
+ mimeType: 'image/png',
140
102
  },
141
103
  ],
142
104
  };
143
105
  }
144
106
  case 'left_click': {
145
- // Support ref-based clicking
146
- let clickCoord = coordinate || null;
107
+ let clickCoord = coordinate;
147
108
  let refInfo = '';
148
109
  if (ref && !coordinate) {
149
- const refIdManager = (0, ref_id_manager_1.getRefIdManager)();
150
- const refEntry = refIdManager.getRef(sessionId, tabId, ref);
151
- if (!refEntry) {
152
- return {
153
- content: [{ type: 'text', text: `Error: Element ${ref} not found` }],
154
- isError: true,
155
- };
156
- }
157
- // Scroll into view and get coordinates
158
- const cdpClient = sessionManager.getCDPClient();
159
- try {
160
- await cdpClient.send(page, 'DOM.scrollIntoViewIfNeeded', {
161
- backendNodeId: refEntry.backendDOMNodeId,
162
- });
163
- const { model } = await cdpClient.send(page, 'DOM.getBoxModel', {
164
- backendNodeId: refEntry.backendDOMNodeId,
165
- });
166
- // content is [x1,y1, x2,y1, x2,y2, x1,y2] - get center
167
- const x = (model.content[0] + model.content[2]) / 2;
168
- const y = (model.content[1] + model.content[5]) / 2;
169
- clickCoord = [Math.round(x), Math.round(y)];
170
- refInfo = ` [${ref}]`;
171
- }
172
- catch (e) {
173
- return {
174
- content: [{ type: 'text', text: `Error: Could not get position for ${ref}: ${e instanceof Error ? e.message : String(e)}` }],
175
- isError: true,
176
- };
177
- }
110
+ const resolved = await resolveRefToCoordinates(sessionId, tabId, ref, page, sessionManager);
111
+ if (resolved.error)
112
+ return resolved.error;
113
+ clickCoord = resolved.coord;
114
+ refInfo = ` [${ref}]`;
178
115
  }
179
116
  if (!clickCoord) {
180
117
  return {
181
- content: [{ type: 'text', text: 'Error: coordinate or ref is required for left_click' }],
118
+ content: [{ type: 'text', text: 'Error: coordinate is required for left_click' }],
182
119
  isError: true,
183
120
  };
184
121
  }
122
+ if (refInfo) {
123
+ await page.mouse.click(clickCoord[0], clickCoord[1]);
124
+ return {
125
+ content: [{ type: 'text', text: `Clicked element ${ref} at (${clickCoord[0]}, ${clickCoord[1]})` }],
126
+ };
127
+ }
185
128
  const leftClickValidation = await validateCoordinates(page, clickCoord[0], clickCoord[1]);
186
129
  if (!leftClickValidation.valid) {
187
130
  return {
@@ -191,51 +134,34 @@ const handler = async (sessionId, args) => {
191
134
  }
192
135
  await page.mouse.click(clickCoord[0], clickCoord[1]);
193
136
  const resultText = leftClickValidation.warning
194
- ? `Clicked at (${clickCoord[0]}, ${clickCoord[1]})${refInfo}. Warning: ${leftClickValidation.warning}`
195
- : `Clicked at (${clickCoord[0]}, ${clickCoord[1]})${refInfo}`;
137
+ ? `Clicked at (${clickCoord[0]}, ${clickCoord[1]}). Warning: ${leftClickValidation.warning}`
138
+ : `Clicked at (${clickCoord[0]}, ${clickCoord[1]})`;
196
139
  return {
197
140
  content: [{ type: 'text', text: resultText }],
198
141
  };
199
142
  }
200
143
  case 'right_click': {
201
- // Support ref-based clicking
202
- let clickCoord = coordinate || null;
144
+ let clickCoord = coordinate;
203
145
  let refInfo = '';
204
146
  if (ref && !coordinate) {
205
- const refIdManager = (0, ref_id_manager_1.getRefIdManager)();
206
- const refEntry = refIdManager.getRef(sessionId, tabId, ref);
207
- if (!refEntry) {
208
- return {
209
- content: [{ type: 'text', text: `Error: Element ${ref} not found` }],
210
- isError: true,
211
- };
212
- }
213
- const cdpClient = sessionManager.getCDPClient();
214
- try {
215
- await cdpClient.send(page, 'DOM.scrollIntoViewIfNeeded', {
216
- backendNodeId: refEntry.backendDOMNodeId,
217
- });
218
- const { model } = await cdpClient.send(page, 'DOM.getBoxModel', {
219
- backendNodeId: refEntry.backendDOMNodeId,
220
- });
221
- const x = (model.content[0] + model.content[2]) / 2;
222
- const y = (model.content[1] + model.content[5]) / 2;
223
- clickCoord = [Math.round(x), Math.round(y)];
224
- refInfo = ` [${ref}]`;
225
- }
226
- catch (e) {
227
- return {
228
- content: [{ type: 'text', text: `Error: Could not get position for ${ref}: ${e instanceof Error ? e.message : String(e)}` }],
229
- isError: true,
230
- };
231
- }
147
+ const resolved = await resolveRefToCoordinates(sessionId, tabId, ref, page, sessionManager);
148
+ if (resolved.error)
149
+ return resolved.error;
150
+ clickCoord = resolved.coord;
151
+ refInfo = ` [${ref}]`;
232
152
  }
233
153
  if (!clickCoord) {
234
154
  return {
235
- content: [{ type: 'text', text: 'Error: coordinate or ref is required for right_click' }],
155
+ content: [{ type: 'text', text: 'Error: coordinate is required for right_click' }],
236
156
  isError: true,
237
157
  };
238
158
  }
159
+ if (refInfo) {
160
+ await page.mouse.click(clickCoord[0], clickCoord[1], { button: 'right' });
161
+ return {
162
+ content: [{ type: 'text', text: `Right-clicked element ${ref} at (${clickCoord[0]}, ${clickCoord[1]})` }],
163
+ };
164
+ }
239
165
  const rightClickValidation = await validateCoordinates(page, clickCoord[0], clickCoord[1]);
240
166
  if (!rightClickValidation.valid) {
241
167
  return {
@@ -245,53 +171,36 @@ const handler = async (sessionId, args) => {
245
171
  }
246
172
  await page.mouse.click(clickCoord[0], clickCoord[1], { button: 'right' });
247
173
  const rightClickText = rightClickValidation.warning
248
- ? `Right-clicked at (${clickCoord[0]}, ${clickCoord[1]})${refInfo}. Warning: ${rightClickValidation.warning}`
249
- : `Right-clicked at (${clickCoord[0]}, ${clickCoord[1]})${refInfo}`;
174
+ ? `Right-clicked at (${clickCoord[0]}, ${clickCoord[1]}). Warning: ${rightClickValidation.warning}`
175
+ : `Right-clicked at (${clickCoord[0]}, ${clickCoord[1]})`;
250
176
  return {
251
177
  content: [{ type: 'text', text: rightClickText }],
252
178
  };
253
179
  }
254
180
  case 'double_click': {
255
- // Support ref-based clicking
256
- let clickCoord = coordinate || null;
181
+ let clickCoord = coordinate;
257
182
  let refInfo = '';
258
183
  if (ref && !coordinate) {
259
- const refIdManager = (0, ref_id_manager_1.getRefIdManager)();
260
- const refEntry = refIdManager.getRef(sessionId, tabId, ref);
261
- if (!refEntry) {
262
- return {
263
- content: [{ type: 'text', text: `Error: Element ${ref} not found` }],
264
- isError: true,
265
- };
266
- }
267
- const cdpClient = sessionManager.getCDPClient();
268
- try {
269
- await cdpClient.send(page, 'DOM.scrollIntoViewIfNeeded', {
270
- backendNodeId: refEntry.backendDOMNodeId,
271
- });
272
- const { model } = await cdpClient.send(page, 'DOM.getBoxModel', {
273
- backendNodeId: refEntry.backendDOMNodeId,
274
- });
275
- const x = (model.content[0] + model.content[2]) / 2;
276
- const y = (model.content[1] + model.content[5]) / 2;
277
- clickCoord = [Math.round(x), Math.round(y)];
278
- refInfo = ` [${ref}]`;
279
- }
280
- catch (e) {
281
- return {
282
- content: [{ type: 'text', text: `Error: Could not get position for ${ref}: ${e instanceof Error ? e.message : String(e)}` }],
283
- isError: true,
284
- };
285
- }
184
+ const resolved = await resolveRefToCoordinates(sessionId, tabId, ref, page, sessionManager);
185
+ if (resolved.error)
186
+ return resolved.error;
187
+ clickCoord = resolved.coord;
188
+ refInfo = ` [${ref}]`;
286
189
  }
287
190
  if (!clickCoord) {
288
191
  return {
289
192
  content: [
290
- { type: 'text', text: 'Error: coordinate or ref is required for double_click' },
193
+ { type: 'text', text: 'Error: coordinate is required for double_click' },
291
194
  ],
292
195
  isError: true,
293
196
  };
294
197
  }
198
+ if (refInfo) {
199
+ await page.mouse.click(clickCoord[0], clickCoord[1], { clickCount: 2 });
200
+ return {
201
+ content: [{ type: 'text', text: `Double-clicked element ${ref} at (${clickCoord[0]}, ${clickCoord[1]})` }],
202
+ };
203
+ }
295
204
  const doubleClickValidation = await validateCoordinates(page, clickCoord[0], clickCoord[1]);
296
205
  if (!doubleClickValidation.valid) {
297
206
  return {
@@ -301,53 +210,36 @@ const handler = async (sessionId, args) => {
301
210
  }
302
211
  await page.mouse.click(clickCoord[0], clickCoord[1], { clickCount: 2 });
303
212
  const doubleClickText = doubleClickValidation.warning
304
- ? `Double-clicked at (${clickCoord[0]}, ${clickCoord[1]})${refInfo}. Warning: ${doubleClickValidation.warning}`
305
- : `Double-clicked at (${clickCoord[0]}, ${clickCoord[1]})${refInfo}`;
213
+ ? `Double-clicked at (${clickCoord[0]}, ${clickCoord[1]}). Warning: ${doubleClickValidation.warning}`
214
+ : `Double-clicked at (${clickCoord[0]}, ${clickCoord[1]})`;
306
215
  return {
307
216
  content: [{ type: 'text', text: doubleClickText }],
308
217
  };
309
218
  }
310
219
  case 'triple_click': {
311
- // Support ref-based clicking
312
- let clickCoord = coordinate || null;
220
+ let clickCoord = coordinate;
313
221
  let refInfo = '';
314
222
  if (ref && !coordinate) {
315
- const refIdManager = (0, ref_id_manager_1.getRefIdManager)();
316
- const refEntry = refIdManager.getRef(sessionId, tabId, ref);
317
- if (!refEntry) {
318
- return {
319
- content: [{ type: 'text', text: `Error: Element ${ref} not found` }],
320
- isError: true,
321
- };
322
- }
323
- const cdpClient = sessionManager.getCDPClient();
324
- try {
325
- await cdpClient.send(page, 'DOM.scrollIntoViewIfNeeded', {
326
- backendNodeId: refEntry.backendDOMNodeId,
327
- });
328
- const { model } = await cdpClient.send(page, 'DOM.getBoxModel', {
329
- backendNodeId: refEntry.backendDOMNodeId,
330
- });
331
- const x = (model.content[0] + model.content[2]) / 2;
332
- const y = (model.content[1] + model.content[5]) / 2;
333
- clickCoord = [Math.round(x), Math.round(y)];
334
- refInfo = ` [${ref}]`;
335
- }
336
- catch (e) {
337
- return {
338
- content: [{ type: 'text', text: `Error: Could not get position for ${ref}: ${e instanceof Error ? e.message : String(e)}` }],
339
- isError: true,
340
- };
341
- }
223
+ const resolved = await resolveRefToCoordinates(sessionId, tabId, ref, page, sessionManager);
224
+ if (resolved.error)
225
+ return resolved.error;
226
+ clickCoord = resolved.coord;
227
+ refInfo = ` [${ref}]`;
342
228
  }
343
229
  if (!clickCoord) {
344
230
  return {
345
231
  content: [
346
- { type: 'text', text: 'Error: coordinate or ref is required for triple_click' },
232
+ { type: 'text', text: 'Error: coordinate is required for triple_click' },
347
233
  ],
348
234
  isError: true,
349
235
  };
350
236
  }
237
+ if (refInfo) {
238
+ await page.mouse.click(clickCoord[0], clickCoord[1], { clickCount: 3 });
239
+ return {
240
+ content: [{ type: 'text', text: `Triple-clicked element ${ref} at (${clickCoord[0]}, ${clickCoord[1]})` }],
241
+ };
242
+ }
351
243
  const tripleClickValidation = await validateCoordinates(page, clickCoord[0], clickCoord[1]);
352
244
  if (!tripleClickValidation.valid) {
353
245
  return {
@@ -357,51 +249,34 @@ const handler = async (sessionId, args) => {
357
249
  }
358
250
  await page.mouse.click(clickCoord[0], clickCoord[1], { clickCount: 3 });
359
251
  const tripleClickText = tripleClickValidation.warning
360
- ? `Triple-clicked at (${clickCoord[0]}, ${clickCoord[1]})${refInfo}. Warning: ${tripleClickValidation.warning}`
361
- : `Triple-clicked at (${clickCoord[0]}, ${clickCoord[1]})${refInfo}`;
252
+ ? `Triple-clicked at (${clickCoord[0]}, ${clickCoord[1]}). Warning: ${tripleClickValidation.warning}`
253
+ : `Triple-clicked at (${clickCoord[0]}, ${clickCoord[1]})`;
362
254
  return {
363
255
  content: [{ type: 'text', text: tripleClickText }],
364
256
  };
365
257
  }
366
258
  case 'hover': {
367
- // Support ref-based hovering
368
- let hoverCoord = coordinate || null;
259
+ let hoverCoord = coordinate;
369
260
  let refInfo = '';
370
261
  if (ref && !coordinate) {
371
- const refIdManager = (0, ref_id_manager_1.getRefIdManager)();
372
- const refEntry = refIdManager.getRef(sessionId, tabId, ref);
373
- if (!refEntry) {
374
- return {
375
- content: [{ type: 'text', text: `Error: Element ${ref} not found` }],
376
- isError: true,
377
- };
378
- }
379
- const cdpClient = sessionManager.getCDPClient();
380
- try {
381
- await cdpClient.send(page, 'DOM.scrollIntoViewIfNeeded', {
382
- backendNodeId: refEntry.backendDOMNodeId,
383
- });
384
- const { model } = await cdpClient.send(page, 'DOM.getBoxModel', {
385
- backendNodeId: refEntry.backendDOMNodeId,
386
- });
387
- const x = (model.content[0] + model.content[2]) / 2;
388
- const y = (model.content[1] + model.content[5]) / 2;
389
- hoverCoord = [Math.round(x), Math.round(y)];
390
- refInfo = ` [${ref}]`;
391
- }
392
- catch (e) {
393
- return {
394
- content: [{ type: 'text', text: `Error: Could not get position for ${ref}: ${e instanceof Error ? e.message : String(e)}` }],
395
- isError: true,
396
- };
397
- }
262
+ const resolved = await resolveRefToCoordinates(sessionId, tabId, ref, page, sessionManager);
263
+ if (resolved.error)
264
+ return resolved.error;
265
+ hoverCoord = resolved.coord;
266
+ refInfo = ` [${ref}]`;
398
267
  }
399
268
  if (!hoverCoord) {
400
269
  return {
401
- content: [{ type: 'text', text: 'Error: coordinate or ref is required for hover' }],
270
+ content: [{ type: 'text', text: 'Error: coordinate is required for hover' }],
402
271
  isError: true,
403
272
  };
404
273
  }
274
+ if (refInfo) {
275
+ await page.mouse.move(hoverCoord[0], hoverCoord[1]);
276
+ return {
277
+ content: [{ type: 'text', text: `Hovered element ${ref} at (${hoverCoord[0]}, ${hoverCoord[1]})` }],
278
+ };
279
+ }
405
280
  const hoverValidation = await validateCoordinates(page, hoverCoord[0], hoverCoord[1]);
406
281
  if (!hoverValidation.valid) {
407
282
  return {
@@ -411,8 +286,8 @@ const handler = async (sessionId, args) => {
411
286
  }
412
287
  await page.mouse.move(hoverCoord[0], hoverCoord[1]);
413
288
  const hoverText = hoverValidation.warning
414
- ? `Hovered at (${hoverCoord[0]}, ${hoverCoord[1]})${refInfo}. Warning: ${hoverValidation.warning}`
415
- : `Hovered at (${hoverCoord[0]}, ${hoverCoord[1]})${refInfo}`;
289
+ ? `Hovered at (${hoverCoord[0]}, ${hoverCoord[1]}). Warning: ${hoverValidation.warning}`
290
+ : `Hovered at (${hoverCoord[0]}, ${hoverCoord[1]})`;
416
291
  return {
417
292
  content: [{ type: 'text', text: hoverText }],
418
293
  };
@@ -496,6 +371,7 @@ const handler = async (sessionId, args) => {
496
371
  isError: true,
497
372
  };
498
373
  }
374
+ await page.mouse.move(coordinate[0], coordinate[1]);
499
375
  const deltaMultiplier = 100;
500
376
  let deltaX = 0;
501
377
  let deltaY = 0;
@@ -513,25 +389,12 @@ const handler = async (sessionId, args) => {
513
389
  deltaX = scrollAmount * deltaMultiplier;
514
390
  break;
515
391
  }
516
- // Try CDP mouse wheel first, fallback to JavaScript scroll if it times out
517
- let usedFallback = false;
518
- try {
519
- await page.mouse.move(coordinate[0], coordinate[1]);
520
- await page.mouse.wheel({ deltaX, deltaY });
521
- }
522
- catch (scrollError) {
523
- // Fallback to JavaScript scroll if mouse.wheel fails (timeout, etc.)
524
- usedFallback = true;
525
- await page.evaluate((dx, dy) => {
526
- window.scrollBy(dx, dy);
527
- }, deltaX, deltaY);
528
- }
529
- const scrollMethod = usedFallback ? ' (via JavaScript fallback)' : '';
392
+ await page.mouse.wheel({ deltaX, deltaY });
530
393
  return {
531
394
  content: [
532
395
  {
533
396
  type: 'text',
534
- text: `Scrolled ${scrollDirection} at (${coordinate[0]}, ${coordinate[1]})${scrollMethod}`,
397
+ text: `Scrolled ${scrollDirection} at (${coordinate[0]}, ${coordinate[1]})`,
535
398
  },
536
399
  ],
537
400
  };
@@ -579,6 +442,42 @@ const handler = async (sessionId, args) => {
579
442
  };
580
443
  }
581
444
  };
445
+ /**
446
+ * Resolve a ref to screen coordinates, scrolling the element into view first.
447
+ * Returns either { coord } on success or { error } on failure.
448
+ */
449
+ async function resolveRefToCoordinates(sessionId, tabId, ref, page, sessionManager) {
450
+ const refIdManager = (0, ref_id_manager_1.getRefIdManager)();
451
+ const backendNodeId = refIdManager.resolveToBackendNodeId(sessionId, tabId, ref);
452
+ if (backendNodeId === undefined) {
453
+ return {
454
+ error: {
455
+ content: [{ type: 'text', text: `Error: Element ref or node ID '${ref}' not found` }],
456
+ isError: true,
457
+ },
458
+ };
459
+ }
460
+ const cdpClient = sessionManager.getCDPClient();
461
+ try {
462
+ await cdpClient.send(page, 'DOM.scrollIntoViewIfNeeded', {
463
+ backendNodeId,
464
+ });
465
+ const { model } = await cdpClient.send(page, 'DOM.getBoxModel', {
466
+ backendNodeId,
467
+ });
468
+ const x = (model.content[0] + model.content[2]) / 2;
469
+ const y = (model.content[1] + model.content[5]) / 2;
470
+ return { coord: [Math.round(x), Math.round(y)] };
471
+ }
472
+ catch (e) {
473
+ return {
474
+ error: {
475
+ content: [{ type: 'text', text: `Error: Could not get position for ${ref}: ${e instanceof Error ? e.message : String(e)}` }],
476
+ isError: true,
477
+ },
478
+ };
479
+ }
480
+ }
582
481
  /**
583
482
  * Validate and check coordinates against viewport bounds
584
483
  */
@@ -1 +1 @@
1
- {"version":3,"file":"computer.js","sourceRoot":"","sources":["../../src/tools/computer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"computer.js","sourceRoot":"","sources":["../../src/tools/computer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"read-page.d.ts","sourceRoot":"","sources":["../../src/tools/read-page.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAyX1C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAE5D"}
1
+ {"version":3,"file":"read-page.d.ts","sourceRoot":"","sources":["../../src/tools/read-page.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAuR1C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAE5D"}
@@ -28,19 +28,7 @@ const definition = {
28
28
  },
29
29
  ref_id: {
30
30
  type: 'string',
31
- description: 'Reference ID of a parent element to read from (uses faster partial tree fetch)',
32
- },
33
- selector: {
34
- type: 'string',
35
- description: 'CSS selector to extract a single element and its subtree (faster than full AX tree). Returns text content and attributes.',
36
- },
37
- selectorAll: {
38
- type: 'string',
39
- description: 'CSS selector to extract multiple matching elements. Returns array of {tag, text, attributes} objects. Use for lists, tables, repeated elements.',
40
- },
41
- selectorLimit: {
42
- type: 'number',
43
- description: 'Maximum number of elements to return when using selectorAll (default: 50)',
31
+ description: 'Reference ID of a parent element to read from',
44
32
  },
45
33
  mode: {
46
34
  type: 'string',
@@ -54,7 +42,9 @@ const definition = {
54
42
  const handler = async (sessionId, args) => {
55
43
  const tabId = args.tabId;
56
44
  const filter = args.filter || 'all';
57
- const refIdParam = args.ref_id;
45
+ const defaultDepth = filter === 'interactive' ? 5 : 8;
46
+ const maxDepth = args.depth || defaultDepth;
47
+ const fetchDepth = filter === 'interactive' ? Math.min(maxDepth, 5) : maxDepth;
58
48
  const sessionManager = (0, session_manager_1.getSessionManager)();
59
49
  const refIdManager = (0, ref_id_manager_1.getRefIdManager)();
60
50
  if (!tabId) {
@@ -64,7 +54,7 @@ const handler = async (sessionId, args) => {
64
54
  };
65
55
  }
66
56
  try {
67
- const page = await sessionManager.getPage(sessionId, tabId, undefined, 'read_page');
57
+ const page = await sessionManager.getPage(sessionId, tabId);
68
58
  if (!page) {
69
59
  return {
70
60
  content: [{ type: 'text', text: `Error: Tab ${tabId} not found` }],
@@ -96,93 +86,20 @@ const handler = async (sessionId, args) => {
96
86
  content: [{ type: 'text', text: outputText }],
97
87
  };
98
88
  }
99
- // Fast path: CSS selector-based extraction (skips full AX tree)
100
- const selectorParam = args.selector;
101
- const selectorAllParam = args.selectorAll;
102
- if (selectorParam || selectorAllParam) {
103
- const cssSelector = (selectorParam || selectorAllParam);
104
- const isAll = !!selectorAllParam;
105
- const limit = args.selectorLimit || 50;
106
- const extractResult = await page.evaluate((sel, all, max) => {
107
- function extractElement(el) {
108
- const attrs = {};
109
- for (const attr of el.attributes) {
110
- // Skip very long attributes (e.g. inline styles, data URIs)
111
- if (attr.value.length <= 200) {
112
- attrs[attr.name] = attr.value;
113
- }
114
- }
115
- return {
116
- tag: el.tagName.toLowerCase(),
117
- text: (el.textContent || '').trim().slice(0, 500),
118
- attributes: attrs,
119
- childCount: el.children.length,
120
- };
121
- }
122
- if (all) {
123
- const elements = document.querySelectorAll(sel);
124
- const results = [];
125
- for (let i = 0; i < Math.min(elements.length, max); i++) {
126
- results.push(extractElement(elements[i]));
127
- }
128
- return { count: elements.length, elements: results };
129
- }
130
- else {
131
- const el = document.querySelector(sel);
132
- if (!el)
133
- return { count: 0, elements: [] };
134
- return { count: 1, elements: [extractElement(el)] };
135
- }
136
- }, cssSelector, isAll, limit);
137
- return {
138
- content: [
139
- {
140
- type: 'text',
141
- text: JSON.stringify(extractResult, null, 2),
142
- },
143
- ],
144
- };
145
- }
146
- // Determine depth: explicit arg > filter-based default
147
- // Reduce default from 15→8 for "all" (15 is excessively deep and very slow on complex pages)
148
- const defaultDepth = filter === 'interactive' ? 5 : 8;
149
- const maxDepth = args.depth || defaultDepth;
150
- const fetchDepth = filter === 'interactive' ? Math.min(maxDepth, 5) : maxDepth;
151
- let nodes;
152
- // When ref_id is provided, use getPartialAXTree to scope the fetch to a subtree.
153
- // This is significantly faster than getFullAXTree on complex pages (e.g. Twitter).
89
+ // Resolve ref_id to backendDOMNodeId if provided (AX mode subtree scoping)
90
+ const refIdParam = args.ref_id;
91
+ let scopedBackendNodeId;
154
92
  if (refIdParam) {
155
- const backendDOMNodeId = refIdManager.getBackendDOMNodeId(sessionId, tabId, refIdParam);
156
- if (!backendDOMNodeId) {
93
+ scopedBackendNodeId = refIdManager.resolveToBackendNodeId(sessionId, tabId, refIdParam);
94
+ if (scopedBackendNodeId === undefined) {
157
95
  return {
158
- content: [{ type: 'text', text: `Error: ref_id "${refIdParam}" not found or expired` }],
96
+ content: [{ type: 'text', text: `Error: ref_id or node ID "${refIdParam}" not found or expired` }],
159
97
  isError: true,
160
98
  };
161
99
  }
162
- // Resolve backendDOMNodeId → DOM nodeId via DOM.describeNode
163
- let domNodeId;
164
- try {
165
- const { node: domNode } = await cdpClient.send(page, 'DOM.describeNode', { backendNodeId: backendDOMNodeId });
166
- domNodeId = domNode.nodeId;
167
- }
168
- catch {
169
- // DOM.describeNode may return nodeId=0 for non-document nodes if DOM hasn't been enabled.
170
- // Fall back to getFullAXTree in that case.
171
- }
172
- if (domNodeId && domNodeId !== 0) {
173
- const result = await cdpClient.send(page, 'Accessibility.getPartialAXTree', { nodeId: domNodeId, fetchRelatives: true });
174
- nodes = result.nodes;
175
- }
176
- else {
177
- // Fallback: full tree
178
- const result = await cdpClient.send(page, 'Accessibility.getFullAXTree', { depth: fetchDepth });
179
- nodes = result.nodes;
180
- }
181
- }
182
- else {
183
- const result = await cdpClient.send(page, 'Accessibility.getFullAXTree', { depth: fetchDepth });
184
- nodes = result.nodes;
185
100
  }
101
+ // Get the accessibility tree
102
+ const { nodes } = await cdpClient.send(page, 'Accessibility.getFullAXTree', { depth: fetchDepth });
186
103
  // Clear previous refs for this target
187
104
  refIdManager.clearTargetRefs(sessionId, tabId);
188
105
  // Build the tree structure
@@ -270,17 +187,22 @@ const handler = async (sessionId, args) => {
270
187
  }
271
188
  }
272
189
  }
273
- // Start from root nodes — O(n) Set-based detection (replaces O(n²) nested .some())
274
- const childIdSet = new Set();
275
- for (const node of nodes) {
276
- if (node.childIds) {
277
- for (const childId of node.childIds) {
278
- childIdSet.add(childId);
279
- }
190
+ // Start from root nodes (or scoped subtree if ref_id provided)
191
+ let startNodes;
192
+ if (scopedBackendNodeId !== undefined) {
193
+ const scopedNode = nodes.find((n) => n.backendDOMNodeId === scopedBackendNodeId);
194
+ if (!scopedNode) {
195
+ return {
196
+ content: [{ type: 'text', text: `Error: ref_id or node ID "${refIdParam}" not found or expired` }],
197
+ isError: true,
198
+ };
280
199
  }
200
+ startNodes = [scopedNode];
201
+ }
202
+ else {
203
+ startNodes = nodes.filter((n) => !nodes.some((other) => other.childIds?.includes(n.nodeId)));
281
204
  }
282
- const rootNodes = nodes.filter((n) => !childIdSet.has(n.nodeId));
283
- for (const root of rootNodes) {
205
+ for (const root of startNodes) {
284
206
  formatNode(root, 0);
285
207
  }
286
208
  const output = lines.join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"read-page.js","sourceRoot":"","sources":["../../src/tools/read-page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-page.js","sourceRoot":"","sources":["../../src/tools/read-page.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openchrome-mcp",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Open-source browser automation MCP server. Control your real Chrome from any AI agent.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -14,6 +14,8 @@
14
14
  "dev": "tsc -p tsconfig.cli.json --watch",
15
15
  "start": "node dist/cli/index.js serve",
16
16
  "check": "node dist/cli/index.js check",
17
+ "benchmark": "ts-node tests/benchmark/run.ts",
18
+ "benchmark:ci": "ts-node tests/benchmark/run.ts --ci",
17
19
  "test": "jest",
18
20
  "test:coverage": "jest --coverage",
19
21
  "lint": "eslint src --ext .ts",