@enricai/barnacle 1.12.81 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/lib/ats-field-vocabulary.d.ts.map +1 -1
  2. package/dist/lib/ats-field-vocabulary.js +86 -3
  3. package/dist/lib/ats-field-vocabulary.js.map +1 -1
  4. package/dist/lib/llm/judges/verify-step-advanced.d.ts +1 -1
  5. package/dist/lib/llm/judges/verify-step-advanced.d.ts.map +1 -1
  6. package/dist/lib/llm/judges/verify-step-advanced.js +5 -3
  7. package/dist/lib/llm/judges/verify-step-advanced.js.map +1 -1
  8. package/dist/lib/llm/judges/verify-submit.d.ts +2 -2
  9. package/dist/lib/llm/judges/verify-submit.d.ts.map +1 -1
  10. package/dist/lib/llm/judges/verify-submit.js +17 -5
  11. package/dist/lib/llm/judges/verify-submit.js.map +1 -1
  12. package/dist/lib/random.d.ts +7 -3
  13. package/dist/lib/random.d.ts.map +1 -1
  14. package/dist/lib/random.js +27 -4
  15. package/dist/lib/random.js.map +1 -1
  16. package/dist/plugins/config-plugin.d.ts +1 -0
  17. package/dist/plugins/config-plugin.d.ts.map +1 -1
  18. package/dist/plugins/config-plugin.js +7 -1
  19. package/dist/plugins/config-plugin.js.map +1 -1
  20. package/dist/plugins/loader.d.ts +2 -2
  21. package/dist/plugins/loader.d.ts.map +1 -1
  22. package/dist/plugins/loader.js +6 -3
  23. package/dist/plugins/loader.js.map +1 -1
  24. package/dist/scraper/click-settle.d.ts +17 -2
  25. package/dist/scraper/click-settle.d.ts.map +1 -1
  26. package/dist/scraper/click-settle.js +36 -30
  27. package/dist/scraper/click-settle.js.map +1 -1
  28. package/dist/scraper/deep-locator-actuate.d.ts.map +1 -1
  29. package/dist/scraper/deep-locator-actuate.js +17 -1
  30. package/dist/scraper/deep-locator-actuate.js.map +1 -1
  31. package/dist/scraper/deep-locator-fake.js +1 -1
  32. package/dist/scraper/deep-locator-fake.js.map +1 -1
  33. package/dist/scraper/errors.d.ts +23 -2
  34. package/dist/scraper/errors.d.ts.map +1 -1
  35. package/dist/scraper/errors.js +32 -4
  36. package/dist/scraper/errors.js.map +1 -1
  37. package/dist/scraper/flow-runner.d.ts +176 -36
  38. package/dist/scraper/flow-runner.d.ts.map +1 -1
  39. package/dist/scraper/flow-runner.js +778 -326
  40. package/dist/scraper/flow-runner.js.map +1 -1
  41. package/dist/scraper/http-client.d.ts +7 -2
  42. package/dist/scraper/http-client.d.ts.map +1 -1
  43. package/dist/scraper/http-client.js +132 -19
  44. package/dist/scraper/http-client.js.map +1 -1
  45. package/dist/scraper/metrics.d.ts +2 -2
  46. package/dist/scraper/metrics.js +2 -2
  47. package/dist/scraper/phantom-click.d.ts +51 -1
  48. package/dist/scraper/phantom-click.d.ts.map +1 -1
  49. package/dist/scraper/phantom-click.js +170 -19
  50. package/dist/scraper/phantom-click.js.map +1 -1
  51. package/dist/scraper/runtime-capture-store.d.ts +38 -0
  52. package/dist/scraper/runtime-capture-store.d.ts.map +1 -0
  53. package/dist/scraper/runtime-capture-store.js +103 -0
  54. package/dist/scraper/runtime-capture-store.js.map +1 -0
  55. package/dist/scraper/segmented-date-spinbutton.d.ts +13 -0
  56. package/dist/scraper/segmented-date-spinbutton.d.ts.map +1 -0
  57. package/dist/scraper/segmented-date-spinbutton.js +71 -0
  58. package/dist/scraper/segmented-date-spinbutton.js.map +1 -0
  59. package/dist/scripts/recon-browser.d.ts +0 -8
  60. package/dist/scripts/recon-browser.d.ts.map +1 -1
  61. package/dist/scripts/recon-browser.js +102 -50
  62. package/dist/scripts/recon-browser.js.map +1 -1
  63. package/dist/scripts/recon-generate.d.ts +11 -0
  64. package/dist/scripts/recon-generate.d.ts.map +1 -1
  65. package/dist/scripts/recon-generate.js +180 -53
  66. package/dist/scripts/recon-generate.js.map +1 -1
  67. package/dist/site-plugin.d.ts +7 -4
  68. package/dist/site-plugin.d.ts.map +1 -1
  69. 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++;
