@enricai/barnacle 1.12.78 → 1.12.80

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 (168) hide show
  1. package/dist/api/helpers/reply.d.ts.map +1 -1
  2. package/dist/api/helpers/reply.js +5 -2
  3. package/dist/api/helpers/reply.js.map +1 -1
  4. package/dist/config.d.ts +10 -0
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +2 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/lib/llm/judge.d.ts.map +1 -1
  9. package/dist/lib/llm/judge.js +6 -1
  10. package/dist/lib/llm/judge.js.map +1 -1
  11. package/dist/lib/llm/judges/verify-step-advanced.d.ts +30 -0
  12. package/dist/lib/llm/judges/verify-step-advanced.d.ts.map +1 -0
  13. package/dist/lib/llm/judges/verify-step-advanced.js +62 -0
  14. package/dist/lib/llm/judges/verify-step-advanced.js.map +1 -0
  15. package/dist/lib/llm/judges/verify-submit.d.ts +7 -1
  16. package/dist/lib/llm/judges/verify-submit.d.ts.map +1 -1
  17. package/dist/lib/llm/judges/verify-submit.js +29 -8
  18. package/dist/lib/llm/judges/verify-submit.js.map +1 -1
  19. package/dist/lib/llm/schemas.d.ts +8 -0
  20. package/dist/lib/llm/schemas.d.ts.map +1 -1
  21. package/dist/lib/llm/schemas.js +21 -13
  22. package/dist/lib/llm/schemas.js.map +1 -1
  23. package/dist/lib/logging.d.ts +7 -0
  24. package/dist/lib/logging.d.ts.map +1 -1
  25. package/dist/lib/logging.js +19 -1
  26. package/dist/lib/logging.js.map +1 -1
  27. package/dist/lib/pii-redaction.d.ts +104 -0
  28. package/dist/lib/pii-redaction.d.ts.map +1 -0
  29. package/dist/lib/pii-redaction.js +397 -0
  30. package/dist/lib/pii-redaction.js.map +1 -0
  31. package/dist/lib/random.d.ts +3 -1
  32. package/dist/lib/random.d.ts.map +1 -1
  33. package/dist/lib/random.js +7 -2
  34. package/dist/lib/random.js.map +1 -1
  35. package/dist/lib/telemetry/beacon-capture.d.ts.map +1 -1
  36. package/dist/lib/telemetry/beacon-capture.js +2 -0
  37. package/dist/lib/telemetry/beacon-capture.js.map +1 -1
  38. package/dist/lib/telemetry/call-capture.d.ts.map +1 -1
  39. package/dist/lib/telemetry/call-capture.js +4 -1
  40. package/dist/lib/telemetry/call-capture.js.map +1 -1
  41. package/dist/lib/telemetry/submission-capture.d.ts +11 -1
  42. package/dist/lib/telemetry/submission-capture.d.ts.map +1 -1
  43. package/dist/lib/telemetry/submission-capture.js +32 -3
  44. package/dist/lib/telemetry/submission-capture.js.map +1 -1
  45. package/dist/plugins/config-plugin.d.ts +8 -0
  46. package/dist/plugins/config-plugin.d.ts.map +1 -1
  47. package/dist/plugins/config-plugin.js +6 -1
  48. package/dist/plugins/config-plugin.js.map +1 -1
  49. package/dist/plugins/discover.d.ts.map +1 -1
  50. package/dist/plugins/discover.js +2 -0
  51. package/dist/plugins/discover.js.map +1 -1
  52. package/dist/plugins/loader.d.ts.map +1 -1
  53. package/dist/plugins/loader.js +23 -6
  54. package/dist/plugins/loader.js.map +1 -1
  55. package/dist/scraper/actionable-visibility-expr.d.ts +12 -0
  56. package/dist/scraper/actionable-visibility-expr.d.ts.map +1 -0
  57. package/dist/scraper/actionable-visibility-expr.js +22 -0
  58. package/dist/scraper/actionable-visibility-expr.js.map +1 -0
  59. package/dist/scraper/active-page.d.ts +18 -0
  60. package/dist/scraper/active-page.d.ts.map +1 -0
  61. package/dist/scraper/active-page.js +53 -0
  62. package/dist/scraper/active-page.js.map +1 -0
  63. package/dist/scraper/browser-click-expr.d.ts +1 -1
  64. package/dist/scraper/browser-click-expr.d.ts.map +1 -1
  65. package/dist/scraper/browser-click-expr.js +2 -6
  66. package/dist/scraper/browser-click-expr.js.map +1 -1
  67. package/dist/scraper/click-settle.d.ts +19 -0
  68. package/dist/scraper/click-settle.d.ts.map +1 -0
  69. package/dist/scraper/click-settle.js +65 -0
  70. package/dist/scraper/click-settle.js.map +1 -0
  71. package/dist/scraper/deep-locator-candidates.d.ts +20 -1
  72. package/dist/scraper/deep-locator-candidates.d.ts.map +1 -1
  73. package/dist/scraper/deep-locator-candidates.js +110 -22
  74. package/dist/scraper/deep-locator-candidates.js.map +1 -1
  75. package/dist/scraper/deep-locator-scan.d.ts +12 -0
  76. package/dist/scraper/deep-locator-scan.d.ts.map +1 -1
  77. package/dist/scraper/deep-locator-scan.js +42 -13
  78. package/dist/scraper/deep-locator-scan.js.map +1 -1
  79. package/dist/scraper/errors.d.ts +10 -0
  80. package/dist/scraper/errors.d.ts.map +1 -1
  81. package/dist/scraper/errors.js +19 -1
  82. package/dist/scraper/errors.js.map +1 -1
  83. package/dist/scraper/flow-runner.d.ts +355 -6
  84. package/dist/scraper/flow-runner.d.ts.map +1 -1
  85. package/dist/scraper/flow-runner.js +2255 -350
  86. package/dist/scraper/flow-runner.js.map +1 -1
  87. package/dist/scraper/navigate.d.ts +3 -3
  88. package/dist/scraper/navigate.js +4 -4
  89. package/dist/scraper/navigate.js.map +1 -1
  90. package/dist/scraper/phantom-click.d.ts +34 -2
  91. package/dist/scraper/phantom-click.d.ts.map +1 -1
  92. package/dist/scraper/phantom-click.js +80 -6
  93. package/dist/scraper/phantom-click.js.map +1 -1
  94. package/dist/scraper/pool.d.ts.map +1 -1
  95. package/dist/scraper/pool.js +8 -1
  96. package/dist/scraper/pool.js.map +1 -1
  97. package/dist/scraper/quoted-spans.d.ts +35 -0
  98. package/dist/scraper/quoted-spans.d.ts.map +1 -0
  99. package/dist/scraper/quoted-spans.js +83 -0
  100. package/dist/scraper/quoted-spans.js.map +1 -0
  101. package/dist/scraper/retry.d.ts +1 -1
  102. package/dist/scraper/retry.d.ts.map +1 -1
  103. package/dist/scraper/retry.js +5 -1
  104. package/dist/scraper/retry.js.map +1 -1
  105. package/dist/scraper/session-browserbase.d.ts +4 -2
  106. package/dist/scraper/session-browserbase.d.ts.map +1 -1
  107. package/dist/scraper/session-browserbase.js +63 -20
  108. package/dist/scraper/session-browserbase.js.map +1 -1
  109. package/dist/scraper/session-shared.d.ts +5 -0
  110. package/dist/scraper/session-shared.d.ts.map +1 -1
  111. package/dist/scraper/session-shared.js.map +1 -1
  112. package/dist/scraper/session-steel.d.ts.map +1 -1
  113. package/dist/scraper/session-steel.js +16 -2
  114. package/dist/scraper/session-steel.js.map +1 -1
  115. package/dist/scraper/session-teardown.d.ts +31 -1
  116. package/dist/scraper/session-teardown.d.ts.map +1 -1
  117. package/dist/scraper/session-teardown.js +60 -4
  118. package/dist/scraper/session-teardown.js.map +1 -1
  119. package/dist/scraper/spa-readiness.d.ts +13 -1
  120. package/dist/scraper/spa-readiness.d.ts.map +1 -1
  121. package/dist/scraper/spa-readiness.js +31 -1
  122. package/dist/scraper/spa-readiness.js.map +1 -1
  123. package/dist/scraper/stagehand-guard.d.ts +8 -3
  124. package/dist/scraper/stagehand-guard.d.ts.map +1 -1
  125. package/dist/scraper/stagehand-guard.js +181 -13
  126. package/dist/scraper/stagehand-guard.js.map +1 -1
  127. package/dist/scraper/submit-control.d.ts +2 -2
  128. package/dist/scraper/submit-control.d.ts.map +1 -1
  129. package/dist/scraper/submit-control.js +5 -21
  130. package/dist/scraper/submit-control.js.map +1 -1
  131. package/dist/scraper/target-resolution-diagnostic.d.ts.map +1 -1
  132. package/dist/scraper/target-resolution-diagnostic.js +6 -11
  133. package/dist/scraper/target-resolution-diagnostic.js.map +1 -1
  134. package/dist/scraper/transient-provider-error.d.ts +19 -0
  135. package/dist/scraper/transient-provider-error.d.ts.map +1 -0
  136. package/dist/scraper/transient-provider-error.js +59 -0
  137. package/dist/scraper/transient-provider-error.js.map +1 -0
  138. package/dist/scraper/trusted-click.d.ts +122 -0
  139. package/dist/scraper/trusted-click.d.ts.map +1 -0
  140. package/dist/scraper/trusted-click.js +201 -0
  141. package/dist/scraper/trusted-click.js.map +1 -0
  142. package/dist/scraper/upload-affordance-expr.d.ts +33 -0
  143. package/dist/scraper/upload-affordance-expr.d.ts.map +1 -0
  144. package/dist/scraper/upload-affordance-expr.js +91 -0
  145. package/dist/scraper/upload-affordance-expr.js.map +1 -0
  146. package/dist/scripts/recon-browser.d.ts +30 -2
  147. package/dist/scripts/recon-browser.d.ts.map +1 -1
  148. package/dist/scripts/recon-browser.js +133 -27
  149. package/dist/scripts/recon-browser.js.map +1 -1
  150. package/dist/scripts/recon-capture-rebind.d.ts +11 -0
  151. package/dist/scripts/recon-capture-rebind.d.ts.map +1 -0
  152. package/dist/scripts/recon-capture-rebind.js +26 -0
  153. package/dist/scripts/recon-capture-rebind.js.map +1 -0
  154. package/dist/scripts/recon-generate.d.ts +159 -8
  155. package/dist/scripts/recon-generate.d.ts.map +1 -1
  156. package/dist/scripts/recon-generate.js +998 -182
  157. package/dist/scripts/recon-generate.js.map +1 -1
  158. package/dist/scripts/recon-shared.d.ts +7 -0
  159. package/dist/scripts/recon-shared.d.ts.map +1 -1
  160. package/dist/scripts/recon-shared.js +19 -0
  161. package/dist/scripts/recon-shared.js.map +1 -1
  162. package/dist/site-plugin.d.ts +8 -0
  163. package/dist/site-plugin.d.ts.map +1 -1
  164. package/dist/types/pii-redaction.d.ts +39 -0
  165. package/dist/types/pii-redaction.d.ts.map +1 -0
  166. package/dist/types/pii-redaction.js +3 -0
  167. package/dist/types/pii-redaction.js.map +1 -0
  168. package/package.json +14 -1
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.makeFilteredStagehandLogger = makeFilteredStagehandLogger;
4
7
  exports.makeOutboundIpAccessor = makeOutboundIpAccessor;
