@enricai/barnacle 1.12.80 → 1.12.82

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.
Files changed (55) hide show
  1. package/dist/lib/llm/judges/verify-step-advanced.d.ts +1 -1
  2. package/dist/lib/llm/judges/verify-step-advanced.d.ts.map +1 -1
  3. package/dist/lib/llm/judges/verify-step-advanced.js +2 -1
  4. package/dist/lib/llm/judges/verify-step-advanced.js.map +1 -1
  5. package/dist/plugins/config-plugin.d.ts +1 -0
  6. package/dist/plugins/config-plugin.d.ts.map +1 -1
  7. package/dist/plugins/config-plugin.js +7 -1
  8. package/dist/plugins/config-plugin.js.map +1 -1
  9. package/dist/plugins/loader.d.ts +2 -2
  10. package/dist/plugins/loader.d.ts.map +1 -1
  11. package/dist/plugins/loader.js +6 -3
  12. package/dist/plugins/loader.js.map +1 -1
  13. package/dist/scraper/click-settle.d.ts +41 -1
  14. package/dist/scraper/click-settle.d.ts.map +1 -1
  15. package/dist/scraper/click-settle.js +84 -15
  16. package/dist/scraper/click-settle.js.map +1 -1
  17. package/dist/scraper/errors.d.ts +23 -2
  18. package/dist/scraper/errors.d.ts.map +1 -1
  19. package/dist/scraper/errors.js +32 -4
  20. package/dist/scraper/errors.js.map +1 -1
  21. package/dist/scraper/flow-runner.d.ts +68 -33
  22. package/dist/scraper/flow-runner.d.ts.map +1 -1
  23. package/dist/scraper/flow-runner.js +610 -198
  24. package/dist/scraper/flow-runner.js.map +1 -1
  25. package/dist/scraper/http-client.d.ts +7 -2
  26. package/dist/scraper/http-client.d.ts.map +1 -1
  27. package/dist/scraper/http-client.js +132 -19
  28. package/dist/scraper/http-client.js.map +1 -1
  29. package/dist/scraper/metrics.d.ts +2 -2
  30. package/dist/scraper/metrics.js +2 -2
  31. package/dist/scraper/phantom-click.d.ts +6 -0
  32. package/dist/scraper/phantom-click.d.ts.map +1 -1
  33. package/dist/scraper/phantom-click.js +62 -15
  34. package/dist/scraper/phantom-click.js.map +1 -1
  35. package/dist/scraper/stagehand-guard.d.ts +12 -2
  36. package/dist/scraper/stagehand-guard.d.ts.map +1 -1
  37. package/dist/scraper/stagehand-guard.js +51 -33
  38. package/dist/scraper/stagehand-guard.js.map +1 -1
  39. package/dist/scraper/trusted-click.d.ts +12 -1
  40. package/dist/scraper/trusted-click.d.ts.map +1 -1
  41. package/dist/scraper/trusted-click.js +8 -4
  42. package/dist/scraper/trusted-click.js.map +1 -1
  43. package/dist/scraper/upload-affordance-expr.js +1 -1
  44. package/dist/scraper/upload-affordance-expr.js.map +1 -1
  45. package/dist/scripts/recon-generate.d.ts +5 -7
  46. package/dist/scripts/recon-generate.d.ts.map +1 -1
  47. package/dist/scripts/recon-generate.js +123 -52
  48. package/dist/scripts/recon-generate.js.map +1 -1
  49. package/dist/scripts/recon-shared.d.ts +3 -2
  50. package/dist/scripts/recon-shared.d.ts.map +1 -1
  51. package/dist/scripts/recon-shared.js +6 -11
  52. package/dist/scripts/recon-shared.js.map +1 -1
  53. package/dist/site-plugin.d.ts +7 -4
  54. package/dist/site-plugin.d.ts.map +1 -1
  55. package/package.json +1 -1
