@enricai/barnacle 1.12.80 → 1.12.82
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/dist/lib/llm/judges/verify-step-advanced.d.ts +1 -1
- package/dist/lib/llm/judges/verify-step-advanced.d.ts.map +1 -1
- package/dist/lib/llm/judges/verify-step-advanced.js +2 -1
- package/dist/lib/llm/judges/verify-step-advanced.js.map +1 -1
- package/dist/plugins/config-plugin.d.ts +1 -0
- package/dist/plugins/config-plugin.d.ts.map +1 -1
- package/dist/plugins/config-plugin.js +7 -1
- package/dist/plugins/config-plugin.js.map +1 -1
- package/dist/plugins/loader.d.ts +2 -2
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +6 -3
- package/dist/plugins/loader.js.map +1 -1
- package/dist/scraper/click-settle.d.ts +41 -1
- package/dist/scraper/click-settle.d.ts.map +1 -1
- package/dist/scraper/click-settle.js +84 -15
- package/dist/scraper/click-settle.js.map +1 -1
- package/dist/scraper/errors.d.ts +23 -2
- package/dist/scraper/errors.d.ts.map +1 -1
- package/dist/scraper/errors.js +32 -4
- package/dist/scraper/errors.js.map +1 -1
- package/dist/scraper/flow-runner.d.ts +68 -33
- package/dist/scraper/flow-runner.d.ts.map +1 -1
- package/dist/scraper/flow-runner.js +610 -198
- package/dist/scraper/flow-runner.js.map +1 -1
- package/dist/scraper/http-client.d.ts +7 -2
- package/dist/scraper/http-client.d.ts.map +1 -1
- package/dist/scraper/http-client.js +132 -19
- package/dist/scraper/http-client.js.map +1 -1
- package/dist/scraper/metrics.d.ts +2 -2
- package/dist/scraper/metrics.js +2 -2
- package/dist/scraper/phantom-click.d.ts +6 -0
- package/dist/scraper/phantom-click.d.ts.map +1 -1
- package/dist/scraper/phantom-click.js +62 -15
- package/dist/scraper/phantom-click.js.map +1 -1
- package/dist/scraper/stagehand-guard.d.ts +12 -2
- package/dist/scraper/stagehand-guard.d.ts.map +1 -1
- package/dist/scraper/stagehand-guard.js +51 -33
- package/dist/scraper/stagehand-guard.js.map +1 -1
- package/dist/scraper/trusted-click.d.ts +12 -1
- package/dist/scraper/trusted-click.d.ts.map +1 -1
- package/dist/scraper/trusted-click.js +8 -4
- package/dist/scraper/trusted-click.js.map +1 -1
- package/dist/scraper/upload-affordance-expr.js +1 -1
- package/dist/scraper/upload-affordance-expr.js.map +1 -1
- package/dist/scripts/recon-generate.d.ts +5 -7
- package/dist/scripts/recon-generate.d.ts.map +1 -1
- package/dist/scripts/recon-generate.js +123 -52
- package/dist/scripts/recon-generate.js.map +1 -1
- package/dist/scripts/recon-shared.d.ts +3 -2
- package/dist/scripts/recon-shared.d.ts.map +1 -1
- package/dist/scripts/recon-shared.js +6 -11
- package/dist/scripts/recon-shared.js.map +1 -1
- package/dist/site-plugin.d.ts +7 -4
- package/dist/site-plugin.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -154,8 +154,13 @@ export interface HttpRequestInit<TOverride = unknown> {
|
|
|
154
154
|
* outage is not the same as a bot block but the recovery is identical.
|
|
155
155
|
* Throws `HttpRateLimitError` on 429 — NOT a fallback trigger; the caller
|
|
156
156
|
* should back off, not burn a session.
|
|
157
|
-
*
|
|
158
|
-
*
|
|
157
|
+
* Throws `HttpTransportError` when no usable response arrives (connection
|
|
158
|
+
* reset/refused, DNS failure, socket hang up, abort, timeout), which is also a
|
|
159
|
+
* fallback trigger. Network failures are retried up to 2 times with
|
|
160
|
+
* exponential backoff first; an abort or timeout is not retried.
|
|
161
|
+
* Throws `UnknownScraperError` without retrying when fetch rejects the request
|
|
162
|
+
* before any network I/O (invalid URL or header value, GET with a body) — a
|
|
163
|
+
* plugin bug, so NOT a fallback trigger.
|
|
159
164
|
*/
|
|
160
165
|
export declare function createHttpClient<TResponse>(options: HttpClientOptions<TResponse>): <TOverride = TResponse>(url: string, init?: HttpRequestInit<TOverride>) => Promise<TOverride>;
|
|
161
166
|
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGhD,OAAO,
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGhD,OAAO,EASL,KAAK,YAAY,EAElB,MAAM,kBAAkB,CAAC;AAgI1B;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;OAUG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB,CAAC,SAAS;IAC1C,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,yEAAyE;IACzE,UAAU,EAAE,UAAU,CAAC;IACvB,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7B;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,YAAY,GAAG,SAAS,CAAC;IAC3F;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe,CAAC,SAAS,GAAG,OAAO;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CAC7B;AAqPD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EACxC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GACpC,CAAC,SAAS,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,CAqO/F"}
|
|
@@ -250,6 +250,126 @@ function resolveBinding(binding, headers) {
|
|
|
250
250
|
}
|
|
251
251
|
return headers.get(binding.sourceHeader) ?? undefined;
|
|
252
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* True when `err` is a deliberate cancellation: a caller's `AbortSignal`
|
|
255
|
+
* firing (`AbortError`) or `AbortSignal.timeout` / `defaultTimeoutMs`
|
|
256
|
+
* elapsing (`TimeoutError`).
|
|
257
|
+
*/
|
|
258
|
+
function isAbortOrTimeout(err) {
|
|
259
|
+
return err instanceof Error && (err.name === "AbortError" || err.name === "TimeoutError");
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Renders a fetch failure with its root cause. Node's fetch rejects with a
|
|
263
|
+
* generic `TypeError: fetch failed` and puts the real reason (`ECONNRESET`,
|
|
264
|
+
* `ENOTFOUND`, ...) on `cause`, so the outer message alone hides what happened.
|
|
265
|
+
*/
|
|
266
|
+
function errorDetail(err) {
|
|
267
|
+
if (!(err instanceof Error))
|
|
268
|
+
return String(err);
|
|
269
|
+
const cause = err.cause;
|
|
270
|
+
const causeCode = cause !== null && typeof cause === "object" && "code" in cause ? String(cause.code) : undefined;
|
|
271
|
+
const causeMessage = cause instanceof Error ? cause.message : undefined;
|
|
272
|
+
const suffix = [causeCode, causeMessage].filter(Boolean).join(" ");
|
|
273
|
+
return suffix ? `${err.name}: ${err.message} (${suffix})` : `${err.name}: ${err.message}`;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Error codes Node's fetch (undici) puts on `cause` when the request never got
|
|
277
|
+
* a response from the network: socket resets, refusals, DNS failures, timeouts
|
|
278
|
+
* and unreachable routes. Every `UND_ERR_*` code is matched by prefix.
|
|
279
|
+
*/
|
|
280
|
+
const NETWORK_ERROR_CODES = new Set([
|
|
281
|
+
"ECONNRESET",
|
|
282
|
+
"ECONNREFUSED",
|
|
283
|
+
"ENOTFOUND",
|
|
284
|
+
"EAI_AGAIN",
|
|
285
|
+
"ETIMEDOUT",
|
|
286
|
+
"EPIPE",
|
|
287
|
+
"ENETUNREACH",
|
|
288
|
+
"EHOSTUNREACH",
|
|
289
|
+
]);
|
|
290
|
+
const MAX_CAUSE_DEPTH = 4;
|
|
291
|
+
/**
|
|
292
|
+
* True when `err` or one of its first few `cause`s carries a network/undici
|
|
293
|
+
* error code. The walk is bounded so a self-referencing cause cannot loop.
|
|
294
|
+
*/
|
|
295
|
+
function hasNetworkCauseCode(err, depth = 0) {
|
|
296
|
+
if (depth > MAX_CAUSE_DEPTH || err === null || typeof err !== "object")
|
|
297
|
+
return false;
|
|
298
|
+
const code = "code" in err ? err.code : undefined;
|
|
299
|
+
if (typeof code === "string" && (NETWORK_ERROR_CODES.has(code) || code.startsWith("UND_ERR_"))) {
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
return "cause" in err && hasNetworkCauseCode(err.cause, depth + 1);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* True when a fetch rejection means the network failed to deliver a response,
|
|
306
|
+
* as opposed to fetch refusing the request before any I/O (an invalid URL or
|
|
307
|
+
* header value, a GET with a body). Node reports the former as `TypeError:
|
|
308
|
+
* fetch failed` with the reason on `cause`; the latter are plugin bugs that a
|
|
309
|
+
* retry or a browser session cannot fix.
|
|
310
|
+
*/
|
|
311
|
+
function isNetworkFailure(err) {
|
|
312
|
+
if (isAbortOrTimeout(err))
|
|
313
|
+
return true;
|
|
314
|
+
if (err instanceof TypeError && err.message === "fetch failed")
|
|
315
|
+
return true;
|
|
316
|
+
return hasNetworkCauseCode(err);
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Converts a failure that left the hot path without a usable response into an
|
|
320
|
+
* {@link HttpTransportError}, so dispatch can cascade it into the browser
|
|
321
|
+
* fallback. A plain network failure (reset, refused, DNS, socket hang up) is
|
|
322
|
+
* thrown as-is so p-retry retries it in place. An abort or timeout is wrapped
|
|
323
|
+
* in p-retry's `AbortError` because the signal fired on purpose and a retry
|
|
324
|
+
* would only time out again.
|
|
325
|
+
*/
|
|
326
|
+
function transportFailure(err, label) {
|
|
327
|
+
if (isAbortOrTimeout(err)) {
|
|
328
|
+
return new p_retry_1.AbortError(new errors_1.HttpTransportError(`${label}: aborted or timed out: ${errorDetail(err)}`, { cause: err }));
|
|
329
|
+
}
|
|
330
|
+
return new errors_1.HttpTransportError(`${label}: ${errorDetail(err)}`, { cause: err });
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Classifies a fetch rejection. Only a real network failure, abort or timeout
|
|
334
|
+
* becomes an {@link HttpTransportError}; anything else is a request fetch
|
|
335
|
+
* refused to send, so it is wrapped in `AbortError(UnknownScraperError)`:
|
|
336
|
+
* retrying it or cascading it into a browser session would only hide the bug.
|
|
337
|
+
*/
|
|
338
|
+
function toTransportFailure(err, label) {
|
|
339
|
+
if (isNetworkFailure(err))
|
|
340
|
+
return transportFailure(err, label);
|
|
341
|
+
return new p_retry_1.AbortError(new errors_1.UnknownScraperError(`${label}: request rejected before sending: ${errorDetail(err)}`));
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Reads the response body. The connection can still drop or time out while
|
|
345
|
+
* the body streams in, and that is the same "no usable response" failure as
|
|
346
|
+
* one that happens before the headers arrive.
|
|
347
|
+
*/
|
|
348
|
+
async function readBodyOrThrow(response, url) {
|
|
349
|
+
try {
|
|
350
|
+
return await response.text();
|
|
351
|
+
}
|
|
352
|
+
catch (err) {
|
|
353
|
+
throw transportFailure(err, `reading the response body from ${url} failed`);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Runs the retry loop and converts the caller's own signal firing between
|
|
358
|
+
* attempts into an {@link HttpTransportError}. p-retry rejects with the
|
|
359
|
+
* signal's raw `reason` there, which is not a ScraperError, so without this a
|
|
360
|
+
* caller-side timeout that lands during backoff would not cascade into the
|
|
361
|
+
* browser fallback, while one that lands mid-fetch would.
|
|
362
|
+
*/
|
|
363
|
+
async function rethrowCallerAbortAsTransport(signal, url, run) {
|
|
364
|
+
try {
|
|
365
|
+
return await run();
|
|
366
|
+
}
|
|
367
|
+
catch (err) {
|
|
368
|
+
if ((0, errors_1.isScraperError)(err) || !signal?.aborted || err !== signal.reason)
|
|
369
|
+
throw err;
|
|
370
|
+
throw new errors_1.HttpTransportError(`http request to ${url} aborted or timed out between attempts: ${errorDetail(err)}`, { cause: err });
|
|
371
|
+
}
|
|
372
|
+
}
|
|
253
373
|
/**
|
|
254
374
|
* Factory that creates a typed direct-HTTP request function pre-wired with
|
|
255
375
|
* the plugin's Bottleneck limiter, p-retry for transient network failures,
|
|
@@ -268,8 +388,13 @@ function resolveBinding(binding, headers) {
|
|
|
268
388
|
* outage is not the same as a bot block but the recovery is identical.
|
|
269
389
|
* Throws `HttpRateLimitError` on 429 — NOT a fallback trigger; the caller
|
|
270
390
|
* should back off, not burn a session.
|
|
271
|
-
*
|
|
272
|
-
*
|
|
391
|
+
* Throws `HttpTransportError` when no usable response arrives (connection
|
|
392
|
+
* reset/refused, DNS failure, socket hang up, abort, timeout), which is also a
|
|
393
|
+
* fallback trigger. Network failures are retried up to 2 times with
|
|
394
|
+
* exponential backoff first; an abort or timeout is not retried.
|
|
395
|
+
* Throws `UnknownScraperError` without retrying when fetch rejects the request
|
|
396
|
+
* before any network I/O (invalid URL or header value, GET with a body) — a
|
|
397
|
+
* plugin bug, so NOT a fallback trigger.
|
|
273
398
|
*/
|
|
274
399
|
function createHttpClient(options) {
|
|
275
400
|
const { schema, bottleneck, baseHeaders, onResponse, bind = [], classifyResponseBody, defaultTimeoutMs, } = options;
|
|
@@ -295,7 +420,7 @@ function createHttpClient(options) {
|
|
|
295
420
|
// call only — see HttpRequestInit.schema for why a multi-call chain with
|
|
296
421
|
// heterogeneous response shapes needs this escape hatch.
|
|
297
422
|
const activeSchema = init.schema ?? schema;
|
|
298
|
-
|
|
423
|
+
const attempt = () => (0, p_retry_1.default)(async () => {
|
|
299
424
|
const method = init.method ?? "GET";
|
|
300
425
|
const initHeaders = init.headers ?? {};
|
|
301
426
|
const mergedCookie = mergeCookieHeader(baseHeaders, boundHeaders, initHeaders);
|
|
@@ -327,20 +452,7 @@ function createHttpClient(options) {
|
|
|
327
452
|
});
|
|
328
453
|
}
|
|
329
454
|
catch (err) {
|
|
330
|
-
|
|
331
|
-
// firing (AbortSignal.timeout rejects as "TimeoutError", not
|
|
332
|
-
// "AbortError") — either way the signal fired on purpose, so
|
|
333
|
-
// propagate without retry rather than burning the retry budget on
|
|
334
|
-
// a call that will only time out again. The outer p-retry's own
|
|
335
|
-
// `signal` option will also throwIfAborted on its retry-loop
|
|
336
|
-
// boundaries, but wrapping in AbortError here covers the window
|
|
337
|
-
// between fetch dispatch and the next signal check inside pRetry.
|
|
338
|
-
if (err instanceof Error &&
|
|
339
|
-
(err.name === "AbortError" || err.name === "TimeoutError")) {
|
|
340
|
-
throw new p_retry_1.AbortError(new errors_1.UnknownScraperError(`http fetch aborted: ${err.message}`));
|
|
341
|
-
}
|
|
342
|
-
// Network-level failure (DNS, TCP reset, timeout) — retryable.
|
|
343
|
-
throw new errors_1.UnknownScraperError(`http fetch failed: ${String(err)}`);
|
|
455
|
+
throw toTransportFailure(err, `http fetch to ${url} failed`);
|
|
344
456
|
}
|
|
345
457
|
onResponse?.({ status: response.status, headers: response.headers, url });
|
|
346
458
|
for (const binding of bind) {
|
|
@@ -405,7 +517,7 @@ function createHttpClient(options) {
|
|
|
405
517
|
logger.warn(`baseline-body capture failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
406
518
|
}
|
|
407
519
|
}
|
|
408
|
-
const rawText = await response
|
|
520
|
+
const rawText = await readBodyOrThrow(response, url);
|
|
409
521
|
// A plugin may recognize a non-JSON response body the engine can't
|
|
410
522
|
// (a vendor sentinel). Its verdict drives retry via the error's
|
|
411
523
|
// `retryable` flag: non-retryable aborts the p-retry loop, retryable
|
|
@@ -452,7 +564,8 @@ function createHttpClient(options) {
|
|
|
452
564
|
await (0, frame_target_1.sleep)(context.error.retryAfterMs);
|
|
453
565
|
}
|
|
454
566
|
},
|
|
455
|
-
})
|
|
567
|
+
});
|
|
568
|
+
return bottleneck.schedule(() => rethrowCallerAbortAsTransport(init.signal, url, attempt));
|
|
456
569
|
};
|
|
457
570
|
}
|
|
458
571
|
//# sourceMappingURL=http-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,8 +19,8 @@ export interface SiteMetrics {
|
|
|
19
19
|
export declare function recordHotPathSuccess(siteId: string): void;
|
|
20
20
|
/**
|
|
21
21
|
* Records a fallback activation for `siteId`. Called by dispatch() when the
|
|
22
|
-
* hot path throws `HttpSchemaError`, `HttpBotChallengeError`,
|
|
23
|
-
* and the Stagehand browser path is engaged instead.
|
|
22
|
+
* hot path throws `HttpSchemaError`, `HttpBotChallengeError`, `HttpServerError`,
|
|
23
|
+
* or `HttpTransportError` and the Stagehand browser path is engaged instead.
|
|
24
24
|
*/
|
|
25
25
|
export declare function recordFallbackActivation(siteId: string): void;
|
|
26
26
|
/**
|
package/dist/scraper/metrics.js
CHANGED
|
@@ -33,8 +33,8 @@ function recordHotPathSuccess(siteId) {
|
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Records a fallback activation for `siteId`. Called by dispatch() when the
|
|
36
|
-
* hot path throws `HttpSchemaError`, `HttpBotChallengeError`,
|
|
37
|
-
* and the Stagehand browser path is engaged instead.
|
|
36
|
+
* hot path throws `HttpSchemaError`, `HttpBotChallengeError`, `HttpServerError`,
|
|
37
|
+
* or `HttpTransportError` and the Stagehand browser path is engaged instead.
|
|
38
38
|
*/
|
|
39
39
|
function recordFallbackActivation(siteId) {
|
|
40
40
|
ensureEntry(siteId).fallbackActivations++;
|
|
@@ -133,6 +133,12 @@ export declare const PAGE_ADVANCE_MAX_HEAD_SIMILARITY = 0.5;
|
|
|
133
133
|
* line (small, mostly-shared text) is not an advance.
|
|
134
134
|
*/
|
|
135
135
|
export declare function hasPageAdvanced(pre: PhantomClickSnapshot, post: PhantomClickSnapshot): boolean;
|
|
136
|
+
/**
|
|
137
|
+
* Stricter sibling of {@link hasPageAdvanced} for deciding a re-render has
|
|
138
|
+
* finished: a header that flipped over shared chrome is an advance, but the
|
|
139
|
+
* body usually re-renders after it, so only replaced copy counts as settled.
|
|
140
|
+
*/
|
|
141
|
+
export declare function hasPageBodySwapped(pre: PhantomClickSnapshot, post: PhantomClickSnapshot): boolean;
|
|
136
142
|
/**
|
|
137
143
|
* Classifies one cascade attempt as `phantom` (Stagehand claimed success but
|
|
138
144
|
* pre/post shows zero network, zero URL change, and only trivial DOM
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phantom-click.d.ts","sourceRoot":"","sources":["../../src/scraper/phantom-click.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qFAAqF;AACrF,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,GAAG,EAAE,oBAAoB,CAAC;IAC1B,IAAI,EAAE,oBAAoB,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;OAMG;IACH,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAWD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE/E;AAED,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,UAA0C,CAAC;AAwDxE;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAapE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAgBT;AAED,MAAM,MAAM,mBAAmB;AAC7B,0FAA0F;AACxF,SAAS;AACX,mEAAmE;GACjE,WAAW;AACb,kKAAkK;GAChK,YAAY,CAAC;AAEjB;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,2FAA2F;AAC3F,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,0FAA0F;AAC1F,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,mFAAmF;AACnF,eAAO,MAAM,2CAA2C,KAAK,CAAC;AAE9D,gFAAgF;AAChF,eAAO,MAAM,gCAAgC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"phantom-click.d.ts","sourceRoot":"","sources":["../../src/scraper/phantom-click.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qFAAqF;AACrF,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,GAAG,EAAE,oBAAoB,CAAC;IAC1B,IAAI,EAAE,oBAAoB,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;OAMG;IACH,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAWD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE/E;AAED,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,UAA0C,CAAC;AAwDxE;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAapE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAgBT;AAED,MAAM,MAAM,mBAAmB;AAC7B,0FAA0F;AACxF,SAAS;AACX,mEAAmE;GACjE,WAAW;AACb,kKAAkK;GAChK,YAAY,CAAC;AAEjB;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,2FAA2F;AAC3F,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,0FAA0F;AAC1F,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,mFAAmF;AACnF,eAAO,MAAM,2CAA2C,KAAK,CAAC;AAE9D,gFAAgF;AAChF,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAgFpD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAE9F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAEjG;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CA0BtF"}
|
|
@@ -12,6 +12,7 @@ exports.hasOriginOrPathChanged = hasOriginOrPathChanged;
|
|
|
12
12
|
exports.splitIntoActionClauses = splitIntoActionClauses;
|
|
13
13
|
exports.isPlausibleStepDestination = isPlausibleStepDestination;
|
|
14
14
|
exports.hasPageAdvanced = hasPageAdvanced;
|
|
15
|
+
exports.hasPageBodySwapped = hasPageBodySwapped;
|
|
15
16
|
exports.classifyPhantomClick = classifyPhantomClick;
|
|
16
17
|
function originAndPathOf(url) {
|
|
17
18
|
try {
|
|
@@ -181,37 +182,83 @@ function headWordSimilarity(pre, post) {
|
|
|
181
182
|
const shared = [...preWords].filter((w) => postWords.has(w)).length;
|
|
182
183
|
return shared / union.size;
|
|
183
184
|
}
|
|
185
|
+
/** Words dropped AND introduced in the head for it to count as swapped copy. */
|
|
186
|
+
const PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS = 2;
|
|
187
|
+
function leadingHeadWord(signature) {
|
|
188
|
+
return signature
|
|
189
|
+
.slice(signature.indexOf(":") + 1)
|
|
190
|
+
.toLowerCase()
|
|
191
|
+
.split(/\W+/)
|
|
192
|
+
.find((w) => w !== "");
|
|
193
|
+
}
|
|
194
|
+
function isHeadSwapped(pre, post) {
|
|
195
|
+
const preWords = textHeadWords(pre);
|
|
196
|
+
const postWords = textHeadWords(post);
|
|
197
|
+
const dropped = [...preWords].filter((w) => !postWords.has(w)).length;
|
|
198
|
+
if (dropped < PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS)
|
|
199
|
+
return false;
|
|
200
|
+
const added = [...postWords].filter((w) => !preWords.has(w)).length;
|
|
201
|
+
if (added >= PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS)
|
|
202
|
+
return true;
|
|
203
|
+
// A swapped header can reuse a word the shared chrome already carries (a
|
|
204
|
+
// "My Account" header over an "Account" button), leaving a single new word;
|
|
205
|
+
// a new word leading the head still marks replaced copy.
|
|
206
|
+
const leading = leadingHeadWord(post);
|
|
207
|
+
return leading !== undefined && !preWords.has(leading);
|
|
208
|
+
}
|
|
184
209
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
* moved substantially — a large absolute or relative length change, or a
|
|
191
|
-
* head whose words were mostly replaced — so a tooltip or inline validation
|
|
192
|
-
* line (small, mostly-shared text) is not an advance.
|
|
210
|
+
* Reads how far the visible text moved: `body` when the copy itself was
|
|
211
|
+
* replaced (a large or relative length change, or a head whose words were
|
|
212
|
+
* mostly swapped), `header` when only a header-sized slice moved over shared
|
|
213
|
+
* chrome, `none` otherwise. The split lets a settle tell a finished transition
|
|
214
|
+
* from a header that flipped before its body re-rendered.
|
|
193
215
|
*/
|
|
194
|
-
function
|
|
216
|
+
function pageAdvanceKind(pre, post) {
|
|
195
217
|
const preSig = pre.visibleTextSignature;
|
|
196
218
|
const postSig = post.visibleTextSignature;
|
|
197
219
|
if (preSig === undefined || postSig === undefined || preSig === postSig)
|
|
198
|
-
return
|
|
220
|
+
return "none";
|
|
199
221
|
const preLen = textLengthOf(preSig);
|
|
200
222
|
const postLen = textLengthOf(postSig);
|
|
201
223
|
if (preLen === null || postLen === null)
|
|
202
|
-
return
|
|
224
|
+
return "none";
|
|
203
225
|
const lengthDelta = Math.abs(postLen - preLen);
|
|
204
226
|
if (lengthDelta >= exports.PAGE_ADVANCE_MIN_TEXT_LENGTH_DELTA)
|
|
205
|
-
return
|
|
227
|
+
return "body";
|
|
206
228
|
const similarity = headWordSimilarity(preSig, postSig);
|
|
207
229
|
// Identical head words mean whitespace/layout reflow, not new copy.
|
|
208
230
|
if (similarity === 1)
|
|
209
|
-
return
|
|
231
|
+
return "none";
|
|
210
232
|
if (lengthDelta >= exports.PAGE_ADVANCE_MIN_RELATIVE_TEXT_LENGTH_DELTA &&
|
|
211
233
|
lengthDelta / Math.max(preLen, 1) >= exports.PAGE_ADVANCE_MIN_TEXT_LENGTH_RATIO) {
|
|
212
|
-
return
|
|
234
|
+
return "body";
|
|
213
235
|
}
|
|
214
|
-
|
|
236
|
+
if (similarity < exports.PAGE_ADVANCE_MAX_HEAD_SIMILARITY)
|
|
237
|
+
return "body";
|
|
238
|
+
// Shared chrome (nav, footer) inflates similarity when a wizard swaps only
|
|
239
|
+
// its header and body copy within the 200-char head.
|
|
240
|
+
return isHeadSwapped(preSig, postSig) ? "header" : "none";
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Decides whether the page demonstrably advanced (a wizard step swapped
|
|
244
|
+
* content) from pre/post snapshots alone, so a network-free, URL-stable
|
|
245
|
+
* transition is still credited. Visible text is the evidence: a wizard swap
|
|
246
|
+
* can leave the HTML size nearly unchanged (same-size markup, different
|
|
247
|
+
* copy), so byte delta is deliberately not required. The text must have
|
|
248
|
+
* moved substantially — a large absolute or relative length change, or a
|
|
249
|
+
* head whose words were mostly replaced — so a tooltip or inline validation
|
|
250
|
+
* line (small, mostly-shared text) is not an advance.
|
|
251
|
+
*/
|
|
252
|
+
function hasPageAdvanced(pre, post) {
|
|
253
|
+
return pageAdvanceKind(pre, post) !== "none";
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Stricter sibling of {@link hasPageAdvanced} for deciding a re-render has
|
|
257
|
+
* finished: a header that flipped over shared chrome is an advance, but the
|
|
258
|
+
* body usually re-renders after it, so only replaced copy counts as settled.
|
|
259
|
+
*/
|
|
260
|
+
function hasPageBodySwapped(pre, post) {
|
|
261
|
+
return pageAdvanceKind(pre, post) === "body";
|
|
215
262
|
}
|
|
216
263
|
/**
|
|
217
264
|
* Classifies one cascade attempt as `phantom` (Stagehand claimed success but
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phantom-click.js","sourceRoot":"","sources":["../../src/scraper/phantom-click.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG
|
|
1
|
+
{"version":3,"file":"phantom-click.js","sourceRoot":"","sources":["../../src/scraper/phantom-click.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;AAyDH,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,gCAAuC,MAAc,EAAE,OAAe;IACpE,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,eAAe,CAAC,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,uEAAuE;AAC1D,QAAA,gBAAgB,GAAG,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;AAExE,uHAAuH;AACvH,SAAS,wBAAwB,CAAC,WAAmB;IACnD,OAAO,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG;IACxB,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,SAAS;IACT,QAAQ;IACR,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,MAAM;IACN,QAAQ;IACR,UAAU;IACV,SAAS;IACT,OAAO;IACP,QAAQ;IACR,UAAU;CACX,CAAC;AAEF,MAAM,wBAAwB,GAAG,IAAI,MAAM,CAAC,SAAS,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAExF;;;;;;;;GAQG;AACH,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAEtF;;;;;;;;;;;;GAYG;AACH,gCAAuC,WAAmB;IACxD,MAAM,UAAU,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,mBAAmB,GAAG,IAAI,MAAM,CAAC,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,aAAa,GAAG,iBAAiB,CAAC;IACxC,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,CACtE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,aAAa,GAAG,CAAC,CAC5C,CAAC;IACF,MAAM,OAAO,GAAG,aAAa;SAC1B,KAAK,CAAC,gBAAgB,CAAC;SACvB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;SAC3D,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACxF,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,oCACE,eAAuB,EACvB,OAAe,EACf,MAAe;IAEf,2EAA2E;IAC3E,uEAAuE;IACvE,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAClF,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI,CAAC;YACH,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,cAAc,GAAG,QAAA,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,aAAa,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;IAC9D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAA,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC;AAUD;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAE3C,2FAA2F;AAC9E,QAAA,kCAAkC,GAAG,GAAG,CAAC;AAEtD,0FAA0F;AAC7E,QAAA,kCAAkC,GAAG,GAAG,CAAC;AAEtD,mFAAmF;AACtE,QAAA,2CAA2C,GAAG,EAAE,CAAC;AAE9D,gFAAgF;AACnE,QAAA,gCAAgC,GAAG,GAAG,CAAC;AAEpD,SAAS,YAAY,CAAC,SAA6B;IACjD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,SAAS,aAAa,CAAC,SAAiB;IACtC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACvE,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW,EAAE,IAAY;IACnD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACpE,OAAO,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAChF,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAE9C,SAAS,eAAe,CAAC,SAAiB;IACxC,OAAO,SAAS;SACb,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACjC,WAAW,EAAE;SACb,KAAK,CAAC,KAAK,CAAC;SACZ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,IAAY;IAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtE,IAAI,OAAO,GAAG,mCAAmC;QAAE,OAAO,KAAK,CAAC;IAChE,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACpE,IAAI,KAAK,IAAI,mCAAmC;QAAE,OAAO,IAAI,CAAC;IAC9D,yEAAyE;IACzE,4EAA4E;IAC5E,yDAAyD;IACzD,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,OAAO,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzD,CAAC;AAID;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,GAAyB,EAAE,IAA0B;IAC5E,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAC1C,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC;IACvF,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;IAC/C,IAAI,WAAW,IAAI,QAAA,kCAAkC;QAAE,OAAO,MAAM,CAAC;IACrE,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,oEAAoE;IACpE,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACpC,IACE,WAAW,IAAI,QAAA,2CAA2C;QAC1D,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,QAAA,kCAAkC,EACvE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,UAAU,GAAG,QAAA,gCAAgC;QAAE,OAAO,MAAM,CAAC;IACjE,2EAA2E;IAC3E,qDAAqD;IACrD,OAAO,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5D,CAAC;AAED;;;;;;;;;GASG;AACH,yBAAgC,GAAyB,EAAE,IAA0B;IACnF,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,MAAM,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,4BAAmC,GAAyB,EAAE,IAA0B;IACtF,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,MAAM,CAAC;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,8BAAqC,OAA4B;IAC/D,IAAI,OAAO,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,YAAY,CAAC;IAE3D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC1E,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC5E,IAAI,CAAC,OAAO,CAAC,oBAAoB;QAAE,OAAO,SAAS,CAAC;IAEpD,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,aAAa,GAAG,OAAO,CAAC,mBAAmB,KAAK,IAAI,CAAC;IAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,kBAAkB,KAAK,IAAI,IAAI,aAAa,CAAC;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,mBAAmB,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,mBAAmB,KAAK,IAAI,CAAC;IAClF,gEAAgE;IAChE,MAAM,yBAAyB,GAC7B,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,QAAA,uBAAuB,CAAC;IAEnE,MAAM,eAAe,GAAG,aAAa,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpF,MAAM,SAAS,GACb,YAAY,KAAK,CAAC;QAClB,UAAU;QACV,mBAAmB;QACnB,yBAAyB;QACzB,eAAe,CAAC;IAClB,OAAO,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC"}
|
|
@@ -48,8 +48,18 @@ import { type FrameTarget } from "./frame-target";
|
|
|
48
48
|
* lands in `.barnacle/calls.ndjson` instead of the per-URL run partition.
|
|
49
49
|
*/
|
|
50
50
|
export type StagehandCaptureFn = (input: LlmCallInput) => Promise<void>;
|
|
51
|
-
/**
|
|
52
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Whether an act instruction may resolve to a pointer click. Any phrasing that
|
|
53
|
+
* is not plainly text entry counts ("Answer No", "Continue", "Save and
|
|
54
|
+
* proceed" name no click verb yet click a button), so the click point is
|
|
55
|
+
* cleared before Stagehand delivers it.
|
|
56
|
+
*/
|
|
57
|
+
export declare function hasClickIntent(instruction: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Whether a Stagehand method is delivered as a trusted CDP mouse press on the
|
|
60
|
+
* target's centre, and so needs its click point cleared first.
|
|
61
|
+
*/
|
|
62
|
+
export declare function isTrustedClickMethod(method: string | undefined): boolean;
|
|
53
63
|
/**
|
|
54
64
|
* Zod parallel of Stagehand's public `Action` shape (from
|
|
55
65
|
* `@browserbasehq/stagehand/.../public/methods.d.ts`):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stagehand-guard.d.ts","sourceRoot":"","sources":["../../src/scraper/stagehand-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,SAAS,EAEV,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"stagehand-guard.d.ts","sourceRoot":"","sources":["../../src/scraper/stagehand-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,SAAS,EAEV,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAO3B,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,8BAA8B,CAAC;AAMtC,OAAO,EAEL,KAAK,WAAW,EAGjB,MAAM,wBAAwB,CAAC;AAMhC;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAwBxE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE3D;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAExE;AAuBD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa;;;;;iBAKxB,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;iBAM5B,CAAC;AAEH;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAG,0BAA0B,CAAU;IACpD,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B,YACE,SAAS,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,EACxC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,WAAW,EAAE,OAAO,EAOrB;CACF;AAsKD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,CAAC,EAAE,UAAU,EACpB,SAAS,CAAC,EAAE,kBAAkB,EAC9B,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,UAAQ,GACjB,OAAO,CAAC,SAAS,CAAC,CAkFpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,SAAS,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,cAAc,EACxB,SAAS,CAAC,EAAE,kBAAkB,EAC9B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CA4FnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EACzD,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,cAAc,EACxB,SAAS,CAAC,EAAE,kBAAkB,EAC9B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CA4ErB"}
|
|
@@ -41,15 +41,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
41
41
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
42
|
};
|
|
43
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.StagehandSchemaError = exports.ACT_RESULT_SCHEMA = exports.ACTION_SCHEMA =
|
|
44
|
+
exports.StagehandSchemaError = exports.ACT_RESULT_SCHEMA = exports.ACTION_SCHEMA = void 0;
|
|
45
|
+
exports.hasClickIntent = hasClickIntent;
|
|
46
|
+
exports.isTrustedClickMethod = isTrustedClickMethod;
|
|
45
47
|
exports.guardedAct = guardedAct;
|
|
46
48
|
exports.guardedObserve = guardedObserve;
|
|
47
49
|
exports.guardedExtract = guardedExtract;
|
|
48
50
|
const node_crypto_1 = require("node:crypto");
|
|
49
51
|
const p_retry_1 = __importDefault(require("p-retry"));
|
|
50
52
|
const v4_1 = require("zod/v4");
|
|
51
|
-
const errors_1 = require("../lib/errors");
|
|
52
|
-
const logging_1 = require("../lib/logging");
|
|
53
53
|
const pii_redaction_1 = require("../lib/pii-redaction");
|
|
54
54
|
const call_capture_1 = require("../lib/telemetry/call-capture");
|
|
55
55
|
const call_types_1 = require("../lib/telemetry/call-types");
|
|
@@ -64,9 +64,33 @@ const watchdog_1 = require("./watchdog");
|
|
|
64
64
|
* `guardedObserve` from this module, so importing back would cycle.
|
|
65
65
|
*/
|
|
66
66
|
const DEFAULT_GUARD_TIMEOUT_MS = 120_000;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Instructions that name a click-like verb ("Select No", "Open the dropdown",
|
|
69
|
+
* "Click Next").
|
|
70
|
+
*/
|
|
71
|
+
const CLICK_VERB_RE = /\b(?:click|tap|press|select|choose|pick|open|toggle|check|uncheck|expand|submit)\b/i;
|
|
72
|
+
/**
|
|
73
|
+
* Instructions that lead with text entry, upload or page motion; these never
|
|
74
|
+
* resolve to a pointer click, so an observe for a click point is wasted.
|
|
75
|
+
*/
|
|
76
|
+
const NON_CLICK_LEAD_RE = /^\W*(?:fill|type|enter|input|write|paste|upload|attach|scroll|wait|sleep|pause|navigate|go\s+to)\b/i;
|
|
77
|
+
/**
|
|
78
|
+
* Whether an act instruction may resolve to a pointer click. Any phrasing that
|
|
79
|
+
* is not plainly text entry counts ("Answer No", "Continue", "Save and
|
|
80
|
+
* proceed" name no click verb yet click a button), so the click point is
|
|
81
|
+
* cleared before Stagehand delivers it.
|
|
82
|
+
*/
|
|
83
|
+
function hasClickIntent(instruction) {
|
|
84
|
+
return CLICK_VERB_RE.test(instruction) || !NON_CLICK_LEAD_RE.test(instruction);
|
|
85
|
+
}
|
|
86
|
+
const TRUSTED_CLICK_METHODS = new Set(["click", "doubleClick"]);
|
|
87
|
+
/**
|
|
88
|
+
* Whether a Stagehand method is delivered as a trusted CDP mouse press on the
|
|
89
|
+
* target's centre, and so needs its click point cleared first.
|
|
90
|
+
*/
|
|
91
|
+
function isTrustedClickMethod(method) {
|
|
92
|
+
return method !== undefined && TRUSTED_CLICK_METHODS.has(method);
|
|
93
|
+
}
|
|
70
94
|
const TRANSIENT_RETRIES = 2;
|
|
71
95
|
const TRANSIENT_RETRY_MIN_TIMEOUT_MS = 500;
|
|
72
96
|
/**
|
|
@@ -214,12 +238,12 @@ function frameScopedOptions(options, frameTarget) {
|
|
|
214
238
|
* Resolves a string act instruction to the Action Stagehand would click so it
|
|
215
239
|
* can be centred first. Scoped to the step's frame the same way
|
|
216
240
|
* `guardedObserve` is, so an in-frame control is not resolved against the top
|
|
217
|
-
* document.
|
|
218
|
-
*
|
|
219
|
-
*
|
|
241
|
+
* document. When `observe` is unavailable or finds nothing, Stagehand's own
|
|
242
|
+
* string `act` resolves internally exactly as before; an `observe` error
|
|
243
|
+
* propagates.
|
|
220
244
|
*/
|
|
221
245
|
async function resolveClickAction(stagehand, instruction, options, frameTarget) {
|
|
222
|
-
if (typeof stagehand.observe !== "function" || !
|
|
246
|
+
if (typeof stagehand.observe !== "function" || !hasClickIntent(instruction)) {
|
|
223
247
|
return undefined;
|
|
224
248
|
}
|
|
225
249
|
const observeOptions = frameScopedOptions(options?.timeout ? { timeout: options.timeout } : {}, frameTarget);
|
|
@@ -236,31 +260,25 @@ async function resolveClickAction(stagehand, instruction, options, frameTarget)
|
|
|
236
260
|
* instructions are resolved via `observe` for the pre-centring only and still
|
|
237
261
|
* reach `act` as the original string, so downstream method/argument handling
|
|
238
262
|
* is unchanged. Frame-hop (`>>`) selectors are centred in the child frame they
|
|
239
|
-
* resolve to.
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
* skipped since there is no click point to clear.
|
|
263
|
+
* resolve to. Strict by design: a click target that stays occluded or
|
|
264
|
+
* cannot be resolved throws and fails the attempt, so Stagehand never clicks an
|
|
265
|
+
* uncentred point that a sticky overlay may cover. Non-click actions and
|
|
266
|
+
* instructions that observe to no action are skipped since there is no click
|
|
267
|
+
* point to clear.
|
|
245
268
|
*/
|
|
246
269
|
async function preCentreClickTarget(stagehand, input, options, frameTarget) {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
await centreAction(page, target, action);
|
|
260
|
-
}
|
|
261
|
-
catch (err) {
|
|
262
|
-
logger.warn(`pre-centring skipped: ${(0, errors_1.toErrorMessage)(err)}`);
|
|
263
|
-
}
|
|
270
|
+
const page = typeof stagehand.context?.activePage === "function"
|
|
271
|
+
? stagehand.context.activePage()
|
|
272
|
+
: undefined;
|
|
273
|
+
const target = frameTarget ?? (page ? (0, frame_target_1.mainFrameTarget)(page) : undefined);
|
|
274
|
+
if (!target)
|
|
275
|
+
return;
|
|
276
|
+
const action = typeof input === "string"
|
|
277
|
+
? await resolveClickAction(stagehand, input, options, frameTarget)
|
|
278
|
+
: input;
|
|
279
|
+
if (!isTrustedClickMethod(action?.method))
|
|
280
|
+
return;
|
|
281
|
+
await centreAction(page, target, action);
|
|
264
282
|
}
|
|
265
283
|
/**
|
|
266
284
|
* Centres and hit-tests an Action's click target, resolving a `>>` frame hop
|