@enricai/barnacle 1.12.78 → 1.12.79

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 (59) hide show
  1. package/dist/plugins/config-plugin.d.ts.map +1 -1
  2. package/dist/plugins/config-plugin.js +2 -1
  3. package/dist/plugins/config-plugin.js.map +1 -1
  4. package/dist/scraper/actionable-visibility-expr.d.ts +12 -0
  5. package/dist/scraper/actionable-visibility-expr.d.ts.map +1 -0
  6. package/dist/scraper/actionable-visibility-expr.js +22 -0
  7. package/dist/scraper/actionable-visibility-expr.js.map +1 -0
  8. package/dist/scraper/browser-click-expr.d.ts +1 -1
  9. package/dist/scraper/browser-click-expr.d.ts.map +1 -1
  10. package/dist/scraper/browser-click-expr.js +2 -6
  11. package/dist/scraper/browser-click-expr.js.map +1 -1
  12. package/dist/scraper/deep-locator-candidates.d.ts.map +1 -1
  13. package/dist/scraper/deep-locator-candidates.js +35 -11
  14. package/dist/scraper/deep-locator-candidates.js.map +1 -1
  15. package/dist/scraper/deep-locator-scan.d.ts +12 -0
  16. package/dist/scraper/deep-locator-scan.d.ts.map +1 -1
  17. package/dist/scraper/deep-locator-scan.js +42 -13
  18. package/dist/scraper/deep-locator-scan.js.map +1 -1
  19. package/dist/scraper/errors.d.ts +10 -0
  20. package/dist/scraper/errors.d.ts.map +1 -1
  21. package/dist/scraper/errors.js +19 -1
  22. package/dist/scraper/errors.js.map +1 -1
  23. package/dist/scraper/flow-runner.d.ts +34 -0
  24. package/dist/scraper/flow-runner.d.ts.map +1 -1
  25. package/dist/scraper/flow-runner.js +196 -37
  26. package/dist/scraper/flow-runner.js.map +1 -1
  27. package/dist/scraper/pool.d.ts.map +1 -1
  28. package/dist/scraper/pool.js +8 -1
  29. package/dist/scraper/pool.js.map +1 -1
  30. package/dist/scraper/retry.d.ts +1 -1
  31. package/dist/scraper/retry.d.ts.map +1 -1
  32. package/dist/scraper/retry.js +5 -1
  33. package/dist/scraper/retry.js.map +1 -1
  34. package/dist/scraper/session-browserbase.d.ts.map +1 -1
  35. package/dist/scraper/session-browserbase.js +29 -17
  36. package/dist/scraper/session-browserbase.js.map +1 -1
  37. package/dist/scraper/session-shared.d.ts +5 -0
  38. package/dist/scraper/session-shared.d.ts.map +1 -1
  39. package/dist/scraper/session-shared.js.map +1 -1
  40. package/dist/scraper/session-teardown.d.ts +30 -1
  41. package/dist/scraper/session-teardown.d.ts.map +1 -1
  42. package/dist/scraper/session-teardown.js +48 -3
  43. package/dist/scraper/session-teardown.js.map +1 -1
  44. package/dist/scraper/submit-control.d.ts +2 -2
  45. package/dist/scraper/submit-control.d.ts.map +1 -1
  46. package/dist/scraper/submit-control.js +5 -21
  47. package/dist/scraper/submit-control.js.map +1 -1
  48. package/dist/scraper/target-resolution-diagnostic.d.ts.map +1 -1
  49. package/dist/scraper/target-resolution-diagnostic.js +6 -11
  50. package/dist/scraper/target-resolution-diagnostic.js.map +1 -1
  51. package/dist/scripts/recon-browser.d.ts +4 -1
  52. package/dist/scripts/recon-browser.d.ts.map +1 -1
  53. package/dist/scripts/recon-browser.js +25 -6
  54. package/dist/scripts/recon-browser.js.map +1 -1
  55. package/dist/scripts/recon-generate.d.ts +48 -0
  56. package/dist/scripts/recon-generate.d.ts.map +1 -1
  57. package/dist/scripts/recon-generate.js +115 -7
  58. package/dist/scripts/recon-generate.js.map +1 -1
  59. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/scraper/pool.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAqBtE;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,IAAI,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,EAC7C,YAAY,GAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAM,EACzD,aAAa,SAAkB,EAC/B,WAAW,GAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAM,GACxD,OAAO,CAAC,CAAC,CAAC,CA2CZ;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAMlF;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,SAAS,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjE"}
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/scraper/pool.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAsBtE;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,IAAI,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,EAC7C,YAAY,GAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAM,EACzD,aAAa,SAAkB,EAC/B,WAAW,GAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAM,GACxD,OAAO,CAAC,CAAC,CAAC,CAgDZ;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAMlF;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,SAAS,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjE"}
@@ -12,6 +12,7 @@ const logging_1 = require("../lib/logging");
12
12
  const errors_1 = require("./errors");
13
13
  const retry_1 = require("./retry");
14
14
  const session_1 = require("./session");
15
+ const session_teardown_1 = require("./session-teardown");
15
16
  const logger = (0, logging_1.getLogger)({ name: "scraper/pool" });