@@ -154,8 +154,13 @@ export interface HttpRequestInit<TOverride = unknown> {
154
154
  * outage is not the same as a bot block but the recovery is identical.
155
155
  * Throws `HttpRateLimitError` on 429 — NOT a fallback trigger; the caller
156
156
  * should back off, not burn a session.
157
- * Wraps transient network errors in `UnknownScraperError` and retries up to
158
- * 2 times with exponential backoff before propagating.
157
+ * Throws `HttpTransportError` when no usable response arrives (connection
158
+ * reset/refused, DNS failure, socket hang up, abort, timeout), which is also a
159
+ * fallback trigger. Network failures are retried up to 2 times with
160
+ * exponential backoff first; an abort or timeout is not retried.
161
+ * Throws `UnknownScraperError` without retrying when fetch rejects the request
162
+ * before any network I/O (invalid URL or header value, GET with a body) — a
163
+ * plugin bug, so NOT a fallback trigger.
159
164
  */
160
165
  export declare function createHttpClient<TResponse>(options: HttpClientOptions<TResponse>): <TOverride = TResponse>(url: string, init?: HttpRequestInit<TOverride>) => Promise<TOverride>;
161
166
  //# sourceMappingURL=http-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGhD,OAAO,EAOL,KAAK,YAAY,EAElB,MAAM,kBAAkB,CAAC;AAgI1B;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;OAUG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB,CAAC,SAAS;IAC1C,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,yEAAyE;IACzE,UAAU,EAAE,UAAU,CAAC;IACvB,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7B;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,YAAY,GAAG,SAAS,CAAC;IAC3F;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe,CAAC,SAAS,GAAG,OAAO;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CAC7B;AA+GD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EACxC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GACpC,CAAC,SAAS,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,CAoP/F"}
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGhD,OAAO,EASL,KAAK,YAAY,EAElB,MAAM,kBAAkB,CAAC;AAgI1B;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;OAUG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB,CAAC,SAAS;IAC1C,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,yEAAyE;IACzE,UAAU,EAAE,UAAU,CAAC;IACvB,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7B;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,YAAY,GAAG,SAAS,CAAC;IAC3F;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe,CAAC,SAAS,GAAG,OAAO;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CAC7B;AAqPD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EACxC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GACpC,CAAC,SAAS,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,CAqO/F"}
@@ -250,6 +250,126 @@ function resolveBinding(binding, headers) {
250
250
  }
251
251
  return headers.get(binding.sourceHeader) ?? undefined;
252
252
  }