@@ -13,7 +13,19 @@ export interface PhantomClickSnapshot {
13
13
  bodyHtmlLength: number;
14
14
  /** `<len>:<first-200-chars>` of visible text, as in flow-runner's StepSnapshot. */
15
15
  visibleTextSignature?: string;
16
+ /** Bounded whitespace-normalised excerpt of the visible text (see flow-runner's StepSnapshot). */
17
+ visibleText?: string;
18
+ /** Digest of the whole normalised visible text, so a change beyond the head or excerpt is still seen. */
19
+ visibleTextDigest?: string;
20
+ /**
21
+ * True when this snapshot was re-read after a settle round and the visible
22
+ * text held still across it, so a header flip that has not been followed by
23
+ * a body swap is the page's final state rather than a transition in flight.
24
+ */
25
+ settled?: boolean;
16
26
  }
27
+ /** The visible-text slice of a snapshot, for callers that judge a page advance from text alone. */
28
+ export type VisibleTextState = Pick<PhantomClickSnapshot, "visibleTextSignature" | "visibleText" | "visibleTextDigest">;
17
29
  export interface PhantomClickAttempt {
18
30
  /** Stagehand's own verdict for the attempt — did it believe it acted? */
19
31
  actResultSuccess: boolean | null;
@@ -44,11 +56,17 @@ export interface PhantomClickAttempt {
44
56
  /**
45
57
  * True when a submit-shaped step is NOT the flow's final submit (e.g. an
46
58
  * account-creation transition in a wizard). Such a step is credited when
47
- * {@link hasPageAdvanced} holds even with no network/URL/title signal.
59
+ * {@link hasSettledPageAdvanced} holds even with no network/URL/title signal.
48
60
  * Implies `isSubmitShapedStep`: a mid-flow submit is submit-shaped by
49
61
  * definition, so callers need not set both for it to be held to submit rules.
50
62
  */
51
63
  isMidFlowSubmitStep?: boolean;
64
+ /**
65
+ * Step-start snapshot used ONLY for the mid-flow advance judgement, so a late
66
+ * re-render an earlier attempt already absorbed into `pre` is still credited.
67
+ * Network/byte deltas keep coming from `pre`. Defaults to `pre`.
68
+ */
69
+ advanceBaseline?: PhantomClickSnapshot;
52
70
  /**
53
71
  * Mirrors flow-runner's own `isPlausibleStepDestination` gate on its
54
72
  * `urlChanged`/`retryUrlChanged` signals: false when the post-URL landed
@@ -122,6 +140,12 @@ export declare const PAGE_ADVANCE_MIN_TEXT_LENGTH_RATIO = 0.3;
122
140
  export declare const PAGE_ADVANCE_MIN_RELATIVE_TEXT_LENGTH_DELTA = 30;
123
141
  /** Word-set similarity below which the visible-text head counts as replaced. */
124
142
  export declare const PAGE_ADVANCE_MAX_HEAD_SIMILARITY = 0.5;
143
+ /**
144
+ * Reports whether the visible text differs at all between two snapshots, using
145
+ * the whole-text digest when both carry one so a change beyond the 200-char
146
+ * signature head is not missed. Falls back to the signature alone.
147
+ */
148
+ export declare function hasVisibleTextChanged(pre: PhantomClickSnapshot, post: PhantomClickSnapshot): boolean;
125
149
  /**
126
150
  * Decides whether the page demonstrably advanced (a wizard step swapped
127
151
  * content) from pre/post snapshots alone, so a network-free, URL-stable
@@ -133,6 +157,31 @@ export declare const PAGE_ADVANCE_MAX_HEAD_SIMILARITY = 0.5;
133
157
  * line (small, mostly-shared text) is not an advance.
134
158
  */
135
159
  export declare function hasPageAdvanced(pre: PhantomClickSnapshot, post: PhantomClickSnapshot): boolean;
160
+ /**
161
+ * Stricter sibling of {@link hasPageAdvanced} for deciding a re-render has
162
+ * finished: a header that flipped over shared chrome is an advance, but the
163
+ * body usually re-renders after it, so only replaced copy counts as settled.
164
+ */
165
+ export declare function hasPageBodySwapped(pre: PhantomClickSnapshot, post: PhantomClickSnapshot): boolean;
166
+ /**
167
+ * Decides whether a mid-flow submit's page advanced, judged on the settled
168
+ * page: a replaced body always counts, and a replaced header counts once the
169
+ * text has held still across a settle round, because by then nothing is left
170
+ * to re-render. Before that point a header-only flip stays unfinished, since
171
+ * the body usually re-renders after it. A page with no visible-text change
172
+ * never counts, so a no-op click keeps its give-up.
173
+ */
174
+ export declare function hasSettledPageAdvanced(pre: PhantomClickSnapshot, post: PhantomClickSnapshot): boolean;
175
+ type SettledTextState = VisibleTextState & {
176
+ settled?: boolean;
177
+ };
178
+ /**
179
+ * Shared step-start vs settled-read rule for non-final submit-shaped steps,
180
+ * whose SPA wizards swap content without a URL change. Built only on
181
+ * {@link hasSettledPageAdvanced}; a final step is never credited here because
182
+ * its completion is owned by the submit-destination judge.
183
+ */
184
+ export declare function hasSubmitStepDomAdvanced(isFinalStep: boolean, pre: string | SettledTextState | undefined, live: string | SettledTextState | undefined): boolean;
136
185
  /**
137
186
  * Classifies one cascade attempt as `phantom` (Stagehand claimed success but
138
187
  * pre/post shows zero network, zero URL change, and only trivial DOM
@@ -142,4 +191,5 @@ export declare function hasPageAdvanced(pre: PhantomClickSnapshot, post: Phantom
142
191
  * techniques on the same no-op.
143
192
  */
144
193
  export declare function classifyPhantomClick(attempt: PhantomClickAttempt): PhantomClickVerdict;
194
+ export {};
145
195
  //# sourceMappingURL=phantom-click.d.ts.map
@@ -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":"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"}
@@ -11,7 +11,11 @@ exports.PAGE_ADVANCE_MAX_HEAD_SIMILARITY = exports.PAGE_ADVANCE_MIN_RELATIVE_TEX
11
11
  exports.hasOriginOrPathChanged = hasOriginOrPathChanged;
12
12
  exports.splitIntoActionClauses = splitIntoActionClauses;
13
13
  exports.isPlausibleStepDestination = isPlausibleStepDestination;
14
+ exports.hasVisibleTextChanged = hasVisibleTextChanged;
14
15
  exports.hasPageAdvanced = hasPageAdvanced;
16
+ exports.hasPageBodySwapped = hasPageBodySwapped;
17
+ exports.hasSettledPageAdvanced = hasSettledPageAdvanced;
18
+ exports.hasSubmitStepDomAdvanced = hasSubmitStepDomAdvanced;
15
19
  exports.classifyPhantomClick = classifyPhantomClick;
16
20
  function originAndPathOf(url) {
17
21
  try {
@@ -181,37 +185,184 @@ function headWordSimilarity(pre, post) {
181
185
  const shared = [...preWords].filter((w) => postWords.has(w)).length;
182
186
  return shared / union.size;
183
187
  }
188
+ /** Words dropped AND introduced in the head for it to count as swapped copy. */
189
+ const PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS = 2;
190
+ function leadingHeadWord(signature) {
191
+ return signature
192
+ .slice(signature.indexOf(":") + 1)
193
+ .toLowerCase()
194
+ .split(/\W+/)
195
+ .find((w) => w !== "");
196
+ }
197
+ function isHeadSwapped(pre, post) {
198
+ const preWords = textHeadWords(pre);
199
+ const postWords = textHeadWords(post);
200
+ const dropped = [...preWords].filter((w) => !postWords.has(w)).length;
201
+ if (dropped < PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS)
202
+ return false;
203
+ const added = [...postWords].filter((w) => !preWords.has(w)).length;
204
+ if (added >= PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS)
205
+ return true;
206
+ // A swapped header can reuse a word the shared chrome already carries (a
207
+ // "My Account" header over an "Account" button), leaving a single new word;
208
+ // a new word leading the head still marks replaced copy.
209
+ const leading = leadingHeadWord(post);
210
+ return leading !== undefined && !preWords.has(leading);
211
+ }
212
+ const KIND_RANK = { none: 0, header: 1, body: 2 };
213
+ /** Head length the signature keeps; the excerpt tail starts past it. */
214
+ const SIGNATURE_HEAD_CHARS = 200;
215
+ function wordsOf(text) {
216
+ return new Set(text
217
+ .toLowerCase()
218
+ .split(/\W+/)
219
+ .filter((w) => w !== ""));
220
+ }
221
+ function wordSetSimilarity(preWords, postWords) {
222
+ const union = new Set([...preWords, ...postWords]);
223
+ if (union.size === 0)
224
+ return 1;
225
+ return [...preWords].filter((w) => postWords.has(w)).length / union.size;
226
+ }
227
+ function swappedWordCounts(preWords, postWords) {
228
+ return {
229
+ dropped: [...preWords].filter((w) => !postWords.has(w)).length,
230
+ added: [...postWords].filter((w) => !preWords.has(w)).length,
231
+ };
232
+ }
184
233
  /**
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.
234
+ * Reads the movement of the page's whole visible text rather than its 200-char
235
+ * head: a wizard body that re-renders under unchanged chrome (long nav, same
236
+ * header, same length) leaves the signature untouched, so the excerpt's words
237
+ * decide whether the copy itself was replaced. `body` only when the replaced
238
+ * words sit in the text past the head, so a head-only flip stays `header`.
193
239
  */
194
- function hasPageAdvanced(pre, post) {
195
- const preSig = pre.visibleTextSignature;
196
- const postSig = post.visibleTextSignature;
197
- if (preSig === undefined || postSig === undefined || preSig === postSig)
198
- return false;
240
+ function fullTextAdvanceKind(pre, post) {
241
+ const preText = pre.visibleText;
242
+ const postText = post.visibleText;
243
+ if (!preText || !postText || preText === postText)
244
+ return "none";
245
+ const preWords = wordsOf(preText);
246
+ const postWords = wordsOf(postText);
247
+ const similarity = wordSetSimilarity(preWords, postWords);
248
+ if (similarity === 1)
249
+ return "none";
250
+ if (similarity < exports.PAGE_ADVANCE_MAX_HEAD_SIMILARITY)
251
+ return "body";
252
+ const { dropped, added } = swappedWordCounts(wordsOf(preText.slice(SIGNATURE_HEAD_CHARS)), wordsOf(postText.slice(SIGNATURE_HEAD_CHARS)));
253
+ if (dropped >= PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS &&
254
+ added >= PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS) {
255
+ return "body";
256
+ }
257
+ const headSwap = swappedWordCounts(wordsOf(preText.slice(0, SIGNATURE_HEAD_CHARS)), wordsOf(postText.slice(0, SIGNATURE_HEAD_CHARS)));
258
+ return headSwap.dropped >= PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS &&
259
+ headSwap.added >= PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS
260
+ ? "header"
261
+ : "none";
262
+ }
263
+ function signatureAdvanceKind(preSig, postSig) {
264
+ if (preSig === postSig)
265
+ return "none";
199
266
  const preLen = textLengthOf(preSig);
200
267
  const postLen = textLengthOf(postSig);
201
268
  if (preLen === null || postLen === null)
202
- return false;
269
+ return "none";
203
270
  const lengthDelta = Math.abs(postLen - preLen);
204
271
  if (lengthDelta >= exports.PAGE_ADVANCE_MIN_TEXT_LENGTH_DELTA)
205
- return true;
272
+ return "body";
206
273
  const similarity = headWordSimilarity(preSig, postSig);
207
274
  // Identical head words mean whitespace/layout reflow, not new copy.
208
275
  if (similarity === 1)
209
- return false;
276
+ return "none";
210
277
  if (lengthDelta >= exports.PAGE_ADVANCE_MIN_RELATIVE_TEXT_LENGTH_DELTA &&
211
278
  lengthDelta / Math.max(preLen, 1) >= exports.PAGE_ADVANCE_MIN_TEXT_LENGTH_RATIO) {
212
- return true;
279
+ return "body";
213
280
  }
214
- return similarity < exports.PAGE_ADVANCE_MAX_HEAD_SIMILARITY;
281
+ if (similarity < exports.PAGE_ADVANCE_MAX_HEAD_SIMILARITY)
282
+ return "body";
283
+ // Shared chrome (nav, footer) inflates similarity when a wizard swaps only
284
+ // its header and body copy within the 200-char head.
285
+ return isHeadSwapped(preSig, postSig) ? "header" : "none";
286
+ }
287
+ /**
288
+ * Reports whether the visible text differs at all between two snapshots, using
289
+ * the whole-text digest when both carry one so a change beyond the 200-char
290
+ * signature head is not missed. Falls back to the signature alone.
291
+ */
292
+ function hasVisibleTextChanged(pre, post) {
293
+ if (pre.visibleTextSignature !== post.visibleTextSignature)
294
+ return true;
295
+ return (!!pre.visibleTextDigest &&
296
+ !!post.visibleTextDigest &&
297
+ pre.visibleTextDigest !== post.visibleTextDigest);
298
+ }
299
+ /**
300
+ * Reads how far the visible text moved: `body` when the copy itself was
301
+ * replaced (a large or relative length change, or a head whose words were
302
+ * mostly swapped, or replaced words past the head), `header` when only a
303
+ * header-sized slice moved over shared chrome, `none` otherwise. The split lets
304
+ * a settle tell a finished transition from a header that flipped before its
305
+ * body re-rendered.
306
+ */
307
+ function pageAdvanceKind(pre, post) {
308
+ const preSig = pre.visibleTextSignature;
309
+ const postSig = post.visibleTextSignature;
310
+ if (preSig === undefined || postSig === undefined)
311
+ return "none";
312
+ if (!hasVisibleTextChanged(pre, post))
313
+ return "none";
314
+ const fromSignature = signatureAdvanceKind(preSig, postSig);
315
+ const fromFullText = fullTextAdvanceKind(pre, post);
316
+ return KIND_RANK[fromFullText] > KIND_RANK[fromSignature] ? fromFullText : fromSignature;
317
+ }
318
+ /**
319
+ * Decides whether the page demonstrably advanced (a wizard step swapped
320
+ * content) from pre/post snapshots alone, so a network-free, URL-stable
321
+ * transition is still credited. Visible text is the evidence: a wizard swap
322
+ * can leave the HTML size nearly unchanged (same-size markup, different
323
+ * copy), so byte delta is deliberately not required. The text must have
324
+ * moved substantially — a large absolute or relative length change, or a
325
+ * head whose words were mostly replaced — so a tooltip or inline validation
326
+ * line (small, mostly-shared text) is not an advance.
327
+ */
328
+ function hasPageAdvanced(pre, post) {
329
+ return pageAdvanceKind(pre, post) !== "none";
330
+ }
331
+ /**
332
+ * Stricter sibling of {@link hasPageAdvanced} for deciding a re-render has
333
+ * finished: a header that flipped over shared chrome is an advance, but the
334
+ * body usually re-renders after it, so only replaced copy counts as settled.
335
+ */
336
+ function hasPageBodySwapped(pre, post) {
337
+ return pageAdvanceKind(pre, post) === "body";
338
+ }
339
+ /**
340
+ * Decides whether a mid-flow submit's page advanced, judged on the settled
341
+ * page: a replaced body always counts, and a replaced header counts once the
342
+ * text has held still across a settle round, because by then nothing is left
343
+ * to re-render. Before that point a header-only flip stays unfinished, since
344
+ * the body usually re-renders after it. A page with no visible-text change
345
+ * never counts, so a no-op click keeps its give-up.
346
+ */
347
+ function hasSettledPageAdvanced(pre, post) {
348
+ return hasPageBodySwapped(pre, post) || (post.settled === true && hasPageAdvanced(pre, post));
349
+ }
350
+ /**
351
+ * Shared step-start vs settled-read rule for non-final submit-shaped steps,
352
+ * whose SPA wizards swap content without a URL change. Built only on
353
+ * {@link hasSettledPageAdvanced}; a final step is never credited here because
354
+ * its completion is owned by the submit-destination judge.
355
+ */
356
+ function hasSubmitStepDomAdvanced(isFinalStep, pre, live) {
357
+ if (isFinalStep)
358
+ return false;
359
+ const asSnapshot = (text) => ({
360
+ networkCount: 0,
361
+ url: "",
362
+ bodyHtmlLength: 0,
363
+ ...(typeof text === "string" ? { visibleTextSignature: text } : text),
364
+ });
365
+ return hasSettledPageAdvanced(asSnapshot(pre), asSnapshot(live));
215
366
  }
216
367
  /**
217
368
  * Classifies one cascade attempt as `phantom` (Stagehand claimed success but
@@ -236,7 +387,7 @@ function classifyPhantomClick(attempt) {
236
387
  const elementStateChanged = !submitShaped && attempt.elementStateChanged === true;
237
388
  // A submit-shaped step likewise ignores a mere DOM-byte reflow.
238
389
  const bytesChangedSignificantly = !submitShaped && Math.abs(bytesDelta) >= exports.TRIVIAL_DOM_DELTA_BYTES;
239
- const midFlowAdvanced = midFlowSubmit && hasPageAdvanced(attempt.pre, attempt.post);
390
+ const midFlowAdvanced = midFlowSubmit && hasSettledPageAdvanced(attempt.advanceBaseline ?? attempt.pre, attempt.post);
240
391
  const hasEffect = networkDelta !== 0 ||
241
392
  urlChanged ||
242
393
  elementStateChanged ||