16
17
  /**
17
18
  * Per-task hard timeout default. A hung Stagehand operation (infinite network wait,
@@ -61,7 +62,13 @@ async function runWithSession(task, retryOptions = {}, taskTimeoutMs = TASK_TIME
61
62
  const t = setTimeout(() => reject(new errors_1.SessionTimeoutError(`task exceeded ${taskTimeoutMs}ms`)), taskTimeoutMs);
62
63
  t.unref();
63
64
  });
64
- return Promise.race([task(session), timeout]);
65
+ try {
66
+ return await Promise.race([task(session), timeout]);
67
+ }
68
+ catch (err) {
69
+ // Must run before onSessionRestart: closeSession() nulls sessionRef.
70
+ throw (0, session_teardown_1.resolveSessionDeathError)(sessionRef.session ?? undefined, err);
71
+ }
65
72
  }, {
66
73
  ...retryOptions,
67
74
  onSessionRestart: async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/scraper/pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/scraper/pool.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export interface RetryOptions {
16
16
  * Wraps a scraper task with p-retry and a classification policy aligned
17
17
  * with our ScraperError hierarchy:
18
18
  *
19
- * - CaptchaError + EmptyResultsError + StepVerificationError → AbortError, no retry.
19
+ * - CaptchaError + EmptyResultsError + StepVerificationError + SessionLifetimeExceededError → AbortError, no retry.
20
20
  * - SessionTimeoutError + CdpTransportClosedError → invoke onSessionRestart before every retry, then retry up to maxAttempts.
21
21
  * - SelectorFailureError + UnknownScraperError → retry up to maxAttempts.
22
22
  * - Anything non-ScraperError → wrap in UnknownScraperError and retry.
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/scraper/retry.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,YAAY,EAKb,MAAM,kBAAkB,CAAC;AAI1B;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,mEAAmE;IACnE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACtB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CAuDZ;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAmB/D"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/scraper/retry.ts"],"names":[],"mappings":"AAIA,OAAO,EAKL,YAAY,EAKb,MAAM,kBAAkB,CAAC;AAI1B;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,mEAAmE;IACnE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACtB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CA4DZ;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAmB/D"}
@@ -44,7 +44,7 @@ const logger = (0, logging_1.getLogger)({ name: "scraper/retry" });
44
44
  * Wraps a scraper task with p-retry and a classification policy aligned
45
45
  * with our ScraperError hierarchy:
46
46
  *
47
- * - CaptchaError + EmptyResultsError + StepVerificationError → AbortError, no retry.
47
+ * - CaptchaError + EmptyResultsError + StepVerificationError + SessionLifetimeExceededError → AbortError, no retry.
48
48
  * - SessionTimeoutError + CdpTransportClosedError → invoke onSessionRestart before every retry, then retry up to maxAttempts.
49
49
  * - SelectorFailureError + UnknownScraperError → retry up to maxAttempts.
50
50
  * - Anything non-ScraperError → wrap in UnknownScraperError and retry.
@@ -75,6 +75,10 @@ async function withScraperRetry(task, options = {}) {
75
75
  logger.warn(`step verification failed deterministically — aborting retry: ${err.message}`);
76
76
  throw new p_retry_1.AbortError(err.message);
77
77
  }
78
+ if ((0, errors_2.isSessionLifetimeExceededError)(raw)) {
79
+ logger.error(`session reached its configured lifetime — aborting retry: ${err.message}`);
80
+ throw new p_retry_1.AbortError(err.message);
81
+ }
78
82
  if ((err instanceof errors_2.SessionTimeoutError || err instanceof errors_2.CdpTransportClosedError) &&
79
83
  options.onSessionRestart) {
80
84
  await options.onSessionRestart();
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/scraper/retry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/scraper/retry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-browserbase.d.ts","sourceRoot":"","sources":["../../src/scraper/session-browserbase.ts"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAG3B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAa9C;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG;IAC/D,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,kBAAkB,EAAE,MAAM,MAAM,CAAC;CAClC,CA6BA;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EACrC,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GACzB,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,iBAAiB,GAAG,gCAAgC,CAAC,GACvF,OAAO,CAAC,cAAc,CAAC,CA6MzB"}
1
+ {"version":3,"file":"session-browserbase.d.ts","sourceRoot":"","sources":["../../src/scraper/session-browserbase.ts"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAG3B,MAAM,0BAA0B,CAAC;AAOlC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAa9C;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG;IAC/D,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,kBAAkB,EAAE,MAAM,MAAM,CAAC;CAClC,CA6BA;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EACrC,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GACzB,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,iBAAiB,GAAG,gCAAgC,CAAC,GACvF,OAAO,CAAC,cAAc,CAAC,CA6NzB"}
@@ -195,7 +195,33 @@ async function createBrowserbaseBrowserSession(opts) {
195
195
  }
196
196
  : baseFingerprint;
197
197
  const { callback: filteredStagehandLoggerCallback, reportSuppressed: reportSuppressedAisdkErrors, getSuppressedCount: getSuppressedAisdkElementIdErrorCount, } = makeFilteredStagehandLogger(logger);
198
- const { watchLogLine: watchForTeardown, deathSignal } = (0, session_teardown_1.createSessionTeardownDetector)();
198
+ // Stagehand's own end-of-run teardown also closes the CDP transport, so
199
+ // the handler must not flag that expected case. `weInitiatedClose` is
200
+ // flipped at the top of `close()` below, before `stagehand.close()` runs;
201
+ // only a transport close observed while it's still false is an SDK-
202
+ // initiated teardown mid-operation, not a consequence of our own close.
203
+ let weInitiatedClose = false;
204
+ let cdpTransportClosedError;
205
+ const configuredTimeoutSeconds = customSessionParams.timeout ??
206
+ config_1.config.scraper.browserbaseSessionTimeoutSeconds;
207
+ let sessionTimeoutHit;
208
+ // Advanced by the flow runner's step loop via `recordStepCompleted` as
209
+ // each step finishes.
210
+ let completedStepCount = 0;
211
+ // Single classification shared by the log-line detector and the transport
212
+ // listener so the order in which those two signals arrive cannot matter.
213
+ const classifyLifetime = (0, session_teardown_1.createDeathClassifier)({
214
+ configuredTimeoutSeconds,
215
+ toleranceSeconds: TOLERANCE_SECONDS,
216
+ isOwnClose: () => weInitiatedClose,
217
+ getElapsedSeconds: () => (Date.now() - sessionStartedAt) / 1000,
218
+ getCompletedStepCount: () => completedStepCount,
219
+ });
220
+ const classifyDeath = () => {
221
+ sessionTimeoutHit = classifyLifetime() ?? sessionTimeoutHit;
222
+ return sessionTimeoutHit;
223
+ };
224
+ const { watchLogLine: watchForTeardown, deathSignal, deathAbortSignal, } = (0, session_teardown_1.createSessionTeardownDetector)({ classifyDeath });
199
225
  const stagehandLoggerCallback = (line) => {
200
226
  filteredStagehandLoggerCallback(line);
201
227
  watchForTeardown(line);
@@ -262,19 +288,6 @@ async function createBrowserbaseBrowserSession(opts) {
262
288
  throw err;
263
289
  }
264
290
  const heartbeat = (0, cdp_heartbeat_1.startCdpTransportHeartbeat)(stagehand.context.conn, { logger });
265
- // Stagehand's own end-of-run teardown also closes the CDP transport, so
266
- // the handler must not flag that expected case. `weInitiatedClose` is
267
- // flipped at the top of `close()` below, before `stagehand.close()` runs;
268
- // only a transport close observed while it's still false is an SDK-
269
- // initiated teardown mid-operation, not a consequence of our own close.
270
- let weInitiatedClose = false;
271
- let cdpTransportClosedError;
272
- const configuredTimeoutSeconds = customSessionParams.timeout ??
273
- config_1.config.scraper.browserbaseSessionTimeoutSeconds;
274
- let sessionTimeoutHit;
275
- // Advanced by the flow runner's step loop via `recordStepCompleted` as
276
- // each step finishes.
277
- let completedStepCount = 0;
278
291
  stagehand.context.conn.onTransportClosed((why) => {
279
292
  if (weInitiatedClose)
280
293
  return;
@@ -286,9 +299,7 @@ async function createBrowserbaseBrowserSession(opts) {
286
299
  completedStepCount,
287
300
  toleranceSeconds: TOLERANCE_SECONDS,
288
301
  });
289
- if (classification.isTimeoutHit) {
290
- sessionTimeoutHit = { configuredTimeoutSeconds, elapsedSeconds };
291
- }
302
+ classifyDeath();
292
303
  logger.warn(classification.message);
293
304
  });
294
305
  const sessionId = stagehand.browserbaseSessionID ?? "unknown";
@@ -326,6 +337,7 @@ async function createBrowserbaseBrowserSession(opts) {
326
337
  getSuppressedAisdkElementIdErrorCount,
327
338
  getOutboundIp,
328
339
  deathSignal,
340
+ deathAbortSignal,
329
341
  getCdpTransportClosedError,
330
342
  getSessionTimeoutHit,
331
343
  sessionProxy,
@@ -1 +1 @@
1
- {"version":3,"file":"session-browserbase.js","sourceRoot":"","sources":["../../src/scraper/session-browserbase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-browserbase.js","sourceRoot":"","sources":["../../src/scraper/session-browserbase.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,11 @@ export interface BrowserSession {
56
56
  * (currently Browserbase); absent on Steel.
57
57
  */