253
+ /**
254
+ * True when `err` is a deliberate cancellation: a caller's `AbortSignal`
255
+ * firing (`AbortError`) or `AbortSignal.timeout` / `defaultTimeoutMs`
256
+ * elapsing (`TimeoutError`).
257
+ */
258
+ function isAbortOrTimeout(err) {
259
+ return err instanceof Error && (err.name === "AbortError" || err.name === "TimeoutError");
260
+ }
261
+ /**
262
+ * Renders a fetch failure with its root cause. Node's fetch rejects with a
263
+ * generic `TypeError: fetch failed` and puts the real reason (`ECONNRESET`,
264
+ * `ENOTFOUND`, ...) on `cause`, so the outer message alone hides what happened.
265
+ */
266
+ function errorDetail(err) {
267
+ if (!(err instanceof Error))
268
+ return String(err);
269
+ const cause = err.cause;
270
+ const causeCode = cause !== null && typeof cause === "object" && "code" in cause ? String(cause.code) : undefined;
271
+ const causeMessage = cause instanceof Error ? cause.message : undefined;
272
+ const suffix = [causeCode, causeMessage].filter(Boolean).join(" ");
273
+ return suffix ? `${err.name}: ${err.message} (${suffix})` : `${err.name}: ${err.message}`;
274
+ }
275
+ /**
276
+ * Error codes Node's fetch (undici) puts on `cause` when the request never got
277
+ * a response from the network: socket resets, refusals, DNS failures, timeouts
278
+ * and unreachable routes. Every `UND_ERR_*` code is matched by prefix.
279
+ */
280
+ const NETWORK_ERROR_CODES = new Set([
281
+ "ECONNRESET",
282
+ "ECONNREFUSED",
283
+ "ENOTFOUND",
284
+ "EAI_AGAIN",
285
+ "ETIMEDOUT",
286
+ "EPIPE",
287
+ "ENETUNREACH",
288
+ "EHOSTUNREACH",
289
+ ]);
290
+ const MAX_CAUSE_DEPTH = 4;
291
+ /**
292
+ * True when `err` or one of its first few `cause`s carries a network/undici
293
+ * error code. The walk is bounded so a self-referencing cause cannot loop.
294
+ */
295
+ function hasNetworkCauseCode(err, depth = 0) {
296
+ if (depth > MAX_CAUSE_DEPTH || err === null || typeof err !== "object")
297
+ return false;
298
+ const code = "code" in err ? err.code : undefined;
299
+ if (typeof code === "string" && (NETWORK_ERROR_CODES.has(code) || code.startsWith("UND_ERR_"))) {
300
+ return true;
301
+ }
302
+ return "cause" in err && hasNetworkCauseCode(err.cause, depth + 1);
303
+ }
304
+ /**
305
+ * True when a fetch rejection means the network failed to deliver a response,
306
+ * as opposed to fetch refusing the request before any I/O (an invalid URL or
307
+ * header value, a GET with a body). Node reports the former as `TypeError:
308
+ * fetch failed` with the reason on `cause`; the latter are plugin bugs that a
309
+ * retry or a browser session cannot fix.
310
+ */
311
+ function isNetworkFailure(err) {
312
+ if (isAbortOrTimeout(err))
313
+ return true;
314
+ if (err instanceof TypeError && err.message === "fetch failed")
315
+ return true;
316
+ return hasNetworkCauseCode(err);
317
+ }
318
+ /**
319
+ * Converts a failure that left the hot path without a usable response into an
320
+ * {@link HttpTransportError}, so dispatch can cascade it into the browser
321
+ * fallback. A plain network failure (reset, refused, DNS, socket hang up) is
322
+ * thrown as-is so p-retry retries it in place. An abort or timeout is wrapped
323
+ * in p-retry's `AbortError` because the signal fired on purpose and a retry
324
+ * would only time out again.
325
+ */
326
+ function transportFailure(err, label) {
327
+ if (isAbortOrTimeout(err)) {
328
+ return new p_retry_1.AbortError(new errors_1.HttpTransportError(`${label}: aborted or timed out: ${errorDetail(err)}`, { cause: err }));
329
+ }
330
+ return new errors_1.HttpTransportError(`${label}: ${errorDetail(err)}`, { cause: err });
331
+ }
332
+ /**
333
+ * Classifies a fetch rejection. Only a real network failure, abort or timeout
334
+ * becomes an {@link HttpTransportError}; anything else is a request fetch
335
+ * refused to send, so it is wrapped in `AbortError(UnknownScraperError)`:
336
+ * retrying it or cascading it into a browser session would only hide the bug.
337
+ */
338
+ function toTransportFailure(err, label) {
339
+ if (isNetworkFailure(err))
340
+ return transportFailure(err, label);
341
+ return new p_retry_1.AbortError(new errors_1.UnknownScraperError(`${label}: request rejected before sending: ${errorDetail(err)}`));
342
+ }
343
+ /**
344
+ * Reads the response body. The connection can still drop or time out while
345
+ * the body streams in, and that is the same "no usable response" failure as
346
+ * one that happens before the headers arrive.
347
+ */
348
+ async function readBodyOrThrow(response, url) {
349
+ try {
350
+ return await response.text();
351
+ }
352
+ catch (err) {
353
+ throw transportFailure(err, `reading the response body from ${url} failed`);
354
+ }
355
+ }
356
+ /**
357
+ * Runs the retry loop and converts the caller's own signal firing between
358
+ * attempts into an {@link HttpTransportError}. p-retry rejects with the
359
+ * signal's raw `reason` there, which is not a ScraperError, so without this a
360
+ * caller-side timeout that lands during backoff would not cascade into the
361
+ * browser fallback, while one that lands mid-fetch would.
362
+ */
363
+ async function rethrowCallerAbortAsTransport(signal, url, run) {
364
+ try {
365
+ return await run();
366
+ }
367
+ catch (err) {
368
+ if ((0, errors_1.isScraperError)(err) || !signal?.aborted || err !== signal.reason)
369
+ throw err;
370
+ throw new errors_1.HttpTransportError(`http request to ${url} aborted or timed out between attempts: ${errorDetail(err)}`, { cause: err });
371
+ }
372
+ }
253
373
  /**
254
374
  * Factory that creates a typed direct-HTTP request function pre-wired with
255
375
  * the plugin's Bottleneck limiter, p-retry for transient network failures,
@@ -268,8 +388,13 @@ function resolveBinding(binding, headers) {
268
388
  * outage is not the same as a bot block but the recovery is identical.
269
389
  * Throws `HttpRateLimitError` on 429 — NOT a fallback trigger; the caller
270
390
  * should back off, not burn a session.
271
- * Wraps transient network errors in `UnknownScraperError` and retries up to
272
- * 2 times with exponential backoff before propagating.
391
+ * Throws `HttpTransportError` when no usable response arrives (connection
392
+ * reset/refused, DNS failure, socket hang up, abort, timeout), which is also a
393
+ * fallback trigger. Network failures are retried up to 2 times with
394
+ * exponential backoff first; an abort or timeout is not retried.
395
+ * Throws `UnknownScraperError` without retrying when fetch rejects the request
396
+ * before any network I/O (invalid URL or header value, GET with a body) — a
397
+ * plugin bug, so NOT a fallback trigger.
273
398
  */
