@enricai/barnacle 1.6.11 → 1.6.13

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 (96) hide show
  1. package/README.md +113 -9
  2. package/dist/api/schemas/submissions.d.ts +14 -0
  3. package/dist/api/schemas/submissions.d.ts.map +1 -1
  4. package/dist/api/schemas/submissions.js +1 -0
  5. package/dist/api/schemas/submissions.js.map +1 -1
  6. package/dist/config.d.ts +33 -0
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +4 -0
  9. package/dist/config.js.map +1 -1
  10. package/dist/lib/telemetry/beacon-capture.d.ts +45 -2
  11. package/dist/lib/telemetry/beacon-capture.d.ts.map +1 -1
  12. package/dist/lib/telemetry/beacon-capture.js +36 -0
  13. package/dist/lib/telemetry/beacon-capture.js.map +1 -1
  14. package/dist/lib/telemetry/reconciliation-record.d.ts +50 -2
  15. package/dist/lib/telemetry/reconciliation-record.d.ts.map +1 -1
  16. package/dist/lib/telemetry/reconciliation-record.js +60 -7
  17. package/dist/lib/telemetry/reconciliation-record.js.map +1 -1
  18. package/dist/lib/telemetry/reconciliation-source.d.ts +7 -1
  19. package/dist/lib/telemetry/reconciliation-source.d.ts.map +1 -1
  20. package/dist/lib/telemetry/reconciliation-source.js +21 -5
  21. package/dist/lib/telemetry/reconciliation-source.js.map +1 -1
  22. package/dist/lib/telemetry/run-telemetry.d.ts +67 -0
  23. package/dist/lib/telemetry/run-telemetry.d.ts.map +1 -0
  24. package/dist/lib/telemetry/run-telemetry.js +55 -0
  25. package/dist/lib/telemetry/run-telemetry.js.map +1 -0
  26. package/dist/lib/telemetry/submission-capture.d.ts +11 -4
  27. package/dist/lib/telemetry/submission-capture.d.ts.map +1 -1
  28. package/dist/lib/telemetry/submission-capture.js +1 -0
  29. package/dist/lib/telemetry/submission-capture.js.map +1 -1
  30. package/dist/lib/telemetry/submission-reader.d.ts +11 -3
  31. package/dist/lib/telemetry/submission-reader.d.ts.map +1 -1
  32. package/dist/lib/telemetry/submission-reader.js +32 -8
  33. package/dist/lib/telemetry/submission-reader.js.map +1 -1
  34. package/dist/lib/tracking-click.d.ts.map +1 -1
  35. package/dist/lib/tracking-click.js +19 -0
  36. package/dist/lib/tracking-click.js.map +1 -1
  37. package/dist/plugins/loader.d.ts +20 -0
  38. package/dist/plugins/loader.d.ts.map +1 -1
  39. package/dist/plugins/loader.js +94 -17
  40. package/dist/plugins/loader.js.map +1 -1
  41. package/dist/scraper/deep-locator-actuate.d.ts +94 -0
  42. package/dist/scraper/deep-locator-actuate.d.ts.map +1 -0
  43. package/dist/scraper/deep-locator-actuate.js +216 -0
  44. package/dist/scraper/deep-locator-actuate.js.map +1 -0
  45. package/dist/scraper/deep-locator-candidates.d.ts +105 -18
  46. package/dist/scraper/deep-locator-candidates.d.ts.map +1 -1
  47. package/dist/scraper/deep-locator-candidates.js +238 -46
  48. package/dist/scraper/deep-locator-candidates.js.map +1 -1
  49. package/dist/scraper/deep-locator-click.d.ts +71 -0
  50. package/dist/scraper/deep-locator-click.d.ts.map +1 -0
  51. package/dist/scraper/deep-locator-click.js +71 -0
  52. package/dist/scraper/deep-locator-click.js.map +1 -0
  53. package/dist/scraper/deep-locator-fake.d.ts +344 -14
  54. package/dist/scraper/deep-locator-fake.d.ts.map +1 -1
  55. package/dist/scraper/deep-locator-fake.js +509 -7
  56. package/dist/scraper/deep-locator-fake.js.map +1 -1
  57. package/dist/scraper/deep-locator-scan.d.ts +220 -0
  58. package/dist/scraper/deep-locator-scan.d.ts.map +1 -0
  59. package/dist/scraper/deep-locator-scan.js +386 -0
  60. package/dist/scraper/deep-locator-scan.js.map +1 -0
  61. package/dist/scraper/fake-timer-advance.d.ts +47 -0
  62. package/dist/scraper/fake-timer-advance.d.ts.map +1 -0
  63. package/dist/scraper/fake-timer-advance.js +44 -0
  64. package/dist/scraper/fake-timer-advance.js.map +1 -0
  65. package/dist/scraper/flow-runner.d.ts +36 -1
  66. package/dist/scraper/flow-runner.d.ts.map +1 -1
  67. package/dist/scraper/flow-runner.js +354 -56
  68. package/dist/scraper/flow-runner.js.map +1 -1
  69. package/dist/scraper/frame-target.d.ts +28 -0
  70. package/dist/scraper/frame-target.d.ts.map +1 -1
  71. package/dist/scraper/frame-target.js +30 -0
  72. package/dist/scraper/frame-target.js.map +1 -1
  73. package/dist/scraper/session-browserbase.d.ts +13 -0
  74. package/dist/scraper/session-browserbase.d.ts.map +1 -1
  75. package/dist/scraper/session-browserbase.js +29 -0
  76. package/dist/scraper/session-browserbase.js.map +1 -1
  77. package/dist/scraper/session-ip.d.ts +69 -0
  78. package/dist/scraper/session-ip.d.ts.map +1 -0
  79. package/dist/scraper/session-ip.js +88 -0
  80. package/dist/scraper/session-ip.js.map +1 -0
  81. package/dist/scraper/session-shared.d.ts +9 -0
  82. package/dist/scraper/session-shared.d.ts.map +1 -1
  83. package/dist/scraper/session-shared.js.map +1 -1
  84. package/dist/scraper/submit-control.d.ts +14 -2
  85. package/dist/scraper/submit-control.d.ts.map +1 -1
  86. package/dist/scraper/submit-control.js +33 -2
  87. package/dist/scraper/submit-control.js.map +1 -1
  88. package/dist/scripts/recon-browser.d.ts.map +1 -1
  89. package/dist/scripts/recon-browser.js +32 -0
  90. package/dist/scripts/recon-browser.js.map +1 -1
  91. package/dist/site-plugin.d.ts +20 -0
  92. package/dist/site-plugin.d.ts.map +1 -1
  93. package/dist/testing/integration-runner.d.ts.map +1 -1
  94. package/dist/testing/integration-runner.js +6 -7
  95. package/dist/testing/integration-runner.js.map +1 -1
  96. package/package.json +1 -1