5
8
  exports.createBrowserbaseBrowserSession = createBrowserbaseBrowserSession;
9
+ const sdk_1 = __importDefault(require("@browserbasehq/sdk"));
6
10
  const stagehand_1 = require("@browserbasehq/stagehand");
7
11
  const config_1 = require("../config");
8
12
  const bedrock_1 = require("../lib/bedrock");
@@ -102,6 +106,24 @@ function makeOutboundIpAccessor(resolve, opts) {
102
106
  return inFlight;
103
107
  };
104
108
  }
109
+ /**
110
+ * Releases the Browserbase session explicitly because `keepAlive: true` leaves
111
+ * teardown to us; failures are logged so they never mask the rest of close().
112
+ */
113
+ async function releaseBrowserbaseSession(sessionId) {
114
+ if (sessionId === "unknown")
115
+ return;
116
+ try {
117
+ const client = new sdk_1.default({ apiKey: config_1.config.scraper.browserbaseApiKey });
118
+ await client.sessions.update(sessionId, {
119
+ projectId: config_1.config.scraper.browserbaseProjectId,
120
+ status: "REQUEST_RELEASE",
121
+ });
122
+ }
123
+ catch (err) {
124
+ logger.warn(`browserbase release failed for session ${sessionId}: ${(0, errors_1.toErrorMessage)(err)}`);
125
+ }
126
+ }
105
127
  /**
106
128
  * Spins up one Browserbase cloud session with the configured Stagehand LLM.
107
129
  *
@@ -113,8 +135,10 @@ function makeOutboundIpAccessor(resolve, opts) {
113
135
  * code path Stagehand validates first.
114
136
  *
115
137
  * Session lifecycle: Stagehand owns Browserbase session creation when
116
- * `env: "BROWSERBASE"` is set. `stagehand.close()` releases the session;
117
- * no separate Browserbase SDK release call is needed (unlike Steel).
138
+ * `env: "BROWSERBASE"` is set, but because the session is created with
139
+ * `keepAlive: true`, `stagehand.close()` does NOT release it. `close()`
140
+ * therefore explicitly issues `sessions.update(..., REQUEST_RELEASE)` through
141
+ * the Browserbase SDK; a failed release is logged and never aborts teardown.
118
142
  *
119
143
  * Viewport rotation: forwarded via `fingerprint.screen.{min,max}{Width,Height}`
120
144
  * pinned to the chosen viewport. The min/max bracket forces Browserbase's
@@ -195,7 +219,33 @@ async function createBrowserbaseBrowserSession(opts) {
195
219
  }
196
220
  : baseFingerprint;
197
221
  const { callback: filteredStagehandLoggerCallback, reportSuppressed: reportSuppressedAisdkErrors, getSuppressedCount: getSuppressedAisdkElementIdErrorCount, } = makeFilteredStagehandLogger(logger);
198
- const { watchLogLine: watchForTeardown, deathSignal } = (0, session_teardown_1.createSessionTeardownDetector)();
222
+ // Stagehand's own end-of-run teardown also closes the CDP transport, so
223
+ // the handler must not flag that expected case. `weInitiatedClose` is
224
+ // flipped at the top of `close()` below, before `stagehand.close()` runs;
225
+ // only a transport close observed while it's still false is an SDK-
226
+ // initiated teardown mid-operation, not a consequence of our own close.
227
+ let weInitiatedClose = false;
228
+ let cdpTransportClosedError;
229
+ const configuredTimeoutSeconds = customSessionParams.timeout ??
230
+ config_1.config.scraper.browserbaseSessionTimeoutSeconds;
231
+ let sessionTimeoutHit;
232
+ // Advanced by the flow runner's step loop via `recordStepCompleted` as
233
+ // each step finishes.
234
+ let completedStepCount = 0;
235
+ // Single classification shared by the log-line detector and the transport
236
+ // listener so the order in which those two signals arrive cannot matter.
237
+ const classifyLifetime = (0, session_teardown_1.createDeathClassifier)({
238
+ configuredTimeoutSeconds,
239
+ toleranceSeconds: TOLERANCE_SECONDS,
240
+ isOwnClose: () => weInitiatedClose,
241
+ getElapsedSeconds: () => (Date.now() - sessionStartedAt) / 1000,
242
+ getCompletedStepCount: () => completedStepCount,
243
+ });
244
+ const classifyDeath = () => {
245
+ sessionTimeoutHit = classifyLifetime() ?? sessionTimeoutHit;
246
+ return sessionTimeoutHit;
247
+ };
248
+ const { watchLogLine: watchForTeardown, signalTransportClosed, deathSignal, deathAbortSignal, } = (0, session_teardown_1.createSessionTeardownDetector)({ classifyDeath });
199
249
  const stagehandLoggerCallback = (line) => {
200
250
  filteredStagehandLoggerCallback(line);
201
251
  watchForTeardown(line);
@@ -224,6 +274,8 @@ async function createBrowserbaseBrowserSession(opts) {
224
274
  ...customSessionParams.browserSettings,
225
275
  ...(advancedStealth ? { advancedStealth: true, solveCaptchas: true } : {}),
226
276
  fingerprint,
277
+ logSession: config_1.config.scraper.browserbaseSessionArtifacts,
278
+ recordSession: config_1.config.scraper.browserbaseSessionArtifacts,
227
279
  },
228
280
  },
229
281
  model: config_1.config.scraper.useBedrock
@@ -235,7 +287,11 @@ async function createBrowserbaseBrowserSession(opts) {
235
287
  fetch: (0, session_shared_1.createTimeoutFetch)(config_1.config.scraper.anthropicTimeoutMs),
236
288
  },
237
289
  llmClient,
238
- serverCache: true,
290
+ // Off: the cache keys on instruction text, and instructions can still
291
+ // carry request values the guard leaves literal (keys outside the
292
+ // plugin's tokenizeKeys, replayed observe actions), which a cache entry
293
+ // would persist on Browserbase's side.
294
+ serverCache: false,
239
295
  selfHeal: false,
240
296
  // Stagehand spawns an out-of-process crash supervisor whenever
241
297
  // keepAlive isn't true, watching its own stdin lifeline pipe and
@@ -262,19 +318,6 @@ async function createBrowserbaseBrowserSession(opts) {
262
318
  throw err;
263
319
  }
264
320
  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
321
  stagehand.context.conn.onTransportClosed((why) => {
279
322
  if (weInitiatedClose)
280
323
  return;
@@ -286,9 +329,7 @@ async function createBrowserbaseBrowserSession(opts) {
286
329
  completedStepCount,
287
330
  toleranceSeconds: TOLERANCE_SECONDS,
288
331
  });
289
- if (classification.isTimeoutHit) {
290
- sessionTimeoutHit = { configuredTimeoutSeconds, elapsedSeconds };
291
- }
332
+ signalTransportClosed(why);
292
333
  logger.warn(classification.message);
293
334
  });
294
335
  const sessionId = stagehand.browserbaseSessionID ?? "unknown";
@@ -308,6 +349,7 @@ async function createBrowserbaseBrowserSession(opts) {
308
349
  catch (err) {
309
350
  logger.warn(`stagehand close failed for session ${sessionId}: ${(0, errors_1.toErrorMessage)(err)}`);
310
351
  }
352
+ await releaseBrowserbaseSession(sessionId);
311
353
  await limiter.stop({ dropWaitingJobs: true });
312
354
  reportSuppressedAisdkErrors();
313
355
  };
@@ -326,6 +368,7 @@ async function createBrowserbaseBrowserSession(opts) {
326
368
  getSuppressedAisdkElementIdErrorCount,
327
369
  getOutboundIp,
328
370
  deathSignal,
371
+ deathAbortSignal,
329
372
  getCdpTransportClosedError,
330
373
  getSessionTimeoutHit,
331
374
  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 +1 @@
1
- {"version":3,"file":"session-steel.d.ts","sourceRoot":"","sources":["../../src/scraper/session-steel.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAY9C;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAUjG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,cAAc,CAAC,CAsJzE"}
1
+ {"version":3,"file":"session-steel.d.ts","sourceRoot":"","sources":["../../src/scraper/session-steel.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAe9C;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAUjG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,cAAc,CAAC,CAkKzE"}
@@ -17,6 +17,8 @@ const session_shared_1 = require("./session-shared");
17
17
  const session_teardown_1 = require("./session-teardown");
18
18
  const throttle_1 = require("./throttle");
19
19
  const logger = (0, logging_1.getLogger)({ name: "scraper/session-steel" });
20
+ /** Mirrors Browserbase: providers overshoot their configured lifetime, never undershoot. */
21
+ const STEEL_TIMEOUT_TOLERANCE_SECONDS = 15;
20
22
  /** Formats a session proxy tuple as Steel's documented `proxyUrl`: `protocol://[user:pass@]host:port`. */
