openchrome-mcp 1.7.11 → 1.7.13
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/README.md +6 -0
- package/dist/cdp/client.d.ts +14 -0
- package/dist/cdp/client.d.ts.map +1 -1
- package/dist/cdp/client.js +200 -0
- package/dist/cdp/client.js.map +1 -1
- package/dist/chrome/launcher.d.ts.map +1 -1
- package/dist/chrome/launcher.js +6 -3
- package/dist/chrome/launcher.js.map +1 -1
- package/dist/cli/index.js +0 -0
- package/dist/compression/snapshot-store.d.ts +54 -0
- package/dist/compression/snapshot-store.d.ts.map +1 -0
- package/dist/compression/snapshot-store.js +183 -0
- package/dist/compression/snapshot-store.js.map +1 -0
- package/dist/config/defaults.d.ts +6 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +7 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/global.d.ts +15 -0
- package/dist/config/global.d.ts.map +1 -1
- package/dist/config/global.js +6 -0
- package/dist/config/global.js.map +1 -1
- package/dist/dashboard/activity-tracker.d.ts +17 -0
- package/dist/dashboard/activity-tracker.d.ts.map +1 -1
- package/dist/dashboard/activity-tracker.js +44 -1
- package/dist/dashboard/activity-tracker.js.map +1 -1
- package/dist/dashboard/types.d.ts +18 -0
- package/dist/dashboard/types.d.ts.map +1 -1
- package/dist/dashboard/types.js.map +1 -1
- package/dist/dom/dom-serializer.d.ts +2 -0
- package/dist/dom/dom-serializer.d.ts.map +1 -1
- package/dist/dom/dom-serializer.js +228 -1
- package/dist/dom/dom-serializer.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +66 -32
- package/dist/mcp-server.js.map +1 -1
- package/dist/session-manager.d.ts +16 -0
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +39 -0
- package/dist/session-manager.js.map +1 -1
- package/dist/tools/batch-execute.js +5 -5
- package/dist/tools/batch-execute.js.map +1 -1
- package/dist/tools/batch-paginate.js +7 -7
- package/dist/tools/batch-paginate.js.map +1 -1
- package/dist/tools/click-element.d.ts.map +1 -1
- package/dist/tools/click-element.js +30 -200
- package/dist/tools/click-element.js.map +1 -1
- package/dist/tools/computer.d.ts.map +1 -1
- package/dist/tools/computer.js +46 -14
- package/dist/tools/computer.js.map +1 -1
- package/dist/tools/console-capture.d.ts.map +1 -1
- package/dist/tools/console-capture.js +69 -4
- package/dist/tools/console-capture.js.map +1 -1
- package/dist/tools/cookies.d.ts.map +1 -1
- package/dist/tools/cookies.js +71 -8
- package/dist/tools/cookies.js.map +1 -1
- package/dist/tools/drag-drop.js +3 -3
- package/dist/tools/drag-drop.js.map +1 -1
- package/dist/tools/emulate-device.js +5 -5
- package/dist/tools/emulate-device.js.map +1 -1
- package/dist/tools/file-upload.js +2 -2
- package/dist/tools/file-upload.js.map +1 -1
- package/dist/tools/fill-form.d.ts.map +1 -1
- package/dist/tools/fill-form.js +47 -112
- package/dist/tools/fill-form.js.map +1 -1
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/find.js +24 -250
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/form-input.js +3 -3
- package/dist/tools/form-input.js.map +1 -1
- package/dist/tools/geolocation.js +2 -2
- package/dist/tools/geolocation.js.map +1 -1
- package/dist/tools/http-auth.js +1 -1
- package/dist/tools/http-auth.js.map +1 -1
- package/dist/tools/inspect.d.ts.map +1 -1
- package/dist/tools/inspect.js +99 -9
- package/dist/tools/inspect.js.map +1 -1
- package/dist/tools/interact.d.ts.map +1 -1
- package/dist/tools/interact.js +31 -195
- package/dist/tools/interact.js.map +1 -1
- package/dist/tools/javascript.js +3 -3
- package/dist/tools/javascript.js.map +1 -1
- package/dist/tools/lightweight-scroll.js +4 -4
- package/dist/tools/lightweight-scroll.js.map +1 -1
- package/dist/tools/list-profiles.js +2 -2
- package/dist/tools/list-profiles.js.map +1 -1
- package/dist/tools/memory.d.ts.map +1 -1
- package/dist/tools/memory.js +4 -4
- package/dist/tools/memory.js.map +1 -1
- package/dist/tools/navigate.d.ts.map +1 -1
- package/dist/tools/navigate.js +21 -4
- package/dist/tools/navigate.js.map +1 -1
- package/dist/tools/network.js +2 -2
- package/dist/tools/network.js.map +1 -1
- package/dist/tools/orchestration.js +2 -2
- package/dist/tools/orchestration.js.map +1 -1
- package/dist/tools/page-content.js +2 -2
- package/dist/tools/page-content.js.map +1 -1
- package/dist/tools/page-pdf.js +4 -4
- package/dist/tools/page-pdf.js.map +1 -1
- package/dist/tools/performance-metrics.js +2 -2
- package/dist/tools/performance-metrics.js.map +1 -1
- package/dist/tools/profile-status.js +1 -1
- package/dist/tools/profile-status.js.map +1 -1
- package/dist/tools/query-dom.d.ts.map +1 -1
- package/dist/tools/query-dom.js +169 -13
- package/dist/tools/query-dom.js.map +1 -1
- package/dist/tools/read-page.d.ts.map +1 -1
- package/dist/tools/read-page.js +36 -4
- package/dist/tools/read-page.js.map +1 -1
- package/dist/tools/request-intercept.d.ts.map +1 -1
- package/dist/tools/request-intercept.js +117 -9
- package/dist/tools/request-intercept.js.map +1 -1
- package/dist/tools/storage.js +2 -2
- package/dist/tools/storage.js.map +1 -1
- package/dist/tools/tabs-close.js +2 -2
- package/dist/tools/tabs-close.js.map +1 -1
- package/dist/tools/tabs-create.js +1 -1
- package/dist/tools/tabs-create.js.map +1 -1
- package/dist/tools/user-agent.js +2 -2
- package/dist/tools/user-agent.js.map +1 -1
- package/dist/tools/wait-and-click.d.ts.map +1 -1
- package/dist/tools/wait-and-click.js +30 -162
- package/dist/tools/wait-and-click.js.map +1 -1
- package/dist/tools/wait-for.js +3 -3
- package/dist/tools/wait-for.js.map +1 -1
- package/dist/tools/worker.js +1 -1
- package/dist/tools/worker.js.map +1 -1
- package/dist/types/mcp.d.ts +2 -0
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/utils/adaptive-screenshot.d.ts +9 -0
- package/dist/utils/adaptive-screenshot.d.ts.map +1 -1
- package/dist/utils/adaptive-screenshot.js +12 -0
- package/dist/utils/adaptive-screenshot.js.map +1 -1
- package/dist/utils/dom-delta.d.ts.map +1 -1
- package/dist/utils/dom-delta.js +57 -12
- package/dist/utils/dom-delta.js.map +1 -1
- package/dist/utils/element-discovery.d.ts +115 -0
- package/dist/utils/element-discovery.d.ts.map +1 -0
- package/dist/utils/element-discovery.js +519 -0
- package/dist/utils/element-discovery.js.map +1 -0
- package/dist/utils/page-diagnostics.d.ts.map +1 -1
- package/dist/utils/page-diagnostics.js +12 -1
- package/dist/utils/page-diagnostics.js.map +1 -1
- package/dist/utils/ref-id-manager.d.ts.map +1 -1
- package/dist/utils/ref-id-manager.js +35 -3
- package/dist/utils/ref-id-manager.js.map +1 -1
- package/dist/utils/shadow-dom.d.ts +114 -0
- package/dist/utils/shadow-dom.d.ts.map +1 -0
- package/dist/utils/shadow-dom.js +385 -0
- package/dist/utils/shadow-dom.js.map +1 -0
- package/dist/utils/visual-summary.d.ts.map +1 -1
- package/dist/utils/visual-summary.js +23 -6
- package/dist/utils/visual-summary.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,13 +10,12 @@ const session_manager_1 = require("../session-manager");
|
|
|
10
10
|
const ref_id_manager_1 = require("../utils/ref-id-manager");
|
|
11
11
|
const defaults_1 = require("../config/defaults");
|
|
12
12
|
const dom_delta_1 = require("../utils/dom-delta");
|
|
13
|
-
const visual_summary_1 = require("../utils/visual-summary");
|
|
14
13
|
const adaptive_screenshot_1 = require("../utils/adaptive-screenshot");
|
|
15
14
|
const element_finder_1 = require("../utils/element-finder");
|
|
16
|
-
const
|
|
15
|
+
const element_discovery_1 = require("../utils/element-discovery");
|
|
17
16
|
const definition = {
|
|
18
17
|
name: 'click_element',
|
|
19
|
-
description: 'Find and click an element by
|
|
18
|
+
description: 'Find and click an element by query in one call.',
|
|
20
19
|
inputSchema: {
|
|
21
20
|
type: 'object',
|
|
22
21
|
properties: {
|
|
@@ -26,15 +25,15 @@ const definition = {
|
|
|
26
25
|
},
|
|
27
26
|
query: {
|
|
28
27
|
type: 'string',
|
|
29
|
-
description: 'Element to click
|
|
28
|
+
description: 'Element to click (natural language)',
|
|
30
29
|
},
|
|
31
30
|
wait_after: {
|
|
32
31
|
type: 'number',
|
|
33
|
-
description: 'Wait after click in ms. Default: 100
|
|
32
|
+
description: 'Wait after click in ms. Default: 100',
|
|
34
33
|
},
|
|
35
34
|
verify: {
|
|
36
35
|
type: 'boolean',
|
|
37
|
-
description: 'Return screenshot after click
|
|
36
|
+
description: 'Return screenshot after click',
|
|
38
37
|
},
|
|
39
38
|
double_click: {
|
|
40
39
|
type: 'boolean',
|
|
@@ -42,11 +41,11 @@ const definition = {
|
|
|
42
41
|
},
|
|
43
42
|
waitForMs: {
|
|
44
43
|
type: 'number',
|
|
45
|
-
description: '
|
|
44
|
+
description: 'Poll timeout for element in ms. Default: 0',
|
|
46
45
|
},
|
|
47
46
|
pollInterval: {
|
|
48
47
|
type: 'number',
|
|
49
|
-
description: '
|
|
48
|
+
description: 'Poll interval in ms. Default: 200',
|
|
50
49
|
},
|
|
51
50
|
},
|
|
52
51
|
required: ['tabId', 'query'],
|
|
@@ -91,132 +90,14 @@ const handler = async (sessionId, args) => {
|
|
|
91
90
|
const cdpClient = sessionManager.getCDPClient();
|
|
92
91
|
do { // --- polling loop start ---
|
|
93
92
|
// Find elements matching the query
|
|
94
|
-
let
|
|
93
|
+
let rawResults;
|
|
95
94
|
try {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (rect.width === 0 || rect.height === 0)
|
|
103
|
-
return null;
|
|
104
|
-
// Skip invisible elements
|
|
105
|
-
const style = window.getComputedStyle(el);
|
|
106
|
-
if (style.visibility === 'hidden' || style.display === 'none' || style.opacity === '0') {
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
const inputEl = el;
|
|
110
|
-
const isContentEditable = el.getAttribute('contenteditable') === 'true';
|
|
111
|
-
const role = el.getAttribute('role') ||
|
|
112
|
-
(el.tagName === 'BUTTON'
|
|
113
|
-
? 'button'
|
|
114
|
-
: el.tagName === 'A'
|
|
115
|
-
? 'link'
|
|
116
|
-
: el.tagName === 'INPUT'
|
|
117
|
-
? inputEl.type || 'textbox'
|
|
118
|
-
: isContentEditable
|
|
119
|
-
? 'textbox'
|
|
120
|
-
: el.tagName.toLowerCase());
|
|
121
|
-
return {
|
|
122
|
-
backendDOMNodeId: 0,
|
|
123
|
-
role,
|
|
124
|
-
name: el.getAttribute('aria-label') ||
|
|
125
|
-
el.getAttribute('title') ||
|
|
126
|
-
el.textContent?.trim().slice(0, 100) ||
|
|
127
|
-
'',
|
|
128
|
-
tagName: el.tagName.toLowerCase(),
|
|
129
|
-
type: inputEl.type,
|
|
130
|
-
placeholder: inputEl.placeholder,
|
|
131
|
-
ariaLabel: el.getAttribute('aria-label') || undefined,
|
|
132
|
-
textContent: el.textContent?.trim().slice(0, 50),
|
|
133
|
-
rect: {
|
|
134
|
-
x: rect.x + rect.width / 2, // Center point
|
|
135
|
-
y: rect.y + rect.height / 2,
|
|
136
|
-
width: rect.width,
|
|
137
|
-
height: rect.height,
|
|
138
|
-
},
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
const searchLower = searchQuery.toLowerCase();
|
|
142
|
-
const queryTokens = searchLower
|
|
143
|
-
.split(/\s+/)
|
|
144
|
-
.filter(t => t.length > 1)
|
|
145
|
-
.filter(t => !['the', 'a', 'an', 'to', 'for', 'of', 'in', 'on', 'at', 'and', 'or'].includes(t));
|
|
146
|
-
// Search for interactive elements
|
|
147
|
-
const interactiveSelectors = [
|
|
148
|
-
'button',
|
|
149
|
-
'[role="button"]',
|
|
150
|
-
'a',
|
|
151
|
-
'[role="link"]',
|
|
152
|
-
'input[type="submit"]',
|
|
153
|
-
'input[type="button"]',
|
|
154
|
-
'input[type="radio"]',
|
|
155
|
-
'input[type="checkbox"]',
|
|
156
|
-
'[role="radio"]',
|
|
157
|
-
'[role="checkbox"]',
|
|
158
|
-
'[role="menuitem"]',
|
|
159
|
-
'[role="tab"]',
|
|
160
|
-
'[role="option"]',
|
|
161
|
-
'[onclick]',
|
|
162
|
-
'[tabindex]',
|
|
163
|
-
'[contenteditable="true"]',
|
|
164
|
-
'[role="combobox"]',
|
|
165
|
-
'[role="listbox"]',
|
|
166
|
-
'[role="switch"]',
|
|
167
|
-
'[role="slider"]',
|
|
168
|
-
'[role="treeitem"]',
|
|
169
|
-
'[role="dialog"] [aria-label]',
|
|
170
|
-
'[role="alertdialog"] [aria-label]',
|
|
171
|
-
'[data-testid]',
|
|
172
|
-
];
|
|
173
|
-
const seen = new Set();
|
|
174
|
-
// First pass: interactive elements
|
|
175
|
-
for (const selector of interactiveSelectors) {
|
|
176
|
-
if (elements.length >= maxResults)
|
|
177
|
-
break;
|
|
178
|
-
try {
|
|
179
|
-
for (const el of document.querySelectorAll(selector)) {
|
|
180
|
-
if (seen.has(el) || elements.length >= maxResults)
|
|
181
|
-
continue;
|
|
182
|
-
const info = getElementInfo(el);
|
|
183
|
-
if (info) {
|
|
184
|
-
const combinedText = `${info.name} ${info.textContent || ''} ${info.ariaLabel || ''} ${info.placeholder || ''}`.toLowerCase();
|
|
185
|
-
// Check if any token matches
|
|
186
|
-
if (queryTokens.some(token => combinedText.includes(token)) || combinedText.includes(searchLower)) {
|
|
187
|
-
seen.add(el);
|
|
188
|
-
el.__clickIndex = elements.length;
|
|
189
|
-
domElements.push(el);
|
|
190
|
-
elements.push(info);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
catch {
|
|
196
|
-
// Invalid selector
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
// Second pass: text content search on all elements
|
|
200
|
-
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);
|
|
201
|
-
let node = walker.nextNode();
|
|
202
|
-
while (node && elements.length < maxResults) {
|
|
203
|
-
const el = node;
|
|
204
|
-
if (!seen.has(el)) {
|
|
205
|
-
const info = getElementInfo(el);
|
|
206
|
-
if (info) {
|
|
207
|
-
const combinedText = `${info.name} ${info.textContent || ''} ${info.ariaLabel || ''} ${info.placeholder || ''}`.toLowerCase();
|
|
208
|
-
if (combinedText.includes(searchLower) || queryTokens.some(token => combinedText.includes(token))) {
|
|
209
|
-
seen.add(el);
|
|
210
|
-
el.__clickIndex = elements.length;
|
|
211
|
-
domElements.push(el);
|
|
212
|
-
elements.push(info);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
node = walker.nextNode();
|
|
217
|
-
}
|
|
218
|
-
return elements;
|
|
219
|
-
}, queryLower), 10000, 'click_element');
|
|
95
|
+
rawResults = await (0, element_discovery_1.discoverElements)(page, cdpClient, queryLower, {
|
|
96
|
+
maxResults: 30,
|
|
97
|
+
useCenter: true,
|
|
98
|
+
timeout: 10000,
|
|
99
|
+
toolName: 'click_element',
|
|
100
|
+
});
|
|
220
101
|
}
|
|
221
102
|
catch {
|
|
222
103
|
// CDP evaluate timed out — retry on next poll iteration if budget remains
|
|
@@ -224,9 +105,9 @@ const handler = async (sessionId, args) => {
|
|
|
224
105
|
await new Promise(resolve => setTimeout(resolve, pollInterval));
|
|
225
106
|
continue;
|
|
226
107
|
}
|
|
227
|
-
|
|
108
|
+
rawResults = [];
|
|
228
109
|
}
|
|
229
|
-
if (
|
|
110
|
+
if (rawResults.length === 0) {
|
|
230
111
|
if (maxWait > 0 && Date.now() - startTime < maxWait) {
|
|
231
112
|
await new Promise(resolve => setTimeout(resolve, pollInterval));
|
|
232
113
|
continue;
|
|
@@ -242,48 +123,9 @@ const handler = async (sessionId, args) => {
|
|
|
242
123
|
isError: true,
|
|
243
124
|
};
|
|
244
125
|
}
|
|
245
|
-
//
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
const { result: batchResult } = await cdpClient.send(page, 'Runtime.evaluate', {
|
|
249
|
-
expression: `(() => {
|
|
250
|
-
const indexedEls = [];
|
|
251
|
-
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);
|
|
252
|
-
let node;
|
|
253
|
-
while (node = walker.nextNode()) {
|
|
254
|
-
const el = node;
|
|
255
|
-
if (el.__clickIndex !== undefined) {
|
|
256
|
-
indexedEls.push({ el, index: el.__clickIndex });
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
indexedEls.sort((a, b) => a.index - b.index);
|
|
260
|
-
return indexedEls.map(e => e.el);
|
|
261
|
-
})()`,
|
|
262
|
-
returnByValue: false,
|
|
263
|
-
});
|
|
264
|
-
if (batchResult.objectId) {
|
|
265
|
-
// Step 2: Get array properties to obtain individual element object references
|
|
266
|
-
const { result: properties } = await cdpClient.send(page, 'Runtime.getProperties', {
|
|
267
|
-
objectId: batchResult.objectId,
|
|
268
|
-
ownProperties: true,
|
|
269
|
-
});
|
|
270
|
-
// Step 3: Parallel DOM.describeNode for all candidates
|
|
271
|
-
const describePromises = [];
|
|
272
|
-
for (const prop of properties) {
|
|
273
|
-
const index = parseInt(prop.name, 10);
|
|
274
|
-
if (isNaN(index) || index >= results.length || !prop.value?.objectId)
|
|
275
|
-
continue;
|
|
276
|
-
describePromises.push(cdpClient.send(page, 'DOM.describeNode', { objectId: prop.value.objectId }).then(({ node }) => {
|
|
277
|
-
results[index].backendDOMNodeId = node.backendNodeId;
|
|
278
|
-
}).catch(() => {
|
|
279
|
-
// Skip if we can't get the backend node ID
|
|
280
|
-
}));
|
|
281
|
-
}
|
|
282
|
-
await Promise.all(describePromises);
|
|
283
|
-
}
|
|
284
|
-
// Score and sort elements
|
|
285
|
-
const scoredResults = results
|
|
286
|
-
.map(el => ({ ...el, score: (0, element_finder_1.scoreElement)(el, queryLower, queryTokens) }))
|
|
126
|
+
// Score and sort elements, tracking original discovery index for re-positioning
|
|
127
|
+
const scoredResults = rawResults
|
|
128
|
+
.map((el, i) => ({ ...el, score: (0, element_finder_1.scoreElement)(el, queryLower, queryTokens), _origIdx: i }))
|
|
287
129
|
.sort((a, b) => b.score - a.score);
|
|
288
130
|
if (scoredResults.length > 0 && scoredResults[0].score >= 10) {
|
|
289
131
|
bestMatch = scoredResults[0];
|
|
@@ -322,26 +164,11 @@ const handler = async (sessionId, args) => {
|
|
|
322
164
|
});
|
|
323
165
|
// Small delay after scroll
|
|
324
166
|
await new Promise(resolve => setTimeout(resolve, defaults_1.DEFAULT_DOM_SETTLE_DELAY_MS));
|
|
325
|
-
// Re-get position after scroll
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
let node;
|
|
331
|
-
while (node = walker.nextNode()) {
|
|
332
|
-
const el = node;
|
|
333
|
-
if (el.__clickIndex === 0) {
|
|
334
|
-
const rect = el.getBoundingClientRect();
|
|
335
|
-
return { x: rect.x + rect.width/2, y: rect.y + rect.height/2, width: rect.width, height: rect.height };
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
return null;
|
|
339
|
-
})()`,
|
|
340
|
-
returnByValue: true,
|
|
341
|
-
});
|
|
342
|
-
if (boxResult.value) {
|
|
343
|
-
bestMatch.rect.x = boxResult.value.x;
|
|
344
|
-
bestMatch.rect.y = boxResult.value.y;
|
|
167
|
+
// Re-get position after scroll using the shared getTaggedElementRect helper
|
|
168
|
+
const newRect = await (0, element_discovery_1.getTaggedElementRect)(page, cdpClient, element_discovery_1.DISCOVERY_TAG, bestMatch._origIdx, true);
|
|
169
|
+
if (newRect) {
|
|
170
|
+
bestMatch.rect.x = newRect.x;
|
|
171
|
+
bestMatch.rect.y = newRect.y;
|
|
345
172
|
}
|
|
346
173
|
}
|
|
347
174
|
catch {
|
|
@@ -364,13 +191,16 @@ const handler = async (sessionId, args) => {
|
|
|
364
191
|
if (bestMatch.backendDOMNodeId) {
|
|
365
192
|
refId = refIdManager.generateRef(sessionId, tabId, bestMatch.backendDOMNodeId, bestMatch.role, bestMatch.name, bestMatch.tagName, bestMatch.textContent);
|
|
366
193
|
}
|
|
194
|
+
// Clean up discovery tags to prevent stale properties
|
|
195
|
+
await (0, element_discovery_1.cleanupTags)(page, element_discovery_1.DISCOVERY_TAG).catch(() => { });
|
|
367
196
|
// Reset adaptive screenshot on click (page state changes)
|
|
368
197
|
adaptive_screenshot_1.AdaptiveScreenshot.getInstance().reset(tabId);
|
|
369
198
|
const clickType = doubleClick ? 'Double-clicked' : 'Clicked';
|
|
199
|
+
const textSample = bestMatch.textContent?.slice(0, 50) || bestMatch.name.slice(0, 50);
|
|
200
|
+
const textPart = textSample ? ` "${textSample}"` : '';
|
|
201
|
+
const refPart = refId ? ` [${refId}]` : '';
|
|
370
202
|
const confidenceNote = bestMatch.score < 50 ? ` (low confidence: ${bestMatch.score}/100)` : '';
|
|
371
|
-
const
|
|
372
|
-
const summaryText = summary ? `\n${summary}` : '';
|
|
373
|
-
const resultText = `${clickType} ${bestMatch.role} "${bestMatch.name.slice(0, 50)}" at (${finalX}, ${finalY})${refId ? ` [${refId}]` : ''}${confidenceNote}${delta}${summaryText}`;
|
|
203
|
+
const resultText = `\u2713 ${clickType} ${bestMatch.tagName}${textPart}${refPart}${confidenceNote}${delta}`;
|
|
374
204
|
// Optional verification screenshot — WebP via CDP for speed and consistency
|
|
375
205
|
if (verify) {
|
|
376
206
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"click-element.js","sourceRoot":"","sources":["../../src/tools/click-element.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"click-element.js","sourceRoot":"","sources":["../../src/tools/click-element.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;AA48B1C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAE5D"}
|
package/dist/tools/computer.js
CHANGED
|
@@ -14,13 +14,13 @@ const with_timeout_1 = require("../utils/with-timeout");
|
|
|
14
14
|
const retry_with_fallback_1 = require("../utils/retry-with-fallback");
|
|
15
15
|
const definition = {
|
|
16
16
|
name: 'computer',
|
|
17
|
-
description: '
|
|
17
|
+
description: 'Mouse, keyboard, and screenshot actions on a tab.',
|
|
18
18
|
inputSchema: {
|
|
19
19
|
type: 'object',
|
|
20
20
|
properties: {
|
|
21
21
|
tabId: {
|
|
22
22
|
type: 'string',
|
|
23
|
-
description: 'Tab ID
|
|
23
|
+
description: 'Tab ID',
|
|
24
24
|
},
|
|
25
25
|
action: {
|
|
26
26
|
type: 'string',
|
|
@@ -42,7 +42,7 @@ const definition = {
|
|
|
42
42
|
coordinate: {
|
|
43
43
|
type: 'array',
|
|
44
44
|
items: { type: 'number' },
|
|
45
|
-
description: '
|
|
45
|
+
description: '[x, y] for click/scroll actions',
|
|
46
46
|
},
|
|
47
47
|
text: {
|
|
48
48
|
type: 'string',
|
|
@@ -59,11 +59,24 @@ const definition = {
|
|
|
59
59
|
},
|
|
60
60
|
scroll_amount: {
|
|
61
61
|
type: 'number',
|
|
62
|
-
description: '
|
|
62
|
+
description: 'Scroll wheel ticks. Default: 3',
|
|
63
63
|
},
|
|
64
64
|
ref: {
|
|
65
65
|
type: 'string',
|
|
66
|
-
description: '
|
|
66
|
+
description: 'Element ref or backendNodeId',
|
|
67
|
+
},
|
|
68
|
+
screenshotQuality: {
|
|
69
|
+
type: 'string',
|
|
70
|
+
enum: ['high', 'normal', 'low'],
|
|
71
|
+
description: 'Screenshot quality. low: reduced resolution and quality for smaller payload.',
|
|
72
|
+
},
|
|
73
|
+
includeUserAgentShadowDOM: {
|
|
74
|
+
type: 'boolean',
|
|
75
|
+
description: 'Include user-agent shadow DOM in hit detection. Default: false',
|
|
76
|
+
},
|
|
77
|
+
force: {
|
|
78
|
+
type: 'boolean',
|
|
79
|
+
description: 'Only for action "screenshot". Force full screenshot, bypassing adaptive degradation. Default: false.',
|
|
67
80
|
},
|
|
68
81
|
},
|
|
69
82
|
required: ['action', 'tabId'],
|
|
@@ -78,6 +91,7 @@ const handler = async (sessionId, args) => {
|
|
|
78
91
|
const scrollDirection = args.scroll_direction;
|
|
79
92
|
const scrollAmount = args.scroll_amount || 3;
|
|
80
93
|
const ref = args.ref;
|
|
94
|
+
const includeUAShadow = args.includeUserAgentShadowDOM ?? false;
|
|
81
95
|
const sessionManager = (0, session_manager_1.getSessionManager)();
|
|
82
96
|
if (!tabId) {
|
|
83
97
|
return {
|
|
@@ -105,11 +119,29 @@ const handler = async (sessionId, args) => {
|
|
|
105
119
|
catch {
|
|
106
120
|
// Page may be navigating — proceed anyway
|
|
107
121
|
}
|
|
122
|
+
// Quality presets for screenshot compression
|
|
123
|
+
const QUALITY_PRESETS = {
|
|
124
|
+
high: { quality: 85 },
|
|
125
|
+
normal: { quality: 60 },
|
|
126
|
+
low: { quality: 40 },
|
|
127
|
+
};
|
|
108
128
|
// Phase 1.5: Adaptive screenshot — decide response mode based on repetition
|
|
129
|
+
const force = args.force ?? false;
|
|
109
130
|
const adaptive = adaptive_screenshot_1.AdaptiveScreenshot.getInstance();
|
|
131
|
+
// Force mode: reset adaptive history to prevent degradation spiral
|
|
132
|
+
if (force) {
|
|
133
|
+
adaptive.reset(tabId);
|
|
134
|
+
}
|
|
110
135
|
const screenshotMode = await adaptive.evaluate(page, tabId);
|
|
136
|
+
const effectiveMode = force ? 'full' : screenshotMode;
|
|
137
|
+
// Determine effective quality: explicit arg overrides adaptive suggestion
|
|
138
|
+
const qualityArg = args.screenshotQuality;
|
|
139
|
+
const effectiveQuality = (qualityArg === 'high' || qualityArg === 'normal' || qualityArg === 'low')
|
|
140
|
+
? qualityArg
|
|
141
|
+
: adaptive.getQualityForMode(effectiveMode);
|
|
142
|
+
const preset = QUALITY_PRESETS[effectiveQuality];
|
|
111
143
|
// text_only mode: skip expensive screenshot, return visual summary
|
|
112
|
-
if (
|
|
144
|
+
if (effectiveMode === 'text_only') {
|
|
113
145
|
const summary = await (0, visual_summary_1.generateVisualSummary)(page);
|
|
114
146
|
return {
|
|
115
147
|
content: [{
|
|
@@ -129,7 +161,7 @@ const handler = async (sessionId, args) => {
|
|
|
129
161
|
try {
|
|
130
162
|
const { data } = await cdpSession.send('Page.captureScreenshot', {
|
|
131
163
|
format: 'webp',
|
|
132
|
-
quality:
|
|
164
|
+
quality: preset.quality,
|
|
133
165
|
optimizeForSpeed: true,
|
|
134
166
|
});
|
|
135
167
|
return data;
|
|
@@ -160,7 +192,7 @@ const handler = async (sessionId, args) => {
|
|
|
160
192
|
{ type: 'image', data: screenshot.data, mimeType: screenshot.mimeType },
|
|
161
193
|
];
|
|
162
194
|
// annotated mode: append note about repeated screenshot
|
|
163
|
-
if (
|
|
195
|
+
if (effectiveMode === 'annotated') {
|
|
164
196
|
content.push({ type: 'text', text: adaptive.getAnnotation() });
|
|
165
197
|
}
|
|
166
198
|
return { content };
|
|
@@ -235,7 +267,7 @@ const handler = async (sessionId, args) => {
|
|
|
235
267
|
isError: true,
|
|
236
268
|
};
|
|
237
269
|
}
|
|
238
|
-
const leftClickHitInfo = await getHitElementInfo(page, sessionManager.getCDPClient(), clickCoord[0], clickCoord[1]);
|
|
270
|
+
const leftClickHitInfo = await getHitElementInfo(page, sessionManager.getCDPClient(), clickCoord[0], clickCoord[1], includeUAShadow);
|
|
239
271
|
const { delta: leftDelta } = await (0, dom_delta_1.withDomDelta)(page, () => page.mouse.click(clickCoord[0], clickCoord[1]));
|
|
240
272
|
// Internal fallback: if hit non-interactive element, suggest but don't auto-retry
|
|
241
273
|
// (auto-retry could cause unintended side effects on elements the LLM didn't intend)
|
|
@@ -277,7 +309,7 @@ const handler = async (sessionId, args) => {
|
|
|
277
309
|
isError: true,
|
|
278
310
|
};
|
|
279
311
|
}
|
|
280
|
-
const rightClickHitInfo = await getHitElementInfo(page, sessionManager.getCDPClient(), clickCoord[0], clickCoord[1]);
|
|
312
|
+
const rightClickHitInfo = await getHitElementInfo(page, sessionManager.getCDPClient(), clickCoord[0], clickCoord[1], includeUAShadow);
|
|
281
313
|
const { delta: rightDelta } = await (0, dom_delta_1.withDomDelta)(page, () => page.mouse.click(clickCoord[0], clickCoord[1], { button: 'right' }));
|
|
282
314
|
const rightClickText = rightClickValidation.warning
|
|
283
315
|
? `Right-clicked at (${clickCoord[0]}, ${clickCoord[1]}). Warning: ${rightClickValidation.warning}${rightDelta}`
|
|
@@ -317,7 +349,7 @@ const handler = async (sessionId, args) => {
|
|
|
317
349
|
isError: true,
|
|
318
350
|
};
|
|
319
351
|
}
|
|
320
|
-
const doubleClickHitInfo = await getHitElementInfo(page, sessionManager.getCDPClient(), clickCoord[0], clickCoord[1]);
|
|
352
|
+
const doubleClickHitInfo = await getHitElementInfo(page, sessionManager.getCDPClient(), clickCoord[0], clickCoord[1], includeUAShadow);
|
|
321
353
|
const { delta: doubleDelta } = await (0, dom_delta_1.withDomDelta)(page, () => page.mouse.click(clickCoord[0], clickCoord[1], { clickCount: 2 }));
|
|
322
354
|
const doubleClickText = doubleClickValidation.warning
|
|
323
355
|
? `Double-clicked at (${clickCoord[0]}, ${clickCoord[1]}). Warning: ${doubleClickValidation.warning}${doubleDelta}`
|
|
@@ -357,7 +389,7 @@ const handler = async (sessionId, args) => {
|
|
|
357
389
|
isError: true,
|
|
358
390
|
};
|
|
359
391
|
}
|
|
360
|
-
const tripleClickHitInfo = await getHitElementInfo(page, sessionManager.getCDPClient(), clickCoord[0], clickCoord[1]);
|
|
392
|
+
const tripleClickHitInfo = await getHitElementInfo(page, sessionManager.getCDPClient(), clickCoord[0], clickCoord[1], includeUAShadow);
|
|
361
393
|
const { delta: tripleDelta } = await (0, dom_delta_1.withDomDelta)(page, () => page.mouse.click(clickCoord[0], clickCoord[1], { clickCount: 3 }));
|
|
362
394
|
const tripleClickText = tripleClickValidation.warning
|
|
363
395
|
? `Triple-clicked at (${clickCoord[0]}, ${clickCoord[1]}). Warning: ${tripleClickValidation.warning}${tripleDelta}`
|
|
@@ -647,9 +679,9 @@ async function resolveRefToCoordinates(sessionId, tabId, ref, page, sessionManag
|
|
|
647
679
|
* Returns a string like '\nHit: <button id="submit"> "Submit" [interactive]'
|
|
648
680
|
* or empty string if CDP fails.
|
|
649
681
|
*/
|
|
650
|
-
async function getHitElementInfo(page, cdpClient, x, y) {
|
|
682
|
+
async function getHitElementInfo(page, cdpClient, x, y, includeUserAgentShadowDOM = false) {
|
|
651
683
|
try {
|
|
652
|
-
const locationResult = await cdpClient.send(page, 'DOM.getNodeForLocation', { x, y, includeUserAgentShadowDOM
|
|
684
|
+
const locationResult = await cdpClient.send(page, 'DOM.getNodeForLocation', { x, y, includeUserAgentShadowDOM });
|
|
653
685
|
const backendNodeId = locationResult?.backendNodeId;
|
|
654
686
|
if (!backendNodeId)
|
|
655
687
|
return '';
|