@@ -4,9 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SITE_PLUGINS = void 0;
7
+ exports.buildPluginContext = buildPluginContext;
7
8
  exports.dispatch = dispatch;
8
9
  exports.registerRoutes = registerRoutes;
9
10
  const multipart_1 = __importDefault(require("@fastify/multipart"));
11
+ const date_fns_1 = require("date-fns");
10
12
  const v4_1 = require("zod/v4");
11
13
  const errors_1 = require("../api/errors");
12
14
  const envelope_1 = require("../api/helpers/envelope");
@@ -16,6 +18,7 @@ const dispatch_metrics_1 = require("../lib/dispatch-metrics");
16
18
  const errors_2 = require("../lib/errors");
17
19
  const logging_1 = require("../lib/logging");
18
20
  const beacon_capture_1 = require("../lib/telemetry/beacon-capture");
21
+ const run_telemetry_1 = require("../lib/telemetry/run-telemetry");
19
22
  const submission_capture_1 = require("../lib/telemetry/submission-capture");
20
23
  const tracking_click_1 = require("../lib/tracking-click");
21
24
  const discover_1 = require("../plugins/discover");
@@ -58,6 +61,51 @@ function toApiError(err) {
58
61
  return new errors_1.ScrapeFailureError(err.message);
59
62
  return undefined;
60
63
  }