58
58
  deathSignal?: Promise<never>;
59
+ /**
60
+ * Aborts with the same classified error `deathSignal` rejects with, for
61
+ * callers that need an AbortSignal rather than a promise to race.
62
+ */
63
+ deathAbortSignal?: AbortSignal;
59
64
  /**
60
65
  * Returns the {@link CdpTransportClosedError} recorded if Stagehand tore
61
66
  * the CDP transport down on its own, mid-operation — as opposed to the
@@ -1 +1 @@
1
- {"version":3,"file":"session-shared.d.ts","sourceRoot":"","sources":["../../src/scraper/session-shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAGzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,8BAA8B;AAC9B,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACrE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AAEF,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,8BAA8B,CAAC,EAAE,8BAA8B,CAAC;CACjE;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,UAAU,CAAC;IACpB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;;;;OAIG;IACH,qCAAqC,CAAC,EAAE,MAAM,MAAM,CAAC;IACrD;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B;;;;;;;OAOG;IACH,0BAA0B,CAAC,EAAE,MAAM,uBAAuB,GAAG,SAAS,CAAC;IACvE;;;;;;;;OAQG;IACH,oBAAoB,CAAC,EAAE,MACnB;QAAE,wBAAwB,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAC5D,SAAS,CAAC;IACd;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,KAAK,CAYlE;AAaD,wBAAgB,kBAAkB,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAEtE"}
1
+ {"version":3,"file":"session-shared.d.ts","sourceRoot":"","sources":["../../src/scraper/session-shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAGzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,8BAA8B;AAC9B,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACrE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AAEF,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,8BAA8B,CAAC,EAAE,8BAA8B,CAAC;CACjE;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,UAAU,CAAC;IACpB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;;;;OAIG;IACH,qCAAqC,CAAC,EAAE,MAAM,MAAM,CAAC;IACrD;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B;;;;;;;OAOG;IACH,0BAA0B,CAAC,EAAE,MAAM,uBAAuB,GAAG,SAAS,CAAC;IACvE;;;;;;;;OAQG;IACH,oBAAoB,CAAC,EAAE,MACnB;QAAE,wBAAwB,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAC5D,SAAS,CAAC;IACd;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,KAAK,CAYlE;AAaD,wBAAgB,kBAAkB,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAEtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-shared.js","sourceRoot":"","sources":["../../src/scraper/session-shared.ts"],"names":[],"mappings":";;;;AAGA,yCAA0C;AAmG1C;;;;GAIG;AACH,4BAAmC,SAAiB;IAClD,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAC9D,kFAAkF;QAClF,gDAAgD;QAChD,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,YAAY,WAAW,CAClD,CAAC;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,SAAS,GAAG;IAChB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5B,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5B,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5B,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;CACrB,CAAC;AAEX;IACE,OAAO,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"session-shared.js","sourceRoot":"","sources":["../../src/scraper/session-shared.ts"],"names":[],"mappings":";;;;AAGA,yCAA0C;AAwG1C;;;;GAIG;AACH,4BAAmC,SAAiB;IAClD,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAC9D,kFAAkF;QAClF,gDAAgD;QAChD,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,YAAY,WAAW,CAClD,CAAC;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,SAAS,GAAG;IAChB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5B,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5B,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5B,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;CACrB,CAAC;AAEX;IACE,OAAO,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAC;AAC/B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { StagehandLogLine } from "./session-browserbase";
2
+ import type { BrowserSession } from "./session-shared";
2
3
  /**
3
4
  * Detects a Stagehand-initiated CDP transport teardown from its log stream
4
5
  * and exposes that as a promise that rejects the instant it's observed. A
@@ -8,9 +9,15 @@ import type { StagehandLogLine } from "./session-browserbase";
8
9
  * that still runs even while the loop is draining, so callers racing this
9
10
  * signal see the death instead of a silent exit 0.
10
11
  */
