@enricai/barnacle 1.6.0 → 1.6.2

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 (57) hide show
  1. package/README.md +66 -7
  2. package/dist/scraper/cookie-jar.d.ts +19 -0
  3. package/dist/scraper/cookie-jar.d.ts.map +1 -0
  4. package/dist/scraper/cookie-jar.js +43 -0
  5. package/dist/scraper/cookie-jar.js.map +1 -0
  6. package/dist/scraper/deep-query.d.ts +36 -0
  7. package/dist/scraper/deep-query.d.ts.map +1 -0
  8. package/dist/scraper/deep-query.js +87 -0
  9. package/dist/scraper/deep-query.js.map +1 -0
  10. package/dist/scraper/errors.d.ts +11 -2
  11. package/dist/scraper/errors.d.ts.map +1 -1
  12. package/dist/scraper/errors.js +10 -1
  13. package/dist/scraper/errors.js.map +1 -1
  14. package/dist/scraper/flow-runner.d.ts +55 -4
  15. package/dist/scraper/flow-runner.d.ts.map +1 -1
  16. package/dist/scraper/flow-runner.js +259 -50
  17. package/dist/scraper/flow-runner.js.map +1 -1
  18. package/dist/scraper/phantom-click.d.ts +45 -0
  19. package/dist/scraper/phantom-click.d.ts.map +1 -0
  20. package/dist/scraper/phantom-click.js +37 -0
  21. package/dist/scraper/phantom-click.js.map +1 -0
  22. package/dist/scraper/session-browserbase.d.ts +48 -0
  23. package/dist/scraper/session-browserbase.d.ts.map +1 -1
  24. package/dist/scraper/session-browserbase.js +10 -5
  25. package/dist/scraper/session-browserbase.js.map +1 -1
  26. package/dist/scraper/session-shared.d.ts +6 -0
  27. package/dist/scraper/session-shared.d.ts.map +1 -1
  28. package/dist/scraper/session-shared.js.map +1 -1
  29. package/dist/scraper/submit-control.d.ts +51 -0
  30. package/dist/scraper/submit-control.d.ts.map +1 -0
  31. package/dist/scraper/submit-control.js +142 -0
  32. package/dist/scraper/submit-control.js.map +1 -0
  33. package/dist/scripts/recon-browser.d.ts +34 -12
  34. package/dist/scripts/recon-browser.d.ts.map +1 -1
  35. package/dist/scripts/recon-browser.js +78 -33
  36. package/dist/scripts/recon-browser.js.map +1 -1
  37. package/dist/scripts/recon-generate.d.ts +28 -7
  38. package/dist/scripts/recon-generate.d.ts.map +1 -1
  39. package/dist/scripts/recon-generate.js +50 -24
  40. package/dist/scripts/recon-generate.js.map +1 -1
  41. package/dist/scripts/recon-http.d.ts +36 -5
  42. package/dist/scripts/recon-http.d.ts.map +1 -1
  43. package/dist/scripts/recon-http.js +77 -47
  44. package/dist/scripts/recon-http.js.map +1 -1
  45. package/dist/scripts/recon-replay-jobs.d.ts +25 -1
  46. package/dist/scripts/recon-replay-jobs.d.ts.map +1 -1
  47. package/dist/scripts/recon-replay-jobs.js +33 -23
  48. package/dist/scripts/recon-replay-jobs.js.map +1 -1
  49. package/dist/scripts/recon-shared.d.ts +68 -0
  50. package/dist/scripts/recon-shared.d.ts.map +1 -1
  51. package/dist/scripts/recon-shared.js +94 -1
  52. package/dist/scripts/recon-shared.js.map +1 -1
  53. package/dist/scripts/recon-summarize.d.ts +5 -1
  54. package/dist/scripts/recon-summarize.d.ts.map +1 -1
  55. package/dist/scripts/recon-summarize.js +19 -7
  56. package/dist/scripts/recon-summarize.js.map +1 -1
  57. package/package.json +9 -1
package/README.md CHANGED
@@ -29,7 +29,7 @@ Human involvement is one recon run up front and a small PR when things change.
29
29
 
30
30
  | Phase | What runs | What you get |
31
31
  |-------|-----------|--------------|
32
- | **1 — Browser recon** | `pnpm run recon:browser` | Every API call the site makes, captured to `/tmp/recon/graphql/*.json` |
32
+ | **1 — Browser recon** | `pnpm run recon:browser` | Every API call the site makes, captured to `<run-dir>/graphql/*.json` |
33
33
  | **2–3 — HTTP replay + probing** | `pnpm run recon:http` | Proof each endpoint works without a browser; rate-limit ceiling; static fixtures |
34
34
  | **4 — Plugin generation** | `pnpm run recon:generate` | A complete plugin: Zod schemas, headers, Bottleneck config, hot-path client, Stagehand fallback |
35
35
  | **5+ — Runtime** | `pnpm start` | Direct HTTP hot path, automatic browser fallback, nightly smoke test, drift detection |
@@ -100,19 +100,78 @@ pnpm run recon:browser -- --url https://example.com
100
100
 
101
101
  Drives a real Stagehand + Steel browser through your flow. Captures are wired via a single CDP session-level listener (`page.getSessionForFrame().on(...)`) — Stagehand V3 enables the Network domain internally, so attaching our `Network.requestWillBeSent` / `responseReceived` / `loadingFinished` listeners on the main session catches every response, including the early ones that fire before any page-level handler could be wired.
