openchrome-mcp 1.7.0 → 1.7.2
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/dist/chrome/launcher.d.ts.map +1 -1
- package/dist/chrome/launcher.js +43 -5
- package/dist/chrome/launcher.js.map +1 -1
- package/dist/cli/index.js +89 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/config/defaults.d.ts +6 -2
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +7 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.d.ts +1 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +16 -1
- package/dist/mcp-server.js.map +1 -1
- package/dist/tools/computer.d.ts.map +1 -1
- package/dist/tools/computer.js +27 -13
- package/dist/tools/computer.js.map +1 -1
- package/dist/tools/form-input.d.ts.map +1 -1
- package/dist/tools/form-input.js +16 -8
- package/dist/tools/form-input.js.map +1 -1
- package/dist/tools/javascript.d.ts +1 -0
- package/dist/tools/javascript.d.ts.map +1 -1
- package/dist/tools/javascript.js +47 -1
- package/dist/tools/javascript.js.map +1 -1
- package/dist/tools/lightweight-scroll.d.ts.map +1 -1
- package/dist/tools/lightweight-scroll.js +50 -2
- package/dist/tools/lightweight-scroll.js.map +1 -1
- package/dist/utils/ref-id-manager.d.ts +17 -0
- package/dist/utils/ref-id-manager.d.ts.map +1 -1
- package/dist/utils/ref-id-manager.js +107 -0
- package/dist/utils/ref-id-manager.js.map +1 -1
- package/dist/utils/retry-with-fallback.d.ts +18 -0
- package/dist/utils/retry-with-fallback.d.ts.map +1 -0
- package/dist/utils/retry-with-fallback.js +39 -0
- package/dist/utils/retry-with-fallback.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../src/tools/javascript.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../src/tools/javascript.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightweight-scroll.d.ts","sourceRoot":"","sources":["../../src/tools/lightweight-scroll.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"lightweight-scroll.d.ts","sourceRoot":"","sources":["../../src/tools/lightweight-scroll.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAsV1C,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAErE"}
|
|
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
11
11
|
exports.registerLightweightScrollTool = registerLightweightScrollTool;
|
|
12
12
|
const session_manager_1 = require("../session-manager");
|
|
13
13
|
const with_timeout_1 = require("../utils/with-timeout");
|
|
14
|
+
const retry_with_fallback_1 = require("../utils/retry-with-fallback");
|
|
14
15
|
const definition = {
|
|
15
16
|
name: 'lightweight_scroll',
|
|
16
17
|
description: 'Scroll page via JS without screenshot. Returns new scroll position.',
|
|
@@ -79,7 +80,8 @@ const handler = async (sessionId, args) => {
|
|
|
79
80
|
isError: true,
|
|
80
81
|
};
|
|
81
82
|
}
|
|
82
|
-
|
|
83
|
+
// Primary: page.evaluate scroll (JS-based, fast path)
|
|
84
|
+
const primaryScroll = () => (0, with_timeout_1.withTimeout)(page.evaluate((params) => {
|
|
83
85
|
return new Promise((resolve) => {
|
|
84
86
|
try {
|
|
85
87
|
const target = params.selector
|
|
@@ -212,6 +214,51 @@ const handler = async (sessionId, args) => {
|
|
|
212
214
|
scrollToEnd,
|
|
213
215
|
waitAfterMs,
|
|
214
216
|
}), 10000, 'lightweight_scroll');
|
|
217
|
+
// Fallback: Input.dispatchMouseEvent mouseWheel via CDP
|
|
218
|
+
const fallbackScroll = async () => {
|
|
219
|
+
const cdpClient = sessionManager.getCDPClient();
|
|
220
|
+
const viewport = page.viewport();
|
|
221
|
+
const x = viewport ? viewport.width / 2 : 512;
|
|
222
|
+
const y = viewport ? viewport.height / 2 : 384;
|
|
223
|
+
let deltaX = 0;
|
|
224
|
+
let deltaY = 0;
|
|
225
|
+
switch (direction) {
|
|
226
|
+
case 'down':
|
|
227
|
+
deltaY = amount;
|
|
228
|
+
break;
|
|
229
|
+
case 'up':
|
|
230
|
+
deltaY = -amount;
|
|
231
|
+
break;
|
|
232
|
+
case 'right':
|
|
233
|
+
deltaX = amount;
|
|
234
|
+
break;
|
|
235
|
+
case 'left':
|
|
236
|
+
deltaX = -amount;
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
await (0, with_timeout_1.withTimeout)(cdpClient.send(page, 'Input.dispatchMouseEvent', {
|
|
240
|
+
type: 'mouseWheel',
|
|
241
|
+
x, y,
|
|
242
|
+
deltaX, deltaY,
|
|
243
|
+
}), 5000, 'scroll-fallback');
|
|
244
|
+
// Wait briefly for scroll to take effect
|
|
245
|
+
await new Promise(r => setTimeout(r, 100));
|
|
246
|
+
// Read back scroll position
|
|
247
|
+
const positions = await (0, with_timeout_1.withTimeout)(page.evaluate(() => ({
|
|
248
|
+
scrollX: window.scrollX,
|
|
249
|
+
scrollY: window.scrollY,
|
|
250
|
+
scrollHeight: document.documentElement.scrollHeight,
|
|
251
|
+
scrollWidth: document.documentElement.scrollWidth,
|
|
252
|
+
clientHeight: document.documentElement.clientHeight,
|
|
253
|
+
clientWidth: document.documentElement.clientWidth,
|
|
254
|
+
})), 5000, 'scroll-position-read');
|
|
255
|
+
return {
|
|
256
|
+
success: true,
|
|
257
|
+
...positions,
|
|
258
|
+
atEnd: false, // approximate — position read is accurate but atEnd calc is skipped
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
const { result: scrollResult, recovered, method: recoveryMethod } = await (0, retry_with_fallback_1.retryWithFallback)(primaryScroll, [fallbackScroll], { label: 'lightweight_scroll', retryDelayMs: 500 });
|
|
215
262
|
if (!scrollResult.success) {
|
|
216
263
|
return {
|
|
217
264
|
content: [{ type: 'text', text: `Scroll error: ${scrollResult.error}` }],
|
|
@@ -220,12 +267,13 @@ const handler = async (sessionId, args) => {
|
|
|
220
267
|
}
|
|
221
268
|
const targetDesc = selector ? ` (${selector})` : '';
|
|
222
269
|
const endIndicator = scrollResult.atEnd ? ' [END REACHED]' : '';
|
|
270
|
+
const recoveryNote = recovered ? ` [recovered:${recoveryMethod}]` : '';
|
|
223
271
|
return {
|
|
224
272
|
content: [
|
|
225
273
|
{
|
|
226
274
|
type: 'text',
|
|
227
275
|
text: JSON.stringify({
|
|
228
|
-
scrolled: `${direction} ${scrollToEnd ? 'to end' : amount + 'px'}${targetDesc}${endIndicator}`,
|
|
276
|
+
scrolled: `${direction} ${scrollToEnd ? 'to end' : amount + 'px'}${targetDesc}${endIndicator}${recoveryNote}`,
|
|
229
277
|
position: {
|
|
230
278
|
x: scrollResult.scrollX,
|
|
231
279
|
y: scrollResult.scrollY,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightweight-scroll.js","sourceRoot":"","sources":["../../src/tools/lightweight-scroll.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;
|
|
1
|
+
{"version":3,"file":"lightweight-scroll.js","sourceRoot":"","sources":["../../src/tools/lightweight-scroll.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Ref ID Manager - Manages persistent element references
|
|
3
3
|
* Ported from extension
|
|
4
4
|
*/
|
|
5
|
+
import { Page } from 'puppeteer-core';
|
|
5
6
|
/** TTL for ref staleness warning (30 seconds) */
|
|
6
7
|
export declare const REF_TTL_MS = 30000;
|
|
7
8
|
export interface RefEntry {
|
|
@@ -44,6 +45,22 @@ export declare class RefIdManager {
|
|
|
44
45
|
* Used when Chrome reassigns target IDs after reconnection.
|
|
45
46
|
*/
|
|
46
47
|
migrateTarget(sessionId: string, oldTargetId: string, newTargetId: string): void;
|
|
48
|
+
/**
|
|
49
|
+
* Attempt to relocate a stale ref by searching for an element that matches the
|
|
50
|
+
* stored metadata (tagName + name/aria-label or textContent).
|
|
51
|
+
*
|
|
52
|
+
* Returns { backendNodeId, newRef } if the element is found and a new ref is
|
|
53
|
+
* registered for it, or null if the element cannot be located.
|
|
54
|
+
*
|
|
55
|
+
* This is used by computer and form_input to recover transparently from stale
|
|
56
|
+
* refs without surfacing an error to the LLM.
|
|
57
|
+
*/
|
|
58
|
+
tryRelocateRef(sessionId: string, tabId: string, ref: string, page: Page, cdpClient: {
|
|
59
|
+
send: (page: Page, method: string, params?: Record<string, unknown>) => Promise<unknown>;
|
|
60
|
+
}): Promise<{
|
|
61
|
+
backendNodeId: number;
|
|
62
|
+
newRef: string;
|
|
63
|
+
} | null>;
|
|
47
64
|
/**
|
|
48
65
|
* Unified resolver: accepts "ref_N", raw integer string "142", or "node_142"
|
|
49
66
|
* Returns the backendDOMNodeId for use with CDP DOM.resolveNode
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-id-manager.d.ts","sourceRoot":"","sources":["../../src/utils/ref-id-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iDAAiD;AACjD,eAAO,MAAM,UAAU,QAAS,CAAC;AAEjC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAA8D;IAC1E,OAAO,CAAC,QAAQ,CAA+C;IAE/D;;OAEG;IACH,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM;IAsCT,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIhF,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3F,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAY1D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKzC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IAQ9D;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAMvE;;;;OAIG;IACH,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,GAC1B;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAiCvD;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAsBhF;;;OAGG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS;CAkBtB;AAID,wBAAgB,eAAe,IAAI,YAAY,CAK9C"}
|
|
1
|
+
{"version":3,"file":"ref-id-manager.d.ts","sourceRoot":"","sources":["../../src/utils/ref-id-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,iDAAiD;AACjD,eAAO,MAAM,UAAU,QAAS,CAAC;AAEjC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAA8D;IAC1E,OAAO,CAAC,QAAQ,CAA+C;IAE/D;;OAEG;IACH,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM;IAsCT,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIhF,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3F,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAY1D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKzC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IAQ9D;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAMvE;;;;OAIG;IACH,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,GAC1B;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAiCvD;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAsBhF;;;;;;;;;OASG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,SAAS,EAAE;QAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,GACtG,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAyH5D;;;OAGG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS;CAkBtB;AAID,wBAAgB,eAAe,IAAI,YAAY,CAK9C"}
|
|
@@ -140,6 +140,113 @@ class RefIdManager {
|
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Attempt to relocate a stale ref by searching for an element that matches the
|
|
145
|
+
* stored metadata (tagName + name/aria-label or textContent).
|
|
146
|
+
*
|
|
147
|
+
* Returns { backendNodeId, newRef } if the element is found and a new ref is
|
|
148
|
+
* registered for it, or null if the element cannot be located.
|
|
149
|
+
*
|
|
150
|
+
* This is used by computer and form_input to recover transparently from stale
|
|
151
|
+
* refs without surfacing an error to the LLM.
|
|
152
|
+
*/
|
|
153
|
+
async tryRelocateRef(sessionId, tabId, ref, page, cdpClient) {
|
|
154
|
+
const entry = this.getRef(sessionId, tabId, ref);
|
|
155
|
+
if (!entry)
|
|
156
|
+
return null;
|
|
157
|
+
const { tagName, name, textContent, role } = entry;
|
|
158
|
+
// Build a selector from stored metadata. We need at least a tagName to proceed.
|
|
159
|
+
if (!tagName)
|
|
160
|
+
return null;
|
|
161
|
+
try {
|
|
162
|
+
// Use page.evaluate to search for a matching element quickly.
|
|
163
|
+
// Strategy 1: tagName + aria-label/title exact match (most reliable).
|
|
164
|
+
// Strategy 2: tagName + text content prefix match.
|
|
165
|
+
// Strategy 3: tagName alone (only if role is unique enough, e.g. input types).
|
|
166
|
+
const foundNodeId = await page.evaluate((tag, elName, elText, elRole) => {
|
|
167
|
+
const selector = tag;
|
|
168
|
+
const candidates = Array.from(document.querySelectorAll(selector));
|
|
169
|
+
// Helper: check visibility
|
|
170
|
+
function isVisible(el) {
|
|
171
|
+
const rect = el.getBoundingClientRect();
|
|
172
|
+
if (rect.width === 0 || rect.height === 0)
|
|
173
|
+
return false;
|
|
174
|
+
const style = window.getComputedStyle(el);
|
|
175
|
+
return style.visibility !== 'hidden' && style.display !== 'none' && style.opacity !== '0';
|
|
176
|
+
}
|
|
177
|
+
const textPrefix = elText ? elText.slice(0, 30).trim() : '';
|
|
178
|
+
const nameLower = elName ? elName.toLowerCase() : '';
|
|
179
|
+
for (const el of candidates) {
|
|
180
|
+
if (!isVisible(el))
|
|
181
|
+
continue;
|
|
182
|
+
const inputEl = el;
|
|
183
|
+
// Strategy 1: aria-label or title match
|
|
184
|
+
if (nameLower) {
|
|
185
|
+
const ariaLabel = (el.getAttribute('aria-label') || '').toLowerCase();
|
|
186
|
+
const titleAttr = (el.getAttribute('title') || '').toLowerCase();
|
|
187
|
+
const placeholder = (inputEl.placeholder || '').toLowerCase();
|
|
188
|
+
if (ariaLabel === nameLower || titleAttr === nameLower || placeholder === nameLower) {
|
|
189
|
+
el.__relocateTarget = true;
|
|
190
|
+
return 1;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Strategy 2: textContent prefix match
|
|
194
|
+
if (textPrefix) {
|
|
195
|
+
const currentText = (el.textContent || '').trim().slice(0, 30);
|
|
196
|
+
if (currentText === textPrefix) {
|
|
197
|
+
el.__relocateTarget = true;
|
|
198
|
+
return 1;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Strategy 3: role-only match — only use for inputs/buttons with no text/name
|
|
203
|
+
if (!nameLower && !textPrefix && elRole) {
|
|
204
|
+
const roleLower = elRole.toLowerCase();
|
|
205
|
+
for (const el of candidates) {
|
|
206
|
+
if (!isVisible(el))
|
|
207
|
+
continue;
|
|
208
|
+
const inputEl = el;
|
|
209
|
+
const elRoleAttr = (el.getAttribute('role') || '').toLowerCase();
|
|
210
|
+
const inferredRole = el.tagName === 'BUTTON' ? 'button'
|
|
211
|
+
: el.tagName === 'A' ? 'link'
|
|
212
|
+
: el.tagName === 'INPUT' ? (inputEl.type || 'textbox')
|
|
213
|
+
: elRoleAttr;
|
|
214
|
+
if (inferredRole === roleLower) {
|
|
215
|
+
el.__relocateTarget = true;
|
|
216
|
+
return 1;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return 0;
|
|
221
|
+
}, tagName, name, textContent, role);
|
|
222
|
+
if (!foundNodeId)
|
|
223
|
+
return null;
|
|
224
|
+
// Get the backend node ID via CDP
|
|
225
|
+
const { result: batchResult } = await cdpClient.send(page, 'Runtime.evaluate', {
|
|
226
|
+
expression: `(() => {
|
|
227
|
+
const el = document.querySelector('*.__relocateTarget') ||
|
|
228
|
+
Array.from(document.querySelectorAll('*')).find(e => e.__relocateTarget);
|
|
229
|
+
if (el) { delete el.__relocateTarget; }
|
|
230
|
+
return el || null;
|
|
231
|
+
})()`,
|
|
232
|
+
returnByValue: false,
|
|
233
|
+
});
|
|
234
|
+
if (!batchResult?.objectId)
|
|
235
|
+
return null;
|
|
236
|
+
const { node } = await cdpClient.send(page, 'DOM.describeNode', {
|
|
237
|
+
objectId: batchResult.objectId,
|
|
238
|
+
});
|
|
239
|
+
if (!node?.backendNodeId)
|
|
240
|
+
return null;
|
|
241
|
+
// Register a new ref for the re-located element
|
|
242
|
+
const newRef = this.generateRef(sessionId, tabId, node.backendNodeId, entry.role, entry.name, entry.tagName, entry.textContent);
|
|
243
|
+
return { backendNodeId: node.backendNodeId, newRef };
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
// Any CDP or evaluate failure means we cannot relocate
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
143
250
|
/**
|
|
144
251
|
* Unified resolver: accepts "ref_N", raw integer string "142", or "node_142"
|
|
145
252
|
* Returns the backendDOMNodeId for use with CDP DOM.resolveNode
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-id-manager.js","sourceRoot":"","sources":["../../src/utils/ref-id-manager.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"ref-id-manager.js","sourceRoot":"","sources":["../../src/utils/ref-id-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry with fallback utility.
|
|
3
|
+
* Retries the primary operation, then tries fallback methods before giving up.
|
|
4
|
+
*/
|
|
5
|
+
export interface RetryOptions {
|
|
6
|
+
/** Maximum retry attempts for primary method (default: 1) */
|
|
7
|
+
maxRetries?: number;
|
|
8
|
+
/** Delay between retries in ms (default: 500) */
|
|
9
|
+
retryDelayMs?: number;
|
|
10
|
+
/** Label for logging (default: 'operation') */
|
|
11
|
+
label?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function retryWithFallback<T>(primary: () => Promise<T>, fallbacks: Array<() => Promise<T>>, options?: RetryOptions): Promise<{
|
|
14
|
+
result: T;
|
|
15
|
+
recovered: boolean;
|
|
16
|
+
method: string;
|
|
17
|
+
}>;
|
|
18
|
+
//# sourceMappingURL=retry-with-fallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-with-fallback.d.ts","sourceRoot":"","sources":["../../src/utils/retry-with-fallback.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,EAClC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+B5D"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Retry with fallback utility.
|
|
4
|
+
* Retries the primary operation, then tries fallback methods before giving up.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.retryWithFallback = retryWithFallback;
|
|
8
|
+
async function retryWithFallback(primary, fallbacks, options = {}) {
|
|
9
|
+
const { maxRetries = 1, retryDelayMs = 500, label = 'operation' } = options;
|
|
10
|
+
// Try primary with retries
|
|
11
|
+
let lastError;
|
|
12
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
13
|
+
try {
|
|
14
|
+
const result = await primary();
|
|
15
|
+
return { result, recovered: attempt > 0, method: 'primary' };
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
19
|
+
if (attempt < maxRetries) {
|
|
20
|
+
console.error(`[retry] ${label} attempt ${attempt + 1} failed, retrying in ${retryDelayMs}ms...`);
|
|
21
|
+
await new Promise(r => setTimeout(r, retryDelayMs));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// Try fallbacks
|
|
26
|
+
for (let i = 0; i < fallbacks.length; i++) {
|
|
27
|
+
try {
|
|
28
|
+
console.error(`[retry] ${label} trying fallback ${i + 1}...`);
|
|
29
|
+
const result = await fallbacks[i]();
|
|
30
|
+
return { result, recovered: true, method: `fallback-${i + 1}` };
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// All methods exhausted
|
|
37
|
+
throw lastError || new Error(`${label}: all recovery methods exhausted`);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=retry-with-fallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-with-fallback.js","sourceRoot":"","sources":["../../src/utils/retry-with-fallback.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAWH,8CAmCC;AAnCM,KAAK,UAAU,iBAAiB,CACrC,OAAyB,EACzB,SAAkC,EAClC,UAAwB,EAAE;IAE1B,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,YAAY,GAAG,GAAG,EAAE,KAAK,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;IAE5E,2BAA2B;IAC3B,IAAI,SAA4B,CAAC;IACjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;YAC/B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAChE,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;gBACzB,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,YAAY,OAAO,GAAG,CAAC,wBAAwB,YAAY,OAAO,CAAC,CAAC;gBAClG,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,kCAAkC,CAAC,CAAC;AAC3E,CAAC"}
|