274
399
  function createHttpClient(options) {
275
400
  const { schema, bottleneck, baseHeaders, onResponse, bind = [], classifyResponseBody, defaultTimeoutMs, } = options;
@@ -295,7 +420,7 @@ function createHttpClient(options) {
295
420
  // call only — see HttpRequestInit.schema for why a multi-call chain with
296
421
  // heterogeneous response shapes needs this escape hatch.
297
422
  const activeSchema = init.schema ?? schema;
298
- return bottleneck.schedule(() => (0, p_retry_1.default)(async () => {
423
+ const attempt = () => (0, p_retry_1.default)(async () => {
299
424
  const method = init.method ?? "GET";
300
425
  const initHeaders = init.headers ?? {};
301
426
  const mergedCookie = mergeCookieHeader(baseHeaders, boundHeaders, initHeaders);
@@ -327,20 +452,7 @@ function createHttpClient(options) {
327
452
  });
328
453
  }
329
454
  catch (err) {
330
- // Caller-triggered cancellation ("AbortError") or a defaultTimeoutMs
331
- // firing (AbortSignal.timeout rejects as "TimeoutError", not
332
- // "AbortError") — either way the signal fired on purpose, so
333
- // propagate without retry rather than burning the retry budget on
334
- // a call that will only time out again. The outer p-retry's own
335
- // `signal` option will also throwIfAborted on its retry-loop
336
- // boundaries, but wrapping in AbortError here covers the window
337
- // between fetch dispatch and the next signal check inside pRetry.
338
- if (err instanceof Error &&
339
- (err.name === "AbortError" || err.name === "TimeoutError")) {
340
- throw new p_retry_1.AbortError(new errors_1.UnknownScraperError(`http fetch aborted: ${err.message}`));
341
- }
342
- // Network-level failure (DNS, TCP reset, timeout) — retryable.
343
- throw new errors_1.UnknownScraperError(`http fetch failed: ${String(err)}`);
455
+ throw toTransportFailure(err, `http fetch to ${url} failed`);
344
456
  }
345
457
  onResponse?.({ status: response.status, headers: response.headers, url });
346
458
  for (const binding of bind) {
@@ -405,7 +517,7 @@ function createHttpClient(options) {
405
517
  logger.warn(`baseline-body capture failed: ${err instanceof Error ? err.message : String(err)}`);
406
518
  }
407
519
  }
408
- const rawText = await response.text();
520
+ const rawText = await readBodyOrThrow(response, url);
409
521
  // A plugin may recognize a non-JSON response body the engine can't
410
522
  // (a vendor sentinel). Its verdict drives retry via the error's
411
523
  // `retryable` flag: non-retryable aborts the p-retry loop, retryable
@@ -452,7 +564,8 @@ function createHttpClient(options) {
452
564
  await (0, frame_target_1.sleep)(context.error.retryAfterMs);
453
565
  }
454
566
  },
455
- }));
567
+ });
568
+ return bottleneck.schedule(() => rethrowCallerAbortAsTransport(init.signal, url, attempt));
456
569
  };
457
570
  }
458
571
  //# sourceMappingURL=http-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"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"}