11
- export declare function createSessionTeardownDetector(): {
12
+ export declare function createSessionTeardownDetector(opts?: {
13
+ classifyDeath?: () => {
14
+ configuredTimeoutSeconds: number;
15
+ elapsedSeconds: number;
16
+ } | undefined;
17
+ }): {
12
18
  watchLogLine: (line: StagehandLogLine) => void;
13
19
  deathSignal: Promise<never>;
20
+ deathAbortSignal: AbortSignal;
14
21
  };
15
22
  /** Result of classifying a session teardown against its configured lifetime. */
16
23
  export interface SessionTeardownClassification {
@@ -38,4 +45,26 @@ export declare function classifySessionTeardown(params: {
38
45
  * would have settled it is already gone.
39
46
  */
40
47
  export declare function raceAgainstTeardown<T>(stepPromise: Promise<T>, deathSignal: Promise<never>): Promise<T>;
48
+ /**
49
+ * Upgrades a caught error to `SessionLifetimeExceededError` when the session
50
+ * recorded a lifetime-expiry death, so every code path that observes the
51
+ * death fails fast regardless of which error it caught. Steel sessions have
52
+ * no `getSessionTimeoutHit`, so the error passes through unchanged.
53
+ */
54
+ export declare function resolveSessionDeathError(session: Pick<BrowserSession, "getSessionTimeoutHit"> | undefined, err: unknown): unknown;
55
+ /**
56
+ * Builds the single lifetime classifier shared by the log-line detector and
57
+ * the transport-closed listener, so the order in which those signals arrive
58
+ * cannot change the outcome, and our own `close()` never classifies.
59
+ */
60
+ export declare function createDeathClassifier(opts: {
61
+ configuredTimeoutSeconds: number;
62
+ toleranceSeconds: number;
63
+ isOwnClose: () => boolean;
64
+ getElapsedSeconds: () => number;
65
+ getCompletedStepCount: () => number;
66
+ }): () => {
67
+ configuredTimeoutSeconds: number;
68
+ elapsedSeconds: number;
69
+ } | undefined;
41
70
  //# sourceMappingURL=session-teardown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-teardown.d.ts","sourceRoot":"","sources":["../../src/scraper/session-teardown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAYtE;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,IAAI;IAC/C,YAAY,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CAC7B,CAqBA;AAUD,gFAAgF;AAChF,MAAM,WAAW,6BAA6B;IAC5C,gFAAgF;IAChF,YAAY,EAAE,OAAO,CAAC;IACtB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,wBAAwB,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,6BAA6B,CAYhC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EACvB,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAEZ"}
1
+ {"version":3,"file":"session-teardown.d.ts","sourceRoot":"","sources":["../../src/scraper/session-teardown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAY/D;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,CAAC,EAAE;IACnD,aAAa,CAAC,EAAE,MAAM;QAAE,wBAAwB,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAChG,GAAG;IACF,YAAY,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,gBAAgB,EAAE,WAAW,CAAC;CAC/B,CA2BA;AAUD,gFAAgF;AAChF,MAAM,WAAW,6BAA6B;IAC5C,gFAAgF;IAChF,YAAY,EAAE,OAAO,CAAC;IACtB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,wBAAwB,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,6BAA6B,CAYhC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EACvB,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,sBAAsB,CAAC,GAAG,SAAS,EACjE,GAAG,EAAE,OAAO,GACX,OAAO,CAMT;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,wBAAwB,EAAE,MAAM,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,MAAM,CAAC;CACrC,GAAG,MAAM;IAAE,wBAAwB,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAgBjF"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createSessionTeardownDetector = createSessionTeardownDetector;
4
4
  exports.classifySessionTeardown = classifySessionTeardown;
5
5
  exports.raceAgainstTeardown = raceAgainstTeardown;
6
+ exports.resolveSessionDeathError = resolveSessionDeathError;
7
+ exports.createDeathClassifier = createDeathClassifier;
6
8
  const errors_1 = require("./errors");
7
9
  /**
8
10
  * Substring Stagehand's own v3 transport logs at `level:0` (error) when it
@@ -22,7 +24,7 @@ const TEARDOWN_ERROR_LEVEL = 0;
22
24
  * that still runs even while the loop is draining, so callers racing this
23
25
  * signal see the death instead of a silent exit 0.
24
26
  */
25
- function createSessionTeardownDetector() {
27
+ function createSessionTeardownDetector(opts) {
26
28
  let signalDeath;
27
29
  const deathSignal = new Promise((_resolve, reject) => {
28
30
  signalDeath = (err) => reject(err);
@@ -30,6 +32,7 @@ function createSessionTeardownDetector() {
30
32
  // deathSignal's executor runs synchronously above, so signalDeath is
31
33
  // always assigned before watchLogLine can be called.
32
34
  deathSignal.catch(() => undefined);
35
+ const abortController = new AbortController();
33
36
  let fired = false;
34
37
  const watchLogLine = (line) => {
35
38
  if (fired)
@@ -39,9 +42,14 @@ function createSessionTeardownDetector() {
39
42
  if (!line.message.includes(TEARDOWN_MESSAGE_SUBSTRING))
40
43
  return;
41
44
  fired = true;
42
- signalDeath?.(new errors_1.CdpTransportClosedError(`stagehand-initiated teardown mid-flow: ${line.message}`));
45
+ const hit = opts?.classifyDeath?.();
46
+ const err = hit
47
+ ? new errors_1.SessionLifetimeExceededError(`scraper session reached its configured lifetime (${hit.elapsedSeconds.toFixed(1)}s elapsed of ${hit.configuredTimeoutSeconds}s): ${line.message}`)
48
+ : new errors_1.CdpTransportClosedError(`stagehand-initiated teardown mid-flow: ${line.message}`);
49
+ signalDeath?.(err);
50
+ abortController.abort(err);
43
51
  };
44
- return { watchLogLine, deathSignal };
52
+ return { watchLogLine, deathSignal, deathAbortSignal: abortController.signal };
45
53
  }
46
54
  /**
47
55
  * Browserbase overshoots its own configured session timeout by 1-14s in
@@ -73,4 +81,41 @@ function classifySessionTeardown(params) {
73
81
  function raceAgainstTeardown(stepPromise, deathSignal) {
74
82
  return Promise.race([stepPromise, deathSignal]);
75
83
  }
84
+ /**
85
+ * Upgrades a caught error to `SessionLifetimeExceededError` when the session
86
+ * recorded a lifetime-expiry death, so every code path that observes the
87
+ * death fails fast regardless of which error it caught. Steel sessions have
88
+ * no `getSessionTimeoutHit`, so the error passes through unchanged.
89
+ */
90
+ function resolveSessionDeathError(session, err) {
91
+ const hit = session?.getSessionTimeoutHit?.();
92
+ if (!hit)
93
+ return err;
94
+ return new errors_1.SessionLifetimeExceededError(`scraper session reached its configured lifetime (${hit.elapsedSeconds.toFixed(1)}s elapsed of ${hit.configuredTimeoutSeconds}s)`);
95
+ }
96
+ /**
97
+ * Builds the single lifetime classifier shared by the log-line detector and
98
+ * the transport-closed listener, so the order in which those signals arrive
99
+ * cannot change the outcome, and our own `close()` never classifies.
100
+ */
101
+ function createDeathClassifier(opts) {
102
+ let hit;
103
+ return () => {
104
+ if (opts.isOwnClose())
105
+ return undefined;
106
+ if (hit)
107
+ return hit;
108
+ const elapsedSeconds = opts.getElapsedSeconds();
109
+ const classification = classifySessionTeardown({
110
+ configuredTimeoutSeconds: opts.configuredTimeoutSeconds,
111
+ elapsedSeconds,
112
+ completedStepCount: opts.getCompletedStepCount(),
113
+ toleranceSeconds: opts.toleranceSeconds,
114
+ });
115
+ if (!classification.isTimeoutHit)
116
+ return undefined;
117
+ hit = { configuredTimeoutSeconds: opts.configuredTimeoutSeconds, elapsedSeconds };
118
+ return hit;
119
+ };
120
+ }
76
121
  //# sourceMappingURL=session-teardown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-teardown.js","sourceRoot":"","sources":["../../src/scraper/session-teardown.ts"],"names":[],"mappings":";;;;;AAAA,6CAA2D;AAG3D;;;;;;GAMG;AACH,MAAM,0BAA0B,GAAG,sBAAsB,CAAC;AAC1D,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B;;;;;;;;GAQG;AACH;IAIE,IAAI,WAAiE,CAAC;IACtE,MAAM,WAAW,GAAG,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;QAC1D,WAAW,GAAG,CAAC,GAA4B,EAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,qEAAqE;IACrE,qDAAqD;IACrD,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAEnC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,YAAY,GAAG,CAAC,IAAsB,EAAQ,EAAE;QACpD,IAAI,KAAK;YAAE,OAAO;QAClB,IAAI,IAAI,CAAC,KAAK,KAAK,oBAAoB;YAAE,OAAO;QAChD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAAE,OAAO;QAC/D,KAAK,GAAG,IAAI,CAAC;QACb,WAAW,EAAE,CACX,IAAI,gCAAuB,CAAC,0CAA0C,IAAI,CAAC,OAAO,EAAE,CAAC,CACtF,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAU7C;;;;;GAKG;AACH,iCAAwC,MAKvC;IACC,MAAM,EACJ,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GAAG,iCAAiC,GACrD,GAAG,MAAM,CAAC;IACX,MAAM,YAAY,GAAG,cAAc,IAAI,wBAAwB,GAAG,gBAAgB,CAAC;IACnF,MAAM,OAAO,GAAG,YAAY;QAC1B,CAAC,CAAC,6CAA6C,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,wBAAwB,OAAO,kBAAkB,oCAAoC;QAC9K,CAAC,CAAC,+CAA+C,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,kBAAkB,oCAAoC,CAAC;IACzI,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,6BACE,WAAuB,EACvB,WAA2B;IAE3B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"session-teardown.js","sourceRoot":"","sources":["../../src/scraper/session-teardown.ts"],"names":[],"mappings":"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"}
@@ -66,7 +66,7 @@ export declare const SUBMIT_SHAPE_EXPR = "((el) => {\n if (!el || !el.tagName)
66
66
  * match no positive tier — including anything caught by
67
67
  * {@link NEGATIVE_TEXT_EXPR} — are excluded entirely rather than ranked
68
68
  * last, so the caller never has to guess where the "safe" cutoff is. Same
69
- * treatment for a node that fails {@link IS_VISIBLE_EXPR}: a hidden
69
+ * treatment for a node that fails {@link ACTIONABLE_VISIBILITY_EXPR}: a hidden
70
70
  * per-step submit button in a wizard (0x0 layout box, `display:none`) is
71
71
  * dropped before ranking so it can never outrank the rendered one and win
72
72
  * a click that would silently no-op. Same treatment again for a node that
@@ -100,7 +100,7 @@ export declare function buildRankSubmitCandidatesExpr(root?: string): string;
100
100
  * out of range for the current DOM (e.g. the page changed between the
101
101
  * locate and click calls), and `{ clicked: false, reason: "not-actionable" }`
102
102
  * without dispatching any event if the element at that index fails
103
- * {@link IS_VISIBLE_EXPR} or {@link IS_DISABLED_EXPR} — a node with no
103
+ * {@link ACTIONABLE_VISIBILITY_EXPR} or {@link IS_DISABLED_EXPR} — a node with no
104
104
  * layout box makes a real click throw a CDP `-32000 Node does not have a
105
105
  * layout object` error, and a disabled node accepts a synthetic click as a
106
106
  * silent no-op, so this check reports the same outcome as data instead.
@@ -1 +1 @@
1
- {"version":3,"file":"submit-control.d.ts","sourceRoot":"","sources":["../../src/scraper/submit-control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,sOAG5B,CAAC;AA4DJ;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,0BAA0B,s4CAyBpC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,iBAAiB,uoEAQ3B,CAAC;AA+CJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,SAAa,GAAG,MAAM,CA0BvE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,SAAa,GAAG,MAAM,CAYtF;AAED,2HAA2H;AAC3H,MAAM,MAAM,mBAAmB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAElD,qGAAqG;AACrG,MAAM,WAAW,eAAe;IAC9B,mIAAmI;IACnI,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,0EAA0E;AAC1E,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,oKAAoK;IACpK,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B"}
1
+ {"version":3,"file":"submit-control.d.ts","sourceRoot":"","sources":["../../src/scraper/submit-control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,sOAG5B,CAAC;AA0CJ;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,0BAA0B,s4CAyBpC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,iBAAiB,uoEAQ3B,CAAC;AA+CJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,SAAa,GAAG,MAAM,CA0BvE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,SAAa,GAAG,MAAM,CAYtF;AAED,2HAA2H;AAC3H,MAAM,MAAM,mBAAmB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAElD,qGAAqG;AACrG,MAAM,WAAW,eAAe;IAC9B,mIAAmI;IACnI,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,0EAA0E;AAC1E,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,oKAAoK;IACpK,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B"}
@@ -13,6 +13,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.SUBMIT_SHAPE_EXPR = exports.SUBMIT_SHAPE_FALLBACK_EXPR = exports.NEGATIVE_TEXT_EXPR = void 0;
14
14
  exports.buildRankSubmitCandidatesExpr = buildRankSubmitCandidatesExpr;
15
15
  exports.buildClickByDeepIndexExpr = buildClickByDeepIndexExpr;
16
+ const actionable_visibility_expr_1 = require("./actionable-visibility-expr");
16
17
  const browser_click_expr_1 = require("./browser-click-expr");
17
18
  /**
18
19
  * Verbs that identify a control as NOT the submit action even when it is
@@ -43,23 +44,6 @@ const ACCESSIBLE_NAME_EXPR = `((el) => {
43
44
  const fallback = tag === "input" ? el.value : el.textContent;
44
45
  return norm(el.getAttribute("aria-label") || fallback || "");
45
46
  })`;
46
- /**
47
- * Visibility check: a node with a 0x0 layout box, or a computed
48
- * `display:none`/`visibility:hidden`, can never be the target of a real
49
- * click. Duplicated from `deep-locator-scan.ts`'s private `IS_VISIBLE_EXPR`
50
- * rather than imported — both are browser-context expression strings
51
- * composed by string interpolation, matching the convention this module
52
- * already follows for {@link DEEP_ELEMENTS_EXPR}. Applied both when ranking
53
- * (so an unrendered node never outranks a rendered one) and when clicking
54
- * (so a node that became hidden between the rank and click calls is
55
- * reported as not-actionable instead of dispatching a no-op click).
56
- */
57
- const IS_VISIBLE_EXPR = `((el) => {
58
- const rect = el.getBoundingClientRect();
59
- if (rect.width === 0 && rect.height === 0) return false;
60
- const style = getComputedStyle(el);
61
- return style.display !== "none" && style.visibility !== "hidden";
62
- })`;
63
47
  /**
64
48
  * Disabled check: a candidate carrying the native `disabled` property or
65
49
  * `aria-disabled="true"` — on itself or an ancestor within
@@ -207,7 +191,7 @@ const RANK_TIERS_EXPR = `((el, name) => {
207
191
  * match no positive tier — including anything caught by
208
192
  * {@link NEGATIVE_TEXT_EXPR} — are excluded entirely rather than ranked
209
193
  * last, so the caller never has to guess where the "safe" cutoff is. Same
210
- * treatment for a node that fails {@link IS_VISIBLE_EXPR}: a hidden
194
+ * treatment for a node that fails {@link ACTIONABLE_VISIBILITY_EXPR}: a hidden
211
195
  * per-step submit button in a wizard (0x0 layout box, `display:none`) is
212
196
  * dropped before ranking so it can never outrank the rendered one and win
213
197
  * a click that would silently no-op. Same treatment again for a node that
@@ -233,7 +217,7 @@ function buildRankSubmitCandidatesExpr(root = "document") {
233
217
  return `(() => {
234
218
  const accessibleName = ${ACCESSIBLE_NAME_EXPR};
235
219
  const rankTier = ${RANK_TIERS_EXPR};
236
- const isVisible = ${IS_VISIBLE_EXPR};
220
+ const isVisible = ${actionable_visibility_expr_1.ACTIONABLE_VISIBILITY_EXPR};
237
221
  const isDisabled = ${IS_DISABLED_EXPR};
238
222
  const deepElements = ${browser_click_expr_1.DEEP_ELEMENTS_EXPR};
239
223
  const all = deepElements(${root});
@@ -267,7 +251,7 @@ function buildRankSubmitCandidatesExpr(root = "document") {
267
251
  * out of range for the current DOM (e.g. the page changed between the
268
252
  * locate and click calls), and `{ clicked: false, reason: "not-actionable" }`
269
253
  * without dispatching any event if the element at that index fails
270
- * {@link IS_VISIBLE_EXPR} or {@link IS_DISABLED_EXPR} — a node with no
254
+ * {@link ACTIONABLE_VISIBILITY_EXPR} or {@link IS_DISABLED_EXPR} — a node with no
271
255
  * layout box makes a real click throw a CDP `-32000 Node does not have a
272
256
  * layout object` error, and a disabled node accepts a synthetic click as a
273
257
  * silent no-op, so this check reports the same outcome as data instead.
@@ -282,7 +266,7 @@ function buildRankSubmitCandidatesExpr(root = "document") {
282
266
  */
283
267
  function buildClickByDeepIndexExpr(deepIndex, root = "document") {
284
268
  return `(() => {
285
- const isVisible = ${IS_VISIBLE_EXPR};
269
+ const isVisible = ${actionable_visibility_expr_1.ACTIONABLE_VISIBILITY_EXPR};
286
270
  const isDisabled = ${IS_DISABLED_EXPR};
287
271
  const deepElements = ${browser_click_expr_1.DEEP_ELEMENTS_EXPR};
288
272
  const all = deepElements(${root});
@@ -1 +1 @@
1
- {"version":3,"file":"submit-control.js","sourceRoot":"","sources":["../../src/scraper/submit-control.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;AAEH,qEAIsC;AAEtC;;;;;;;;;GASG;AACU,QAAA,kBAAkB,GAAG;;;GAG/B,CAAC;AAEJ;;;;;;;;GAQG;AACH,MAAM,oBAAoB,GAAG;;;;;GAK1B,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,MAAM,eAAe,GAAG;;;;;GAKrB,CAAC;AAEJ;;;;;;;;;;;;;;GAcG;AACH,MAAM,gBAAgB,GAAG;gCACO,iDAA4B;;;;;;GAMzD,CAAC;AAEJ;;;;;;;;;;;;;;;GAeG;AACU,QAAA,0BAA0B,GAAG;;;;;;;kCAOR,iDAA4B;;;;;;;;2BAQnC,oBAAoB;;;;;;;;;;GAU5C,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;GAoBG;AACU,QAAA,iBAAiB,GAAG;;uBAEV,QAAA,kBAAkB;2BACd,oBAAoB;;;6BAGlB,QAAA,0BAA0B;;GAEpD,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,eAAe,GAAG;uBACD,QAAA,kBAAkB;;;;;;;;;;6BAUZ,QAAA,0BAA0B;;;GAGpD,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,uCAA8C,IAAI,GAAG,UAAU;IAC7D,OAAO;6BACoB,oBAAoB;uBAC1B,eAAe;wBACd,eAAe;yBACd,gBAAgB;2BACd,uCAAkB;+BACd,IAAI;;;;;;;;;;;;;;;;;;OAkB5B,CAAC;AACR,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,mCAA0C,SAAiB,EAAE,IAAI,GAAG,UAAU;IAC5E,OAAO;wBACe,eAAe;yBACd,gBAAgB;2BACd,uCAAkB;+BACd,IAAI;qBACd,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;;MAGxC,IAAA,wCAAmB,EAAC,IAAI,CAAC;;OAExB,CAAC;AACR,CAAC"}
1
+ {"version":3,"file":"submit-control.js","sourceRoot":"","sources":["../../src/scraper/submit-control.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;AAEH,qFAAkF;AAClF,qEAIsC;AAEtC;;;;;;;;;GASG;AACU,QAAA,kBAAkB,GAAG;;;GAG/B,CAAC;AAEJ;;;;;;;;GAQG;AACH,MAAM,oBAAoB,GAAG;;;;;GAK1B,CAAC;AAEJ;;;;;;;;;;;;;;GAcG;AACH,MAAM,gBAAgB,GAAG;gCACO,iDAA4B;;;;;;GAMzD,CAAC;AAEJ;;;;;;;;;;;;;;;GAeG;AACU,QAAA,0BAA0B,GAAG;;;;;;;kCAOR,iDAA4B;;;;;;;;2BAQnC,oBAAoB;;;;;;;;;;GAU5C,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;GAoBG;AACU,QAAA,iBAAiB,GAAG;;uBAEV,QAAA,kBAAkB;2BACd,oBAAoB;;;6BAGlB,QAAA,0BAA0B;;GAEpD,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,eAAe,GAAG;uBACD,QAAA,kBAAkB;;;;;;;;;;6BAUZ,QAAA,0BAA0B;;;GAGpD,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,uCAA8C,IAAI,GAAG,UAAU;IAC7D,OAAO;6BACoB,oBAAoB;uBAC1B,eAAe;wBACd,uDAA0B;yBACzB,gBAAgB;2BACd,uCAAkB;+BACd,IAAI;;;;;;;;;;;;;;;;;;OAkB5B,CAAC;AACR,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,mCAA0C,SAAiB,EAAE,IAAI,GAAG,UAAU;IAC5E,OAAO;wBACe,uDAA0B;yBACzB,gBAAgB;2BACd,uCAAkB;+BACd,IAAI;qBACd,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;;MAGxC,IAAA,wCAAmB,EAAC,IAAI,CAAC;;OAExB,CAAC;AACR,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"target-resolution-diagnostic.d.ts","sourceRoot":"","sources":["../../src/scraper/target-resolution-diagnostic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAoBlC,uIAAuI;AACvI,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,oFAAoF;AACpF,MAAM,WAAW,kCAAkC;IACjD,0KAA0K;IAC1K,UAAU,EAAE,2BAA2B,EAAE,CAAC;IAC1C,4KAA4K;IAC5K,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAuED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,yCAAyC,CAC7D,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,IAAI,EAAE,IAAI,EACV,iBAAiB,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,GAC3C,OAAO,CAAC,kCAAkC,GAAG,IAAI,CAAC,CAyCpD"}
1
+ {"version":3,"file":"target-resolution-diagnostic.d.ts","sourceRoot":"","sources":["../../src/scraper/target-resolution-diagnostic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAIrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAoBlC,uIAAuI;AACvI,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,oFAAoF;AACpF,MAAM,WAAW,kCAAkC;IACjD,0KAA0K;IAC1K,UAAU,EAAE,2BAA2B,EAAE,CAAC;IAC1C,4KAA4K;IAC5K,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAiED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,yCAAyC,CAC7D,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,IAAI,EAAE,IAAI,EACV,iBAAiB,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,GAC3C,OAAO,CAAC,kCAAkC,GAAG,IAAI,CAAC,CAyCpD"}
@@ -14,6 +14,7 @@
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.captureTargetResolutionDiagnosticSnapshot = captureTargetResolutionDiagnosticSnapshot;
16
16
  const logging_1 = require("../lib/logging");
17
+ const actionable_visibility_expr_1 = require("./actionable-visibility-expr");
17
18
  const submit_control_1 = require("./submit-control");
18
19
  const logger = (0, logging_1.getLogger)({ name: "scraper/target-resolution-diagnostic" });
19
20
  /** Cap on the number of ranked candidates kept in a snapshot. */
@@ -31,11 +32,10 @@ const MAX_SNAPSHOT_JSON_LENGTH = 20_000;
31
32
  const MAX_EXCERPT_LENGTH = 2_000;
32
33
  /**
33
34
  * Re-walks the light DOM plus every open shadow root (same traversal shape
34
- * as `submit-control.ts`'s private `DEEP_ELEMENTS_EXPR` — duplicated rather
35
- * than imported, since both are browser-context expression strings composed
36
- * by string interpolation, matching that module's own stated convention for
37
- * why `IS_VISIBLE_EXPR`/`DEEP_ELEMENTS_EXPR` are duplicated instead of
38
- * shared) to read the role/visible/disabled/excerpt fields the ranking
35
+ * as `submit-control.ts`'s private `DEEP_ELEMENTS_EXPR`, duplicated rather
36
+ * than imported; visibility comes from the shared
37
+ * {@link ACTIONABLE_VISIBILITY_EXPR} so an `aria-hidden` decoy is never
38
+ * reported visible) to read the role/visible/disabled/excerpt fields the ranking
39
39
  * expression itself doesn't return, and to build a short accessible-name
40
40
  * excerpt around the top-ranked candidate. Runs as a single `page.evaluate`
41
41
  * round trip so the DOM observed here always matches the one
@@ -55,12 +55,7 @@ function buildCandidateDetailExpr(root, deepIndices) {
55
55
  walk(rootEl);
56
56
  return out;
57
57
  })(${root});
58
- const isVisible = (el) => {
59
- const rect = el.getBoundingClientRect();
60
- if (rect.width === 0 && rect.height === 0) return false;
61
- const style = getComputedStyle(el);
62
- return style.display !== "none" && style.visibility !== "hidden";
63
- };
58
+ const isVisible = ${actionable_visibility_expr_1.ACTIONABLE_VISIBILITY_EXPR};
64
59
  const isDisabled = (el) => {
65
60
  for (let depth = 0, node = el; depth < 8 && node; depth++) {
66
61
  if (node.disabled === true) return true;
@@ -1 +1 @@
1
- {"version":3,"file":"target-resolution-diagnostic.js","sourceRoot":"","sources":["../../src/scraper/target-resolution-diagnostic.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAIH,2CAA0C;AAE1C,6DAIkC;AAElC,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC,CAAC;AAE3E,iEAAiE;AACjE,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAEnC;;;;;;;GAOG;AACH,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAExC,mFAAmF;AACnF,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAoBjC;;;;;;;;;;;GAWG;AACH,SAAS,wBAAwB,CAAC,IAAY,EAAE,WAA8B;IAC5E,OAAO;;;;;;;;;;;;SAYA,IAAI;;;;;;;;;;;;;;;;;;;;;;;;sBAwBS,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;;;;;;;;;;;;;;oBAc7B,kBAAkB;;;OAG/B,CAAC;AACR,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACI,KAAK,oDACV,MAA+B,EAC/B,IAAU,EACV,iBAA4C;IAE5C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,IAAI,IAAI,CAAC;QACjC,MAAM,IAAI,GAAG,UAAU,CAAC;QACxB,MAAM,MAAM,GACV,iBAAiB;YACjB,CAAC,MAAM,SAAS,CAAC,QAAQ,CAEvB,IAAA,8CAA6B,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAIrC,wBAAwB,CACtB,IAAI,EACJ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAChC,CACF,CAAC;QACF,MAAM,UAAU,GAAkC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,KAAK;YAC5C,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,IAAI;SAC9C,CAAC,CAAC,CAAC;QACJ,MAAM,QAAQ,GAAuC;YACnD,UAAU;YACV,oBAAoB,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;SAC7C,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,MAAM,IAAI,wBAAwB;YAAE,OAAO,QAAQ,CAAC;QACnE,OAAO;YACL,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/E,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;SACpD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,4DAA4D,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"target-resolution-diagnostic.js","sourceRoot":"","sources":["../../src/scraper/target-resolution-diagnostic.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAIH,2CAA0C;AAC1C,qFAAkF;AAElF,6DAIkC;AAElC,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC,CAAC;AAE3E,iEAAiE;AACjE,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAEnC;;;;;;;GAOG;AACH,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAExC,mFAAmF;AACnF,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAoBjC;;;;;;;;;;GAUG;AACH,SAAS,wBAAwB,CAAC,IAAY,EAAE,WAA8B;IAC5E,OAAO;;;;;;;;;;;;SAYA,IAAI;wBACW,uDAA0B;;;;;;;;;;;;;;;;;;sBAkB5B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;;;;;;;;;;;;;;oBAc7B,kBAAkB;;;OAG/B,CAAC;AACR,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACI,KAAK,oDACV,MAA+B,EAC/B,IAAU,EACV,iBAA4C;IAE5C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,IAAI,IAAI,CAAC;QACjC,MAAM,IAAI,GAAG,UAAU,CAAC;QACxB,MAAM,MAAM,GACV,iBAAiB;YACjB,CAAC,MAAM,SAAS,CAAC,QAAQ,CAEvB,IAAA,8CAA6B,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAIrC,wBAAwB,CACtB,IAAI,EACJ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAChC,CACF,CAAC;QACF,MAAM,UAAU,GAAkC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,KAAK;YAC5C,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,IAAI;SAC9C,CAAC,CAAC,CAAC;QACJ,MAAM,QAAQ,GAAuC;YACnD,UAAU;YACV,oBAAoB,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;SAC7C,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,MAAM,IAAI,wBAAwB;YAAE,OAAO,QAAQ,CAAC;QACnE,OAAO;YACL,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/E,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;SACpD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,4DAA4D,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -501,7 +501,10 @@ export declare function isReplanRegressingAcrossAuthBoundary(newSteps: readonly
501
501
  * combination that no longer matches what this particular step does).
502
502
  * Matches on word boundaries against normalized (lowercased, whitespace-
503
503
  * collapsed) text, mirroring {@link SIGN_IN_PATTERNS}/{@link ACCOUNT_CREATION_PATTERNS},
504
- * so a phrase like "commit the change" does not false-positive on "submit". Pure.
504
+ * so a phrase like "commit the change" does not false-positive on "submit".
505
+ * Negated guardrail clauses ("Do NOT click ... proceeds to checkout") are
506
+ * blanked first: a step that declares itself not a submit is never seeded as
507
+ * one. Pure.
505
508
  */
506
509
  export declare function isSubmitShapedInstructionText(instruction: string): boolean;
507
510
  /**