openchrome-mcp 1.7.1 → 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.
@@ -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":"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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openchrome-mcp",
3
- "version": "1.7.1",
3
+ "version": "1.7.2",
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": {