102
102
 
103
- Captures every network call matching `/graph`, `/api/`, `/graphql`, `/v1/`, or `*.json` to `/tmp/recon/graphql/<NNN>-<phase>-<operationName>.json` — one file per call, diffable and greppable. Use `--capture-all` for sites with non-standard API paths; it captures every response, producing more noise but missing nothing. Omitting both `--flow` and `--flow-file` runs zero interaction steps and captures only the network activity that fires during page navigation — useful for pure GET-style SPAs that fetch everything they need on load.
103
+ Captures every network call matching `/graph`, `/api/`, `/graphql`, `/v1/`, or `*.json` to `<run-dir>/graphql/<NNN>-<phase>-<operationName>.json` — one file per call, diffable and greppable. Use `--capture-all` for sites with non-standard API paths; it captures every response, producing more noise but missing nothing. Omitting both `--flow` and `--flow-file` runs zero interaction steps and captures only the network activity that fires during page navigation — useful for pure GET-style SPAs that fetch everything they need on load.
104
104
 
105
- Each step runs through a self-healing cascade (`act` → `observe + act` → `observe + act` with `ignoreSelectors` → Anthropic-SDK rephrase) verified by network-counter delta or URL change. The script's `main()` attempts up to two global flow replans before giving up; terminal failures dump a diagnostic bundle to `/tmp/recon/step-failures/`. See [docs/playbook.md#1c--self-healing-cascade](./docs/playbook.md#1c--self-healing-cascade) for the full design.
105
+ Each step runs through a self-healing cascade (`act` → `observe + act` → `observe + act` with `ignoreSelectors` → Anthropic-SDK rephrase) verified by network-counter delta or URL change. The script's `main()` attempts up to two global flow replans before giving up; terminal failures dump a diagnostic bundle to `<run-dir>/step-failures/`. See [docs/playbook.md#1c--self-healing-cascade](./docs/playbook.md#1c--self-healing-cascade) for the full design.
106
106
 
107
107
  Total runtime: 20–40 minutes for a typical flow (longer if healing or replans fire), fully unattended.
108
108
 