@@ -19,8 +19,8 @@ export interface SiteMetrics {
19
19
  export declare function recordHotPathSuccess(siteId: string): void;
20
20
  /**
21
21
  * Records a fallback activation for `siteId`. Called by dispatch() when the
22
- * hot path throws `HttpSchemaError`, `HttpBotChallengeError`, or `HttpServerError`
23
- * and the Stagehand browser path is engaged instead.
22
+ * hot path throws `HttpSchemaError`, `HttpBotChallengeError`, `HttpServerError`,
23
+ * or `HttpTransportError` and the Stagehand browser path is engaged instead.
24
24
  */
25
25
  export declare function recordFallbackActivation(siteId: string): void;
26
26
  /**
@@ -33,8 +33,8 @@ function recordHotPathSuccess(siteId) {
33
33
  }
34
34
  /**
35
35
  * Records a fallback activation for `siteId`. Called by dispatch() when the
36
- * hot path throws `HttpSchemaError`, `HttpBotChallengeError`, or `HttpServerError`
37
- * and the Stagehand browser path is engaged instead.
36
+ * hot path throws `HttpSchemaError`, `HttpBotChallengeError`, `HttpServerError`,
37
+ * or `HttpTransportError` and the Stagehand browser path is engaged instead.
38
38
  */
39
39
  function recordFallbackActivation(siteId) {
40
40
  ensureEntry(siteId).fallbackActivations++;
@@ -133,6 +133,12 @@ export declare const PAGE_ADVANCE_MAX_HEAD_SIMILARITY = 0.5;
133
133
  * line (small, mostly-shared text) is not an advance.
134
134
  */
135
135
  export declare function hasPageAdvanced(pre: PhantomClickSnapshot, post: PhantomClickSnapshot): boolean;
136
+ /**
137
+ * Stricter sibling of {@link hasPageAdvanced} for deciding a re-render has
138
+ * finished: a header that flipped over shared chrome is an advance, but the
139
+ * body usually re-renders after it, so only replaced copy counts as settled.
140
+ */
141
+ export declare function hasPageBodySwapped(pre: PhantomClickSnapshot, post: PhantomClickSnapshot): boolean;
136
142
  /**
137
143
  * Classifies one cascade attempt as `phantom` (Stagehand claimed success but
138
144
  * pre/post shows zero network, zero URL change, and only trivial DOM
@@ -1 +1 @@
1
- {"version":3,"file":"phantom-click.d.ts","sourceRoot":"","sources":["../../src/scraper/phantom-click.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qFAAqF;AACrF,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,GAAG,EAAE,oBAAoB,CAAC;IAC1B,IAAI,EAAE,oBAAoB,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;OAMG;IACH,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAWD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE/E;AAED,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,UAA0C,CAAC;AAwDxE;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAapE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAgBT;AAED,MAAM,MAAM,mBAAmB;AAC7B,0FAA0F;AACxF,SAAS;AACX,mEAAmE;GACjE,WAAW;AACb,kKAAkK;GAChK,YAAY,CAAC;AAEjB;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,2FAA2F;AAC3F,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,0FAA0F;AAC1F,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,mFAAmF;AACnF,eAAO,MAAM,2CAA2C,KAAK,CAAC;AAE9D,gFAAgF;AAChF,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAsBpD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAmB9F;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CA0BtF"}
1
+ {"version":3,"file":"phantom-click.d.ts","sourceRoot":"","sources":["../../src/scraper/phantom-click.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qFAAqF;AACrF,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,GAAG,EAAE,oBAAoB,CAAC;IAC1B,IAAI,EAAE,oBAAoB,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;OAMG;IACH,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAWD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE/E;AAED,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,UAA0C,CAAC;AAwDxE;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAapE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAgBT;AAED,MAAM,MAAM,mBAAmB;AAC7B,0FAA0F;AACxF,SAAS;AACX,mEAAmE;GACjE,WAAW;AACb,kKAAkK;GAChK,YAAY,CAAC;AAEjB;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,2FAA2F;AAC3F,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,0FAA0F;AAC1F,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,mFAAmF;AACnF,eAAO,MAAM,2CAA2C,KAAK,CAAC;AAE9D,gFAAgF;AAChF,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAgFpD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAE9F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAEjG;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CA0BtF"}
@@ -12,6 +12,7 @@ exports.hasOriginOrPathChanged = hasOriginOrPathChanged;
12
12
  exports.splitIntoActionClauses = splitIntoActionClauses;
13
13
  exports.isPlausibleStepDestination = isPlausibleStepDestination;
14
14
  exports.hasPageAdvanced = hasPageAdvanced;
15
+ exports.hasPageBodySwapped = hasPageBodySwapped;
15
16
  exports.classifyPhantomClick = classifyPhantomClick;
16
17
  function originAndPathOf(url) {
17
18
  try {
@@ -181,37 +182,83 @@ function headWordSimilarity(pre, post) {
181
182
  const shared = [...preWords].filter((w) => postWords.has(w)).length;
182
183
  return shared / union.size;
183
184
  }
185
+ /** Words dropped AND introduced in the head for it to count as swapped copy. */
186
+ const PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS = 2;
187
+ function leadingHeadWord(signature) {
188
+ return signature
189
+ .slice(signature.indexOf(":") + 1)
190
+ .toLowerCase()
191
+ .split(/\W+/)
192
+ .find((w) => w !== "");
193
+ }
194
+ function isHeadSwapped(pre, post) {
195
+ const preWords = textHeadWords(pre);
196
+ const postWords = textHeadWords(post);
197
+ const dropped = [...preWords].filter((w) => !postWords.has(w)).length;
198
+ if (dropped < PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS)
199
+ return false;
200
+ const added = [...postWords].filter((w) => !preWords.has(w)).length;
201
+ if (added >= PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS)
202
+ return true;
203
+ // A swapped header can reuse a word the shared chrome already carries (a
204
+ // "My Account" header over an "Account" button), leaving a single new word;
205
+ // a new word leading the head still marks replaced copy.
206
+ const leading = leadingHeadWord(post);
207
+ return leading !== undefined && !preWords.has(leading);
208
+ }
184
209
  /**
185
- * Decides whether the page demonstrably advanced (a wizard step swapped
186
- * content) from pre/post snapshots alone, so a network-free, URL-stable
187
- * transition is still credited. Visible text is the evidence: a wizard swap
188
- * can leave the HTML size nearly unchanged (same-size markup, different
189
- * copy), so byte delta is deliberately not required. The text must have
190
- * moved substantially — a large absolute or relative length change, or a
191
- * head whose words were mostly replaced — so a tooltip or inline validation
192
- * line (small, mostly-shared text) is not an advance.
210
+ * Reads how far the visible text moved: `body` when the copy itself was
211
+ * replaced (a large or relative length change, or a head whose words were
212
+ * mostly swapped), `header` when only a header-sized slice moved over shared
213
+ * chrome, `none` otherwise. The split lets a settle tell a finished transition
214
+ * from a header that flipped before its body re-rendered.
193
215
  */
194
- function hasPageAdvanced(pre, post) {
216
+ function pageAdvanceKind(pre, post) {
195
217
  const preSig = pre.visibleTextSignature;
196
218
  const postSig = post.visibleTextSignature;
197
219
  if (preSig === undefined || postSig === undefined || preSig === postSig)
198
- return false;
220
+ return "none";
199
221
  const preLen = textLengthOf(preSig);
200
222
  const postLen = textLengthOf(postSig);
201
223
  if (preLen === null || postLen === null)
202
- return false;
224
+ return "none";
203
225
  const lengthDelta = Math.abs(postLen - preLen);
204
226
  if (lengthDelta >= exports.PAGE_ADVANCE_MIN_TEXT_LENGTH_DELTA)
205
- return true;
227
+ return "body";
206
228
  const similarity = headWordSimilarity(preSig, postSig);
207
229
  // Identical head words mean whitespace/layout reflow, not new copy.
208
230
  if (similarity === 1)
209
- return false;
231
+ return "none";
210
232
  if (lengthDelta >= exports.PAGE_ADVANCE_MIN_RELATIVE_TEXT_LENGTH_DELTA &&
211
233
  lengthDelta / Math.max(preLen, 1) >= exports.PAGE_ADVANCE_MIN_TEXT_LENGTH_RATIO) {
212
- return true;
234
+ return "body";
213
235
  }
214
- return similarity < exports.PAGE_ADVANCE_MAX_HEAD_SIMILARITY;
236
+ if (similarity < exports.PAGE_ADVANCE_MAX_HEAD_SIMILARITY)
237
+ return "body";
238
+ // Shared chrome (nav, footer) inflates similarity when a wizard swaps only
239
+ // its header and body copy within the 200-char head.
240
+ return isHeadSwapped(preSig, postSig) ? "header" : "none";
241
+ }
242
+ /**
243
+ * Decides whether the page demonstrably advanced (a wizard step swapped
244
+ * content) from pre/post snapshots alone, so a network-free, URL-stable
245
+ * transition is still credited. Visible text is the evidence: a wizard swap
246
+ * can leave the HTML size nearly unchanged (same-size markup, different
247
+ * copy), so byte delta is deliberately not required. The text must have
248
+ * moved substantially — a large absolute or relative length change, or a
249
+ * head whose words were mostly replaced — so a tooltip or inline validation
250
+ * line (small, mostly-shared text) is not an advance.
251
+ */
252
+ function hasPageAdvanced(pre, post) {
253
+ return pageAdvanceKind(pre, post) !== "none";
254
+ }
255
+ /**
256
+ * Stricter sibling of {@link hasPageAdvanced} for deciding a re-render has
257
+ * finished: a header that flipped over shared chrome is an advance, but the
258
+ * body usually re-renders after it, so only replaced copy counts as settled.
259
+ */
260
+ function hasPageBodySwapped(pre, post) {
261
+ return pageAdvanceKind(pre, post) === "body";
215
262
  }
216
263
  /**
217
264
  * Classifies one cascade attempt as `phantom` (Stagehand claimed success but
@@ -1 +1 @@
1
- {"version":3,"file":"phantom-click.js","sourceRoot":"","sources":["../../src/scraper/phantom-click.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phantom-click.js","sourceRoot":"","sources":["../../src/scraper/phantom-click.ts"],"names":[],"mappings":"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"}
@@ -48,8 +48,18 @@ import { type FrameTarget } from "./frame-target";
48
48
  * lands in `.barnacle/calls.ndjson` instead of the per-URL run partition.
49
49
  */
50
50
  export type StagehandCaptureFn = (input: LlmCallInput) => Promise<void>;
51
- /** Instructions that name a click; only these are worth an observe to find a click point. */
52
- export declare const CLICK_INTENT_RE: RegExp;
51
+ /**
52
+ * Whether an act instruction may resolve to a pointer click. Any phrasing that
53
+ * is not plainly text entry counts ("Answer No", "Continue", "Save and
54
+ * proceed" name no click verb yet click a button), so the click point is
55
+ * cleared before Stagehand delivers it.
56
+ */
57
+ export declare function hasClickIntent(instruction: string): boolean;
58
+ /**
59
+ * Whether a Stagehand method is delivered as a trusted CDP mouse press on the
60
+ * target's centre, and so needs its click point cleared first.
61
+ */
62
+ export declare function isTrustedClickMethod(method: string | undefined): boolean;
53
63
  /**
54
64
  * Zod parallel of Stagehand's public `Action` shape (from
55
65
  * `@browserbasehq/stagehand/.../public/methods.d.ts`):
@@ -1 +1 @@
1
- {"version":3,"file":"stagehand-guard.d.ts","sourceRoot":"","sources":["../../src/scraper/stagehand-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,SAAS,EAEV,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAS3B,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,8BAA8B,CAAC;AAMtC,OAAO,EAEL,KAAK,WAAW,EAGjB,MAAM,wBAAwB,CAAC;AAMhC;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAYxE,6FAA6F;AAC7F,eAAO,MAAM,eAAe,QAAe,CAAC;AAuB5C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa;;;;;iBAKxB,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;iBAM5B,CAAC;AAEH;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAG,0BAA0B,CAAU;IACpD,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B,YACE,SAAS,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,EACxC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,WAAW,EAAE,OAAO,EAOrB;CACF;AA2KD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,CAAC,EAAE,UAAU,EACpB,SAAS,CAAC,EAAE,kBAAkB,EAC9B,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,UAAQ,GACjB,OAAO,CAAC,SAAS,CAAC,CAkFpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,SAAS,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,cAAc,EACxB,SAAS,CAAC,EAAE,kBAAkB,EAC9B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CA4FnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EACzD,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,cAAc,EACxB,SAAS,CAAC,EAAE,kBAAkB,EAC9B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CA4ErB"}
1
+ {"version":3,"file":"stagehand-guard.d.ts","sourceRoot":"","sources":["../../src/scraper/stagehand-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,SAAS,EAEV,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAO3B,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,8BAA8B,CAAC;AAMtC,OAAO,EAEL,KAAK,WAAW,EAGjB,MAAM,wBAAwB,CAAC;AAMhC;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAwBxE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE3D;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAExE;AAuBD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa;;;;;iBAKxB,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;iBAM5B,CAAC;AAEH;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAG,0BAA0B,CAAU;IACpD,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B,YACE,SAAS,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,EACxC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,WAAW,EAAE,OAAO,EAOrB;CACF;AAsKD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,CAAC,EAAE,UAAU,EACpB,SAAS,CAAC,EAAE,kBAAkB,EAC9B,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,UAAQ,GACjB,OAAO,CAAC,SAAS,CAAC,CAkFpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,SAAS,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,cAAc,EACxB,SAAS,CAAC,EAAE,kBAAkB,EAC9B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CA4FnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EACzD,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,cAAc,EACxB,SAAS,CAAC,EAAE,kBAAkB,EAC9B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CA4ErB"}
@@ -41,15 +41,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
41
41
  return (mod && mod.__esModule) ? mod : { "default": mod };
42
42
  };
43
43
  Object.defineProperty(exports, "__esModule", { value: true });
44
- exports.StagehandSchemaError = exports.ACT_RESULT_SCHEMA = exports.ACTION_SCHEMA = exports.CLICK_INTENT_RE = void 0;
44
+ exports.StagehandSchemaError = exports.ACT_RESULT_SCHEMA = exports.ACTION_SCHEMA = void 0;
45
+ exports.hasClickIntent = hasClickIntent;
46
+ exports.isTrustedClickMethod = isTrustedClickMethod;
45
47
  exports.guardedAct = guardedAct;
46
48
  exports.guardedObserve = guardedObserve;
47
49
  exports.guardedExtract = guardedExtract;
48
50
  const node_crypto_1 = require("node:crypto");
49
51
  const p_retry_1 = __importDefault(require("p-retry"));
50
52
  const v4_1 = require("zod/v4");
51
- const errors_1 = require("../lib/errors");
52
- const logging_1 = require("../lib/logging");
53
53
  const pii_redaction_1 = require("../lib/pii-redaction");
54
54
  const call_capture_1 = require("../lib/telemetry/call-capture");
55
55
  const call_types_1 = require("../lib/telemetry/call-types");
@@ -64,9 +64,33 @@ const watchdog_1 = require("./watchdog");
64
64
  * `guardedObserve` from this module, so importing back would cycle.
65
65
  */
66
66
  const DEFAULT_GUARD_TIMEOUT_MS = 120_000;
67
- const logger = (0, logging_1.getLogger)({ name: "scraper/stagehand-guard" });
68
- /** Instructions that name a click; only these are worth an observe to find a click point. */
69
- exports.CLICK_INTENT_RE = /\bclick\b/i;
67
+ /**
68
+ * Instructions that name a click-like verb ("Select No", "Open the dropdown",
69
+ * "Click Next").
70
+ */
71
+ const CLICK_VERB_RE = /\b(?:click|tap|press|select|choose|pick|open|toggle|check|uncheck|expand|submit)\b/i;
72
+ /**
73
+ * Instructions that lead with text entry, upload or page motion; these never
74
+ * resolve to a pointer click, so an observe for a click point is wasted.
75
+ */
76
+ const NON_CLICK_LEAD_RE = /^\W*(?:fill|type|enter|input|write|paste|upload|attach|scroll|wait|sleep|pause|navigate|go\s+to)\b/i;
77
+ /**
78
+ * Whether an act instruction may resolve to a pointer click. Any phrasing that
79
+ * is not plainly text entry counts ("Answer No", "Continue", "Save and
80
+ * proceed" name no click verb yet click a button), so the click point is
81
+ * cleared before Stagehand delivers it.
82
+ */
83
+ function hasClickIntent(instruction) {
84
+ return CLICK_VERB_RE.test(instruction) || !NON_CLICK_LEAD_RE.test(instruction);
85
+ }
86
+ const TRUSTED_CLICK_METHODS = new Set(["click", "doubleClick"]);
87
+ /**
88
+ * Whether a Stagehand method is delivered as a trusted CDP mouse press on the
89
+ * target's centre, and so needs its click point cleared first.
90
+ */
91
+ function isTrustedClickMethod(method) {
92
+ return method !== undefined && TRUSTED_CLICK_METHODS.has(method);
93
+ }
70
94
  const TRANSIENT_RETRIES = 2;
71
95
  const TRANSIENT_RETRY_MIN_TIMEOUT_MS = 500;
72
96
  /**
@@ -214,12 +238,12 @@ function frameScopedOptions(options, frameTarget) {
214
238
  * Resolves a string act instruction to the Action Stagehand would click so it
215
239
  * can be centred first. Scoped to the step's frame the same way
216
240
  * `guardedObserve` is, so an in-frame control is not resolved against the top
217
- * document. Resolution is best-effort: when `observe` is unavailable, throws,
218
- * or finds nothing, Stagehand's own string `act` resolves internally exactly
219
- * as before.
241
+ * document. When `observe` is unavailable or finds nothing, Stagehand's own
242
+ * string `act` resolves internally exactly as before; an `observe` error
243
+ * propagates.
220
244
  */
221
245
  async function resolveClickAction(stagehand, instruction, options, frameTarget) {
222
- if (typeof stagehand.observe !== "function" || !exports.CLICK_INTENT_RE.test(instruction)) {
246
+ if (typeof stagehand.observe !== "function" || !hasClickIntent(instruction)) {
223
247
  return undefined;
224
248
  }
225
249
  const observeOptions = frameScopedOptions(options?.timeout ? { timeout: options.timeout } : {}, frameTarget);
@@ -236,31 +260,25 @@ async function resolveClickAction(stagehand, instruction, options, frameTarget)
236
260
  * instructions are resolved via `observe` for the pre-centring only and still
237
261
  * reach `act` as the original string, so downstream method/argument handling
238
262
  * is unchanged. Frame-hop (`>>`) selectors are centred in the child frame they
239
- * resolve to. Best-effort by design: a target that cannot be resolved or
240
- * centred is logged and left to Stagehand's own delivery, because a click that
241
- * lands on an overlay is caught as a phantom by the healing ladder and retried
242
- * through the centred trusted-click path, whereas failing here would turn an
243
- * act that would have run into a hard attempt failure. Non-click actions are
244
- * skipped since there is no click point to clear.
263
+ * resolve to. Strict by design: a click target that stays occluded or
264
+ * cannot be resolved throws and fails the attempt, so Stagehand never clicks an
265
+ * uncentred point that a sticky overlay may cover. Non-click actions and
266
+ * instructions that observe to no action are skipped since there is no click
267
+ * point to clear.
245
268
  */
246
269
  async function preCentreClickTarget(stagehand, input, options, frameTarget) {
247
- try {
248
- const page = typeof stagehand.context?.activePage === "function"
249
- ? stagehand.context.activePage()
250
- : undefined;
251
- const target = frameTarget ?? (page ? (0, frame_target_1.mainFrameTarget)(page) : undefined);
252
- if (!target)
253
- return;
254
- const action = typeof input === "string"
255
- ? await resolveClickAction(stagehand, input, options, frameTarget)
256
- : input;
257
- if (action?.method !== "click")
258
- return;
259
- await centreAction(page, target, action);
260
- }
261
- catch (err) {
262
- logger.warn(`pre-centring skipped: ${(0, errors_1.toErrorMessage)(err)}`);
263
- }
270
+ const page = typeof stagehand.context?.activePage === "function"
271
+ ? stagehand.context.activePage()
272
+ : undefined;
273
+ const target = frameTarget ?? (page ? (0, frame_target_1.mainFrameTarget)(page) : undefined);
274
+ if (!target)
275
+ return;
276
+ const action = typeof input === "string"
277
+ ? await resolveClickAction(stagehand, input, options, frameTarget)
278
+ : input;
279
+ if (!isTrustedClickMethod(action?.method))
280
+ return;
281
+ await centreAction(page, target, action);
264
282
  }
265
283
  /**
266
284
  * Centres and hit-tests an Action's click target, resolving a `>>` frame hop