21
23
  function formatSteelProxyUrl(proxy) {
22
24
  const credentials = proxy.username && proxy.password ? `${proxy.username}:${proxy.password}@` : "";
@@ -97,7 +99,9 @@ async function createSteelBrowserSession() {
97
99
  // failure leaves a live session burning minutes until Steel's own timeout.
98
100
  let stagehand;
99
101
  let deathSignal;
102
+ let deathAbortSignal;
100
103
  let heartbeat;
104
+ let weInitiatedClose = false;
101
105
  try {
102
106
  // Steel's websocketUrl is `wss://connect.steel.dev?sessionId=…`. Stagehand's
103
107
  // V3 CDP connector requires the apiKey as a query parameter too — without it
@@ -113,9 +117,19 @@ async function createSteelBrowserSession() {
113
117
  ? new stagehand_1.AISdkClient({ model: (0, bedrock_1.createBedrockModel)(config_1.config.bedrock) })
114
118
  : undefined;
115
119
  const forwardStagehandLogLine = makeStagehandLoggerForwarder(logger);
116
- const teardownDetector = (0, session_teardown_1.createSessionTeardownDetector)();
120
+ const steelStartedAt = Date.now();
121
+ const teardownDetector = (0, session_teardown_1.createSessionTeardownDetector)({
122
+ classifyDeath: (0, session_teardown_1.createDeathClassifier)({
123
+ configuredTimeoutSeconds: config_1.config.scraper.steelSessionTimeoutMs / 1000,
124
+ toleranceSeconds: STEEL_TIMEOUT_TOLERANCE_SECONDS,
125
+ isOwnClose: () => weInitiatedClose,
126
+ getElapsedSeconds: () => (Date.now() - steelStartedAt) / 1000,
127
+ getCompletedStepCount: () => 0,
128
+ }),
129
+ });
117
130
  const watchForTeardown = teardownDetector.watchLogLine;
118
131
  deathSignal = teardownDetector.deathSignal;
132
+ deathAbortSignal = teardownDetector.deathAbortSignal;
119
133
  const stagehandLoggerCallback = (line) => {
120
134
  forwardStagehandLogLine(line);
121
135
  watchForTeardown(line);
@@ -171,7 +185,6 @@ async function createSteelBrowserSession() {
171
185
  // flipped at the top of `close()` below, before `stagehand.close()` runs;
172
186
  // only a transport close observed while it's still false is an SDK-
173
187
  // initiated teardown mid-operation, not a consequence of our own close.
174
- let weInitiatedClose = false;
175
188
  let cdpTransportClosedError;
176
189
  stagehand.context.conn.onTransportClosed((why) => {
177
190
  if (weInitiatedClose)
@@ -204,6 +217,7 @@ async function createSteelBrowserSession() {
204
217
  provider: "steel",
205
218
  close,
206
219
  deathSignal,
220
+ deathAbortSignal,
207
221
  getCdpTransportClosedError,
208
222
  sessionProxy,
209
223
  };
@@ -1 +1 @@
1
- {"version":3,"file":"session-steel.js","sourceRoot":"","sources":["../../src/scraper/session-steel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-steel.js","sourceRoot":"","sources":["../../src/scraper/session-steel.ts"],"names":[],"mappings":"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"}
@@ -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,16 @@ 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;
19
+ signalTransportClosed: (why: string) => void;
13
20
  deathSignal: Promise<never>;
21
+ deathAbortSignal: AbortSignal;
14
22
  };
15
23
  /** Result of classifying a session teardown against its configured lifetime. */
16
24
  export interface SessionTeardownClassification {
@@ -38,4 +46,26 @@ export declare function classifySessionTeardown(params: {
38
46
  * would have settled it is already gone.
39
47
  */
40
48
  export declare function raceAgainstTeardown<T>(stepPromise: Promise<T>, deathSignal: Promise<never>): Promise<T>;
49
+ /**
50
+ * Upgrades a caught error to `SessionLifetimeExceededError` when the session
51
+ * recorded a lifetime-expiry death, so every code path that observes the
52
+ * death fails fast regardless of which error it caught. Steel sessions have
53
+ * no `getSessionTimeoutHit`, so the error passes through unchanged.
54
+ */
55
+ export declare function resolveSessionDeathError(session: Pick<BrowserSession, "getSessionTimeoutHit"> | undefined, err: unknown): unknown;
56
+ /**
57
+ * Builds the single lifetime classifier shared by the log-line detector and
58
+ * the transport-closed listener, so the order in which those signals arrive
59
+ * cannot change the outcome, and our own `close()` never classifies.
60
+ */
61
+ export declare function createDeathClassifier(opts: {
62
+ configuredTimeoutSeconds: number;
63
+ toleranceSeconds: number;
64
+ isOwnClose: () => boolean;
65
+ getElapsedSeconds: () => number;
66
+ getCompletedStepCount: () => number;
67
+ }): () => {
68
+ configuredTimeoutSeconds: number;
69
+ elapsedSeconds: number;
70
+ } | undefined;
41
71
  //# 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,qBAAqB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,gBAAgB,EAAE,WAAW,CAAC;CAC/B,CAsCA;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,7 +32,19 @@ 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;
37
+ const fire = (detail, earlyMessage) => {
38
+ if (fired)
39
+ return;
40
+ fired = true;
41
+ const hit = opts?.classifyDeath?.();
42
+ const err = hit
43
+ ? new errors_1.SessionLifetimeExceededError(`scraper session reached its configured lifetime (${hit.elapsedSeconds.toFixed(1)}s elapsed of ${hit.configuredTimeoutSeconds}s): ${detail}`)
44
+ : new errors_1.CdpTransportClosedError(earlyMessage);
45
+ signalDeath?.(err);
46
+ abortController.abort(err);
47
+ };
34
48
  const watchLogLine = (line) => {
35
49
  if (fired)
36
50
  return;
@@ -38,10 +52,15 @@ function createSessionTeardownDetector() {
38
52
  return;
39
53
  if (!line.message.includes(TEARDOWN_MESSAGE_SUBSTRING))
40
54
  return;
41
- fired = true;
42
- signalDeath?.(new errors_1.CdpTransportClosedError(`stagehand-initiated teardown mid-flow: ${line.message}`));
55
+ fire(line.message, `stagehand-initiated teardown mid-flow: ${line.message}`);
56
+ };
57
+ const signalTransportClosed = (why) => fire(why, `scraper session's CDP transport was closed by the SDK: ${why}`);
58
+ return {
59
+ watchLogLine,
60
+ signalTransportClosed,
61
+ deathSignal,
62
+ deathAbortSignal: abortController.signal,
43
63
  };
44
- return { watchLogLine, deathSignal };
45
64
  }
46
65
  /**
47
66
  * Browserbase overshoots its own configured session timeout by 1-14s in
@@ -73,4 +92,41 @@ function classifySessionTeardown(params) {
73
92
  function raceAgainstTeardown(stepPromise, deathSignal) {
74
93
  return Promise.race([stepPromise, deathSignal]);
75
94
  }
95
+ /**
96
+ * Upgrades a caught error to `SessionLifetimeExceededError` when the session
97
+ * recorded a lifetime-expiry death, so every code path that observes the
98
+ * death fails fast regardless of which error it caught. Steel sessions have
99
+ * no `getSessionTimeoutHit`, so the error passes through unchanged.
100
+ */
101
+ function resolveSessionDeathError(session, err) {
102
+ const hit = session?.getSessionTimeoutHit?.();
103
+ if (!hit)
104
+ return err;
105
+ return new errors_1.SessionLifetimeExceededError(`scraper session reached its configured lifetime (${hit.elapsedSeconds.toFixed(1)}s elapsed of ${hit.configuredTimeoutSeconds}s)`);
106
+ }
107
+ /**
108
+ * Builds the single lifetime classifier shared by the log-line detector and
109
+ * the transport-closed listener, so the order in which those signals arrive
110
+ * cannot change the outcome, and our own `close()` never classifies.
111
+ */
112
+ function createDeathClassifier(opts) {
113
+ let hit;
114
+ return () => {
115
+ if (opts.isOwnClose())
116
+ return undefined;
117
+ if (hit)
118
+ return hit;
119
+ const elapsedSeconds = opts.getElapsedSeconds();
120
+ const classification = classifySessionTeardown({
121
+ configuredTimeoutSeconds: opts.configuredTimeoutSeconds,
122
+ elapsedSeconds,
123
+ completedStepCount: opts.getCompletedStepCount(),
124
+ toleranceSeconds: opts.toleranceSeconds,
125
+ });
126
+ if (!classification.isTimeoutHit)
127
+ return undefined;
128
+ hit = { configuredTimeoutSeconds: opts.configuredTimeoutSeconds, elapsedSeconds };
129
+ return hit;
130
+ };
131
+ }
76
132
  //# 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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"}
@@ -2,7 +2,7 @@ import type { Page } from "@browserbasehq/stagehand";
2
2
  import type { Logger } from "../types/logging";
3
3
  /**
4
4
  * Block until a just-navigated SPA has actually hydrated, so the flow does not
5
- * begin stepping against a shell page. `page.goto(..., "networkidle")` on a
5
+ * begin stepping against a shell page. `page.goto(..., "domcontentloaded")` on a
6
6
  * bot-managed/CDN-fronted single-page app resolves during the challenge/redirect —
7
7
  * before the client framework renders the real DOM — so the first steps would
8
8
  * otherwise probe an empty page, find no candidates, and (being optional) skip
@@ -25,4 +25,16 @@ export declare function waitForSpaReady(page: Page, logger: Logger, opts?: {
25
25
  pollMs?: number;
26
26
  minBodyLength?: number;
27
27
  }): Promise<void>;
28
+ /**
29
+ * Re-gate SPA hydration after a mid-flow origin change, with one reload of recovery.
30
+ * `waitForSpaReady` proceeds silently on a shell page; a cross-origin hop that landed
31
+ * on an empty shell (e.g. a redirect from app.example.com to login.example.net whose
32
+ * client bundle never booted) would otherwise let every later step probe nothing.
33
+ * Reloads at most once and never throws.
34
+ */
35
+ export declare function regateSpaAfterOriginChange(page: Page, logger: Logger, opts?: {
36
+ timeoutMs?: number;
37
+ pollMs?: number;
38
+ minBodyLength?: number;
39
+ }): Promise<void>;
28
40
  //# sourceMappingURL=spa-readiness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spa-readiness.d.ts","sourceRoot":"","sources":["../../src/scraper/spa-readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAO9C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GACzE,OAAO,CAAC,IAAI,CAAC,CAkCf"}
1
+ {"version":3,"file":"spa-readiness.d.ts","sourceRoot":"","sources":["../../src/scraper/spa-readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAO9C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GACzE,OAAO,CAAC,IAAI,CAAC,CAkCf;AAKD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GACzE,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.waitForSpaReady = waitForSpaReady;
4
+ exports.regateSpaAfterOriginChange = regateSpaAfterOriginChange;
4
5
  const watchdog_1 = require("./watchdog");
5
6
  /** SPA-readiness gate defaults — match the recon CLI's post-navigation wait. */
6
7
  const SPA_READINESS_TIMEOUT_MS = 15_000;
@@ -8,7 +9,7 @@ const SPA_READINESS_POLL_MS = 500;
8
9
  const SPA_MIN_BODY_LENGTH = 5_000;
9
10
  /**
10
11
  * Block until a just-navigated SPA has actually hydrated, so the flow does not
11
- * begin stepping against a shell page. `page.goto(..., "networkidle")` on a
12
+ * begin stepping against a shell page. `page.goto(..., "domcontentloaded")` on a
12
13
  * bot-managed/CDN-fronted single-page app resolves during the challenge/redirect —
13
14
  * before the client framework renders the real DOM — so the first steps would
14
15
  * otherwise probe an empty page, find no candidates, and (being optional) skip
@@ -54,4 +55,33 @@ async function waitForSpaReady(page, logger, opts = {}) {
54
55
  }
55
56
  logger.warn(`spa readiness: body still ${bodyLength} chars after ${timeoutMs}ms — proceeding with possibly incomplete page`);
56
57
  }
58
+ /** Below this body length after the readiness wait, the page is treated as an empty shell. */
59
+ const SPA_EMPTY_SHELL_BODY_LENGTH = 1_000;
60
+ /**
61
+ * Re-gate SPA hydration after a mid-flow origin change, with one reload of recovery.
62
+ * `waitForSpaReady` proceeds silently on a shell page; a cross-origin hop that landed
63
+ * on an empty shell (e.g. a redirect from app.example.com to login.example.net whose
64
+ * client bundle never booted) would otherwise let every later step probe nothing.
65
+ * Reloads at most once and never throws.
66
+ */
67
+ async function regateSpaAfterOriginChange(page, logger, opts = {}) {
68
+ await waitForSpaReady(page, logger, opts);
69
+ const bodyLength = await readBodyLengthOnce(page, opts.pollMs ?? SPA_READINESS_POLL_MS);
70
+ if (bodyLength >= SPA_EMPTY_SHELL_BODY_LENGTH) {
71
+ return;
72
+ }
73
+ logger.warn(`spa readiness: body ${bodyLength} chars < ${SPA_EMPTY_SHELL_BODY_LENGTH} after origin change — reloading once`);
74
+ try {
75
+ await page.reload({ waitUntil: "domcontentloaded" });
76
+ }
77
+ catch (err) {
78
+ logger.warn(`spa readiness: reload failed: ${err instanceof Error ? err.message : String(err)}`);
79
+ return;
80
+ }
81
+ await waitForSpaReady(page, logger, opts);
82
+ }
83
+ async function readBodyLengthOnce(page, timeoutMs) {
84
+ const raw = await (0, watchdog_1.withWatchdog)(() => page.evaluate("document.body ? document.body.outerHTML.length : 0"), { timeoutMs, label: "flow-runner: spa origin re-gate body-length probe" }).catch(() => 0);
85
+ return typeof raw === "number" ? raw : 0;
86
+ }
57
87
  //# sourceMappingURL=spa-readiness.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spa-readiness.js","sourceRoot":"","sources":["../../src/scraper/spa-readiness.ts"],"names":[],"mappings":";;;AAEA,iDAAkD;AAGlD,gFAAgF;AAChF,MAAM,wBAAwB,GAAG,MAAM,CAAC;AACxC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAElC;;;;;;;;;;;;;;;;;;;GAmBG;AACI,KAAK,0BACV,IAAU,EACV,MAAc,EACd,IAAI,GAAoE,EAAE;IAE1E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,wBAAwB,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,qBAAqB,CAAC;IACpD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,mBAAmB,CAAC;IAChE,MAAM,cAAc,GAAG,oDAAoD,CAAC;IAE5E,MAAM,cAAc,GAAG,KAAK,IAAqB,EAAE;QACjD,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAY,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YAClE,SAAS,EAAE,MAAM;YACjB,KAAK,EAAE,8CAA8C;SACtD,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAClB,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,IAAI,UAAU,GAAG,MAAM,cAAc,EAAE,CAAC;IACxC,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,CAAC,IAAI,CACT,uBAAuB,UAAU,YAAY,aAAa,wCAAwC,CACnG,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAClC,UAAU,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,+BAA+B,UAAU,uBAAuB,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CACT,6BAA6B,UAAU,gBAAgB,SAAS,+CAA+C,CAChH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"spa-readiness.js","sourceRoot":"","sources":["../../src/scraper/spa-readiness.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,8 @@ 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
53
  /**
52
54
  * Zod parallel of Stagehand's public `Action` shape (from
53
55
  * `@browserbasehq/stagehand/.../public/methods.d.ts`):
@@ -116,8 +118,11 @@ export declare class StagehandSchemaError extends Error {
116
118
  * receives the same `timeout` as before, but a call that ignores it and hangs
117
119
  * now fails the attempt instead of blocking the step forever.
118
120
  *
119
- * Accepts the same trailing `frameTarget` param as `guardedObserve`/
120
- * `guardedExtract` for signature symmetry, but does not forward it into
121
+ * Click targets are centred and hit-tested before Stagehand acts (see
122
+ * `preCentreClickTarget`); a given `frameTarget` scopes that pass, and
123
+ * `preCentred` skips it when the caller already resolved and centred the
124
+ * target, so one click does not cost two observe calls. The
125
+ * trailing `frameTarget` param is not forwarded into
121
126
  * `ActOptions` — `ActOptions` has no `selector` field, and its `page`
122
127
  * override only accepts a full Playwright/Puppeteer/Patchright/understudy
123
128
  * `Page`, not the `Frame` handle `FrameTarget.frame` exposes (the
@@ -128,7 +133,7 @@ export declare class StagehandSchemaError extends Error {
128
133
  * that `Action` — the `observe(...)[0] -> act(target)` pattern already used
129
134
  * throughout `flow-runner.ts`.
130
135
  */
131
- export declare function guardedAct(stagehand: Stagehand, input: string | Action, options?: ActOptions, captureFn?: StagehandCaptureFn, _frameTarget?: FrameTarget): Promise<ActResult>;
136
+ export declare function guardedAct(stagehand: Stagehand, input: string | Action, options?: ActOptions, captureFn?: StagehandCaptureFn, frameTarget?: FrameTarget, preCentred?: boolean): Promise<ActResult>;
132
137
  /**
133
138
  * Schema-guarded wrapper around Stagehand's `observe`. Parallels the
134
139
  * Stagehand overloads: no args, options-only, instruction-only,
@@ -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,EACV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,8BAA8B,CAAC;AAMtC,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG5E;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAUxE;;;;;;;;;;;;;;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;AAwCD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,CAAC,EAAE,UAAU,EACpB,SAAS,CAAC,EAAE,kBAAkB,EAC9B,YAAY,CAAC,EAAE,WAAW,GACzB,OAAO,CAAC,SAAS,CAAC,CAsEpB;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,CAsEnB;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,CA0ErB"}
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"}