@tangle-network/browser-agent-driver 0.24.1 → 0.25.0
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/brain/index.d.ts +5 -0
- package/dist/brain/index.d.ts.map +1 -1
- package/dist/brain/index.js +80 -32
- package/dist/brain/index.js.map +1 -1
- package/dist/cli-attach.d.ts +128 -0
- package/dist/cli-attach.d.ts.map +1 -0
- package/dist/cli-attach.js +254 -0
- package/dist/cli-attach.js.map +1 -0
- package/dist/cli-preview.d.ts +59 -0
- package/dist/cli-preview.d.ts.map +1 -0
- package/dist/cli-preview.js +144 -0
- package/dist/cli-preview.js.map +1 -0
- package/dist/cli-share.d.ts +77 -0
- package/dist/cli-share.d.ts.map +1 -0
- package/dist/cli-share.js +141 -0
- package/dist/cli-share.js.map +1 -0
- package/dist/cli-ui.d.ts.map +1 -1
- package/dist/cli-ui.js +15 -1
- package/dist/cli-ui.js.map +1 -1
- package/dist/cli.js +262 -14
- package/dist/cli.js.map +1 -1
- package/dist/drivers/cursor-overlay.d.ts +18 -10
- package/dist/drivers/cursor-overlay.d.ts.map +1 -1
- package/dist/drivers/cursor-overlay.js +221 -30
- package/dist/drivers/cursor-overlay.js.map +1 -1
- package/dist/drivers/overlay-label.d.ts +33 -0
- package/dist/drivers/overlay-label.d.ts.map +1 -0
- package/dist/drivers/overlay-label.js +92 -0
- package/dist/drivers/overlay-label.js.map +1 -0
- package/dist/drivers/playwright.d.ts +30 -0
- package/dist/drivers/playwright.d.ts.map +1 -1
- package/dist/drivers/playwright.js +204 -16
- package/dist/drivers/playwright.js.map +1 -1
- package/dist/drivers/snapshot.d.ts +12 -0
- package/dist/drivers/snapshot.d.ts.map +1 -1
- package/dist/drivers/snapshot.js +17 -0
- package/dist/drivers/snapshot.js.map +1 -1
- package/dist/drivers/types.d.ts +13 -0
- package/dist/drivers/types.d.ts.map +1 -1
- package/dist/multi-actor.d.ts.map +1 -1
- package/dist/multi-actor.js +4 -0
- package/dist/multi-actor.js.map +1 -1
- package/dist/run-state.d.ts.map +1 -1
- package/dist/run-state.js +12 -2
- package/dist/run-state.js.map +1 -1
- package/dist/runner/interrupt-controller.d.ts +67 -0
- package/dist/runner/interrupt-controller.d.ts.map +1 -0
- package/dist/runner/interrupt-controller.js +142 -0
- package/dist/runner/interrupt-controller.js.map +1 -0
- package/dist/runner/overlay-narration.d.ts +83 -0
- package/dist/runner/overlay-narration.d.ts.map +1 -0
- package/dist/runner/overlay-narration.js +172 -0
- package/dist/runner/overlay-narration.js.map +1 -0
- package/dist/runner/parallel-runner.d.ts +4 -0
- package/dist/runner/parallel-runner.d.ts.map +1 -1
- package/dist/runner/parallel-runner.js +1 -0
- package/dist/runner/parallel-runner.js.map +1 -1
- package/dist/runner/runner.d.ts +17 -0
- package/dist/runner/runner.d.ts.map +1 -1
- package/dist/runner/runner.js +72 -50
- package/dist/runner/runner.js.map +1 -1
- package/dist/runner/stream-webhook.d.ts +70 -0
- package/dist/runner/stream-webhook.d.ts.map +1 -0
- package/dist/runner/stream-webhook.js +132 -0
- package/dist/runner/stream-webhook.js.map +1 -0
- package/dist/skills/domain-loader.d.ts +78 -0
- package/dist/skills/domain-loader.d.ts.map +1 -0
- package/dist/skills/domain-loader.js +201 -0
- package/dist/skills/domain-loader.js.map +1 -0
- package/dist/skills/macro-loader.d.ts +95 -0
- package/dist/skills/macro-loader.d.ts.map +1 -0
- package/dist/skills/macro-loader.js +237 -0
- package/dist/skills/macro-loader.js.map +1 -0
- package/dist/supervisor/critic.js +1 -1
- package/dist/supervisor/policy.js +7 -0
- package/dist/supervisor/policy.js.map +1 -1
- package/dist/test-runner.d.ts +13 -0
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +6 -0
- package/dist/test-runner.js.map +1 -1
- package/dist/types.d.ts +19 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/viewer/viewer.html +122 -8
- package/package.json +3 -2
package/dist/drivers/types.d.ts
CHANGED
|
@@ -43,7 +43,20 @@ export interface Driver {
|
|
|
43
43
|
inspectSelectorHref?(selector: string): Promise<string | undefined>;
|
|
44
44
|
/** Optional run-time diagnostics for startup and browser/session setup */
|
|
45
45
|
getDiagnostics?(): Record<string, unknown>;
|
|
46
|
+
/** Gen 29: expose the driver's construction options so the runner can
|
|
47
|
+
* hand them to sub-drivers (compound-goal parallel tabs). Drivers that
|
|
48
|
+
* don't support compound goals can omit this. Return shape is driver-
|
|
49
|
+
* specific (cast at the caller). */
|
|
50
|
+
getDriverOptions?(): unknown;
|
|
46
51
|
/** Close/cleanup the driver */
|
|
47
52
|
close?(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Gen 32 — overlay narration hooks. No-op when the overlay is off.
|
|
55
|
+
* Drivers without a cursor overlay can omit these entirely; callers
|
|
56
|
+
* check for presence and skip when absent.
|
|
57
|
+
*/
|
|
58
|
+
setOverlayReasoning?(text: string): Promise<void>;
|
|
59
|
+
setOverlayProgress?(current: number, total: number, label?: string): Promise<void>;
|
|
60
|
+
pushOverlayBadge?(kind: 'positive' | 'cleared' | 'review' | 'info', text: string): Promise<void>;
|
|
48
61
|
}
|
|
49
62
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/drivers/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yCAAyC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,mEAAmE;IACnE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAE9B,wBAAwB;IACxB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,wDAAwD;IACxD,OAAO,CAAC,IAAI,OAAO,YAAY,EAAE,IAAI,GAAG,SAAS,CAAC;IAElD,0DAA0D;IAC1D,MAAM,CAAC,IAAI,MAAM,CAAC;IAElB,kCAAkC;IAClC,UAAU,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/B,0EAA0E;IAC1E,mBAAmB,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEpE,0EAA0E;IAC1E,cAAc,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3C,+BAA+B;IAC/B,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/drivers/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yCAAyC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,mEAAmE;IACnE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAE9B,wBAAwB;IACxB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,wDAAwD;IACxD,OAAO,CAAC,IAAI,OAAO,YAAY,EAAE,IAAI,GAAG,SAAS,CAAC;IAElD,0DAA0D;IAC1D,MAAM,CAAC,IAAI,MAAM,CAAC;IAElB,kCAAkC;IAClC,UAAU,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/B,0EAA0E;IAC1E,mBAAmB,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEpE,0EAA0E;IAC1E,cAAc,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3C;;;wCAGoC;IACpC,gBAAgB,CAAC,IAAI,OAAO,CAAC;IAE7B,+BAA+B;IAC/B,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,kBAAkB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,gBAAgB,CAAC,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-actor.d.ts","sourceRoot":"","sources":["../src/multi-actor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAC9D,yEAAyE;IACzE,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACnC,0DAA0D;IAC1D,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,uDAAuD;IACvD,aAAa,CAAC,EAAE,uBAAuB,CAAC;CACzC;AAED,MAAM,WAAW,uBAAuB;IACtC,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,0EAA0E;IAC1E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,uEAAuE;IACvE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACjD,gDAAgD;IAChD,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAID,qBAAa,KAAK;IAId,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IAPjB,OAAO,CAAC,QAAQ,CAAqB;gBAG1B,IAAI,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,YAAY;IAG/B,+EAA+E;IACzE,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IAMnD,6DAA6D;IAC7D,IAAI,IAAI,IAAI,IAAI,CAEf;IAED,mDAAmD;IACnD,IAAI,OAAO,IAAI,cAAc,CAE5B;IAED,mDAAmD;IACnD,IAAI,MAAM,IAAI,gBAAgB,CAE7B;IAED,yCAAyC;IACzC,IAAI,OAAO,IAAI,SAAS,WAAW,EAAE,CAEpC;IAED,sDAAsD;IACtD,IAAI,UAAU,IAAI,WAAW,GAAG,SAAS,CAExC;CACF;AAID,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;IAIP;;;;;;OAMG;WACU,MAAM,CACjB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"multi-actor.d.ts","sourceRoot":"","sources":["../src/multi-actor.ts"],"names":[],"mappings":"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"}
|
package/dist/multi-actor.js
CHANGED
|
@@ -104,6 +104,10 @@ export class MultiActorSession {
|
|
|
104
104
|
const context = await browser.newContext(contextOptions);
|
|
105
105
|
createdContexts.push(context);
|
|
106
106
|
const page = await context.newPage();
|
|
107
|
+
// Gen 29 caveat: multi-actor flows do NOT receive the shared macro
|
|
108
|
+
// registry. The caller is expected to pass macros via
|
|
109
|
+
// actorCfg.driverOptions.macros if a given actor should see them.
|
|
110
|
+
// Domain skills + extensions propagate via the normal AgentConfig path.
|
|
107
111
|
const driver = new PlaywrightDriver(page, actorCfg.driverOptions);
|
|
108
112
|
// Wire onTurn to prefix with actor name
|
|
109
113
|
const onTurn = config.onTurn
|
package/dist/multi-actor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-actor.js","sourceRoot":"","sources":["../src/multi-actor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"multi-actor.js","sourceRoot":"","sources":["../src/multi-actor.ts"],"names":[],"mappings":"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"}
|
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;;;;;;;;;;;;;;;GAeG;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,4DAA4D;IAC5D,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,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;
|
|
1
|
+
{"version":3,"file":"run-state.d.ts","sourceRoot":"","sources":["../src/run-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;;GAeG;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,4DAA4D;IAC5D,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,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;IAgBlD,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
|
@@ -40,9 +40,19 @@ export class RunState {
|
|
|
40
40
|
tokenBudget;
|
|
41
41
|
constructor(maxTurns, tokenBudget) {
|
|
42
42
|
this.maxTotalErrors = Math.max(3, Math.ceil(maxTurns / 3));
|
|
43
|
+
// Gen 30 R3: the env var overrides even when the caller passed an
|
|
44
|
+
// explicit tokenBudget. Reason: BAD_TOKEN_BUDGET is an operator dial
|
|
45
|
+
// (e.g., "bump the cap to 200k for this model") and should beat
|
|
46
|
+
// hard-coded caller defaults like runner.ts's visionBudgetMultiplier.
|
|
47
|
+
// Before this, the env fallback only fired when tokenBudget was
|
|
48
|
+
// undefined, which was never — the runner always passed a number.
|
|
43
49
|
const envBudget = Number(process.env.BAD_TOKEN_BUDGET);
|
|
44
|
-
|
|
45
|
-
|
|
50
|
+
if (Number.isFinite(envBudget) && envBudget > 0) {
|
|
51
|
+
this.tokenBudget = envBudget;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.tokenBudget = tokenBudget ?? DEFAULT_TOKEN_BUDGET;
|
|
55
|
+
}
|
|
46
56
|
}
|
|
47
57
|
recordError() {
|
|
48
58
|
this.consecutiveErrors++;
|
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;;;;;;;;;;;;;;;GAeG;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,4DAA4D;IAC5D,iBAAiB,GAAa,EAAE,CAAC;IACjC,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,+EAA+E;IAC/E,WAAW,GAAyC,EAAE,CAAC;IAE9C,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,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACvD,IAAI,
|
|
1
|
+
{"version":3,"file":"run-state.js","sourceRoot":"","sources":["../src/run-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;;GAeG;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,4DAA4D;IAC5D,iBAAiB,GAAa,EAAE,CAAC;IACjC,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,+EAA+E;IAC/E,WAAW,GAAyC,EAAE,CAAC;IAE9C,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,kEAAkE;QAClE,qEAAqE;QACrE,gEAAgE;QAChE,sEAAsE;QACtE,gEAAgE;QAChE,kEAAkE;QAClE,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,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gen 32 — pause / resume / abort via keyboard in interactive runs.
|
|
3
|
+
*
|
|
4
|
+
* Registers a raw-mode stdin handler that maps three keys:
|
|
5
|
+
*
|
|
6
|
+
* p → pause the runner before the next turn
|
|
7
|
+
* r → resume a paused run
|
|
8
|
+
* q → abort (the same as Ctrl-C, but doesn't kill the TTY)
|
|
9
|
+
*
|
|
10
|
+
* The controller exposes a single `waitIfPaused()` the runner awaits at
|
|
11
|
+
* the top of every turn. When the user hits `p`, the next call blocks
|
|
12
|
+
* on a resume promise. On `r`, the promise resolves and the loop
|
|
13
|
+
* continues. On `q`, it throws an abort signal the runner treats as a
|
|
14
|
+
* graceful cancellation.
|
|
15
|
+
*
|
|
16
|
+
* Design notes:
|
|
17
|
+
* - Raw mode only applies to a TTY. Non-interactive runs (CI,
|
|
18
|
+
* `bad --cases ... --json`) never engage this controller.
|
|
19
|
+
* - Keyboard capture is OPT-IN via `--interrupt`. Without it, the
|
|
20
|
+
* stdin is untouched and this module is a no-op.
|
|
21
|
+
* - Keyboard capture deliberately does NOT interfere with copy/paste
|
|
22
|
+
* — we only listen for the specific bytes `p`, `r`, `q`, and let
|
|
23
|
+
* everything else fall through unmodified.
|
|
24
|
+
*/
|
|
25
|
+
import { EventEmitter } from 'node:events';
|
|
26
|
+
export declare class InterruptAborted extends Error {
|
|
27
|
+
constructor();
|
|
28
|
+
}
|
|
29
|
+
export interface InterruptControllerOptions {
|
|
30
|
+
/** stdin — overridable for tests. Default: process.stdin */
|
|
31
|
+
input?: NodeJS.ReadStream;
|
|
32
|
+
/** Called with user-facing status strings so the CLI can render them. */
|
|
33
|
+
onStatus?: (msg: string) => void;
|
|
34
|
+
}
|
|
35
|
+
export declare class InterruptController extends EventEmitter {
|
|
36
|
+
private paused;
|
|
37
|
+
private aborted;
|
|
38
|
+
private resumeResolvers;
|
|
39
|
+
private input;
|
|
40
|
+
private onStatus;
|
|
41
|
+
private attached;
|
|
42
|
+
private handler;
|
|
43
|
+
private prevRaw;
|
|
44
|
+
constructor(opts?: InterruptControllerOptions);
|
|
45
|
+
/**
|
|
46
|
+
* Start listening for keystrokes. Returns a detach function the
|
|
47
|
+
* caller MUST invoke when the run ends (even on error) — otherwise
|
|
48
|
+
* stdin stays in raw mode and the TTY is hosed.
|
|
49
|
+
*/
|
|
50
|
+
attach(): () => void;
|
|
51
|
+
detach(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Called from the runner at the top of each turn. If the run is paused,
|
|
54
|
+
* awaits resume. If aborted, throws `InterruptAborted`.
|
|
55
|
+
*/
|
|
56
|
+
waitIfPaused(): Promise<void>;
|
|
57
|
+
/** Programmatically pause — useful from tests and SIGUSR1 handlers. */
|
|
58
|
+
pause(): void;
|
|
59
|
+
/** Programmatically resume. */
|
|
60
|
+
resume(): void;
|
|
61
|
+
/** Request a graceful abort. */
|
|
62
|
+
abort(): void;
|
|
63
|
+
get isPaused(): boolean;
|
|
64
|
+
get isAborted(): boolean;
|
|
65
|
+
private onKey;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=interrupt-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interrupt-controller.d.ts","sourceRoot":"","sources":["../../src/runner/interrupt-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,qBAAa,gBAAiB,SAAQ,KAAK;;CAK1C;AAED,MAAM,WAAW,0BAA0B;IACzC,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACzB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CACjC;AAED,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAqD;IACrE,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,OAAO,CAAQ;gBAEX,IAAI,GAAE,0BAA+B;IAMjD;;;;OAIG;IACH,MAAM,IAAI,MAAM,IAAI;IAYpB,MAAM,IAAI,IAAI;IAed;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAOnC,uEAAuE;IACvE,KAAK,IAAI,IAAI;IAOb,+BAA+B;IAC/B,MAAM,IAAI,IAAI;IASd,gCAAgC;IAChC,KAAK,IAAI,IAAI;IASb,IAAI,QAAQ,IAAI,OAAO,CAAuB;IAC9C,IAAI,SAAS,IAAI,OAAO,CAAwB;IAEhD,OAAO,CAAC,KAAK;CAYd"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gen 32 — pause / resume / abort via keyboard in interactive runs.
|
|
3
|
+
*
|
|
4
|
+
* Registers a raw-mode stdin handler that maps three keys:
|
|
5
|
+
*
|
|
6
|
+
* p → pause the runner before the next turn
|
|
7
|
+
* r → resume a paused run
|
|
8
|
+
* q → abort (the same as Ctrl-C, but doesn't kill the TTY)
|
|
9
|
+
*
|
|
10
|
+
* The controller exposes a single `waitIfPaused()` the runner awaits at
|
|
11
|
+
* the top of every turn. When the user hits `p`, the next call blocks
|
|
12
|
+
* on a resume promise. On `r`, the promise resolves and the loop
|
|
13
|
+
* continues. On `q`, it throws an abort signal the runner treats as a
|
|
14
|
+
* graceful cancellation.
|
|
15
|
+
*
|
|
16
|
+
* Design notes:
|
|
17
|
+
* - Raw mode only applies to a TTY. Non-interactive runs (CI,
|
|
18
|
+
* `bad --cases ... --json`) never engage this controller.
|
|
19
|
+
* - Keyboard capture is OPT-IN via `--interrupt`. Without it, the
|
|
20
|
+
* stdin is untouched and this module is a no-op.
|
|
21
|
+
* - Keyboard capture deliberately does NOT interfere with copy/paste
|
|
22
|
+
* — we only listen for the specific bytes `p`, `r`, `q`, and let
|
|
23
|
+
* everything else fall through unmodified.
|
|
24
|
+
*/
|
|
25
|
+
import { EventEmitter } from 'node:events';
|
|
26
|
+
export class InterruptAborted extends Error {
|
|
27
|
+
constructor() {
|
|
28
|
+
super('run aborted by user (pressed q)');
|
|
29
|
+
this.name = 'InterruptAborted';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export class InterruptController extends EventEmitter {
|
|
33
|
+
paused = false;
|
|
34
|
+
aborted = false;
|
|
35
|
+
resumeResolvers = [];
|
|
36
|
+
input;
|
|
37
|
+
onStatus;
|
|
38
|
+
attached = false;
|
|
39
|
+
handler = (buf) => this.onKey(buf);
|
|
40
|
+
prevRaw = false;
|
|
41
|
+
constructor(opts = {}) {
|
|
42
|
+
super();
|
|
43
|
+
this.input = opts.input ?? process.stdin;
|
|
44
|
+
this.onStatus = opts.onStatus ?? (() => { });
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Start listening for keystrokes. Returns a detach function the
|
|
48
|
+
* caller MUST invoke when the run ends (even on error) — otherwise
|
|
49
|
+
* stdin stays in raw mode and the TTY is hosed.
|
|
50
|
+
*/
|
|
51
|
+
attach() {
|
|
52
|
+
if (this.attached)
|
|
53
|
+
return () => this.detach();
|
|
54
|
+
if (!this.input.isTTY)
|
|
55
|
+
return () => { };
|
|
56
|
+
this.prevRaw = this.input.isRaw;
|
|
57
|
+
this.input.setRawMode(true);
|
|
58
|
+
this.input.resume();
|
|
59
|
+
this.input.on('data', this.handler);
|
|
60
|
+
this.attached = true;
|
|
61
|
+
this.onStatus('interrupt keys: [p] pause · [r] resume · [q] abort');
|
|
62
|
+
return () => this.detach();
|
|
63
|
+
}
|
|
64
|
+
detach() {
|
|
65
|
+
if (!this.attached)
|
|
66
|
+
return;
|
|
67
|
+
try {
|
|
68
|
+
this.input.off('data', this.handler);
|
|
69
|
+
this.input.setRawMode(this.prevRaw);
|
|
70
|
+
if (!process.stdin.isTTY || !this.prevRaw) {
|
|
71
|
+
this.input.pause();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch { /* best-effort on shutdown */ }
|
|
75
|
+
this.attached = false;
|
|
76
|
+
// Release any awaiters so the runner can unwind.
|
|
77
|
+
for (const r of this.resumeResolvers)
|
|
78
|
+
r();
|
|
79
|
+
this.resumeResolvers = [];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Called from the runner at the top of each turn. If the run is paused,
|
|
83
|
+
* awaits resume. If aborted, throws `InterruptAborted`.
|
|
84
|
+
*/
|
|
85
|
+
async waitIfPaused() {
|
|
86
|
+
if (this.aborted)
|
|
87
|
+
throw new InterruptAborted();
|
|
88
|
+
if (!this.paused)
|
|
89
|
+
return;
|
|
90
|
+
await new Promise((resolve) => this.resumeResolvers.push(resolve));
|
|
91
|
+
if (this.aborted)
|
|
92
|
+
throw new InterruptAborted();
|
|
93
|
+
}
|
|
94
|
+
/** Programmatically pause — useful from tests and SIGUSR1 handlers. */
|
|
95
|
+
pause() {
|
|
96
|
+
if (this.paused || this.aborted)
|
|
97
|
+
return;
|
|
98
|
+
this.paused = true;
|
|
99
|
+
this.emit('pause');
|
|
100
|
+
this.onStatus('⏸ paused — press [r] to resume or [q] to abort');
|
|
101
|
+
}
|
|
102
|
+
/** Programmatically resume. */
|
|
103
|
+
resume() {
|
|
104
|
+
if (!this.paused || this.aborted)
|
|
105
|
+
return;
|
|
106
|
+
this.paused = false;
|
|
107
|
+
this.emit('resume');
|
|
108
|
+
this.onStatus('▶ resumed');
|
|
109
|
+
for (const r of this.resumeResolvers)
|
|
110
|
+
r();
|
|
111
|
+
this.resumeResolvers = [];
|
|
112
|
+
}
|
|
113
|
+
/** Request a graceful abort. */
|
|
114
|
+
abort() {
|
|
115
|
+
if (this.aborted)
|
|
116
|
+
return;
|
|
117
|
+
this.aborted = true;
|
|
118
|
+
this.emit('abort');
|
|
119
|
+
this.onStatus('■ aborting — run will stop at the end of this turn');
|
|
120
|
+
for (const r of this.resumeResolvers)
|
|
121
|
+
r();
|
|
122
|
+
this.resumeResolvers = [];
|
|
123
|
+
}
|
|
124
|
+
get isPaused() { return this.paused; }
|
|
125
|
+
get isAborted() { return this.aborted; }
|
|
126
|
+
onKey(buf) {
|
|
127
|
+
// Match a single byte for p/r/q; fall through for everything else.
|
|
128
|
+
// Ctrl-C (0x03) from raw mode — forward as abort, else the process stays alive.
|
|
129
|
+
if (buf.length === 1 && buf[0] === 0x03) {
|
|
130
|
+
this.abort();
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const ch = buf.toString('utf-8');
|
|
134
|
+
if (ch === 'p' || ch === 'P')
|
|
135
|
+
this.pause();
|
|
136
|
+
else if (ch === 'r' || ch === 'R')
|
|
137
|
+
this.resume();
|
|
138
|
+
else if (ch === 'q' || ch === 'Q')
|
|
139
|
+
this.abort();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=interrupt-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interrupt-controller.js","sourceRoot":"","sources":["../../src/runner/interrupt-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gen 32 — agent narration hooks for the cursor overlay.
|
|
3
|
+
*
|
|
4
|
+
* The runner emits `decide-completed` each turn with the LLM's raw
|
|
5
|
+
* reasoning text. That text carries three distinct signals the overlay
|
|
6
|
+
* wants to surface to a viewer:
|
|
7
|
+
*
|
|
8
|
+
* 1. **Current step** — a short phrase summarizing what the agent is
|
|
9
|
+
* about to do. Extracted from the first sentence of `reasoning`.
|
|
10
|
+
* 2. **Progress** — turn N of maxTurns, plus any inline progress
|
|
11
|
+
* ledger (`Done=[C-001, C-002, ...] Current=C-003`) the agent is
|
|
12
|
+
* already using in OFAC/batch-style prompts.
|
|
13
|
+
* 3. **Verdict moments** — conclusions like "POSITIVE MATCH",
|
|
14
|
+
* "CLEARED", "NEEDS REVIEW" that should fire a celebratory badge.
|
|
15
|
+
*
|
|
16
|
+
* These are pure functions — no I/O, no driver calls. The driver-facing
|
|
17
|
+
* hooks in runner.ts call them, then push results via
|
|
18
|
+
* `driver.setOverlayReasoning` / `setOverlayProgress` / `pushOverlayBadge`.
|
|
19
|
+
*
|
|
20
|
+
* Why a separate module: the runner is already 1500+ lines and dense;
|
|
21
|
+
* parsing logic belongs somewhere testable in isolation. Keeping this
|
|
22
|
+
* pure makes the overlay story auditable without standing up a browser.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Pull the first sentence (or first ~140 chars) of reasoning as a
|
|
26
|
+
* display summary. The reasoning panel renders the full text; this is a
|
|
27
|
+
* hook for callers that want a preview (e.g., badge text).
|
|
28
|
+
*/
|
|
29
|
+
export declare function summarizeReasoning(reasoning: string | undefined): string;
|
|
30
|
+
/**
|
|
31
|
+
* Parse a "Current=C-XXX" marker from the reasoning, if present. Used to
|
|
32
|
+
* enrich the progress label ("Turn 27 · C-003"). Returns undefined when
|
|
33
|
+
* the reasoning doesn't carry a ledger marker — NOT every run uses the
|
|
34
|
+
* ledger shape.
|
|
35
|
+
*/
|
|
36
|
+
export declare function extractCurrentMarker(reasoning: string | undefined): string | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Parse a "Done=[...]" ledger from reasoning. Returns the count of
|
|
39
|
+
* completed items, or undefined when no ledger exists. Used to compute
|
|
40
|
+
* a second progress indicator (items done vs items total) orthogonal to
|
|
41
|
+
* turn-of-maxTurns.
|
|
42
|
+
*/
|
|
43
|
+
export declare function extractDoneCount(reasoning: string | undefined): number | undefined;
|
|
44
|
+
export interface VerdictEvent {
|
|
45
|
+
kind: 'positive' | 'cleared' | 'review';
|
|
46
|
+
text: string;
|
|
47
|
+
/** Raw verdict substring so we can dedupe later in the session */
|
|
48
|
+
marker: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Scan reasoning + action text for new verdict-worthy moments. Returns
|
|
52
|
+
* an array (possibly empty) of events the driver should surface as
|
|
53
|
+
* badges. The caller is responsible for deduplication across turns —
|
|
54
|
+
* this function returns ALL verdict markers visible in the text.
|
|
55
|
+
*
|
|
56
|
+
* For a reasoning string like:
|
|
57
|
+
* "C-003 PUTIN VLADIMIR: POSITIVE MATCH — Russia-EO14024 / SDN"
|
|
58
|
+
* emits: { kind: 'positive', text: 'C-003 PUTIN VLADIMIR · POSITIVE MATCH', marker: 'C-003:POSITIVE MATCH' }
|
|
59
|
+
*/
|
|
60
|
+
export declare function detectVerdicts(reasoning: string | undefined): VerdictEvent[];
|
|
61
|
+
/**
|
|
62
|
+
* Stateful tracker that holds the set of verdict markers already
|
|
63
|
+
* surfaced this session, so we don't re-emit the same badge every turn
|
|
64
|
+
* for a verdict the agent keeps mentioning in its progress ledger.
|
|
65
|
+
*/
|
|
66
|
+
export declare class VerdictTracker {
|
|
67
|
+
private seen;
|
|
68
|
+
/**
|
|
69
|
+
* Given new reasoning text, return only the verdicts that are NEW
|
|
70
|
+
* (haven't been emitted before in this session).
|
|
71
|
+
*/
|
|
72
|
+
accept(reasoning: string | undefined): VerdictEvent[];
|
|
73
|
+
reset(): void;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Build the progress label shown in the top-left chip of the overlay.
|
|
77
|
+
* Combines turn counter with an optional ledger marker.
|
|
78
|
+
*
|
|
79
|
+
* buildProgressLabel(5, 65) → "Turn 5 · 65 max"
|
|
80
|
+
* buildProgressLabel(5, 65, 'C-003') → "Turn 5 · C-003"
|
|
81
|
+
*/
|
|
82
|
+
export declare function buildProgressLabel(turn: number, maxTurns: number, marker?: string): string;
|
|
83
|
+
//# sourceMappingURL=overlay-narration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay-narration.d.ts","sourceRoot":"","sources":["../../src/runner/overlay-narration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAQxE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKtF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAQlF;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAA;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,EAAE,CA2C5E;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAoB;IAEhC;;;OAGG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,EAAE;IAWrD,KAAK,IAAI,IAAI;CAGd;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAGR"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gen 32 — agent narration hooks for the cursor overlay.
|
|
3
|
+
*
|
|
4
|
+
* The runner emits `decide-completed` each turn with the LLM's raw
|
|
5
|
+
* reasoning text. That text carries three distinct signals the overlay
|
|
6
|
+
* wants to surface to a viewer:
|
|
7
|
+
*
|
|
8
|
+
* 1. **Current step** — a short phrase summarizing what the agent is
|
|
9
|
+
* about to do. Extracted from the first sentence of `reasoning`.
|
|
10
|
+
* 2. **Progress** — turn N of maxTurns, plus any inline progress
|
|
11
|
+
* ledger (`Done=[C-001, C-002, ...] Current=C-003`) the agent is
|
|
12
|
+
* already using in OFAC/batch-style prompts.
|
|
13
|
+
* 3. **Verdict moments** — conclusions like "POSITIVE MATCH",
|
|
14
|
+
* "CLEARED", "NEEDS REVIEW" that should fire a celebratory badge.
|
|
15
|
+
*
|
|
16
|
+
* These are pure functions — no I/O, no driver calls. The driver-facing
|
|
17
|
+
* hooks in runner.ts call them, then push results via
|
|
18
|
+
* `driver.setOverlayReasoning` / `setOverlayProgress` / `pushOverlayBadge`.
|
|
19
|
+
*
|
|
20
|
+
* Why a separate module: the runner is already 1500+ lines and dense;
|
|
21
|
+
* parsing logic belongs somewhere testable in isolation. Keeping this
|
|
22
|
+
* pure makes the overlay story auditable without standing up a browser.
|
|
23
|
+
*/
|
|
24
|
+
const VERDICT_PATTERNS = [
|
|
25
|
+
{ re: /\bPOSITIVE\s+MATCH\b/i, kind: 'positive' },
|
|
26
|
+
{ re: /\bCLEARED\b/i, kind: 'cleared' },
|
|
27
|
+
{ re: /\bNEEDS\s+REVIEW\b/i, kind: 'review' },
|
|
28
|
+
];
|
|
29
|
+
/**
|
|
30
|
+
* Pull the first sentence (or first ~140 chars) of reasoning as a
|
|
31
|
+
* display summary. The reasoning panel renders the full text; this is a
|
|
32
|
+
* hook for callers that want a preview (e.g., badge text).
|
|
33
|
+
*/
|
|
34
|
+
export function summarizeReasoning(reasoning) {
|
|
35
|
+
if (!reasoning)
|
|
36
|
+
return '';
|
|
37
|
+
const collapsed = reasoning.replace(/\s+/g, ' ').trim();
|
|
38
|
+
if (!collapsed)
|
|
39
|
+
return '';
|
|
40
|
+
// Cut at sentence boundary if short; otherwise hard-truncate.
|
|
41
|
+
const firstSentence = collapsed.match(/^(.+?[.!?])\s/);
|
|
42
|
+
if (firstSentence && firstSentence[1].length <= 180)
|
|
43
|
+
return firstSentence[1];
|
|
44
|
+
return collapsed.length > 180 ? collapsed.slice(0, 177).trimEnd() + '…' : collapsed;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Parse a "Current=C-XXX" marker from the reasoning, if present. Used to
|
|
48
|
+
* enrich the progress label ("Turn 27 · C-003"). Returns undefined when
|
|
49
|
+
* the reasoning doesn't carry a ledger marker — NOT every run uses the
|
|
50
|
+
* ledger shape.
|
|
51
|
+
*/
|
|
52
|
+
export function extractCurrentMarker(reasoning) {
|
|
53
|
+
if (!reasoning)
|
|
54
|
+
return undefined;
|
|
55
|
+
const m = reasoning.match(/Current\s*=\s*([A-Za-z0-9][\w-]*)/);
|
|
56
|
+
if (m)
|
|
57
|
+
return m[1];
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Parse a "Done=[...]" ledger from reasoning. Returns the count of
|
|
62
|
+
* completed items, or undefined when no ledger exists. Used to compute
|
|
63
|
+
* a second progress indicator (items done vs items total) orthogonal to
|
|
64
|
+
* turn-of-maxTurns.
|
|
65
|
+
*/
|
|
66
|
+
export function extractDoneCount(reasoning) {
|
|
67
|
+
if (!reasoning)
|
|
68
|
+
return undefined;
|
|
69
|
+
const m = reasoning.match(/Done\s*=\s*\[([^\]]*)\]/);
|
|
70
|
+
if (!m)
|
|
71
|
+
return undefined;
|
|
72
|
+
const body = m[1].trim();
|
|
73
|
+
if (!body)
|
|
74
|
+
return 0;
|
|
75
|
+
// Count comma-separated entries, tolerate trailing commas
|
|
76
|
+
return body.split(',').filter((s) => s.trim().length > 0).length;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Scan reasoning + action text for new verdict-worthy moments. Returns
|
|
80
|
+
* an array (possibly empty) of events the driver should surface as
|
|
81
|
+
* badges. The caller is responsible for deduplication across turns —
|
|
82
|
+
* this function returns ALL verdict markers visible in the text.
|
|
83
|
+
*
|
|
84
|
+
* For a reasoning string like:
|
|
85
|
+
* "C-003 PUTIN VLADIMIR: POSITIVE MATCH — Russia-EO14024 / SDN"
|
|
86
|
+
* emits: { kind: 'positive', text: 'C-003 PUTIN VLADIMIR · POSITIVE MATCH', marker: 'C-003:POSITIVE MATCH' }
|
|
87
|
+
*/
|
|
88
|
+
export function detectVerdicts(reasoning) {
|
|
89
|
+
if (!reasoning)
|
|
90
|
+
return [];
|
|
91
|
+
const out = [];
|
|
92
|
+
// Case: inline customer-ID prefix (OFAC-style)
|
|
93
|
+
// "C-003 confirmed POSITIVE MATCH" / "C-003: CLEARED"
|
|
94
|
+
// Trailer is comma-bounded so enumerations like
|
|
95
|
+
// "C-001 POSITIVE MATCH, C-002 CLEARED, C-003 NEEDS REVIEW"
|
|
96
|
+
// yield one event per customer, not one event for the whole line.
|
|
97
|
+
const inlineRe = /\b([A-Z]-\d{3,4})[^\w]{1,6}([^.,\n]*?(?:POSITIVE\s+MATCH|CLEARED|NEEDS\s+REVIEW)[^.,\n]*)/gi;
|
|
98
|
+
let m;
|
|
99
|
+
const seenInText = new Set();
|
|
100
|
+
while ((m = inlineRe.exec(reasoning)) !== null) {
|
|
101
|
+
const cid = m[1];
|
|
102
|
+
const snippet = m[2].replace(/\s+/g, ' ').trim();
|
|
103
|
+
const kind = snippet.match(/POSITIVE/i) ? 'positive' : snippet.match(/CLEARED/i) ? 'cleared' : 'review';
|
|
104
|
+
const marker = `${cid}:${kind.toUpperCase()}`;
|
|
105
|
+
// Dedupe within a single reasoning string — agent may restate
|
|
106
|
+
// "C-001 POSITIVE" later in the same line without intending a new event.
|
|
107
|
+
if (seenInText.has(marker))
|
|
108
|
+
continue;
|
|
109
|
+
seenInText.add(marker);
|
|
110
|
+
const shortSnippet = snippet.length > 60 ? snippet.slice(0, 57) + '…' : snippet;
|
|
111
|
+
out.push({
|
|
112
|
+
kind,
|
|
113
|
+
text: `${cid} · ${shortSnippet}`,
|
|
114
|
+
marker,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
// Fallback: bare verdict without customer ID. Only emit ONE per reasoning
|
|
118
|
+
// string in this mode (multiple would be noise without context).
|
|
119
|
+
if (out.length === 0) {
|
|
120
|
+
for (const pat of VERDICT_PATTERNS) {
|
|
121
|
+
const vm = reasoning.match(pat.re);
|
|
122
|
+
if (vm) {
|
|
123
|
+
out.push({
|
|
124
|
+
kind: pat.kind,
|
|
125
|
+
text: vm[0].replace(/\s+/g, ' ').trim().toUpperCase(),
|
|
126
|
+
marker: pat.kind.toUpperCase(),
|
|
127
|
+
});
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return out;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Stateful tracker that holds the set of verdict markers already
|
|
136
|
+
* surfaced this session, so we don't re-emit the same badge every turn
|
|
137
|
+
* for a verdict the agent keeps mentioning in its progress ledger.
|
|
138
|
+
*/
|
|
139
|
+
export class VerdictTracker {
|
|
140
|
+
seen = new Set();
|
|
141
|
+
/**
|
|
142
|
+
* Given new reasoning text, return only the verdicts that are NEW
|
|
143
|
+
* (haven't been emitted before in this session).
|
|
144
|
+
*/
|
|
145
|
+
accept(reasoning) {
|
|
146
|
+
const found = detectVerdicts(reasoning);
|
|
147
|
+
const fresh = [];
|
|
148
|
+
for (const v of found) {
|
|
149
|
+
if (this.seen.has(v.marker))
|
|
150
|
+
continue;
|
|
151
|
+
this.seen.add(v.marker);
|
|
152
|
+
fresh.push(v);
|
|
153
|
+
}
|
|
154
|
+
return fresh;
|
|
155
|
+
}
|
|
156
|
+
reset() {
|
|
157
|
+
this.seen.clear();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Build the progress label shown in the top-left chip of the overlay.
|
|
162
|
+
* Combines turn counter with an optional ledger marker.
|
|
163
|
+
*
|
|
164
|
+
* buildProgressLabel(5, 65) → "Turn 5 · 65 max"
|
|
165
|
+
* buildProgressLabel(5, 65, 'C-003') → "Turn 5 · C-003"
|
|
166
|
+
*/
|
|
167
|
+
export function buildProgressLabel(turn, maxTurns, marker) {
|
|
168
|
+
if (marker)
|
|
169
|
+
return `Turn ${turn} · ${marker}`;
|
|
170
|
+
return `Turn ${turn} / ${maxTurns}`;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=overlay-narration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay-narration.js","sourceRoot":"","sources":["../../src/runner/overlay-narration.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,10 @@ export interface ParallelRunOptions {
|
|
|
31
31
|
driverOptions?: PlaywrightDriverOptions;
|
|
32
32
|
/** Project store for memory */
|
|
33
33
|
projectStore?: ProjectStore;
|
|
34
|
+
/** Gen 29: rendered macro catalog forwarded to each sub-agent's brain so
|
|
35
|
+
* the LLM sees the available macros in parallel tabs, matching the
|
|
36
|
+
* top-level agent's capability surface. */
|
|
37
|
+
macroPromptBlock?: string;
|
|
34
38
|
/** Total timeout in ms (default: 600000) */
|
|
35
39
|
timeoutMs?: number;
|
|
36
40
|
/** Total token budget (will be split across sub-agents) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-runner.d.ts","sourceRoot":"","sources":["../../src/runner/parallel-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAEvE,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,OAAO,EAAE,cAAc,CAAA;IACvB,8CAA8C;IAC9C,MAAM,EAAE,WAAW,CAAA;IACnB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,2BAA2B;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,oDAAoD;IACpD,QAAQ,EAAE,QAAQ,CAAA;IAClB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5C,qBAAqB;IACrB,aAAa,CAAC,EAAE,uBAAuB,CAAA;IACvC,+BAA+B;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAA;IAChB,4BAA4B;IAC5B,UAAU,EAAE,KAAK,CAAC;QAChB,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,WAAW,CAAA;KACpB,CAAC,CAAA;IACF,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"parallel-runner.d.ts","sourceRoot":"","sources":["../../src/runner/parallel-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAEvE,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,OAAO,EAAE,cAAc,CAAA;IACvB,8CAA8C;IAC9C,MAAM,EAAE,WAAW,CAAA;IACnB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,2BAA2B;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,oDAAoD;IACpD,QAAQ,EAAE,QAAQ,CAAA;IAClB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5C,qBAAqB;IACrB,aAAa,CAAC,EAAE,uBAAuB,CAAA;IACvC,+BAA+B;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;+CAE2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAA;IAChB,4BAA4B;IAC5B,UAAU,EAAE,KAAK,CAAC;QAChB,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,WAAW,CAAA;KACpB,CAAC,CAAA;IACF,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+FzF"}
|
|
@@ -51,6 +51,7 @@ export async function runParallel(options) {
|
|
|
51
51
|
onTurn: onTurn ? (turn) => onTurn(label, turn) : undefined,
|
|
52
52
|
projectStore: options.projectStore,
|
|
53
53
|
// extensions passed through if available
|
|
54
|
+
...(options.macroPromptBlock ? { macroPromptBlock: options.macroPromptBlock } : {}),
|
|
54
55
|
});
|
|
55
56
|
const subScenario = {
|
|
56
57
|
...scenario,
|