@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.
- package/README.md +66 -7
- package/dist/scraper/cookie-jar.d.ts +19 -0
- package/dist/scraper/cookie-jar.d.ts.map +1 -0
- package/dist/scraper/cookie-jar.js +43 -0
- package/dist/scraper/cookie-jar.js.map +1 -0
- package/dist/scraper/deep-query.d.ts +36 -0
- package/dist/scraper/deep-query.d.ts.map +1 -0
- package/dist/scraper/deep-query.js +87 -0
- package/dist/scraper/deep-query.js.map +1 -0
- package/dist/scraper/errors.d.ts +11 -2
- package/dist/scraper/errors.d.ts.map +1 -1
- package/dist/scraper/errors.js +10 -1
- package/dist/scraper/errors.js.map +1 -1
- package/dist/scraper/flow-runner.d.ts +55 -4
- package/dist/scraper/flow-runner.d.ts.map +1 -1
- package/dist/scraper/flow-runner.js +259 -50
- package/dist/scraper/flow-runner.js.map +1 -1
- package/dist/scraper/phantom-click.d.ts +45 -0
- package/dist/scraper/phantom-click.d.ts.map +1 -0
- package/dist/scraper/phantom-click.js +37 -0
- package/dist/scraper/phantom-click.js.map +1 -0
- package/dist/scraper/session-browserbase.d.ts +48 -0
- package/dist/scraper/session-browserbase.d.ts.map +1 -1
- package/dist/scraper/session-browserbase.js +10 -5
- package/dist/scraper/session-browserbase.js.map +1 -1
- package/dist/scraper/session-shared.d.ts +6 -0
- package/dist/scraper/session-shared.d.ts.map +1 -1
- package/dist/scraper/session-shared.js.map +1 -1
- package/dist/scraper/submit-control.d.ts +51 -0
- package/dist/scraper/submit-control.d.ts.map +1 -0
- package/dist/scraper/submit-control.js +142 -0
- package/dist/scraper/submit-control.js.map +1 -0
- package/dist/scripts/recon-browser.d.ts +34 -12
- package/dist/scripts/recon-browser.d.ts.map +1 -1
- package/dist/scripts/recon-browser.js +78 -33
- package/dist/scripts/recon-browser.js.map +1 -1
- package/dist/scripts/recon-generate.d.ts +28 -7
- package/dist/scripts/recon-generate.d.ts.map +1 -1
- package/dist/scripts/recon-generate.js +50 -24
- package/dist/scripts/recon-generate.js.map +1 -1
- package/dist/scripts/recon-http.d.ts +36 -5
- package/dist/scripts/recon-http.d.ts.map +1 -1
- package/dist/scripts/recon-http.js +77 -47
- package/dist/scripts/recon-http.js.map +1 -1
- package/dist/scripts/recon-replay-jobs.d.ts +25 -1
- package/dist/scripts/recon-replay-jobs.d.ts.map +1 -1
- package/dist/scripts/recon-replay-jobs.js +33 -23
- package/dist/scripts/recon-replay-jobs.js.map +1 -1
- package/dist/scripts/recon-shared.d.ts +68 -0
- package/dist/scripts/recon-shared.d.ts.map +1 -1
- package/dist/scripts/recon-shared.js +94 -1
- package/dist/scripts/recon-shared.js.map +1 -1
- package/dist/scripts/recon-summarize.d.ts +5 -1
- package/dist/scripts/recon-summarize.d.ts.map +1 -1
- package/dist/scripts/recon-summarize.js +19 -7
- package/dist/scripts/recon-summarize.js.map +1 -1
- 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
|
|
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
|
|
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
|
|
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
|
|
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 —
|
|
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
|
|
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"}
|
package/dist/scraper/errors.d.ts
CHANGED
|
@@ -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.
|
|
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
|
|
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"}
|
package/dist/scraper/errors.js
CHANGED
|
@@ -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.
|
|
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":";AAAA;;;;;;;;;;;;GAYG;;;AAEH;;;;GAIG;AACH,kBAAmC,SAAQ,KAAK;IAC9B,SAAS,CAAU;IAEnC,YAAY,OAAe,EAAE,SAAkB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;;AAED;;;GAGG;AACH,kBAA0B,SAAQ,YAAY;IAC5C,YAAY,OAAO,GAAG,+BAA+B;QACnD,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;CACF;;AAED;;;;GAIG;AACH,uBAA+B,SAAQ,YAAY;IACjD,YAAY,OAAO,GAAG,4BAA4B;QAChD,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;CACF;;AAED;;;;GAIG;AACH,0BAAkC,SAAQ,YAAY;IACpD,YAAY,OAAO,GAAG,0BAA0B;QAC9C,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC;CACF;;AAED;;;;GAIG;AACH,yBAAiC,SAAQ,YAAY;IACnD,YAAY,OAAO,GAAG,2BAA2B;QAC/C,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC;CACF;;AAED;;;GAGG;AACH,yBAAiC,SAAQ,YAAY;IACnD,YAAY,OAAO,GAAG,yBAAyB;QAC7C,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC;CACF;;
|
|
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
|
|
707
|
-
*
|
|
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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"}
|