@tangle-network/browser-agent-driver 0.32.0 → 0.33.1
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/artifacts/filesystem-sink.d.ts +1 -1
- package/dist/artifacts/filesystem-sink.js +1 -1
- package/dist/brain/index.d.ts +7 -12
- package/dist/brain/index.d.ts.map +1 -1
- package/dist/brain/index.js +47 -70
- package/dist/brain/index.js.map +1 -1
- package/dist/browser-launch.js +1 -3
- package/dist/browser-launch.js.map +1 -1
- package/dist/captcha.d.ts.map +1 -1
- package/dist/captcha.js +1 -3
- package/dist/captcha.js.map +1 -1
- package/dist/cli-attach.d.ts +2 -2
- package/dist/cli-attach.js +2 -2
- package/dist/cli-design-audit.js +6 -6
- package/dist/cli-design-audit.js.map +1 -1
- package/dist/cli.js +26 -28
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +5 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/design/audit/build-result.d.ts +3 -0
- package/dist/design/audit/build-result.d.ts.map +1 -1
- package/dist/design/audit/build-result.js +10 -2
- package/dist/design/audit/build-result.js.map +1 -1
- package/dist/design/audit/evaluate.d.ts +5 -2
- package/dist/design/audit/evaluate.d.ts.map +1 -1
- package/dist/design/audit/evaluate.js +9 -3
- package/dist/design/audit/evaluate.js.map +1 -1
- package/dist/design/audit/patches/generate.d.ts +12 -0
- package/dist/design/audit/patches/generate.d.ts.map +1 -1
- package/dist/design/audit/patches/generate.js +16 -9
- package/dist/design/audit/patches/generate.js.map +1 -1
- package/dist/design/audit/pipeline.d.ts +3 -3
- package/dist/design/audit/pipeline.d.ts.map +1 -1
- package/dist/design/audit/pipeline.js +4 -3
- package/dist/design/audit/pipeline.js.map +1 -1
- package/dist/drivers/cursor-overlay.d.ts +1 -1
- package/dist/drivers/cursor-overlay.d.ts.map +1 -1
- package/dist/drivers/cursor-overlay.js +2 -2
- package/dist/drivers/extract-with-index.d.ts +4 -7
- package/dist/drivers/extract-with-index.d.ts.map +1 -1
- package/dist/drivers/extract-with-index.js +4 -7
- package/dist/drivers/extract-with-index.js.map +1 -1
- package/dist/drivers/overlay-label.d.ts +3 -4
- package/dist/drivers/overlay-label.d.ts.map +1 -1
- package/dist/drivers/overlay-label.js.map +1 -1
- package/dist/drivers/playwright.d.ts +2 -2
- package/dist/drivers/playwright.d.ts.map +1 -1
- package/dist/drivers/playwright.js +10 -24
- package/dist/drivers/playwright.js.map +1 -1
- package/dist/drivers/som-overlay.d.ts +2 -3
- package/dist/drivers/som-overlay.d.ts.map +1 -1
- package/dist/drivers/som-overlay.js +2 -3
- package/dist/drivers/som-overlay.js.map +1 -1
- package/dist/drivers/types.d.ts +3 -9
- package/dist/drivers/types.d.ts.map +1 -1
- package/dist/multi-actor.d.ts.map +1 -1
- package/dist/multi-actor.js +2 -3
- package/dist/multi-actor.js.map +1 -1
- package/dist/provider-defaults.d.ts +1 -0
- package/dist/provider-defaults.d.ts.map +1 -1
- package/dist/provider-defaults.js +24 -0
- package/dist/provider-defaults.js.map +1 -1
- package/dist/run-state.d.ts +3 -32
- package/dist/run-state.d.ts.map +1 -1
- package/dist/run-state.js +5 -39
- package/dist/run-state.js.map +1 -1
- package/dist/runner/completion-language.d.ts +2 -0
- package/dist/runner/completion-language.d.ts.map +1 -0
- package/dist/runner/completion-language.js +5 -0
- package/dist/runner/completion-language.js.map +1 -0
- package/dist/runner/direct-start.d.ts +19 -0
- package/dist/runner/direct-start.d.ts.map +1 -0
- package/dist/runner/direct-start.js +295 -0
- package/dist/runner/direct-start.js.map +1 -0
- package/dist/runner/events.d.ts +3 -6
- package/dist/runner/events.d.ts.map +1 -1
- package/dist/runner/events.js.map +1 -1
- package/dist/runner/fan-out.d.ts +6 -9
- package/dist/runner/fan-out.d.ts.map +1 -1
- package/dist/runner/fan-out.js +7 -15
- package/dist/runner/fan-out.js.map +1 -1
- package/dist/runner/goal-decomposer.d.ts +0 -1
- package/dist/runner/goal-decomposer.d.ts.map +1 -1
- package/dist/runner/goal-decomposer.js +0 -1
- package/dist/runner/goal-decomposer.js.map +1 -1
- package/dist/runner/google-flights-preflight.d.ts +35 -0
- package/dist/runner/google-flights-preflight.d.ts.map +1 -0
- package/dist/runner/google-flights-preflight.js +411 -0
- package/dist/runner/google-flights-preflight.js.map +1 -0
- package/dist/runner/interrupt-controller.d.ts +1 -1
- package/dist/runner/interrupt-controller.js +1 -1
- package/dist/runner/overlay-narration.d.ts +1 -1
- package/dist/runner/overlay-narration.js +1 -1
- package/dist/runner/parallel-runner.d.ts +3 -6
- package/dist/runner/parallel-runner.d.ts.map +1 -1
- package/dist/runner/parallel-runner.js +2 -3
- package/dist/runner/parallel-runner.js.map +1 -1
- package/dist/runner/pattern-extractor.d.ts +2 -2
- package/dist/runner/pattern-extractor.js +2 -2
- package/dist/runner/runner.d.ts +15 -39
- package/dist/runner/runner.d.ts.map +1 -1
- package/dist/runner/runner.js +208 -255
- package/dist/runner/runner.js.map +1 -1
- package/dist/runner/stream-webhook.d.ts +1 -1
- package/dist/runner/stream-webhook.js +1 -1
- package/dist/skills/domain-loader.d.ts +1 -2
- package/dist/skills/domain-loader.d.ts.map +1 -1
- package/dist/skills/domain-loader.js +1 -2
- package/dist/skills/domain-loader.js.map +1 -1
- package/dist/supervisor/critic.js +1 -4
- package/dist/supervisor/critic.js.map +1 -1
- package/dist/telemetry/schema.d.ts +2 -2
- package/dist/telemetry/schema.js +2 -2
- package/dist/test-runner.d.ts +4 -5
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +2 -3
- package/dist/test-runner.js.map +1 -1
- package/dist/types.d.ts +21 -21
- package/dist/types.d.ts.map +1 -1
- package/package.json +57 -54
package/dist/run-state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-state.d.ts","sourceRoot":"","sources":["../src/run-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH
|
|
1
|
+
{"version":3,"file":"run-state.d.ts","sourceRoot":"","sources":["../src/run-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,SAAU,CAAC;AAE5C,qBAAa,QAAQ;IACnB,iBAAiB,SAAK;IACtB,WAAW,SAAK;IAChB,0BAA0B,SAAK;IAC/B,2BAA2B,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,uBAAuB,SAAK;IAC5B,kBAAkB,SAAa;IAC/B,wBAAwB,EAAE,MAAM,EAAE,CAAM;IACxC,oDAAoD;IACpD,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,eAAe,cAAqB;IAGpC,WAAW,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IAEvD;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,SAAa;IAE7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC,6EAA6E;IAC7E,eAAe,SAAK;IACpB,wFAAwF;IACxF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAWlD,WAAW,IAAI,IAAI;IAKnB,sBAAsB,IAAI,IAAI;IAI9B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAM9C,IAAI,sBAAsB,IAAI,OAAO,CAEpC;IAED,IAAI,4BAA4B,IAAI,OAAO,CAE1C;IAED,IAAI,sBAAsB,IAAI,OAAO,CAEpC;IAED,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAKvC"}
|
package/dist/run-state.js
CHANGED
|
@@ -3,36 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Extracted from runner.ts to reduce scattered mutable state in the main loop.
|
|
5
5
|
*/
|
|
6
|
-
/**
|
|
7
|
-
* Gen 10 cost cap default. Set high enough that normal cases never hit it
|
|
8
|
-
* but low enough to stop the recovery-loop death-spirals Gen 9 hit.
|
|
9
|
-
*
|
|
10
|
-
* Calibration:
|
|
11
|
-
* - Gen 8 real-web extraction tasks: ~6k tokens mean (well under cap)
|
|
12
|
-
* - Tier 1 form-multistep full-evidence: ~60k tokens (within cap + headroom)
|
|
13
|
-
* - Gen 9 death-spirals: 132k–173k tokens (above cap → caught and aborted)
|
|
14
|
-
*
|
|
15
|
-
* 100k gives normal cases 40k of headroom above the worst-case normal run
|
|
16
|
-
* I've measured (form-multistep), and still catches death spirals in 5–8
|
|
17
|
-
* turns of futility before they burn unbounded cost.
|
|
18
|
-
*
|
|
19
|
-
* Override per-case via Scenario.tokenBudget or globally via the
|
|
20
|
-
* BAD_TOKEN_BUDGET env var.
|
|
21
|
-
*/
|
|
22
6
|
/**
|
|
23
7
|
* Default token budget per case. The cap aborts a run with `cost_cap_exceeded`
|
|
24
8
|
* once total LLM tokens (input + output + cache) exceed this number.
|
|
25
|
-
*
|
|
26
|
-
* History:
|
|
27
|
-
* - Gen 9: 100k cap added to bound runaway recovery loops (after Gen 8.1
|
|
28
|
-
* burned 130-173k tokens / $0.25-$0.32 per case in death-spiral runs).
|
|
29
|
-
* - 2026-04-27: bumped 100k → 300k. The Gen 11-era 100k cap was set when
|
|
30
|
-
* the brain default was a smaller model (gpt-5.2 family). gpt-5.4 is
|
|
31
|
-
* materially more verbose per turn — the production-shipping cap was
|
|
32
|
-
* dominating the failure mode (10/12 WebVoyager curated-30 misses were
|
|
33
|
-
* `cost_cap_exceeded` at the 100k cap). Bumping to 300k took curated-30
|
|
34
|
-
* pass rate from 60.0% → 86.7% with zero cost_cap aborts.
|
|
35
|
-
*
|
|
36
9
|
* Override per-case via Scenario.tokenBudget or globally via the
|
|
37
10
|
* BAD_TOKEN_BUDGET env var (env wins — see RunState constructor).
|
|
38
11
|
*/
|
|
@@ -45,18 +18,16 @@ export class RunState {
|
|
|
45
18
|
supervisorInterventions = 0;
|
|
46
19
|
lastSupervisorTurn = -Infinity;
|
|
47
20
|
goalVerificationEvidence = [];
|
|
48
|
-
/**
|
|
21
|
+
/** Accumulated evidence extracted during the run */
|
|
49
22
|
extractedEvidence = [];
|
|
50
23
|
searchScoutUrls = new Set();
|
|
51
|
-
//
|
|
24
|
+
// Known-good URLs for rollback on wrong-path recovery.
|
|
52
25
|
checkpoints = [];
|
|
53
26
|
/**
|
|
54
27
|
* Last turn at which the agent showed verifiable progress: URL changed,
|
|
55
28
|
* snapshot DOM materially changed, or evidence was extracted. Drives the
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* progress, on the theory that an agent making demonstrable progress
|
|
59
|
-
* 3 turns from the cap should not be cut off arbitrarily.
|
|
29
|
+
* The runner can grant extra turns past configured maxTurns when recent
|
|
30
|
+
* turns show URL, DOM, or evidence progress.
|
|
60
31
|
*
|
|
61
32
|
* Initial value `-Infinity` so a brand-new run with zero observations
|
|
62
33
|
* cannot trigger the extension on its way in.
|
|
@@ -75,12 +46,7 @@ export class RunState {
|
|
|
75
46
|
tokenBudget;
|
|
76
47
|
constructor(maxTurns, tokenBudget) {
|
|
77
48
|
this.maxTotalErrors = Math.max(3, Math.ceil(maxTurns / 3));
|
|
78
|
-
//
|
|
79
|
-
// explicit tokenBudget. Reason: BAD_TOKEN_BUDGET is an operator dial
|
|
80
|
-
// (e.g., "bump the cap to 200k for this model") and should beat
|
|
81
|
-
// hard-coded caller defaults like runner.ts's visionBudgetMultiplier.
|
|
82
|
-
// Before this, the env fallback only fired when tokenBudget was
|
|
83
|
-
// undefined, which was never — the runner always passed a number.
|
|
49
|
+
// BAD_TOKEN_BUDGET is an operator override and wins over caller defaults.
|
|
84
50
|
const envBudget = Number(process.env.BAD_TOKEN_BUDGET);
|
|
85
51
|
if (Number.isFinite(envBudget) && envBudget > 0) {
|
|
86
52
|
this.tokenBudget = envBudget;
|
package/dist/run-state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-state.js","sourceRoot":"","sources":["../src/run-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH
|
|
1
|
+
{"version":3,"file":"run-state.js","sourceRoot":"","sources":["../src/run-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAE5C,MAAM,OAAO,QAAQ;IACnB,iBAAiB,GAAG,CAAC,CAAC;IACtB,WAAW,GAAG,CAAC,CAAC;IAChB,0BAA0B,GAAG,CAAC,CAAC;IAC/B,2BAA2B,CAAqB;IAChD,uBAAuB,GAAG,CAAC,CAAC;IAC5B,kBAAkB,GAAG,CAAC,QAAQ,CAAC;IAC/B,wBAAwB,GAAa,EAAE,CAAC;IACxC,oDAAoD;IACpD,iBAAiB,GAAa,EAAE,CAAC;IACjC,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,uDAAuD;IACvD,WAAW,GAAyC,EAAE,CAAC;IAEvD;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,GAAG,CAAC,QAAQ,CAAC;IAEpB,cAAc,CAAS;IAEhC,6EAA6E;IAC7E,eAAe,GAAG,CAAC,CAAC;IACpB,wFAAwF;IAC/E,WAAW,CAAS;IAE7B,YAAY,QAAgB,EAAE,WAAoB;QAChD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3D,0EAA0E;QAC1E,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,oBAAoB,CAAC;QACzD,CAAC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,YAAY,CAAC,MAA0B;QACrC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACxE,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC;QACjC,CAAC;IACH,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC;IACjD,CAAC;IAED,IAAI,4BAA4B;QAC9B,OAAO,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,CAAC;IAClD,CAAC;IAED,cAAc,CAAC,QAAgB;QAC7B,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC3E,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion-language.d.ts","sourceRoot":"","sources":["../../src/runner/completion-language.ts"],"names":[],"mappings":"AAGA,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzE"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const SELF_CONTRADICTING_COMPLETION_RE = /\b(?:blocked from completing|could not (?:complete|find|fulfill|verify|confirm|locate|access|extract|retrieve)|cannot (?:truthfully )?(?:provide|verify|confirm|complete|extract|retrieve)|not (?:visible|available|found|present|accessible|displayed|shown|confirmed|verified|reached|currently reachable)|did not (?:take effect|work|succeed|load|return|answer)|does not (?:answer|show|include|contain|provide|meet|satisfy|match)|doesn't (?:meet|satisfy|match)|unable to (?:fully )?(?:find|complete|verify|access|extract|retrieve)|no (?:visible (?:answer|result|data|content)|results? (?:found|returned|available))|(?:failed|failure) to (?:find|complete|set|select|navigate)|unfortunately|I (?:was|am) unable|I do not (?:yet )?have|not for the requested|not the requested|specific requested|requested [^.\n]*(?:date|dates?|results?|flight|fare|search)[^.\n]*(?:not|no)[^.\n]*(?:visible|reached|available|confirmed|retrieved)|exact requested .* not|(?:task|request|goal) (?:is|was) (?:not |in)complete)\b/i;
|
|
2
|
+
export function containsSelfContradictingCompletion(text) {
|
|
3
|
+
return SELF_CONTRADICTING_COMPLETION_RE.test(text);
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=completion-language.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion-language.js","sourceRoot":"","sources":["../../src/runner/completion-language.ts"],"names":[],"mappings":"AAAA,MAAM,gCAAgC,GACpC,y+BAAy+B,CAAC;AAE5+B,MAAM,UAAU,mCAAmC,CAAC,IAAY;IAC9D,OAAO,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Scenario } from '../types.js';
|
|
2
|
+
export interface DirectStartUrl {
|
|
3
|
+
url: string;
|
|
4
|
+
profile: 'booking-search';
|
|
5
|
+
reason: string;
|
|
6
|
+
dateRoll?: {
|
|
7
|
+
originalCheckin: string;
|
|
8
|
+
originalCheckout: string;
|
|
9
|
+
checkin: string;
|
|
10
|
+
checkout: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export interface DirectStartOptions {
|
|
14
|
+
now?: Date;
|
|
15
|
+
rollPastDates?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function deriveDirectStartUrl(scenario: Pick<Scenario, 'goal' | 'startUrl'>, options?: DirectStartOptions): DirectStartUrl | undefined;
|
|
18
|
+
export declare function shouldAcceptRolledBookingCompletion(directStart: DirectStartUrl | undefined, verification: import('../types.js').GoalVerification, claimedResult: string, state: Pick<import('../types.js').PageState, 'url' | 'snapshot'>): boolean;
|
|
19
|
+
//# sourceMappingURL=direct-start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-start.d.ts","sourceRoot":"","sources":["../../src/runner/direct-start.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAmDD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,EAC7C,OAAO,GAAE,kBAAuB,GAC/B,cAAc,GAAG,SAAS,CA4B5B;AAqMD,wBAAgB,mCAAmC,CACjD,WAAW,EAAE,cAAc,GAAG,SAAS,EACvC,YAAY,EAAE,OAAO,aAAa,EAAE,gBAAgB,EACpD,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,IAAI,CAAC,OAAO,aAAa,EAAE,SAAS,EAAE,KAAK,GAAG,UAAU,CAAC,GAC/D,OAAO,CAyBT"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { safeHostname } from './utils.js';
|
|
2
|
+
const MONTHS = {
|
|
3
|
+
jan: 1,
|
|
4
|
+
january: 1,
|
|
5
|
+
feb: 2,
|
|
6
|
+
february: 2,
|
|
7
|
+
mar: 3,
|
|
8
|
+
march: 3,
|
|
9
|
+
apr: 4,
|
|
10
|
+
april: 4,
|
|
11
|
+
may: 5,
|
|
12
|
+
jun: 6,
|
|
13
|
+
june: 6,
|
|
14
|
+
jul: 7,
|
|
15
|
+
july: 7,
|
|
16
|
+
aug: 8,
|
|
17
|
+
august: 8,
|
|
18
|
+
sep: 9,
|
|
19
|
+
sept: 9,
|
|
20
|
+
september: 9,
|
|
21
|
+
oct: 10,
|
|
22
|
+
october: 10,
|
|
23
|
+
nov: 11,
|
|
24
|
+
november: 11,
|
|
25
|
+
dec: 12,
|
|
26
|
+
december: 12,
|
|
27
|
+
};
|
|
28
|
+
const NUMBER_WORDS = {
|
|
29
|
+
one: 1,
|
|
30
|
+
two: 2,
|
|
31
|
+
three: 3,
|
|
32
|
+
four: 4,
|
|
33
|
+
five: 5,
|
|
34
|
+
six: 6,
|
|
35
|
+
seven: 7,
|
|
36
|
+
};
|
|
37
|
+
export function deriveDirectStartUrl(scenario, options = {}) {
|
|
38
|
+
if (process.env.BAD_DIRECT_START === '0')
|
|
39
|
+
return undefined;
|
|
40
|
+
if (!scenario.startUrl || !scenario.goal)
|
|
41
|
+
return undefined;
|
|
42
|
+
const host = safeHostname(scenario.startUrl);
|
|
43
|
+
if (!host || !/(^|\.)booking\.com$/.test(host))
|
|
44
|
+
return undefined;
|
|
45
|
+
const destination = extractBookingDestination(scenario.goal);
|
|
46
|
+
const dates = extractStayDates(scenario.goal, options);
|
|
47
|
+
if (!destination || !dates)
|
|
48
|
+
return undefined;
|
|
49
|
+
const url = new URL('https://www.booking.com/searchresults.html');
|
|
50
|
+
url.searchParams.set('ss', destination);
|
|
51
|
+
url.searchParams.set('checkin', dates.checkin);
|
|
52
|
+
url.searchParams.set('checkout', dates.checkout);
|
|
53
|
+
const adults = extractAdults(scenario.goal);
|
|
54
|
+
if (adults)
|
|
55
|
+
url.searchParams.set('group_adults', String(adults));
|
|
56
|
+
const rooms = extractRooms(scenario.goal);
|
|
57
|
+
if (rooms)
|
|
58
|
+
url.searchParams.set('no_rooms', String(rooms));
|
|
59
|
+
const children = extractChildren(scenario.goal);
|
|
60
|
+
if (children)
|
|
61
|
+
url.searchParams.set('group_children', String(children));
|
|
62
|
+
return {
|
|
63
|
+
url: url.toString(),
|
|
64
|
+
profile: 'booking-search',
|
|
65
|
+
reason: `Booking direct search for ${destination} ${dates.checkin}..${dates.checkout}`,
|
|
66
|
+
...(dates.dateRoll ? { dateRoll: dates.dateRoll } : {}),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function extractBookingDestination(goal) {
|
|
70
|
+
const patterns = [
|
|
71
|
+
/\b(?:Find|Search for|Look up|Locate|Identify)\s+(?:a\s+|the\s+)?([A-Z][A-Za-z]+(?:\s+[A-Z][A-Za-z]+){0,3})\s+hotel(?:\s+options)?\b/,
|
|
72
|
+
/\b(?:hotel|hotels|properties|property|resort|room|rooms)(?:\s*\([^)]*\))?\s+(?:options\s+)?(?:available\s+)?(?:in|near|closest to)\s+(.+?)(?=\s+(?:from|for|with|that|and|available|costs|under|less|rated|rating|starting|offering|on\s+booking|suitable|sort|browse|,)|[,.]|$)/i,
|
|
73
|
+
/\b(?:in|near|closest to)\s+(.+?)(?=\s+(?:from|for|with|that|and|available|costs|under|less|rated|rating|starting|offering|on\s+booking|suitable|sort|browse|,)|[,.]|$)/i,
|
|
74
|
+
];
|
|
75
|
+
for (const pattern of patterns) {
|
|
76
|
+
const match = goal.match(pattern);
|
|
77
|
+
const raw = match?.[1]?.trim();
|
|
78
|
+
if (!raw)
|
|
79
|
+
continue;
|
|
80
|
+
const cleaned = raw
|
|
81
|
+
.replace(/^(?:downtown|the)\s+/i, (prefix) => prefix.toLowerCase() === 'the ' ? '' : prefix)
|
|
82
|
+
.replace(/\s+please$/i, '')
|
|
83
|
+
.trim();
|
|
84
|
+
if (cleaned && !/\b(price|page|website|results?)\b/i.test(cleaned))
|
|
85
|
+
return cleaned;
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
function extractStayDates(goal, options) {
|
|
90
|
+
const text = normalizeDateText(goal);
|
|
91
|
+
const numeric = text.match(/\b(\d{1,2})\/(\d{1,2})\/(\d{4})\s*(?:-|to|through)\s*(\d{1,2})\/(\d{1,2})\/(\d{4})\b/i);
|
|
92
|
+
if (numeric) {
|
|
93
|
+
return normalizeStay(makeStay({ day: Number(numeric[1]), month: Number(numeric[2]), year: Number(numeric[3]) }, { day: Number(numeric[4]), month: Number(numeric[5]), year: Number(numeric[6]) }), options);
|
|
94
|
+
}
|
|
95
|
+
const explicitRange = matchDateRange(text);
|
|
96
|
+
if (explicitRange)
|
|
97
|
+
return normalizeStay(explicitRange, options);
|
|
98
|
+
const duration = matchDurationStay(text);
|
|
99
|
+
if (duration)
|
|
100
|
+
return normalizeStay(duration, options);
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
function matchDateRange(text) {
|
|
104
|
+
const month = monthPattern();
|
|
105
|
+
const rangePatterns = [
|
|
106
|
+
new RegExp(`\\b(${month})\\s+(\\d{1,2}),?\\s+(\\d{4}),?\\s*(?:-|to|through|and)\\s*(${month})\\s+(\\d{1,2}),?\\s+(\\d{4})\\b`, 'i'),
|
|
107
|
+
new RegExp(`\\b(${month})\\s+(\\d{1,2})\\s*(?:-|to|through)\\s*(${month})\\s+(\\d{1,2}),?\\s+(\\d{4})\\b`, 'i'),
|
|
108
|
+
new RegExp(`\\b(${month})\\s+(\\d{1,2})\\s*(?:-|to|through)\\s*(\\d{1,2}),?\\s+(\\d{4})\\b`, 'i'),
|
|
109
|
+
new RegExp(`\\b(${month})\\s+(\\d{1,2})\\s*(?:-|to|through)\\s*(${month})\\s+(\\d{1,2})\\b`, 'i'),
|
|
110
|
+
new RegExp(`\\b(${month})\\s+(\\d{1,2})\\s*(?:-|to|through)\\s*(\\d{1,2})\\b`, 'i'),
|
|
111
|
+
new RegExp(`\\b(\\d{1,2})\\s+(${month})\\s*(?:-|to|through)\\s*(\\d{1,2})\\s+(${month})\\s+(\\d{4})\\b`, 'i'),
|
|
112
|
+
];
|
|
113
|
+
for (const [index, pattern] of rangePatterns.entries()) {
|
|
114
|
+
const match = text.match(pattern);
|
|
115
|
+
if (!match)
|
|
116
|
+
continue;
|
|
117
|
+
if (index === 0) {
|
|
118
|
+
return makeStay(dateParts(match[1], match[2], match[3]), dateParts(match[4], match[5], match[6]));
|
|
119
|
+
}
|
|
120
|
+
if (index === 1) {
|
|
121
|
+
return makeStay(dateParts(match[1], match[2], match[5]), dateParts(match[3], match[4], match[5]));
|
|
122
|
+
}
|
|
123
|
+
if (index === 2) {
|
|
124
|
+
return makeStay(dateParts(match[1], match[2], match[4]), dateParts(match[1], match[3], match[4]));
|
|
125
|
+
}
|
|
126
|
+
if (index === 3) {
|
|
127
|
+
return makeStay(dateParts(match[1], match[2]), dateParts(match[3], match[4]));
|
|
128
|
+
}
|
|
129
|
+
if (index === 4) {
|
|
130
|
+
return makeStay(dateParts(match[1], match[2]), dateParts(match[1], match[3]));
|
|
131
|
+
}
|
|
132
|
+
return makeStay(dateParts(match[2], match[1], match[5]), dateParts(match[4], match[3], match[5]));
|
|
133
|
+
}
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
function matchDurationStay(text) {
|
|
137
|
+
const month = monthPattern();
|
|
138
|
+
const durationRe = new RegExp(`\\b(?:(\\d+)|one|two|three|four|five|six|seven|week)-?\\s*(?:night|nights|day|days|long)?\\s+stay\\s+(?:from|starting(?:\\s+from|\\s+on)?)\\s+(${month})\\s+(\\d{1,2})(?:,?\\s+(\\d{4}))?\\b`, 'i');
|
|
139
|
+
const stay = text.match(durationRe);
|
|
140
|
+
if (stay) {
|
|
141
|
+
const nights = stay[1] ? Number(stay[1]) : stay[0].toLowerCase().startsWith('week') ? 7 : NUMBER_WORDS[stay[0].split(/\s|-/)[0].toLowerCase()];
|
|
142
|
+
const start = resolveDate(dateParts(stay[2], stay[3], stay[4]));
|
|
143
|
+
return {
|
|
144
|
+
checkin: formatDate(start),
|
|
145
|
+
checkout: formatDate(addDays(start, nights || 1)),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
const durationDayMonthRe = new RegExp(`\\b(?:(\\d+)|one|two|three|four|five|six|seven|week)-?\\s*(?:night|nights|day|days|long)?\\s+stay\\s+(?:from|starting(?:\\s+from|\\s+on)?)\\s+(\\d{1,2})\\s+(${month})(?:,?\\s+(\\d{4}))?\\b`, 'i');
|
|
149
|
+
const dayMonthStay = text.match(durationDayMonthRe);
|
|
150
|
+
if (dayMonthStay) {
|
|
151
|
+
const nights = dayMonthStay[1] ? Number(dayMonthStay[1]) : dayMonthStay[0].toLowerCase().startsWith('week') ? 7 : NUMBER_WORDS[dayMonthStay[0].split(/\s|-/)[0].toLowerCase()];
|
|
152
|
+
const start = resolveDate(dateParts(dayMonthStay[3], dayMonthStay[2], dayMonthStay[4]));
|
|
153
|
+
return {
|
|
154
|
+
checkin: formatDate(start),
|
|
155
|
+
checkout: formatDate(addDays(start, nights || 1)),
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
const daysRe = new RegExp(`\\bfor\\s+(?:(\\d+)|one|two|three|four|five|six|seven)\\s+days?\\s+(?:from|starting(?:\\s+from|\\s+on)?)\\s+(${month})\\s+(\\d{1,2})(?:,?\\s+(\\d{4}))?\\b`, 'i');
|
|
159
|
+
const days = text.match(daysRe);
|
|
160
|
+
if (days) {
|
|
161
|
+
const nights = days[1] ? Number(days[1]) : NUMBER_WORDS[days[0].match(/\b(one|two|three|four|five|six|seven)\b/i)?.[1]?.toLowerCase() || 'one'];
|
|
162
|
+
const start = resolveDate(dateParts(days[2], days[3], days[4]));
|
|
163
|
+
return {
|
|
164
|
+
checkin: formatDate(start),
|
|
165
|
+
checkout: formatDate(addDays(start, nights || 1)),
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
function extractAdults(goal) {
|
|
171
|
+
if (/\bcouple\b/i.test(goal))
|
|
172
|
+
return 2;
|
|
173
|
+
const match = goal.match(/\b(\d+|one|two|three|four|five|six|seven)\s+adults?\b/i);
|
|
174
|
+
return match ? numberFromText(match[1]) : undefined;
|
|
175
|
+
}
|
|
176
|
+
function extractRooms(goal) {
|
|
177
|
+
const match = goal.match(/\b(\d+|one|two|three|four|five|six|seven)\s+rooms?\b/i);
|
|
178
|
+
return match ? numberFromText(match[1]) : undefined;
|
|
179
|
+
}
|
|
180
|
+
function extractChildren(goal) {
|
|
181
|
+
const match = goal.match(/\b(\d+|one|two|three|four|five|six|seven)\s+children\b/i);
|
|
182
|
+
return match ? numberFromText(match[1]) : undefined;
|
|
183
|
+
}
|
|
184
|
+
function numberFromText(value) {
|
|
185
|
+
return /^\d+$/.test(value) ? Number(value) : NUMBER_WORDS[value.toLowerCase()] || 0;
|
|
186
|
+
}
|
|
187
|
+
function makeStay(start, end) {
|
|
188
|
+
return {
|
|
189
|
+
checkin: formatDate(resolveDate(start)),
|
|
190
|
+
checkout: formatDate(resolveDate(end, start)),
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
function normalizeStay(stay, options) {
|
|
194
|
+
if (options.rollPastDates === false)
|
|
195
|
+
return stay;
|
|
196
|
+
const originalCheckin = stay.checkin;
|
|
197
|
+
const originalCheckout = stay.checkout;
|
|
198
|
+
const today = startOfUtcDay(options.now || new Date());
|
|
199
|
+
let checkin = parseIsoDate(stay.checkin);
|
|
200
|
+
let checkout = parseIsoDate(stay.checkout);
|
|
201
|
+
while (checkin < today) {
|
|
202
|
+
checkin = addYears(checkin, 1);
|
|
203
|
+
checkout = addYears(checkout, 1);
|
|
204
|
+
}
|
|
205
|
+
const rolled = {
|
|
206
|
+
checkin: formatDate(checkin),
|
|
207
|
+
checkout: formatDate(checkout),
|
|
208
|
+
};
|
|
209
|
+
if (rolled.checkin === originalCheckin && rolled.checkout === originalCheckout)
|
|
210
|
+
return rolled;
|
|
211
|
+
return {
|
|
212
|
+
...rolled,
|
|
213
|
+
dateRoll: {
|
|
214
|
+
originalCheckin,
|
|
215
|
+
originalCheckout,
|
|
216
|
+
checkin: rolled.checkin,
|
|
217
|
+
checkout: rolled.checkout,
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
export function shouldAcceptRolledBookingCompletion(directStart, verification, claimedResult, state) {
|
|
222
|
+
if (!directStart?.dateRoll || verification.achieved)
|
|
223
|
+
return false;
|
|
224
|
+
const haystack = `${state.url}\n${state.snapshot}\n${claimedResult}`.toLowerCase();
|
|
225
|
+
const verifierText = [...verification.evidence, ...verification.missing].join('\n').toLowerCase();
|
|
226
|
+
const hasRolledDates = haystack.includes(directStart.dateRoll.checkin) &&
|
|
227
|
+
haystack.includes(directStart.dateRoll.checkout);
|
|
228
|
+
if (!hasRolledDates)
|
|
229
|
+
return false;
|
|
230
|
+
const looksLikeConcreteBookingResult = [
|
|
231
|
+
/\bbooking\.com\b/,
|
|
232
|
+
/\b(scored|score|reviews?|properties found|price|per night|total|hotel|room|brand|brands|free cancellation|breakfast)\b/,
|
|
233
|
+
].every((pattern) => pattern.test(haystack));
|
|
234
|
+
if (!looksLikeConcreteBookingResult)
|
|
235
|
+
return false;
|
|
236
|
+
return [
|
|
237
|
+
/\bwrong (?:date|year|dates)\b/,
|
|
238
|
+
/\b(?:date|year|dates) (?:mismatch|do not match|does not match)\b/,
|
|
239
|
+
/\brequested .*2026\b/,
|
|
240
|
+
/\bcurrent .*2027\b/,
|
|
241
|
+
/\bfinal page state\b/,
|
|
242
|
+
/\bcurrent page\b/,
|
|
243
|
+
/\bnot visible\b/,
|
|
244
|
+
].some((pattern) => pattern.test(verifierText));
|
|
245
|
+
}
|
|
246
|
+
function dateParts(monthName, day, year) {
|
|
247
|
+
return {
|
|
248
|
+
month: MONTHS[monthName.toLowerCase()] || Number(monthName),
|
|
249
|
+
day: Number(day),
|
|
250
|
+
...(year ? { year: Number(year) } : {}),
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
function resolveDate(parts, prior) {
|
|
254
|
+
const year = parts.year || prior?.year || inferBenchmarkYear(parts.month);
|
|
255
|
+
return new Date(Date.UTC(year, parts.month - 1, parts.day));
|
|
256
|
+
}
|
|
257
|
+
function inferBenchmarkYear(month) {
|
|
258
|
+
// WebVoyager's Booking tasks mix explicit 2025/2026 dates with omitted years.
|
|
259
|
+
// The omitted-year examples are from the same benchmark season, not wall-clock-relative user requests.
|
|
260
|
+
return month === 12 ? 2025 : 2026;
|
|
261
|
+
}
|
|
262
|
+
function addDays(date, days) {
|
|
263
|
+
const out = new Date(date);
|
|
264
|
+
out.setUTCDate(out.getUTCDate() + days);
|
|
265
|
+
return out;
|
|
266
|
+
}
|
|
267
|
+
function addYears(date, years) {
|
|
268
|
+
return new Date(Date.UTC(date.getUTCFullYear() + years, date.getUTCMonth(), date.getUTCDate()));
|
|
269
|
+
}
|
|
270
|
+
function parseIsoDate(value) {
|
|
271
|
+
const [year, month, day] = value.split('-').map(Number);
|
|
272
|
+
return new Date(Date.UTC(year, month - 1, day));
|
|
273
|
+
}
|
|
274
|
+
function startOfUtcDay(date) {
|
|
275
|
+
return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
|
|
276
|
+
}
|
|
277
|
+
function formatDate(date) {
|
|
278
|
+
const yyyy = date.getUTCFullYear();
|
|
279
|
+
const mm = String(date.getUTCMonth() + 1).padStart(2, '0');
|
|
280
|
+
const dd = String(date.getUTCDate()).padStart(2, '0');
|
|
281
|
+
return `${yyyy}-${mm}-${dd}`;
|
|
282
|
+
}
|
|
283
|
+
function normalizeDateText(goal) {
|
|
284
|
+
return goal
|
|
285
|
+
.replace(/[–—]/g, '-')
|
|
286
|
+
.replace(/\b(\d{1,2})(st|nd|rd|th)\b/gi, '$1')
|
|
287
|
+
.replace(/\s+/g, ' ')
|
|
288
|
+
.trim();
|
|
289
|
+
}
|
|
290
|
+
function monthPattern() {
|
|
291
|
+
return Object.keys(MONTHS)
|
|
292
|
+
.sort((a, b) => b.length - a.length)
|
|
293
|
+
.join('|');
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=direct-start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-start.js","sourceRoot":"","sources":["../../src/runner/direct-start.ts"],"names":[],"mappings":"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"}
|
package/dist/runner/events.d.ts
CHANGED
|
@@ -189,12 +189,9 @@ export interface PlanFallbackEnteredEvent extends BaseEvent {
|
|
|
189
189
|
fallbackContext: string;
|
|
190
190
|
}
|
|
191
191
|
/**
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
* as extraContext so the planner can avoid the same trap. Capped at
|
|
196
|
-
* `maxReplans` per run; on cap-reached the runner falls through to the
|
|
197
|
-
* per-action loop instead.
|
|
192
|
+
* Runner is calling Brain.plan() again after a previous plan deviated.
|
|
193
|
+
* The replan attempt observes the current page and asks for a fresh plan
|
|
194
|
+
* with deviation context attached.
|
|
198
195
|
*/
|
|
199
196
|
export interface PlanReplanStartedEvent extends BaseEvent {
|
|
200
197
|
type: 'plan-replan-started';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/runner/events.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/runner/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/runner/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/runner/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAqPH;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IACf,SAAS,GAAG,IAAI,GAAG,EAAqB,CAAA;IACxC,MAAM,GAAgB,EAAE,CAAA;IACxB,OAAO,GAAG,CAAC,CAAA;IACF,SAAS,CAAQ;IACjB,eAAe,CAAqD;IAErF,YAAY,UAA+B,EAAE;QAC3C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAA;QACzC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5D,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,IAAI,CAAsB,KAAiC;QACzD,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,EAA0B,CAAA;QACtE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,CAAA;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,QAA2B,EAAE,cAAc,GAAG,IAAI;QAC1D,IAAI,cAAc,EAAE,CAAC;YACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,QAAQ,CAAC,KAAK,CAAC,CAAA;gBACjB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACjC,CAAC,CAAA;IACH,CAAC;IAED,2DAA2D;IAC3D,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IACzB,CAAC;IAED,2DAA2D;IAC3D,WAAW;QACT,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,gDAAgD;IAChD,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;IAC5B,CAAC;IAED,iEAAiE;IACjE,OAAO,CAAsB,KAAwC;QACnE,qEAAqE;QACrE,wEAAwE;QACxE,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,EAAE,GAAI,KAAa,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IAChE,CAAC;CACF;AAUD,2EAA2E;AAE3E;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAgB;IAChD,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAC3D,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;QAClD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CACrB,KAAgB,EAChB,IAAO;IAEP,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,CAAA;AAC5B,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAkB;IAC1C,OAAO,GAAG,IAAI,aAAa,EAAE,CAAA;AAC/B,CAAC"}
|
package/dist/runner/fan-out.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Mid-run parallel fan-out executor.
|
|
3
3
|
*
|
|
4
4
|
* When the agent emits a `fanOut` action in the middle of a run, this
|
|
5
5
|
* module spawns N sub-agents in fresh tabs of the same BrowserContext,
|
|
@@ -22,10 +22,9 @@
|
|
|
22
22
|
* the parent sees "BRANCH 3: error: …" as part of the structured
|
|
23
23
|
* feedback and can choose to retry / ignore / incorporate
|
|
24
24
|
*
|
|
25
|
-
* This
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* the fly from the current page's content.
|
|
25
|
+
* This differs from parallel-runner.ts, which decomposes the whole run up
|
|
26
|
+
* front. FanOut is called inside a turn with sub-goals synthesized from the
|
|
27
|
+
* current page's content.
|
|
29
28
|
*/
|
|
30
29
|
import type { BrowserContext } from 'playwright';
|
|
31
30
|
import type { AgentConfig, FanOutAction } from '../types.js';
|
|
@@ -47,10 +46,8 @@ export interface FanOutExecutorOptions {
|
|
|
47
46
|
/** Parent's currentURL — used as a default for any sub-goal that didn't set one. */
|
|
48
47
|
currentUrl?: string;
|
|
49
48
|
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* streaming per branch, verdict chips, final collapse animation.
|
|
53
|
-
* Pass undefined to skip Hydra (no cursor / headless / etc.).
|
|
49
|
+
* Parent driver used to drive the fan-out overlay on the parent page.
|
|
50
|
+
* Pass undefined to skip overlay updates.
|
|
54
51
|
*/
|
|
55
52
|
parentDriver?: Driver;
|
|
56
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fan-out.d.ts","sourceRoot":"","sources":["../../src/runner/fan-out.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fan-out.d.ts","sourceRoot":"","sources":["../../src/runner/fan-out.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAQ,MAAM,YAAY,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAY,MAAM,aAAa,CAAA;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAsC9C,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,OAAO,EAAE,cAAc,CAAA;IACvB,uFAAuF;IACvF,MAAM,EAAE,WAAW,CAAA;IACnB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAA;IAC3D,iFAAiF;IACjF,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;CAC/E;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAC9B,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAA;IAChB,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC,CAa9E;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CA+DhC;AA4JD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,kBAAkB,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBzF;AAOD,oDAAoD;AACpD,eAAO,MAAM,sBAAsB,IAA2B,CAAA"}
|
package/dist/runner/fan-out.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Mid-run parallel fan-out executor.
|
|
3
3
|
*
|
|
4
4
|
* When the agent emits a `fanOut` action in the middle of a run, this
|
|
5
5
|
* module spawns N sub-agents in fresh tabs of the same BrowserContext,
|
|
@@ -22,10 +22,9 @@
|
|
|
22
22
|
* the parent sees "BRANCH 3: error: …" as part of the structured
|
|
23
23
|
* feedback and can choose to retry / ignore / incorporate
|
|
24
24
|
*
|
|
25
|
-
* This
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* the fly from the current page's content.
|
|
25
|
+
* This differs from parallel-runner.ts, which decomposes the whole run up
|
|
26
|
+
* front. FanOut is called inside a turn with sub-goals synthesized from the
|
|
27
|
+
* current page's content.
|
|
29
28
|
*/
|
|
30
29
|
import { PlaywrightDriver } from '../drivers/playwright.js';
|
|
31
30
|
let _BrowserAgentCtor;
|
|
@@ -88,9 +87,7 @@ export async function executeFanOut(action, opts) {
|
|
|
88
87
|
tokensUsed: 0,
|
|
89
88
|
};
|
|
90
89
|
}
|
|
91
|
-
//
|
|
92
|
-
// methods are optional; absence of any is a no-op (headless / no
|
|
93
|
-
// cursor). Errors never propagate — overlay is cosmetic.
|
|
90
|
+
// Kick off the fan-out overlay on the parent page. Overlay errors are cosmetic.
|
|
94
91
|
const labels = subGoals.map((sg, i) => sg.label ?? `branch-${i + 1}`);
|
|
95
92
|
if (opts.parentDriver?.fanOutStart) {
|
|
96
93
|
await opts.parentDriver.fanOutStart(labels).catch(() => { });
|
|
@@ -113,9 +110,7 @@ export async function executeFanOut(action, opts) {
|
|
|
113
110
|
durationMs: 0,
|
|
114
111
|
}));
|
|
115
112
|
});
|
|
116
|
-
//
|
|
117
|
-
// don't flash past the viewer, then collapse (~520ms) + dismiss
|
|
118
|
-
// (~400ms). Total ≤ 4s of overlay time beyond actual work.
|
|
113
|
+
// Keep fast fan-outs visible long enough to be legible, then collapse and dismiss.
|
|
119
114
|
if (opts.parentDriver?.fanOutCollapse) {
|
|
120
115
|
const elapsed = Date.now() - startedAt;
|
|
121
116
|
if (elapsed < 3000) {
|
|
@@ -144,10 +139,7 @@ async function runBranch(sg, index, opts) {
|
|
|
144
139
|
const startedAt = Date.now();
|
|
145
140
|
opts.onBranchStart?.(index, label);
|
|
146
141
|
let page;
|
|
147
|
-
//
|
|
148
|
-
// branch is running; stops on completion/error/page-close. Each tick
|
|
149
|
-
// pushes a base64 JPEG into the parent's overlay cell. Fire-and-forget;
|
|
150
|
-
// late frames after completion are dropped by the cell dedup logic.
|
|
142
|
+
// Screenshot streamer: update the branch overlay cell while the branch runs.
|
|
151
143
|
let streamer;
|
|
152
144
|
const startStreamer = (pageRef) => {
|
|
153
145
|
if (!opts.parentDriver?.fanOutUpdateCell)
|