109
+ Every artifact — captures, cookie-jar snapshots, step-failure dumps, DOM dumps — is rooted under one run-scoped directory resolved once at startup: `<run-dir>` defaults to `/tmp/recon/<runId>`, where `<runId>` is a timestamp + random suffix generated per process (e.g. `20260718-120326-a1b2`). Set `RECON_RUN_ID` to pin a deterministic runId (e.g. for tests or replaying a known run) and `RECON_OUT_DIR` to override the base directory runs are rooted under. This keeps concurrent or repeated runs from intermixing files — the startup log line prints both the resolved `runId` and `out=<run-dir>`.
110
+
111
+ #### Cookie-jar snapshots
112
+
113
+ Alongside the network captures, every run snapshots the browser's complete cookie jar (via CDP `Network.getAllCookies`, which returns the whole-browser jar regardless of the current page's URL — unlike `document.cookie` or `Page.getCookies`, it also sees HttpOnly cookies) at each phase boundary: the initial goto, immediately before each flow step (`pre-step`), immediately after each flow step completes (`post-step`), and once more at run completion (`run-complete`).
114
+
115
+ Snapshots land in `<run-dir>/cookies/<NNN>-<label>-<phase>.json` — one file per boundary, using the same zero-padded chronological index convention as the network captures. `<label>` is the boundary kind (`goto`, `pre-step`, `post-step`, `run-complete`); `<phase>` is the current step's slugified instruction (e.g. `click-the-apply-button`), or `home` before the first step starts.
116
+
117
+ Each file is a JSON object:
118
+
119
+ ```json
120
+ {
121
+ "label": "post-step",
122
+ "phase": "click-the-apply-button",
123
+ "stepIndex": 2,
124
+ "timestamp": "2026-07-18T12:34:56.789Z",
125
+ "cookies": [
126
+ {
127
+ "name": "_appcast_attr",
128
+ "value": "abc123",
129
+ "domain": ".appcast.io",
130
+ "path": "/",
131
+ "expires": 1234567890,
132
+ "size": 20,
133
+ "httpOnly": true,
134
+ "secure": true,
135
+ "session": false,
136
+ "sameSite": "Lax"
137
+ }
138
+ ]
139
+ }
140
+ ```
141
+
142
+ Field reference (mirrors CDP's `Network.Cookie` type verbatim — no remapping between capture and disk):
143
+
144
+ | Field | Meaning |
145
+ | --- | --- |
146
+ | `name` / `value` | The cookie's name and value. |
147
+ | `domain` | Scope, e.g. `.appcast.io` (all subdomains) vs. `apply.appcast.io` (exact host) — the detail needed to tell a click-domain cookie from an apply-domain cookie. |
148
+ | `path` | Cookie path scope. |
149
+ | `expires` | Raw CDP epoch-seconds number; `-1` means a session cookie (also reflected in `session: true`). Not reformatted — read it as CDP reports it. |
150
+ | `size` | Cookie size in bytes, as reported by CDP. |
151
+ | `httpOnly` / `secure` | Standard cookie flags. |
152
+ | `session` | `true` for a session cookie (no persistent expiry). |
153
+ | `sameSite` | `"Strict" \| "Lax" \| "None" \| null` — `null` when the cookie doesn't set the attribute. |
154
+
155
+ If the CDP call fails, the file still writes but with an empty `cookies` array and an `error` string field carrying the failure message — cookie telemetry is best-effort and never aborts the run.
156
+
157
+ **Diffing what a phase established:** to isolate what a specific traversal (e.g. the click.appcast.io redirect) minted, diff its `post-step` snapshot against the `pre-step` snapshot for the *next* step — cookies present in the later file but absent from the earlier one were established during that step:
158
+
159
+ ```bash
160
+ diff <(jq -S .cookies <run-dir>/cookies/004-post-step-click-the-apply-button.json) \
161
+ <(jq -S .cookies <run-dir>/cookies/005-pre-step-fill-in-your-name.json)
162
+ ```
163
+
164
+ **Cookies actually sent per request:** the jar snapshot shows what's *available*, not what's *sent*. Each network capture in `<run-dir>/graphql/` separately carries the outgoing `Cookie` header in its `requestHeaders` (recovered via CDP's `Network.requestWillBeSentExtraInfo`, since `requestWillBeSent` omits it by design) — cross-reference that capture's `requestHeaders.Cookie` against a jar snapshot to see which of the available cookies a given request, e.g. the application submit, actually sent.
165
+
166
+ **Caveat on `Set-Cookie`:** response captures fold `responseReceivedExtraInfo` headers (which is where `Set-Cookie` actually appears — `responseReceived` omits it) into `responseHeaders` as a flat `Record<string, string>`. CDP does not guarantee multiple `Set-Cookie` values on one response stay distinguishable once folded into that shape — if a single response mints more than one cookie, treat the jar snapshot (not the response capture's `Set-Cookie` header) as the source of truth for what actually landed.
167
+
109
168
  ### Phase 2–3 — Replay and probe
110
169
 
111
170
  ```bash
112
171
  pnpm run recon:http
113
172
  ```
114
173
 
115
- Replays every capture via plain `fetch()` — no browser, no AI — to prove endpoints work standalone. Every replay returning 200 proves the browser is unnecessary for production. Also runs GraphQL introspection, auxiliary fixture detection (static JSON to commit as fixtures), and a rate-limit probe at 1→3→5 rps (run last — if it triggers a ban, all captures are already saved). Results land in `/tmp/recon/replays/`.
174
+ Replays every capture via plain `fetch()` — no browser, no AI — to prove endpoints work standalone. Every replay returning 200 proves the browser is unnecessary for production. Also runs GraphQL introspection, auxiliary fixture detection (static JSON to commit as fixtures), and a rate-limit probe at 1→3→5 rps (run last — if it triggers a ban, all captures are already saved). Results land under the run-scoped root resolved by `resolveReconRunDir()` — `/tmp/recon/<runId>/replays/` by default, rooted elsewhere via `--out-dir <path>` or `RECON_OUT_DIR`.
116
175
 
117
176
  See [docs/playbook.md](./docs/playbook.md#interpreting-replay-failures) for the full troubleshooting decision matrix when replays fail.
118
177
 
@@ -122,7 +181,7 @@ See [docs/playbook.md](./docs/playbook.md#interpreting-replay-failures) for the
122
181
  pnpm run recon:generate -- --site-id my-site
123
182
  ```
124
183
 
125
- Reads every artifact from Phases 1–3 — `/tmp/recon/graphql/*.json` (captures), `/tmp/recon/replays/*.json` (replay results), `/tmp/recon/replays/rate-limit.json` (probe findings), `/tmp/recon/aux/*.json` (static fixtures), and `src/sites/my-site/recon-flow.json` — and writes a complete plugin to `src/sites/my-site/`:
184
+ Reads every artifact from Phases 1–3 — `<run-dir>/graphql/*.json` (captures), `<run-dir>/replays/*.json` (replay results), `<run-dir>/replays/rate-limit.json` (probe findings), `<run-dir>/aux/*.json` (static fixtures), and `src/sites/my-site/recon-flow.json` — and writes a complete plugin to `src/sites/my-site/`. Pass `--run-dir <path>` to read a specific run's artifacts instead of the most recently modified run root under `/tmp/recon` (or `RECON_OUT_DIR`, if set):
126
185
 
127
186
  - `contract.ts` — Zod schemas inferred from captured JSON, load-bearing headers, Bottleneck ceiling, and `executeHttp` / `execute` implementations
128
187
  - `flows/browser-flow.ts` — Stagehand fallback wired to your `recon-flow.json` steps
@@ -219,7 +278,7 @@ Optionally generate the human-readable findings doc alongside:
219
278
  pnpm run recon:summarize -- --site-id my-site
220
279
  ```
221
280
 
222
- Writes `docs/my-site-recon.md` with: endpoints found, replay status, rate-limit ceiling, header frequency table, and hazards (Akamai, Cloudflare). Without `--site-id`, the default output path is `docs/target-recon.md`.
281
+ Writes `docs/my-site-recon.md` with: endpoints found, replay status, rate-limit ceiling, header frequency table, and hazards (Akamai, Cloudflare). Without `--site-id`, the default output path is `docs/target-recon.md`. Accepts `--run-dir <path>` the same way `recon:generate` does.
223
282
 
224
283
  ### Phase 5 — Register the plugin
225
284
 
@@ -428,7 +487,7 @@ Add a step to `.github/workflows/smoke.yml`:
428
487
 
429
488
  ### Maintenance loop
430
489
 
431
- When the smoke test fails: re-run `pnpm run recon:browser` → diff `/tmp/recon/graphql/*<operationName>*.json` against `src/sites/<id>/contract.ts` → update query / headers / Zod schema → ship. See [docs/playbook.md](./docs/playbook.md#phase-6--drift-detection) for the full maintenance loop and change severity table.
490
+ When the smoke test fails: re-run `pnpm run recon:browser` → diff `<run-dir>/graphql/*<operationName>*.json` against `src/sites/<id>/contract.ts` → update query / headers / Zod schema → ship. See [docs/playbook.md](./docs/playbook.md#phase-6--drift-detection) for the full maintenance loop and change severity table.
432
491
 
433
492
  ## Runtime internals
434
493
 
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Cookie-jar snapshot capture via CDP `Network.getAllCookies`. `document.cookie`
3
+ * and Stagehand's own cookie helpers can't see HttpOnly cookies, and
4
+ * `Page.getCookies`/`Network.getCookies` only return cookies scoped to the
5
+ * current frame's URLs — a journey that navigated click.appcast.io ->
6
+ * apply.appcast.io would miss the click-domain cookies once on the apply
7
+ * page. `Network.getAllCookies` returns the whole-browser jar regardless of
8
+ * the page's current URL, which is what attribution analysis needs.
9
+ */
10
+ import type { Page } from "@browserbasehq/stagehand";
11
+ import type { CookieJarSnapshot } from "../scripts/recon-shared";
12
+ /**
13
+ * Reads the browser's complete cookie jar and returns it as a labeled
14
+ * snapshot. Never throws — telemetry capture is best-effort, so a failed CDP
15
+ * call yields a snapshot with an `error` field and an empty `cookies` array
16
+ * rather than aborting the recon run.
17
+ */
18
+ export declare function captureCookieJarSnapshot(page: Page, label: string, phase: string, stepIndex: number): Promise<CookieJarSnapshot>;
19
+ //# sourceMappingURL=cookie-jar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-jar.d.ts","sourceRoot":"","sources":["../../src/scraper/cookie-jar.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,wBAAwB,CAAC;AAI9E;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC,CAqB5B"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * Cookie-jar snapshot capture via CDP `Network.getAllCookies`. `document.cookie`
4
+ * and Stagehand's own cookie helpers can't see HttpOnly cookies, and
5
+ * `Page.getCookies`/`Network.getCookies` only return cookies scoped to the
6
+ * current frame's URLs — a journey that navigated click.appcast.io ->
7
+ * apply.appcast.io would miss the click-domain cookies once on the apply
8
+ * page. `Network.getAllCookies` returns the whole-browser jar regardless of
9
+ * the page's current URL, which is what attribution analysis needs.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.captureCookieJarSnapshot = captureCookieJarSnapshot;
13
+ const errors_1 = require("../lib/errors");
14
+ /**
15
+ * Reads the browser's complete cookie jar and returns it as a labeled
16
+ * snapshot. Never throws — telemetry capture is best-effort, so a failed CDP
17
+ * call yields a snapshot with an `error` field and an empty `cookies` array
18
+ * rather than aborting the recon run.
19
+ */
20
+ async function captureCookieJarSnapshot(page, label, phase, stepIndex) {
21
+ const timestamp = new Date().toISOString();
22
+ try {
23
+ const result = await page.sendCDP("Network.getAllCookies");
24
+ return {
25
+ label,
26
+ phase,
27
+ stepIndex,
28
+ timestamp,
29
+ cookies: result.cookies,
30
+ };
31
+ }
32
+ catch (err) {
33
+ return {
34
+ label,
35
+ phase,
36
+ stepIndex,
37
+ timestamp,
38
+ cookies: [],
39
+ error: (0, errors_1.toErrorMessage)(err),
40
+ };
41
+ }
42
+ }
43
+ //# sourceMappingURL=cookie-jar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-jar.js","sourceRoot":"","sources":["../../src/scraper/cookie-jar.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAIH,yCAA8C;AAK9C;;;;;GAKG;AACI,KAAK,mCACV,IAAU,EACV,KAAa,EACb,KAAa,EACb,SAAiB;IAEjB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAwB,uBAAuB,CAAC,CAAC;QAClF,OAAO;YACL,KAAK;YACL,KAAK;YACL,SAAS;YACT,SAAS;YACT,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,KAAK;YACL,KAAK;YACL,SAAS;YACT,SAAS;YACT,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,IAAA,uBAAc,EAAC,GAAG,CAAC;SAC3B,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Shadow-DOM-piercing element resolver. Every other primitive in
3
+ * flow-runner.ts locates elements via `document.querySelectorAll` /
4
+ * `document.evaluate`, which cannot see inside a shadow root — so a
5
+ * submit-shaped control rendered by a web component (Angular Elements,
6
+ * Stencil, etc.) is invisible to the engine even though it's live on the
7
+ * page. This module composes a `page.evaluate` expression string (the
8
+ * repo's established interpolation pattern — see `INVALID_MARKER_EL_EXPR`
9
+ * in flow-runner.ts) that recurses through `el.shadowRoot` for OPEN roots
10
+ * to find and click such a control. Closed roots are unreachable from page
11
+ * script by design; the traversal treats them as a dead end rather than
12
+ * throwing.
13
+ */
14
+ /**
15
+ * Builds a self-contained `page.evaluate` expression string that locates
16
+ * the first submit-shaped control anywhere in the document — piercing open
17
+ * shadow roots — clicks it (setting focus, then dispatching bubbling
18
+ * mousedown/mouseup/click events, matching the repo's controlled-state
19
+ * click convention rather than a bare `el.click()`, see flow-runner.ts's
20
+ * checkbox/radio primitives), and returns a structured result so the
21
+ * caller can verify what happened without a second round-trip.
22
+ *
23
+ * Locate-only mode (`{ clickIfFound: false }`) is exposed for callers that
24
+ * want to probe for a deep submit control before deciding whether to act
25
+ * on it (e.g. to distinguish "no candidate anywhere" from "found but the
26
+ * click cascade should try a different technique first").
27
+ */
28
+ export declare function buildDeepSubmitClickExpr(options?: {
29
+ clickIfFound?: boolean;
30
+ }): string;
31
+ /** Structured result of {@link buildDeepSubmitClickExpr}'s `page.evaluate` call. */
32
+ export interface DeepSubmitClickResult {
33
+ found: boolean;
34
+ clicked: boolean;
35
+ }
36
+ //# sourceMappingURL=deep-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-query.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA4CH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAerF;AAED,oFAAoF;AACpF,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ /**
3
+ * Shadow-DOM-piercing element resolver. Every other primitive in
4
+ * flow-runner.ts locates elements via `document.querySelectorAll` /
5
+ * `document.evaluate`, which cannot see inside a shadow root — so a
6
+ * submit-shaped control rendered by a web component (Angular Elements,
7
+ * Stencil, etc.) is invisible to the engine even though it's live on the
8
+ * page. This module composes a `page.evaluate` expression string (the
9
+ * repo's established interpolation pattern — see `INVALID_MARKER_EL_EXPR`
10
+ * in flow-runner.ts) that recurses through `el.shadowRoot` for OPEN roots
11
+ * to find and click such a control. Closed roots are unreachable from page
12
+ * script by design; the traversal treats them as a dead end rather than
13
+ * throwing.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.buildDeepSubmitClickExpr = buildDeepSubmitClickExpr;
17
+ /**
18
+ * Text/attribute predicate for "this element is submit-shaped": a native
19
+ * `type="submit"` control, a `<button>` with no explicit `type` inside a
20
+ * `<form>` (the HTML default is submit), or a button-role element whose
21
+ * visible text/aria-label contains "submit". Kept as a standalone
22
+ * expression (not a RegExp) so it can be interpolated into a browser-
23
+ * context `page.evaluate` string, mirroring `INVALID_MARKER_EL_EXPR`.
24
+ */
25
+ const SUBMIT_SHAPED_EL_EXPR = `((el) => {
26
+ const tag = (el.tagName || "").toLowerCase();
27
+ const type = (el.getAttribute("type") || "").toLowerCase();
28
+ if ((tag === "button" || tag === "input") && type === "submit") return true;
29
+ if (tag === "button" && !el.getAttribute("type") && el.closest("form")) return true;
30
+ const role = (el.getAttribute("role") || "").toLowerCase();
31
+ const isButtonLike = tag === "button" || role === "button";
32
+ if (!isButtonLike) return false;
33
+ const norm = (s) => (s || "").replace(/\\s+/g, " ").trim().toLowerCase();
34
+ const text = norm(el.getAttribute("aria-label") || el.textContent || "");
35
+ return /\\bsubmit\\b/.test(text);
36
+ })`;
37
+ /**
38
+ * Recursive open-shadow-root walker: returns every element in `root`
39
+ * (light DOM or a shadow root) plus, for each child with an OPEN
40
+ * `shadowRoot`, every element inside that shadow tree, arbitrarily deep.
41
+ * A closed shadow root (`element.shadowRoot === null` from page script's
42
+ * perspective) is simply not descended into — it contributes no elements,
43
+ * it does not throw.
44
+ */
45
+ const DEEP_ELEMENTS_EXPR = `((root) => {
46
+ const out = [];
47
+ const walk = (node) => {
48
+ const kids = node.querySelectorAll ? Array.from(node.querySelectorAll("*")) : [];
49
+ for (const el of kids) {
50
+ out.push(el);
51
+ if (el.shadowRoot) walk(el.shadowRoot);
52
+ }
53
+ };
54
+ walk(root);
55
+ return out;
56
+ })`;
57
+ /**
58
+ * Builds a self-contained `page.evaluate` expression string that locates
59
+ * the first submit-shaped control anywhere in the document — piercing open
60
+ * shadow roots — clicks it (setting focus, then dispatching bubbling
61
+ * mousedown/mouseup/click events, matching the repo's controlled-state
62
+ * click convention rather than a bare `el.click()`, see flow-runner.ts's
63
+ * checkbox/radio primitives), and returns a structured result so the
64
+ * caller can verify what happened without a second round-trip.
65
+ *
66
+ * Locate-only mode (`{ clickIfFound: false }`) is exposed for callers that
67
+ * want to probe for a deep submit control before deciding whether to act
68
+ * on it (e.g. to distinguish "no candidate anywhere" from "found but the
69
+ * click cascade should try a different technique first").
70
+ */
71
+ function buildDeepSubmitClickExpr(options) {
72
+ const clickIfFound = options?.clickIfFound ?? true;
73
+ return `(() => {
74
+ const isSubmitShaped = ${SUBMIT_SHAPED_EL_EXPR};
75
+ const deepElements = ${DEEP_ELEMENTS_EXPR};
76
+ const candidates = deepElements(document).filter(isSubmitShaped);
77
+ if (candidates.length === 0) return { found: false, clicked: false };
78
+ const el = candidates[0];
79
+ if (!${JSON.stringify(clickIfFound)}) return { found: true, clicked: false };
80
+ if (typeof el.focus === "function") { try { el.focus(); } catch (e) {} }
81
+ el.dispatchEvent(new Event("mousedown", { bubbles: true }));
82
+ el.dispatchEvent(new Event("mouseup", { bubbles: true }));
83
+ el.dispatchEvent(new Event("click", { bubbles: true }));
84
+ return { found: true, clicked: true };
85
+ })()`;
86
+ }
87
+ //# sourceMappingURL=deep-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-query.js","sourceRoot":"","sources":["../../src/scraper/deep-query.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAEH;;;;;;;GAOG;AACH,MAAM,qBAAqB,GAAG;;;;;;;;;;;GAW3B,CAAC;AAEJ;;;;;;;GAOG;AACH,MAAM,kBAAkB,GAAG;;;;;;;;;;;GAWxB,CAAC;AAEJ;;;;;;;;;;;;;GAaG;AACH,kCAAyC,OAAoC;IAC3E,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC;IACnD,OAAO;6BACoB,qBAAqB;2BACvB,kBAAkB;;;;WAIlC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;;;;;;OAMhC,CAAC;AACR,CAAC"}
@@ -59,15 +59,24 @@ export declare class UnknownScraperError extends ScraperError {
59
59
  constructor(message?: string);
60
60
  }
61
61
  /** Discriminator for {@link StepVerificationError}. See the class TSDoc for the per-variant semantics. */
62
- export type StepVerificationErrorKind = "cascade-exhausted" | "probe-absent" | "backend-error-unrecoverable" | "replan-cycle-detected" | "wizard-regression";
62
+ export type StepVerificationErrorKind = "cascade-exhausted" | "phantom-click-exhausted" | "probe-absent" | "backend-error-unrecoverable" | "replan-cycle-detected" | "wizard-regression";
63
63
  /**
64
- * Recon-only: a flow step in recon-browser.ts could not be acted on. Four
64
+ * Recon-only: a flow step in recon-browser.ts could not be acted on. Six
65
65
  * variants per `kind`:
66
66
  *
67
67
  * - "cascade-exhausted": the full 4-attempt self-healing cascade ran and
68
68
  * none of the attempts produced an observable effect. Expensive (the
69
69
  * cascade burned its full LLM/observe budget) — counted against the
70
70
  * cascade replan budget.
71
+ * - "phantom-click-exhausted": attempt 1 phantom-clicked (Stagehand
72
+ * reported success with zero network/url/DOM effect) and the cascade
73
+ * escalated straight to the deep submit-control locator on attempt 2,
74
+ * but every attempt through {@link MAX_STEP_ATTEMPTS} still produced no
75
+ * observable effect — the submit control is unreachable by any
76
+ * resolution strategy the cascade has, not just the light-DOM one.
77
+ * Distinguished from "cascade-exhausted" so a replan/triager can skip
78
+ * straight to a structural fix (e.g. a new locator strategy) instead of
79
+ * re-trying the same techniques.
71
80
  * - "probe-absent": the cheap page-state probe ran BEFORE the cascade
72
81
  * and observed zero candidates for the step's instruction. We skip the
73
82
  * cascade and ask for a replan immediately because the page state is
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/scraper/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;GAIG;AACH,8BAAsB,YAAa,SAAQ,KAAK;IAC9C,SAAgB,SAAS,EAAE,OAAO,CAAC;IAEnC,YAAY,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAI9C;CACF;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,YAAY,OAAO,SAAkC,EAEpD;CACF;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,YAAY,OAAO,SAA+B,EAEjD;CACF;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,YAAY,OAAO,SAA6B,EAE/C;CACF;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAO,SAA8B,EAEhD;CACF;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAO,SAA4B,EAE9C;CACF;AAED,0GAA0G;AAC1G,MAAM,MAAM,yBAAyB,GACjC,mBAAmB,GACnB,cAAc,GACd,6BAA6B,GAC7B,uBAAuB,GACvB,mBAAmB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,YACE,OAAO,SAA2D,EAClE,IAAI,GAAE,yBAA+C,EAItD;CACF;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,YAAY,OAAO,SAAkC,EAEpD;CACF;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,YAAY,OAAO,SAAwC,EAE1D;CACF;AAED;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,YAAY,OAAO,SAA0B,EAE5C;CACF;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAO,SAAiC,EAEnD;CACF;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAO,SAA2B,EAE7C;CACF;AAED;;;;;;;GAOG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,YAAY,OAAO,SAAiD,EAEnE;CACF;AAED;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,KAAK,CAAC;IAChB,aAAa,EAAE,IAAI,CAAC;IACpB,aAAa,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,YAAY,WAAW,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAI1D;CACF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/scraper/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;GAIG;AACH,8BAAsB,YAAa,SAAQ,KAAK;IAC9C,SAAgB,SAAS,EAAE,OAAO,CAAC;IAEnC,YAAY,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAI9C;CACF;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,YAAY,OAAO,SAAkC,EAEpD;CACF;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,YAAY,OAAO,SAA+B,EAEjD;CACF;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,YAAY,OAAO,SAA6B,EAE/C;CACF;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAO,SAA8B,EAEhD;CACF;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAO,SAA4B,EAE9C;CACF;AAED,0GAA0G;AAC1G,MAAM,MAAM,yBAAyB,GACjC,mBAAmB,GACnB,yBAAyB,GACzB,cAAc,GACd,6BAA6B,GAC7B,uBAAuB,GACvB,mBAAmB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,YACE,OAAO,SAA2D,EAClE,IAAI,GAAE,yBAA+C,EAItD;CACF;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,YAAY,OAAO,SAAkC,EAEpD;CACF;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,YAAY,OAAO,SAAwC,EAE1D;CACF;AAED;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,YAAY,OAAO,SAA0B,EAE5C;CACF;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAO,SAAiC,EAEnD;CACF;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAO,SAA2B,EAE7C;CACF;AAED;;;;;;;GAOG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,YAAY,OAAO,SAAiD,EAEnE;CACF;AAED;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,KAAK,CAAC;IAChB,aAAa,EAAE,IAAI,CAAC;IACpB,aAAa,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,YAAY,WAAW,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAI1D;CACF"}
@@ -82,13 +82,22 @@ class UnknownScraperError extends ScraperError {
82
82
  }
83
83
  exports.UnknownScraperError = UnknownScraperError;
84
84
  /**
85
- * Recon-only: a flow step in recon-browser.ts could not be acted on. Four
85
+ * Recon-only: a flow step in recon-browser.ts could not be acted on. Six
86
86
  * variants per `kind`:
87
87
  *
88
88
  * - "cascade-exhausted": the full 4-attempt self-healing cascade ran and
89
89
  * none of the attempts produced an observable effect. Expensive (the
90
90
  * cascade burned its full LLM/observe budget) — counted against the
91
91
  * cascade replan budget.
92
+ * - "phantom-click-exhausted": attempt 1 phantom-clicked (Stagehand
93
+ * reported success with zero network/url/DOM effect) and the cascade
94
+ * escalated straight to the deep submit-control locator on attempt 2,
95
+ * but every attempt through {@link MAX_STEP_ATTEMPTS} still produced no
96
+ * observable effect — the submit control is unreachable by any
97
+ * resolution strategy the cascade has, not just the light-DOM one.
98
+ * Distinguished from "cascade-exhausted" so a replan/triager can skip
99
+ * straight to a structural fix (e.g. a new locator strategy) instead of
100
+ * re-trying the same techniques.
92
101
  * - "probe-absent": the cheap page-state probe ran BEFORE the cascade
93
102
  * and observed zero candidates for the step's instruction. We skip the
94
103
  * cascade and ask for a replan immediately because the page state is
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/scraper/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/scraper/errors.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@
15
15
  import type Anthropic from "@anthropic-ai/sdk";
16
16
  import type { Action, Page, Stagehand } from "@browserbasehq/stagehand";
17
17
  import { type LlmCallInput } from "../lib/telemetry/call-capture";
18
+ import { type PhantomClickVerdict } from "../scraper/phantom-click";
18
19
  import { type Capture } from "../scripts/recon-shared";
19
20
  import type { Logger } from "../types/logging";
20
21
  /**
@@ -102,7 +103,7 @@ interface StepSnapshot {
102
103
  /** One attempt's audit trail — included verbatim in the failure dump. */
103
104
  export interface AttemptRecord {
104
105
  attempt: number;
105
- technique: "act-string" | "observe-act" | "structured-click" | "observe-act-exclude" | "llm-rephrase";
106
+ technique: "act-string" | "observe-act" | "structured-click" | "observe-act-exclude" | "deep-submit-locator" | "llm-rephrase";
106
107
  instruction: string | null;
107
108
  triedSelectors: string[];
108
109
  actResultSuccess: boolean | null;
@@ -130,6 +131,15 @@ export interface AttemptRecord {
130
131
  * - `null`: failure path.
131
132
  */
132
133
  verifiedBy: "network" | "url" | "dom" | "submitted-state-dom" | null;
134
+ /**
135
+ * {@link classifyPhantomClick}'s verdict for this attempt, computed from
136
+ * the same pre/post snapshot pair `describeAttemptEffectSignals` already
137
+ * renders — `null` until the no-observable-effect branch runs (verified
138
+ * attempts never reach it). `"phantom"` (Stagehand claimed success but
139
+ * nothing observably happened) is what escalates the next attempt to
140
+ * `deep-submit-locator` instead of repeating a light-DOM technique.
141
+ */
142
+ phantomClickVerdict: PhantomClickVerdict | null;
133
143
  }
134
144
  export declare function snapshotPage(page: Page, signalCounter: {
135
145
  n: number;
@@ -386,7 +396,7 @@ export declare function describeAttemptEffectSignals(pre: StepSnapshot, post: St
386
396
  * keeps healing opportunistically.
387
397
  */
388
398
  export declare function shouldSkipTechnique(params: {
389
- technique: "act-string" | "observe-act" | "structured-click" | "observe-act-exclude" | "llm-rephrase";
399
+ technique: "act-string" | "observe-act" | "structured-click" | "observe-act-exclude" | "deep-submit-locator" | "llm-rephrase";
390
400
  priorAttempts: readonly {
391
401
  technique: string;
392
402
  triedSelectors: readonly string[];
@@ -398,6 +408,16 @@ export declare function shouldSkipTechnique(params: {
398
408
  * effect at all. Optional so existing callers are unchanged.
399
409
  */
400
410
  advanceUnmovedAfterAttempt1?: boolean;
411
+ /**
412
+ * True when attempt 1 reported success but the pre/post snapshot shows zero
413
+ * observable effect (see {@link classifyPhantomClick}) — a phantom click.
414
+ * Re-observing/re-clicking the light DOM will no-op identically (the target
415
+ * is almost certainly unreachable via `document.querySelectorAll`, e.g.
416
+ * inside a shadow root), so skip straight to the deep submit-control locator
417
+ * instead of burning attempts 2-4 repeating the same no-op. Optional so
418
+ * existing callers are unchanged.
419
+ */
420
+ phantomClickAfterAttempt1?: boolean;
401
421
  }): {
402
422
  skip: boolean;
403
423
  reason: string;
@@ -703,8 +723,9 @@ export declare function renderLeafInvalidFields(fields: readonly LeafInvalidFiel
703
723
  /**
704
724
  * Scan recent capture files for failed submit-endpoint requests and pull
705
725
  * out structured field-level errors from the response body. The cascade
706
- * already saves every captured request to `CAPTURES_DIR` with its parsed
707
- * `responseBody`; this helper reads those files back, filters to captures
726
+ * already saves every captured request to the run's graphql capture dir
727
+ * (see {@link resolveReconRunDir}) with its parsed `responseBody`; this
728
+ * helper reads those files back, filters to captures
708
729
  * matching the configured submit pattern with status >= 400, and walks
709
730
  * common error-shape conventions (`{ errors: [{ field, message }] }`,
710
731
  * `{ validation/fieldErrors: { … } }`, `{ message }`).
@@ -1101,6 +1122,18 @@ export interface InvalidFormControl {
1101
1122
  * action+value object; anything else becomes null).
1102
1123
  */
1103
1124
  export declare function narrowInvalidFormControl(entry: unknown): InvalidFormControl | null;
1125
+ /**
1126
+ * Single source of truth for step-line prefixes. Exists because the cascade
1127
+ * here has only ever received `stepIndex`, while the orchestrator loop in
1128
+ * recon-browser owns the plan array — so half the step lines in a run printed
1129
+ * a `N/total` denominator and half printed a bare `N`.
1130
+ *
1131
+ * Takes a getter rather than a number: a global replan splices new steps into
1132
+ * the live plan array mid-run, so the total must be read when the line is
1133
+ * emitted, not when the step started. Callers with no total omit it and get
1134
+ * the bare form.
1135
+ */
1136
+ export declare function formatStepPrefix(stepIndex: number, totalSteps?: () => number): string;
1104
1137
  /**
1105
1138
  * Cheap pre-cascade reachability gate. Runs before the 5-attempt healing cascade
1106
1139
  * (and any global replan) so a step aimed at the wrong page state fails fast
@@ -1114,6 +1147,7 @@ export declare function probeStepBeforeAttempts(params: {
1114
1147
  stagehand: Stagehand;
1115
1148
  step: string;
1116
1149
  stepIndex: number;
1150
+ totalSteps?: () => number;
1117
1151
  logger: Logger;
1118
1152
  captureFn?: CaptureFn;
1119
1153
  }): Promise<"present" | "absent">;
@@ -1145,6 +1179,12 @@ export declare function executeStepWithHealing(params: {
1145
1179
  */
1146
1180
  submitStep: boolean;
1147
1181
  stepIndex: number;
1182
+ /**
1183
+ * Getter, not a number: a global replan splices new steps into the live plan
1184
+ * array mid-run, so the denominator must be read at log time or every line
1185
+ * after a replan prints a stale total.
1186
+ */
1187
+ totalSteps?: () => number;
1148
1188
  phase: string;
1149
1189
  signalCounter: {
1150
1190
  n: number;
@@ -1228,6 +1268,17 @@ export declare function executeStepWithHealing(params: {
1228
1268
  * so an advance step never fires a save-and-exit / cancel / restart control.
1229
1269
  */
1230
1270
  wizardExitButtonLabels: string[];
1271
+ /**
1272
+ * Live accessor for the running count of suppressed Stagehand AISDK
1273
+ * elementId-regex errors this session (see
1274
+ * `BrowserSession.getSuppressedAisdkElementIdErrorCount`). Corroborating
1275
+ * evidence only when a phantom click is detected — logged alongside the
1276
+ * escalation, never a trigger by itself (a nonzero count alone is too weak
1277
+ * a signal across a whole run). Omitted or absent on providers that don't
1278
+ * expose it (e.g. Steel); the phantom-click detection is unaffected either
1279
+ * way since it is keyed on the pre/post snapshot delta.
1280
+ */
1281
+ getSuppressedAisdkElementIdErrorCount?: () => number;
1231
1282
  /**
1232
1283
  * Optional accumulator the cascade pushes onto when this step verifies.
1233
1284
  * Lets the main loop maintain a short cross-step trajectory of `verifiedBy`
@@ -1 +1 @@
1
- {"version":3,"file":"flow-runner.d.ts","sourceRoot":"","sources":["../../src/scraper/flow-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flow-runner.d.ts","sourceRoot":"","sources":["../../src/scraper/flow-runner.ts"],"names":[],"mappings":"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"}