64
+ /**
65
+ * Builds the `SitePluginContext` core injects into every plugin call. Single
66
+ * shared factory for all three construction sites (`/run` route, extra
67
+ * routes, `runIntegrationJob`) so a new context member is a one-line change
68
+ * here instead of three drifting literals.
69
+ */
70
+ function buildPluginContext(input) {
71
+ const { plugin, cfg, requestId, logger, baseUrl } = input;
72
+ return {
73
+ baseUrl: baseUrl ?? cfg.scraper.siteBaseUrls[plugin.meta.siteId] ?? plugin.meta.defaultBaseUrl ?? "",
74
+ logger,
75
+ config: cfg,
76
+ requestId,
77
+ metricsCollector: new dispatch_metrics_1.MetricsCollector(),
78
+ recordBeaconOutcome: (0, beacon_capture_1.createBeaconOutcomeRecorder)({ requestId, siteId: plugin.meta.siteId }),
79
+ telemetry: new run_telemetry_1.RunTelemetry(),
80
+ };
81
+ }
82
+ /**
83
+ * Wraps a session-scoped plugin call so the acquired session's identity and
84
+ * outbound IP are recorded onto `context.telemetry` regardless of whether the
85
+ * call succeeds or throws. `runWithSession` (`src/scraper/pool.ts`) creates
86
+ * and closes the `BrowserSession` entirely inside its own callback — this is
87
+ * the only place still holding a reference to it, so it is the only place
88
+ * that can still query `getOutboundIp()` before the session is gone.
89
+ * Tolerates a null/absent session (the hot path never acquires one; some
90
+ * pool test doubles pass null) and an absent `getOutboundIp` (Steel has no
91
+ * accessor) by recording `ip: null, ipCapturedAt: null` in either case.
92
+ */
93
+ async function withSessionTelemetry(session, context, run) {
94
+ try {
95
+ return await run();
96
+ }
97
+ finally {
98
+ if (session) {
99
+ const ip = (await session.getOutboundIp?.()) ?? null;
100
+ context.telemetry.recordSession({
101
+ sessionId: session.sessionId,
102
+ provider: session.provider,
103
+ ip,
104
+ ipCapturedAt: ip ? (0, date_fns_1.formatISO)(new Date()) : null,
105
+ });
106
+ }
107
+ }
108
+ }
61
109
  /**
62
110
  * Runs the hot path (when available) + fallback pipeline for a single
63
111
  * submission. Extracted so dispatch() reads as a linear "run pipeline,
@@ -70,7 +118,7 @@ async function runPluginPipeline(plugin, payload, context, options) {
70
118
  (0, metrics_1.recordFallbackActivation)(plugin.meta.siteId);
71
119
  (0, dd_metrics_1.recordDdFallback)(plugin.meta.siteId);
72
120
  }
73
- return (await (0, pool_1.runWithSession)((session) => plugin.execute(payload, session, context), { onRetry: plugin.onRetry, maxAttempts: plugin.meta.maxAttempts }, plugin.meta.taskTimeoutMs, {
121
+ return (await (0, pool_1.runWithSession)((session) => withSessionTelemetry(session, context, () => plugin.execute(payload, session, context)), { onRetry: plugin.onRetry, maxAttempts: plugin.meta.maxAttempts }, plugin.meta.taskTimeoutMs, {
74
122
  advancedStealth: plugin.meta.advancedStealth,
75
123
  ...(plugin.meta.browserbaseSessionCreateParams && {
76
124
  browserbaseSessionCreateParams: plugin.meta.browserbaseSessionCreateParams,
@@ -98,7 +146,7 @@ async function runPluginPipeline(plugin, payload, context, options) {
98
146
  logger.warn(`hot path failed for ${plugin.meta.siteId} (${httpErr.constructor.name}): ${httpErr.message} — engaging browser fallback`);
99
147
  (0, metrics_1.recordFallbackActivation)(plugin.meta.siteId);
100
148
  (0, dd_metrics_1.recordDdFallback)(plugin.meta.siteId);
101
- return (await (0, pool_1.runWithSession)((session) => plugin.execute(payload, session, context), { onRetry: plugin.onRetry, maxAttempts: plugin.meta.maxAttempts }, plugin.meta.taskTimeoutMs, {
149
+ return (await (0, pool_1.runWithSession)((session) => withSessionTelemetry(session, context, () => plugin.execute(payload, session, context)), { onRetry: plugin.onRetry, maxAttempts: plugin.meta.maxAttempts }, plugin.meta.taskTimeoutMs, {
102
150
  advancedStealth: plugin.meta.advancedStealth,
103
151
  ...(plugin.meta.browserbaseSessionCreateParams && {
104
152
  browserbaseSessionCreateParams: plugin.meta.browserbaseSessionCreateParams,
@@ -145,6 +193,33 @@ async function emitBeaconSafely(input) {
145
193
  logger.warn(`beacon event emit failed: ${(0, errors_2.toErrorMessage)(err)}`);
146
194
  }
147
195
  }
196
+ /**
197
+ * Merges a plugin's pre-run `extractJoinKeys(payload)` result with whatever
198
+ * it attached mid-run via `context.telemetry.addJoinKeys()`, run-attached
199
+ * fields winning on collision. Stays `null` (not `{}`) when both sources are
200
+ * empty so the envelope's `joinKeys: null` precedent holds for a plugin that
201
+ * uses neither mechanism.
202
+ */
203
+ function mergeJoinKeys(extracted, attached) {
204
+ if (!extracted && !attached)
205
+ return null;
206
+ return { ...extracted, ...attached };
207
+ }
208
+ /**
209
+ * Maps `RunTelemetry`'s collector-shaped session record (`sessionId`) onto
210
+ * the durable envelope's persisted shape (`id`) documented in
211
+ * `docs/telemetry-and-judging.md`'s "session" field.
212
+ */
213
+ function toEnvelopeSession(session) {
214
+ if (!session)
215
+ return null;
216
+ return {
217
+ id: session.sessionId,
218
+ provider: session.provider,
219
+ ip: session.ip,
220
+ ipCapturedAt: session.ipCapturedAt,
221
+ };
222
+ }
148
223
  /**
149
224
  * Runs a single plugin submission end-to-end. Tries the direct-HTTP hot path
150
225
  * first when the plugin supplies `executeHttp`; on `HttpSchemaError`,
@@ -175,7 +250,7 @@ async function dispatch(plugin, payload, context, options = {}) {
175
250
  const hasHttpPath = !!plugin.executeHttp && !options.forceFallback;
176
251
  const pathTag = hasHttpPath ? "http" : "browser";
177
252
  const ddTags = { site: plugin.meta.siteId, path: pathTag };
178
- const joinKeys = plugin.extractJoinKeys?.(payload) ?? null;
253
+ const extractedJoinKeys = plugin.extractJoinKeys?.(payload) ?? null;
179
254
  const managesOwnTracking = !!plugin.extractJoinKeys;
180
255
  (0, dd_metrics_1.recordDdAttempt)(ddTags);
181
256
  try {
@@ -193,10 +268,13 @@ async function dispatch(plugin, payload, context, options = {}) {
193
268
  (0, dd_metrics_1.recordDdDuration)(ddTags, durationMs);
194
269
  const metrics = context.metricsCollector.finalize(pathTag);
195
270
  result.metrics = metrics;
271
+ const successSnapshot = context.telemetry.snapshot();
272
+ const joinKeys = mergeJoinKeys(extractedJoinKeys, successSnapshot.joinKeys);
196
273
  await emitEnvelopeSafely({
197
274
  siteId: plugin.meta.siteId,
198
275
  requestId: context.requestId,
199
276
  joinKeys,
277
+ session: toEnvelopeSession(successSnapshot.session),
200
278
  inboundPayload: payload,
201
279
  status: "submitted",
202
280
  auditPayload: result.auditPayload ?? result.data,
@@ -236,10 +314,13 @@ async function dispatch(plugin, payload, context, options = {}) {
236
314
  (0, dd_metrics_1.recordDdFailure)(failureTags);
237
315
  (0, dd_metrics_1.recordDdDuration)(ddTags, durationMs);
238
316
  const metrics = context.metricsCollector.finalize(pathTag);
317
+ const errorSnapshot = context.telemetry.snapshot();
318
+ const joinKeys = mergeJoinKeys(extractedJoinKeys, errorSnapshot.joinKeys);
239
319
  await emitEnvelopeSafely({
240
320
  siteId: plugin.meta.siteId,
241
321
  requestId: context.requestId,
242
322
  joinKeys,
323
+ session: toEnvelopeSession(errorSnapshot.session),
243
324
  inboundPayload: payload,
244
325
  status: "error",
245
326
  auditPayload: null,
@@ -302,7 +383,6 @@ async function registerRoutes(app, cfg, plugins) {
302
383
  }
303
384
  for (const plugin of plugins) {
304
385
  const routePath = plugin.meta.routeOverride ?? `/v1/${plugin.meta.siteId}/run`;
305
- const baseUrl = cfg.scraper.siteBaseUrls[plugin.meta.siteId] ?? plugin.meta.defaultBaseUrl ?? "";
306
386
  app.post(routePath, {
307
387
  onRequest: [app.authenticate],
308
388
  schema: {
@@ -312,13 +392,12 @@ async function registerRoutes(app, cfg, plugins) {
312
392
  },
313
393
  }, async (request) => {
314
394
  const forceFallback = request.headers["x-barnacle-execution"] === "browser";
315
- const context = {
316
- baseUrl,
317
- logger: (0, logging_1.extendLogger)(request.log),
318
- config: cfg,
395
+ const context = buildPluginContext({
396
+ plugin,
397
+ cfg,
319
398
  requestId: request.id,
320
- metricsCollector: new dispatch_metrics_1.MetricsCollector(),
321
- };
399
+ logger: (0, logging_1.extendLogger)(request.log),
400
+ });
322
401
  const result = await dispatch(plugin, request.body, context, { forceFallback });
323
402
  return (0, envelope_1.successEnvelope)({
324
403
  ...result.data,
@@ -389,14 +468,12 @@ function registerExtraRoutes(app, cfg, plugins) {
389
468
  // above); shared routes defer body validation to here, against the
390
469
  // resolved plugin's own contract.
391
470
  const body = shared && route.bodySchema ? route.bodySchema.parse(request.body) : request.body;
392
- const baseUrl = cfg.scraper.siteBaseUrls[plugin.meta.siteId] ?? plugin.meta.defaultBaseUrl ?? "";
393
- const context = {
394
- baseUrl,
395
- logger: (0, logging_1.extendLogger)(request.log),
396
- config: cfg,
471
+ const context = buildPluginContext({
472
+ plugin,
473
+ cfg,
397
474
  requestId: request.id,
398
- metricsCollector: new dispatch_metrics_1.MetricsCollector(),
399
- };
475
+ logger: (0, logging_1.extendLogger)(request.log),
476
+ });
400
477
  const result = await route.handler({
401
478
  body,
402
479
  params: request.params,
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Fill/select actuation seam over `deepLocator`, mirroring
3
+ * `clickDeepLocatorCandidate`'s contract (`deep-locator-candidates.ts`) for
4
+ * the two other primitives a cross-origin OOPIF form's text/select steps
5
+ * need. Stagehand `act`/`observe` are measured blind inside that OOPIF, and
6
+ * `verifyDomEffect` (`flow-runner.ts`) can't locate a `deeplocator=` selector
7
+ * to confirm the write, so both actuators here read the written value back
8
+ * through the same delegate before reporting success — the caller gets a
9
+ * trustworthy boolean instead of a downstream verifier that can never fire.
10
+ *
11
+ * Both actuators prefer one batched `frameTarget.evaluate(buildFillFrameCandidateExpr(...) |
12
+ * buildSelectFrameCandidateExpr(...))` round-trip (`deep-locator-scan.ts`) over
13
+ * the legacy `deepLocator(hop).nth(index).fill()`/`.selectOption()` +
14
+ * `.inputValue()` pair, which pays Stagehand's `index + 1` serial
15
+ * `resolveAtIndex` round-trips per call — the same cost
16
+ * `clickDeepLocatorCandidate` already batches away. The legacy fallback's
17
+ * watchdog budget scales with `index` using
18
+ * {@link DEEP_LOCATOR_CLICK_INDEX_ROUND_TRIP_MS} — the same per-round-trip
19
+ * constant `clickDeepLocatorCandidate` uses — so a legitimately-reachable
20
+ * candidate deep in a dense OOPIF form isn't killed by a budget sized for one
21
+ * round-trip.
22
+ */
23
+ import type { Page } from "@browserbasehq/stagehand";
24
+ import { type FrameTarget } from "../scraper/frame-target";
25
+ /** Overrides for the watchdog timeout this module applies to every `deepLocator()` await; tests pass small values so cases don't burn wall-clock. */
26
+ export interface DeepLocatorActuateTimeoutOptions {
27
+ /** Per-call watchdog timeout for `fill()`/`selectOption()`/`inputValue()`. Defaults to {@link DEFAULT_DEEP_LOCATOR_CALL_TIMEOUT_MS}. */
28
+ callTimeoutMs?: number;
29
+ /**
30
+ * Pre-resolved `FrameTarget` to actuate via one batched
31
+ * `evaluate(buildFillFrameCandidateExpr(...) | buildSelectFrameCandidateExpr(...))`
32
+ * round-trip instead of the legacy `nth(index)` delegate pair. When
33
+ * omitted, a single non-polling `probeAttachedFrameTarget(page,
34
+ * frameSelector)` pass (`frame-target.ts`) is attempted internally so
35
+ * existing call sites get the batched fast path for free. Unlike a bare
36
+ * `resolveFrameTarget(page, frameSelector, { timeoutMs: 0 })` pass — which
37
+ * always loses the race against genuine CDP latency — this probe carries a
38
+ * real per-probe budget (`config.scraper.framePresenceProbeFloorMs`), so it
39
+ * can actually land against an already-attached frame under live latency.
40
+ * If the probe doesn't land a resolved child frame, the legacy delegate
41
+ * path runs unchanged — the same degrade contract
42
+ * `deep-locator-candidates.ts`'s `resolveScanFrameTarget` uses for the
43
+ * scan/click seam. A caller that already resolved a `FrameTarget` (e.g.
44
+ * `flow-runner.ts`'s per-step resolution) should pass it here to skip the
45
+ * redundant internal probe.
46
+ */
47
+ frameTarget?: FrameTarget;
48
+ }
49
+ /**
50
+ * Fills the candidate at `index` inside the frame scoped by `frameSelector`
51
+ * with `value`, re-deriving the same hop selector
52
+ * `resolveDeepLocatorCandidates` used (`deep-locator-candidates.ts`) rather
53
+ * than trusting a candidate's display `selector` (`deeplocator=`-prefixed,
54
+ * deliberately not an xpath).
55
+ *
56
+ * Prefers the one-round-trip {@link actuateCandidateBatched} fast path when a
57
+ * frame seam is available: a `written: true` result whose inline `readBack`
58
+ * already matches `value` resolves `true` immediately (no second round-trip
59
+ * needed); a `reason: "not-actionable"` result (the matched element has no
60
+ * layout box) resolves `false` immediately — no delegate write against that
61
+ * same node could succeed either. Every other batched outcome — no frame
62
+ * seam, a rejecting or non-conforming evaluate, `reason: "out-of-range"`, or
63
+ * a `written: true` result whose inline `readBack` disagrees with `value`
64
+ * (e.g. a controlled component's `onChange` reverted the write on a tick the
65
+ * single synchronous evaluate call couldn't observe) — degrades to the
66
+ * legacy `deepLocator(hop).nth(index).fill()` + `.inputValue()` pair rather
67
+ * than trusting the batched call's verdict outright: returns `true` only
68
+ * when that separate read-back equals `value`, and `false` — never a throw —
69
+ * when the delegate rejects the fill/read-back or the read-back disagrees.
70
+ * The legacy path's watchdog budget scales with `index`
71
+ * ({@link DEEP_LOCATOR_CLICK_INDEX_ROUND_TRIP_MS}, the same per-round-trip
72
+ * cost `clickDeepLocatorCandidate`'s legacy fallback charges), so a candidate
73
+ * deep in a dense OOPIF form isn't killed by a budget sized for a single
74
+ * round-trip. A wedged `fill()`/`inputValue()` call that still exceeds that
75
+ * scaled budget rejects with a `WatchdogTimeoutError` instead of hanging the
76
+ * caller, the same "rejects on a genuine hang" contract
77
+ * `clickDeepLocatorCandidate` uses.
78
+ */
79
+ export declare function fillDeepLocatorCandidate(page: Page, frameSelector: string | null | undefined, innerSelector: string, index: number, value: string, timeoutOptions?: DeepLocatorActuateTimeoutOptions): Promise<boolean>;
80
+ /**
81
+ * Selects `value` on the `<select>`-shaped candidate at `index` inside the
82
+ * frame scoped by `frameSelector`, under the same re-derived-hop,
83
+ * batched-first, index-scaled-watchdog-guarded contract as
84
+ * {@link fillDeepLocatorCandidate} — `selectOption()` is the legacy write,
85
+ * and `inputValue()` (which reads a `<select>`'s selected value the same as
86
+ * any other form control) is the legacy confirmation. Differs from
87
+ * `fillDeepLocatorCandidate` in one respect: a batched `written: true` result
88
+ * resolves `true` on its own, without comparing `readBack` to `value` —
89
+ * {@link buildSelectFrameCandidateExpr} matches an option by value OR trimmed
90
+ * label, so `readBack` (the MATCHED option's value) can legitimately differ
91
+ * from a caller-supplied label string even on a successful write.
92
+ */
93
+ export declare function selectDeepLocatorCandidateOption(page: Page, frameSelector: string | null | undefined, innerSelector: string, index: number, value: string, timeoutOptions?: DeepLocatorActuateTimeoutOptions): Promise<boolean>;
94
+ //# sourceMappingURL=deep-locator-actuate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-locator-actuate.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-locator-actuate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAUrD,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,wBAAwB,CAAC;AAehC,qJAAqJ;AACrJ,MAAM,WAAW,gCAAgC;IAC/C,wIAAwI;IACxI,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAgHD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,cAAc,GAAE,gCAAqC,GACpD,OAAO,CAAC,OAAO,CAAC,CA8BlB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,cAAc,GAAE,gCAAqC,GACpD,OAAO,CAAC,OAAO,CAAC,CA8BlB"}
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ /**
3
+ * Fill/select actuation seam over `deepLocator`, mirroring
4
+ * `clickDeepLocatorCandidate`'s contract (`deep-locator-candidates.ts`) for
5
+ * the two other primitives a cross-origin OOPIF form's text/select steps
6
+ * need. Stagehand `act`/`observe` are measured blind inside that OOPIF, and
7
+ * `verifyDomEffect` (`flow-runner.ts`) can't locate a `deeplocator=` selector
8
+ * to confirm the write, so both actuators here read the written value back
9
+ * through the same delegate before reporting success — the caller gets a
10
+ * trustworthy boolean instead of a downstream verifier that can never fire.
11
+ *
12
+ * Both actuators prefer one batched `frameTarget.evaluate(buildFillFrameCandidateExpr(...) |
13
+ * buildSelectFrameCandidateExpr(...))` round-trip (`deep-locator-scan.ts`) over
14
+ * the legacy `deepLocator(hop).nth(index).fill()`/`.selectOption()` +
15
+ * `.inputValue()` pair, which pays Stagehand's `index + 1` serial
16
+ * `resolveAtIndex` round-trips per call — the same cost
17
+ * `clickDeepLocatorCandidate` already batches away. The legacy fallback's
18
+ * watchdog budget scales with `index` using
19
+ * {@link DEEP_LOCATOR_CLICK_INDEX_ROUND_TRIP_MS} — the same per-round-trip
20
+ * constant `clickDeepLocatorCandidate` uses — so a legitimately-reachable
21
+ * candidate deep in a dense OOPIF form isn't killed by a budget sized for one
22
+ * round-trip.
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.fillDeepLocatorCandidate = fillDeepLocatorCandidate;
26
+ exports.selectDeepLocatorCandidateOption = selectDeepLocatorCandidateOption;
27
+ const errors_1 = require("../lib/errors");
28
+ const logging_1 = require("../lib/logging");
29
+ const deep_locator_scan_1 = require("../scraper/deep-locator-scan");
30
+ const frame_target_1 = require("../scraper/frame-target");
31
+ const watchdog_1 = require("../scraper/watchdog");
32
+ const logger = (0, logging_1.getLogger)({ name: "scraper/deep-locator-actuate" });
33
+ /**
34
+ * Per-CDP-call watchdog default: bounds a single `fill()`/`selectOption()`/
35
+ * `inputValue()` round-trip. Owned locally (not imported from
36
+ * `deep-locator-candidates.ts` or `flow-runner.ts`) so this module stays a
37
+ * self-contained leaf, matching how `deep-locator-candidates.ts` already
38
+ * avoids the `flow-runner.ts` import cycle by owning its own timeout
39
+ * constant.
40
+ */
41
+ const DEFAULT_DEEP_LOCATOR_CALL_TIMEOUT_MS = 10_000;
42
+ /**
43
+ * Runs `write`, then `readBack`, and reports whether the read-back matches
44
+ * `expected` — the shared write/verify shape `fillDeepLocatorCandidate` and
45
+ * `selectDeepLocatorCandidateOption` both need, differing only in which
46
+ * delegate method performs the write. A {@link WatchdogTimeoutError} from
47
+ * either await (a wedged CDP round-trip) propagates so the caller can tell a
48
+ * genuine hang apart from an ordinary failed write — everything else (the
49
+ * delegate rejecting, or a read-back that disagrees with `expected`) resolves
50
+ * to `false` instead of throwing.
51
+ */
52
+ async function writeAndVerify(write, readBack, expected) {
53
+ try {
54
+ await write();
55
+ }
56
+ catch (error) {
57
+ if (error instanceof watchdog_1.WatchdogTimeoutError)
58
+ throw error;
59
+ return false;
60
+ }
61
+ try {
62
+ return (await readBack()) === expected;
63
+ }
64
+ catch (error) {
65
+ if (error instanceof watchdog_1.WatchdogTimeoutError)
66
+ throw error;
67
+ return false;
68
+ }
69
+ }
70
+ /**
71
+ * Resolves the `FrameTarget` a batched actuation evaluate should run
72
+ * against: `timeoutOptions.frameTarget` when the caller already resolved
73
+ * one, else a single non-polling `probeAttachedFrameTarget(page,
74
+ * frameSelector)` pass (`frame-target.ts`) so existing call sites — which
75
+ * pass only a `frameSelector` string — still get the batched fast path
76
+ * without themselves changing. Unlike a bare `resolveFrameTarget(page,
77
+ * frameSelector, { timeoutMs: 0 })` pass, the probe carries a real per-probe
78
+ * budget, so it can land against an already-attached frame under genuine CDP
79
+ * latency instead of always losing a zero-budget race. Returns `null` (never
80
+ * throws) when `frameSelector` is unset, the probe rejects (e.g. a fake
81
+ * `Page` in a legacy-path test lacking `evaluate`/`frames`), or nothing
82
+ * attaches within the probe's budget — each of those means "no frame seam
83
+ * available", and the caller degrades to the legacy delegate path. Mirrors
84
+ * `deep-locator-candidates.ts`'s `resolveScanFrameTarget` exactly; duplicated
85
+ * (not imported) so this module stays a leaf that never depends on
86
+ * `deep-locator-candidates.ts`.
87
+ */
88
+ async function resolveActuateFrameTarget(page, frameSelector, timeoutOptions) {
89
+ if (timeoutOptions.frameTarget)
90
+ return timeoutOptions.frameTarget;
91
+ if (!frameSelector)
92
+ return null;
93
+ try {
94
+ return await (0, frame_target_1.probeAttachedFrameTarget)(page, frameSelector);
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ }
100
+ /** Narrows a batched fill/select evaluate result to {@link FrameCandidateWriteResult}'s shape, guarding against a non-conforming payload (the same degrade-to-legacy contract `deep-locator-candidates.ts`'s `isFrameCandidateScanResult`/`isFrameCandidateClickResult` enforce). */
101
+ function isFrameCandidateWriteResult(entry) {
102
+ if (typeof entry !== "object" || entry === null)
103
+ return false;
104
+ const result = entry;
105
+ if (typeof result.written !== "boolean")
106
+ return false;
107
+ if (result.written)
108
+ return typeof result.readBack === "string";
109
+ return result.reason === "out-of-range" || result.reason === "not-actionable";
110
+ }
111
+ /**
112
+ * Batched fill/select fast path: one `frameTarget.evaluate(expression)`
113
+ * round-trip replaces the legacy `nth(index).fill()`/`.selectOption()` +
114
+ * `.inputValue()` pair. Returns `null` (never throws) when no frame seam is
115
+ * available, the evaluate call rejects, or the resolved payload doesn't
116
+ * conform to {@link FrameCandidateWriteResult} — every one of those degrades
117
+ * the caller to the legacy delegate path instead of losing the write,
118
+ * mirroring `clickCandidateBatched`'s degrade contract
119
+ * (`deep-locator-candidates.ts`).
120
+ */
121
+ async function actuateCandidateBatched(page, frameSelector, hopSelector, index, timeoutOptions, expression, actionLabel) {
122
+ const frameTarget = await resolveActuateFrameTarget(page, frameSelector, timeoutOptions);
123
+ if (!frameTarget)
124
+ return null;
125
+ let result;
126
+ try {
127
+ result = await frameTarget.evaluate(expression);
128
+ }
129
+ catch (err) {
130
+ logger.warn(`deepLocator batched ${actionLabel} for ${hopSelector} nth=${index} failed, degrading to delegate ${actionLabel}: ${(0, errors_1.toErrorMessage)(err)}`);
131
+ return null;
132
+ }
133
+ if (!isFrameCandidateWriteResult(result)) {
134
+ logger.warn(`deepLocator batched ${actionLabel} for ${hopSelector} nth=${index} returned a non-conforming payload, degrading to delegate ${actionLabel}`);
135
+ return null;
136
+ }
137
+ return result;
138
+ }
139
+ /**
140
+ * Fills the candidate at `index` inside the frame scoped by `frameSelector`
141
+ * with `value`, re-deriving the same hop selector
142
+ * `resolveDeepLocatorCandidates` used (`deep-locator-candidates.ts`) rather
143
+ * than trusting a candidate's display `selector` (`deeplocator=`-prefixed,
144
+ * deliberately not an xpath).
145
+ *
146
+ * Prefers the one-round-trip {@link actuateCandidateBatched} fast path when a
147
+ * frame seam is available: a `written: true` result whose inline `readBack`
148
+ * already matches `value` resolves `true` immediately (no second round-trip
149
+ * needed); a `reason: "not-actionable"` result (the matched element has no
150
+ * layout box) resolves `false` immediately — no delegate write against that
151
+ * same node could succeed either. Every other batched outcome — no frame
152
+ * seam, a rejecting or non-conforming evaluate, `reason: "out-of-range"`, or
153
+ * a `written: true` result whose inline `readBack` disagrees with `value`
154
+ * (e.g. a controlled component's `onChange` reverted the write on a tick the
155
+ * single synchronous evaluate call couldn't observe) — degrades to the
156
+ * legacy `deepLocator(hop).nth(index).fill()` + `.inputValue()` pair rather
157
+ * than trusting the batched call's verdict outright: returns `true` only
158
+ * when that separate read-back equals `value`, and `false` — never a throw —
159
+ * when the delegate rejects the fill/read-back or the read-back disagrees.
160
+ * The legacy path's watchdog budget scales with `index`
161
+ * ({@link DEEP_LOCATOR_CLICK_INDEX_ROUND_TRIP_MS}, the same per-round-trip
162
+ * cost `clickDeepLocatorCandidate`'s legacy fallback charges), so a candidate
163
+ * deep in a dense OOPIF form isn't killed by a budget sized for a single
164
+ * round-trip. A wedged `fill()`/`inputValue()` call that still exceeds that
165
+ * scaled budget rejects with a `WatchdogTimeoutError` instead of hanging the
166
+ * caller, the same "rejects on a genuine hang" contract
167
+ * `clickDeepLocatorCandidate` uses.
168
+ */
169
+ async function fillDeepLocatorCandidate(page, frameSelector, innerSelector, index, value, timeoutOptions = {}) {
170
+ const callTimeoutMs = timeoutOptions.callTimeoutMs ?? DEFAULT_DEEP_LOCATOR_CALL_TIMEOUT_MS;
171
+ const hopSelector = (0, frame_target_1.buildHopSelector)(frameSelector, innerSelector);
172
+ const batchedResult = await actuateCandidateBatched(page, frameSelector, hopSelector, index, timeoutOptions, (0, deep_locator_scan_1.buildFillFrameCandidateExpr)(innerSelector, index, value), "fill");
173
+ if (batchedResult?.written && batchedResult.readBack === value)
174
+ return true;
175
+ if (batchedResult?.reason === "not-actionable")
176
+ return false;
177
+ const scaledCallTimeoutMs = callTimeoutMs + index * deep_locator_scan_1.DEEP_LOCATOR_CLICK_INDEX_ROUND_TRIP_MS;
178
+ return writeAndVerify(() => (0, watchdog_1.withWatchdog)(() => page.deepLocator(hopSelector).nth(index).fill(value), {
179
+ timeoutMs: scaledCallTimeoutMs,
180
+ label: `deepLocator fill() for ${hopSelector} nth=${index}`,
181
+ }), () => (0, watchdog_1.withWatchdog)(() => page.deepLocator(hopSelector).nth(index).inputValue(), {
182
+ timeoutMs: scaledCallTimeoutMs,
183
+ label: `deepLocator inputValue() for ${hopSelector} nth=${index}`,
184
+ }), value);
185
+ }
186
+ /**
187
+ * Selects `value` on the `<select>`-shaped candidate at `index` inside the
188
+ * frame scoped by `frameSelector`, under the same re-derived-hop,
189
+ * batched-first, index-scaled-watchdog-guarded contract as
190
+ * {@link fillDeepLocatorCandidate} — `selectOption()` is the legacy write,
191
+ * and `inputValue()` (which reads a `<select>`'s selected value the same as
192
+ * any other form control) is the legacy confirmation. Differs from
193
+ * `fillDeepLocatorCandidate` in one respect: a batched `written: true` result
194
+ * resolves `true` on its own, without comparing `readBack` to `value` —
195
+ * {@link buildSelectFrameCandidateExpr} matches an option by value OR trimmed
196
+ * label, so `readBack` (the MATCHED option's value) can legitimately differ
197
+ * from a caller-supplied label string even on a successful write.
198
+ */
199
+ async function selectDeepLocatorCandidateOption(page, frameSelector, innerSelector, index, value, timeoutOptions = {}) {
200
+ const callTimeoutMs = timeoutOptions.callTimeoutMs ?? DEFAULT_DEEP_LOCATOR_CALL_TIMEOUT_MS;
201
+ const hopSelector = (0, frame_target_1.buildHopSelector)(frameSelector, innerSelector);
202
+ const batchedResult = await actuateCandidateBatched(page, frameSelector, hopSelector, index, timeoutOptions, (0, deep_locator_scan_1.buildSelectFrameCandidateExpr)(innerSelector, index, value), "select");
203
+ if (batchedResult?.written)
204
+ return true;
205
+ if (batchedResult?.reason === "not-actionable")
206
+ return false;
207
+ const scaledCallTimeoutMs = callTimeoutMs + index * deep_locator_scan_1.DEEP_LOCATOR_CLICK_INDEX_ROUND_TRIP_MS;
208
+ return writeAndVerify(() => (0, watchdog_1.withWatchdog)(() => page.deepLocator(hopSelector).nth(index).selectOption(value), {
209
+ timeoutMs: scaledCallTimeoutMs,
210
+ label: `deepLocator selectOption() for ${hopSelector} nth=${index}`,
211
+ }), () => (0, watchdog_1.withWatchdog)(() => page.deepLocator(hopSelector).nth(index).inputValue(), {
212
+ timeoutMs: scaledCallTimeoutMs,
213
+ label: `deepLocator inputValue() for ${hopSelector} nth=${index}`,
214
+ }), value);
215
+ }
216
+ //# sourceMappingURL=deep-locator-actuate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-locator-actuate.js","sourceRoot":"","sources":["../../src/scraper/deep-locator-actuate.ts"],"names":[],"mappings":"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"}