@tangle-network/browser-agent-driver 0.26.0 → 0.28.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.
Files changed (65) hide show
  1. package/dist/brain/index.d.ts.map +1 -1
  2. package/dist/brain/index.js +42 -1
  3. package/dist/brain/index.js.map +1 -1
  4. package/dist/cli-preview.d.ts +0 -7
  5. package/dist/cli-preview.d.ts.map +1 -1
  6. package/dist/cli-preview.js +2 -2
  7. package/dist/cli-preview.js.map +1 -1
  8. package/dist/cli-view-live.d.ts +0 -3
  9. package/dist/cli-view-live.d.ts.map +1 -1
  10. package/dist/cli-view-live.js +1 -1
  11. package/dist/cli-view-live.js.map +1 -1
  12. package/dist/cli-view.d.ts +0 -4
  13. package/dist/cli-view.d.ts.map +1 -1
  14. package/dist/cli-view.js +1 -1
  15. package/dist/cli-view.js.map +1 -1
  16. package/dist/cli.js +0 -0
  17. package/dist/design/audit/measure/index.d.ts +1 -2
  18. package/dist/design/audit/measure/index.d.ts.map +1 -1
  19. package/dist/design/audit/measure/index.js +1 -2
  20. package/dist/design/audit/measure/index.js.map +1 -1
  21. package/dist/design/audit/pipeline.d.ts +0 -4
  22. package/dist/design/audit/pipeline.d.ts.map +1 -1
  23. package/dist/design/audit/pipeline.js +0 -8
  24. package/dist/design/audit/pipeline.js.map +1 -1
  25. package/dist/drivers/cursor-overlay.d.ts +1 -1
  26. package/dist/drivers/cursor-overlay.d.ts.map +1 -1
  27. package/dist/drivers/cursor-overlay.js +264 -0
  28. package/dist/drivers/cursor-overlay.js.map +1 -1
  29. package/dist/drivers/overlay-label.d.ts +18 -10
  30. package/dist/drivers/overlay-label.d.ts.map +1 -1
  31. package/dist/drivers/overlay-label.js +109 -25
  32. package/dist/drivers/overlay-label.js.map +1 -1
  33. package/dist/drivers/playwright.d.ts +21 -16
  34. package/dist/drivers/playwright.d.ts.map +1 -1
  35. package/dist/drivers/playwright.js +43 -50
  36. package/dist/drivers/playwright.js.map +1 -1
  37. package/dist/drivers/types.d.ts +9 -0
  38. package/dist/drivers/types.d.ts.map +1 -1
  39. package/dist/model-pricing.d.ts +0 -2
  40. package/dist/model-pricing.d.ts.map +1 -1
  41. package/dist/model-pricing.js +4 -3
  42. package/dist/model-pricing.js.map +1 -1
  43. package/dist/runner/demo-overrides.d.ts +50 -0
  44. package/dist/runner/demo-overrides.d.ts.map +1 -0
  45. package/dist/runner/demo-overrides.js +75 -0
  46. package/dist/runner/demo-overrides.js.map +1 -0
  47. package/dist/runner/deterministic-patterns.d.ts +0 -7
  48. package/dist/runner/deterministic-patterns.d.ts.map +1 -1
  49. package/dist/runner/deterministic-patterns.js +0 -5
  50. package/dist/runner/deterministic-patterns.js.map +1 -1
  51. package/dist/runner/fan-out.d.ts +14 -0
  52. package/dist/runner/fan-out.d.ts.map +1 -1
  53. package/dist/runner/fan-out.js +122 -6
  54. package/dist/runner/fan-out.js.map +1 -1
  55. package/dist/runner/parallel-runner.d.ts.map +1 -1
  56. package/dist/runner/parallel-runner.js +9 -1
  57. package/dist/runner/parallel-runner.js.map +1 -1
  58. package/dist/runner/runner.d.ts.map +1 -1
  59. package/dist/runner/runner.js +24 -0
  60. package/dist/runner/runner.js.map +1 -1
  61. package/dist/skills/macro-loader.d.ts +0 -10
  62. package/dist/skills/macro-loader.d.ts.map +1 -1
  63. package/dist/skills/macro-loader.js +1 -1
  64. package/dist/skills/macro-loader.js.map +1 -1
  65. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cli-view.js","sourceRoot":"","sources":["../src/cli-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-view.js","sourceRoot":"","sources":["../src/cli-view.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
File without changes
@@ -8,7 +8,6 @@
8
8
  */
9
9
  import type { Page } from 'playwright';
10
10
  import type { MeasurementBundle } from '../types.js';
11
- export { measureContrast } from './contrast.js';
12
- export { measureA11y, impactToSeverity } from './a11y.js';
11
+ export { impactToSeverity } from './a11y.js';
13
12
  export declare function gatherMeasurements(page: Page): Promise<MeasurementBundle>;
14
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/measure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAIpD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEzD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4B/E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/measure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4B/E"}
@@ -8,8 +8,7 @@
8
8
  */
9
9
  import { measureContrast } from './contrast.js';
10
10
  import { measureA11y } from './a11y.js';
11
- export { measureContrast } from './contrast.js';
12
- export { measureA11y, impactToSeverity } from './a11y.js';
11
+ export { impactToSeverity } from './a11y.js';
13
12
  export async function gatherMeasurements(page) {
14
13
  const [contrast, a11y] = await Promise.all([
15
14
  measureContrast(page).catch(() => ({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/design/audit/measure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEzD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAU;IACjD,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACzC,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACjC,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;SAC3C,CAAC,CAAC;QACH,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7B,GAAG,EAAE,KAAK;YACV,KAAK,EAAE,oBAAoB;YAC3B,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;KACJ,CAAC,CAAA;IAEF,8EAA8E;IAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CACvD,CAAC,MAAM,CAAA;IACR,MAAM,gBAAgB,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAA;IACxD,MAAM,iBAAiB,GAAG,YAAY,IAAI,CAAC,IAAI,gBAAgB,GAAG,IAAI,CAAA;IAEtE,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,iBAAiB;KAClB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/design/audit/measure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAU;IACjD,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACzC,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACjC,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;SAC3C,CAAC,CAAC;QACH,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7B,GAAG,EAAE,KAAK;YACV,KAAK,EAAE,oBAAoB;YAC3B,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;KACJ,CAAC,CAAA;IAEF,8EAA8E;IAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CACvD,CAAC,MAAM,CAAA;IACR,MAAM,gBAAgB,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAA;IACxD,MAAM,iBAAiB,GAAG,YAAY,IAAI,CAAC,IAAI,gBAAgB,GAAG,IAAI,CAAA;IAEtE,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,iBAAiB;KAClB,CAAA;AACH,CAAC"}
@@ -26,8 +26,4 @@ export interface AuditOnePageOptions {
26
26
  * Audit one page through the full Gen 2 pipeline.
27
27
  */
28
28
  export declare function auditOnePage(opts: AuditOnePageOptions): Promise<PageAuditResult>;
29
- /**
30
- * Persist a `PageAuditResult` to JSON for downstream tooling.
31
- */
32
- export declare function writeResultJson(result: PageAuditResult, dir: string): void;
33
29
  //# sourceMappingURL=pipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/design/audit/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAK9D,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,YAAY,CAAA;AAErE,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,gBAAgB,CAAA;IACxB,IAAI,EAAE,IAAI,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAqBD;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyEtF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAG1E"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/design/audit/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAK9D,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,YAAY,CAAA;AAErE,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,gBAAgB,CAAA;IACxB,IAAI,EAAE,IAAI,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAqBD;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyEtF"}
@@ -6,7 +6,6 @@
6
6
  * The pipeline is the only place that knows about all stages. Each stage is
7
7
  * a pure function elsewhere in this module — easy to unit test in isolation.
8
8
  */
9
- import * as fs from 'node:fs';
10
9
  import * as path from 'node:path';
11
10
  import { classifyPage, defaultClassification } from './classify.js';
12
11
  import { composeRubric, composeRubricFromProfile } from './rubric/loader.js';
@@ -99,11 +98,4 @@ export async function auditOnePage(opts) {
99
98
  };
100
99
  }
101
100
  }
102
- /**
103
- * Persist a `PageAuditResult` to JSON for downstream tooling.
104
- */
105
- export function writeResultJson(result, dir) {
106
- const slug = new URL(result.url).hostname.replace(/[^a-z0-9.-]/gi, '_');
107
- fs.writeFileSync(path.join(dir, `${slug}-${Date.now()}.json`), JSON.stringify(result, null, 2));
108
- }
109
101
  //# sourceMappingURL=pipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/design/audit/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/design/audit/pipeline.ts"],"names":[],"mappings":"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"}
@@ -25,5 +25,5 @@
25
25
  * The init script that runs in every page. Returned as a string so it can be
26
26
  * passed to `page.addInitScript`. Pure DOM/CSS — no dependencies.
27
27
  */
28
- export declare const CURSOR_OVERLAY_INIT_SCRIPT = "\n(() => {\n if (window.__bad_overlay_installed) return;\n window.__bad_overlay_installed = true;\n\n const NS = 'http://www.w3.org/2000/svg';\n const Z = 2147483647; // max i32\n\n // \u2500\u2500 Root container (absolute, ignores pointer events) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const root = document.createElement('div');\n root.id = '__bad_overlay_root';\n Object.assign(root.style, {\n position: 'fixed',\n inset: '0',\n width: '100vw',\n height: '100vh',\n pointerEvents: 'none',\n zIndex: String(Z),\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n });\n\n // \u2500\u2500 Keyframes \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const style = document.createElement('style');\n style.textContent = `\n @keyframes __bad_cursor_bob {\n 0%, 100% { margin-top: 0px; }\n 50% { margin-top: -3px; }\n }\n @keyframes __bad_badge_in {\n from { transform: translateX(-20px); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n }\n @keyframes __bad_badge_out {\n from { transform: translateX(0); opacity: 1; }\n to { transform: translateX(20px); opacity: 0; }\n }\n `;\n (document.head || document.documentElement).appendChild(style);\n\n // \u2500\u2500 Cursor sprite (SVG arrow) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const cursor = document.createElementNS(NS, 'svg');\n cursor.setAttribute('width', '24');\n cursor.setAttribute('height', '24');\n cursor.setAttribute('viewBox', '0 0 24 24');\n cursor.setAttribute('fill', 'none');\n Object.assign(cursor.style, {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: 'translate(-100px, -100px)',\n transition: 'transform 400ms cubic-bezier(0.34, 1.56, 0.64, 1)',\n pointerEvents: 'none',\n filter: 'drop-shadow(0 2px 4px rgba(0,0,0,0.5))',\n animation: '__bad_cursor_bob 1.8s ease-in-out infinite',\n });\n cursor.innerHTML = `\n <path d=\"M3 2 L21 12 L13 14 L9 22 Z\" fill=\"#ffffff\" stroke=\"#0b1220\" stroke-width=\"1.5\" stroke-linejoin=\"round\"/>\n `;\n\n // \u2500\u2500 Pulse ring (animated on click) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const ring = document.createElement('div');\n Object.assign(ring.style, {\n position: 'fixed',\n left: '0',\n top: '0',\n width: '0',\n height: '0',\n borderRadius: '9999px',\n border: '3px solid rgba(79, 70, 229, 0.95)',\n transform: 'translate(-100px, -100px)',\n pointerEvents: 'none',\n opacity: '0',\n transition: 'all 500ms ease-out',\n });\n\n // \u2500\u2500 Highlight box (drawn around the target element) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const box = document.createElement('div');\n box.id = '__bad_overlay_box';\n Object.assign(box.style, {\n position: 'fixed',\n left: '0',\n top: '0',\n width: '0',\n height: '0',\n border: '2px solid rgba(34, 197, 94, 0.95)',\n borderRadius: '6px',\n background: 'rgba(34, 197, 94, 0.08)',\n boxShadow: '0 0 0 4px rgba(34, 197, 94, 0.18)',\n transform: 'translate(-100px, -100px)',\n pointerEvents: 'none',\n transition: 'all 350ms cubic-bezier(0.34, 1.56, 0.64, 1)',\n opacity: '0',\n });\n\n // \u2500\u2500 Action label (shows \"click\" / \"type\" / etc next to cursor) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const label = document.createElement('div');\n Object.assign(label.style, {\n position: 'fixed',\n left: '0',\n top: '0',\n padding: '5px 12px',\n background: 'rgba(11, 18, 32, 0.95)',\n color: '#ffffff',\n fontSize: '13px',\n fontWeight: '600',\n letterSpacing: '0.01em',\n borderRadius: '8px',\n transform: 'translate(-200px, -200px)',\n pointerEvents: 'none',\n opacity: '0',\n transition: 'transform 400ms cubic-bezier(0.34, 1.56, 0.64, 1), opacity 200ms ease',\n boxShadow: '0 4px 16px rgba(0,0,0,0.35)',\n whiteSpace: 'nowrap',\n });\n\n // \u2500\u2500 Progress timeline bar (top edge, thin strip) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const progress = document.createElement('div');\n progress.id = '__bad_overlay_progress';\n Object.assign(progress.style, {\n position: 'fixed',\n top: '0',\n left: '0',\n right: '0',\n height: '3px',\n background: 'rgba(11, 18, 32, 0.6)',\n pointerEvents: 'none',\n opacity: '0',\n transition: 'opacity 300ms ease',\n });\n const progressFill = document.createElement('div');\n Object.assign(progressFill.style, {\n position: 'absolute',\n top: '0',\n left: '0',\n height: '100%',\n width: '0%',\n background: 'linear-gradient(90deg, #4f46e5 0%, #7aa2ff 100%)',\n transition: 'width 500ms cubic-bezier(0.4, 0, 0.2, 1)',\n boxShadow: '0 0 8px rgba(79, 70, 229, 0.6)',\n });\n progress.appendChild(progressFill);\n\n // \u2500\u2500 Progress label (turn counter, top-left) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const progressLabel = document.createElement('div');\n Object.assign(progressLabel.style, {\n position: 'fixed',\n top: '10px',\n left: '14px',\n padding: '4px 10px',\n background: 'rgba(11, 18, 32, 0.88)',\n color: '#ffffff',\n fontSize: '11px',\n fontWeight: '700',\n letterSpacing: '0.06em',\n textTransform: 'uppercase',\n borderRadius: '6px',\n pointerEvents: 'none',\n opacity: '0',\n transition: 'opacity 300ms ease',\n boxShadow: '0 2px 8px rgba(0,0,0,0.3)',\n });\n\n // \u2500\u2500 Reasoning panel (top-right, translucent; agent's own words) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const reasoning = document.createElement('div');\n reasoning.id = '__bad_overlay_reasoning';\n Object.assign(reasoning.style, {\n position: 'fixed',\n top: '40px',\n right: '14px',\n maxWidth: '360px',\n minWidth: '220px',\n padding: '12px 14px',\n background: 'rgba(11, 18, 32, 0.92)',\n color: '#e6ebf5',\n fontSize: '12px',\n lineHeight: '1.5',\n borderRadius: '10px',\n borderLeft: '3px solid #7aa2ff',\n pointerEvents: 'none',\n opacity: '0',\n transform: 'translateY(-6px)',\n transition: 'opacity 250ms ease, transform 250ms ease',\n boxShadow: '0 6px 20px rgba(0,0,0,0.35)',\n backdropFilter: 'blur(4px)',\n });\n const reasoningHeader = document.createElement('div');\n Object.assign(reasoningHeader.style, {\n fontSize: '10px',\n fontWeight: '700',\n letterSpacing: '0.1em',\n textTransform: 'uppercase',\n color: '#7aa2ff',\n marginBottom: '6px',\n });\n reasoningHeader.textContent = 'Agent reasoning';\n const reasoningBody = document.createElement('div');\n Object.assign(reasoningBody.style, { whiteSpace: 'pre-wrap' });\n reasoning.appendChild(reasoningHeader);\n reasoning.appendChild(reasoningBody);\n\n // \u2500\u2500 Verdict badges (bottom-left, stacked) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const badges = document.createElement('div');\n badges.id = '__bad_overlay_badges';\n Object.assign(badges.style, {\n position: 'fixed',\n bottom: '14px',\n left: '14px',\n display: 'flex',\n flexDirection: 'column-reverse',\n gap: '6px',\n pointerEvents: 'none',\n maxHeight: '60vh',\n overflow: 'hidden',\n });\n\n // Append to documentElement (not body) so the overlay is not affected by\n // body's stacking context \u2014 many modern sites apply transform/will-change\n // to body which would clip a max-z-index child appended to body.\n // Bound the retry loop so a body-less doc (XML, PDF viewer, chrome://)\n // doesn't spin requestAnimationFrame forever.\n let attachAttempts = 0;\n function attach() {\n const host = document.documentElement || document.body;\n if (!host) {\n if (++attachAttempts > 60) return; // ~1 second of attempts\n requestAnimationFrame(attach);\n return;\n }\n host.appendChild(root);\n root.appendChild(progress);\n root.appendChild(progressLabel);\n root.appendChild(reasoning);\n root.appendChild(badges);\n root.appendChild(box);\n root.appendChild(ring);\n root.appendChild(cursor);\n root.appendChild(label);\n }\n attach();\n\n // \u2500\u2500 Badge factory \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const BADGE_COLORS = {\n positive: { fg: '#fb7185', bg: 'rgba(251,113,133,0.15)', border: 'rgba(251,113,133,0.5)' },\n cleared: { fg: '#4ade80', bg: 'rgba(74,222,128,0.15)', border: 'rgba(74,222,128,0.5)' },\n review: { fg: '#fbbf24', bg: 'rgba(251,191,36,0.15)', border: 'rgba(251,191,36,0.5)' },\n info: { fg: '#7aa2ff', bg: 'rgba(122,162,255,0.15)', border: 'rgba(122,162,255,0.5)' },\n };\n const MAX_BADGES = 6;\n\n function makeBadge(kind, text) {\n const palette = BADGE_COLORS[kind] || BADGE_COLORS.info;\n const el = document.createElement('div');\n Object.assign(el.style, {\n padding: '8px 14px',\n background: 'rgba(11, 18, 32, 0.92)',\n color: palette.fg,\n fontSize: '12px',\n fontWeight: '700',\n letterSpacing: '0.02em',\n borderRadius: '8px',\n border: '1px solid ' + palette.border,\n boxShadow: '0 4px 16px rgba(0,0,0,0.35), inset 0 0 0 9999px ' + palette.bg,\n animation: '__bad_badge_in 300ms cubic-bezier(0.34, 1.56, 0.64, 1) both',\n whiteSpace: 'nowrap',\n maxWidth: '480px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n });\n el.textContent = text;\n return el;\n }\n\n // \u2500\u2500 Public API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n window.__bad_overlay = {\n /**\n * Highlight a target element by CSS selector. Returns the rect or null.\n */\n highlight(selector) {\n try {\n const el = typeof selector === 'string'\n ? document.querySelector(selector)\n : null;\n if (!el) return null;\n const rect = el.getBoundingClientRect();\n if (rect.width === 0 || rect.height === 0) return null;\n Object.assign(box.style, {\n width: rect.width + 'px',\n height: rect.height + 'px',\n transform: `translate(${rect.left}px, ${rect.top}px)`,\n opacity: '1',\n });\n return { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2, width: rect.width, height: rect.height };\n } catch { return null; }\n },\n\n highlightRect(x, y, width, height) {\n try {\n Object.assign(box.style, {\n width: width + 'px',\n height: height + 'px',\n transform: `translate(${x}px, ${y}px)`,\n opacity: '1',\n });\n } catch { /* never let cosmetic overlay break a run */ }\n },\n\n moveTo(x, y, labelText) {\n cursor.style.transform = `translate(${x - 4}px, ${y - 4}px)`;\n if (labelText) {\n label.textContent = labelText;\n Object.assign(label.style, {\n transform: `translate(${x + 16}px, ${y + 16}px)`,\n opacity: '1',\n });\n }\n },\n\n pulseClick(x, y) {\n Object.assign(ring.style, {\n width: '0',\n height: '0',\n transform: `translate(${x}px, ${y}px)`,\n opacity: '1',\n });\n requestAnimationFrame(() => {\n Object.assign(ring.style, {\n width: '60px',\n height: '60px',\n transform: `translate(${x - 30}px, ${y - 30}px)`,\n opacity: '0',\n });\n });\n },\n\n /**\n * Show the agent's reasoning for the current turn. Multi-line text,\n * word-wrapped, in the top-right panel. Pass empty string or null to\n * hide the panel.\n */\n setReasoning(text) {\n try {\n const t = (text || '').trim();\n if (!t) {\n Object.assign(reasoning.style, { opacity: '0', transform: 'translateY(-6px)' });\n return;\n }\n reasoningBody.textContent = t;\n Object.assign(reasoning.style, { opacity: '1', transform: 'translateY(0)' });\n } catch { /* cosmetic */ }\n },\n\n /**\n * Update the progress strip: \"current\" of \"total\" actions done.\n * progressText is optional (e.g., \"Turn 27 \u00B7 C-003\").\n */\n setProgress(current, total, progressText) {\n try {\n const c = Math.max(0, Number(current) || 0);\n const tot = Math.max(1, Number(total) || 1);\n const pct = Math.min(100, (c / tot) * 100);\n progressFill.style.width = pct + '%';\n progress.style.opacity = '1';\n if (progressText) {\n progressLabel.textContent = progressText;\n progressLabel.style.opacity = '1';\n }\n } catch { /* cosmetic */ }\n },\n\n /**\n * Push a verdict badge onto the bottom-left stack. Auto-trims to the\n * most recent MAX_BADGES. kind is one of \"positive\" | \"cleared\" |\n * \"review\" | \"info\".\n */\n pushBadge(kind, text) {\n try {\n const el = makeBadge(kind, text);\n badges.appendChild(el);\n // Trim oldest if over cap (column-reverse means first child = bottom)\n while (badges.children.length > MAX_BADGES) {\n const first = badges.firstChild;\n if (!first) break;\n badges.removeChild(first);\n }\n } catch { /* cosmetic */ }\n },\n\n clearBadges() {\n try {\n while (badges.firstChild) badges.removeChild(badges.firstChild);\n } catch { /* cosmetic */ }\n },\n\n hide() {\n box.style.opacity = '0';\n label.style.opacity = '0';\n ring.style.opacity = '0';\n },\n\n clearHighlight() {\n box.style.opacity = '0';\n },\n };\n})();\n";
28
+ export declare const CURSOR_OVERLAY_INIT_SCRIPT = "\n(() => {\n if (window.__bad_overlay_installed) return;\n window.__bad_overlay_installed = true;\n\n const NS = 'http://www.w3.org/2000/svg';\n const Z = 2147483647; // max i32\n\n // \u2500\u2500 Root container (absolute, ignores pointer events) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const root = document.createElement('div');\n root.id = '__bad_overlay_root';\n Object.assign(root.style, {\n position: 'fixed',\n inset: '0',\n width: '100vw',\n height: '100vh',\n pointerEvents: 'none',\n zIndex: String(Z),\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n });\n\n // \u2500\u2500 Keyframes \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const style = document.createElement('style');\n style.textContent = `\n @keyframes __bad_cursor_bob {\n 0%, 100% { margin-top: 0px; }\n 50% { margin-top: -3px; }\n }\n @keyframes __bad_badge_in {\n from { transform: translateX(-20px); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n }\n @keyframes __bad_badge_out {\n from { transform: translateX(0); opacity: 1; }\n to { transform: translateX(20px); opacity: 0; }\n }\n `;\n (document.head || document.documentElement).appendChild(style);\n\n // \u2500\u2500 Cursor sprite (SVG arrow) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const cursor = document.createElementNS(NS, 'svg');\n cursor.setAttribute('width', '24');\n cursor.setAttribute('height', '24');\n cursor.setAttribute('viewBox', '0 0 24 24');\n cursor.setAttribute('fill', 'none');\n Object.assign(cursor.style, {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: 'translate(-100px, -100px)',\n transition: 'transform 400ms cubic-bezier(0.34, 1.56, 0.64, 1)',\n pointerEvents: 'none',\n filter: 'drop-shadow(0 2px 4px rgba(0,0,0,0.5))',\n animation: '__bad_cursor_bob 1.8s ease-in-out infinite',\n });\n cursor.innerHTML = `\n <path d=\"M3 2 L21 12 L13 14 L9 22 Z\" fill=\"#ffffff\" stroke=\"#0b1220\" stroke-width=\"1.5\" stroke-linejoin=\"round\"/>\n `;\n\n // \u2500\u2500 Pulse ring (animated on click) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const ring = document.createElement('div');\n Object.assign(ring.style, {\n position: 'fixed',\n left: '0',\n top: '0',\n width: '0',\n height: '0',\n borderRadius: '9999px',\n border: '3px solid rgba(79, 70, 229, 0.95)',\n transform: 'translate(-100px, -100px)',\n pointerEvents: 'none',\n opacity: '0',\n transition: 'all 500ms ease-out',\n });\n\n // \u2500\u2500 Highlight box (drawn around the target element) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const box = document.createElement('div');\n box.id = '__bad_overlay_box';\n Object.assign(box.style, {\n position: 'fixed',\n left: '0',\n top: '0',\n width: '0',\n height: '0',\n border: '2px solid rgba(34, 197, 94, 0.95)',\n borderRadius: '6px',\n background: 'rgba(34, 197, 94, 0.08)',\n boxShadow: '0 0 0 4px rgba(34, 197, 94, 0.18)',\n transform: 'translate(-100px, -100px)',\n pointerEvents: 'none',\n transition: 'all 350ms cubic-bezier(0.34, 1.56, 0.64, 1)',\n opacity: '0',\n });\n\n // \u2500\u2500 Action label (shows \"click\" / \"type\" / etc next to cursor) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const label = document.createElement('div');\n Object.assign(label.style, {\n position: 'fixed',\n left: '0',\n top: '0',\n padding: '5px 12px',\n background: 'rgba(11, 18, 32, 0.95)',\n color: '#ffffff',\n fontSize: '13px',\n fontWeight: '600',\n letterSpacing: '0.01em',\n borderRadius: '8px',\n transform: 'translate(-200px, -200px)',\n pointerEvents: 'none',\n opacity: '0',\n transition: 'transform 400ms cubic-bezier(0.34, 1.56, 0.64, 1), opacity 200ms ease',\n boxShadow: '0 4px 16px rgba(0,0,0,0.35)',\n whiteSpace: 'nowrap',\n });\n\n // \u2500\u2500 Progress timeline bar (top edge, thin strip) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const progress = document.createElement('div');\n progress.id = '__bad_overlay_progress';\n Object.assign(progress.style, {\n position: 'fixed',\n top: '0',\n left: '0',\n right: '0',\n height: '3px',\n background: 'rgba(11, 18, 32, 0.6)',\n pointerEvents: 'none',\n opacity: '0',\n transition: 'opacity 300ms ease',\n });\n const progressFill = document.createElement('div');\n Object.assign(progressFill.style, {\n position: 'absolute',\n top: '0',\n left: '0',\n height: '100%',\n width: '0%',\n background: 'linear-gradient(90deg, #4f46e5 0%, #7aa2ff 100%)',\n transition: 'width 500ms cubic-bezier(0.4, 0, 0.2, 1)',\n boxShadow: '0 0 8px rgba(79, 70, 229, 0.6)',\n });\n progress.appendChild(progressFill);\n\n // \u2500\u2500 Progress label (turn counter, top-left) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const progressLabel = document.createElement('div');\n Object.assign(progressLabel.style, {\n position: 'fixed',\n top: '10px',\n left: '14px',\n padding: '4px 10px',\n background: 'rgba(11, 18, 32, 0.88)',\n color: '#ffffff',\n fontSize: '11px',\n fontWeight: '700',\n letterSpacing: '0.06em',\n textTransform: 'uppercase',\n borderRadius: '6px',\n pointerEvents: 'none',\n opacity: '0',\n transition: 'opacity 300ms ease',\n boxShadow: '0 2px 8px rgba(0,0,0,0.3)',\n });\n\n // \u2500\u2500 Reasoning panel (top-right, translucent; agent's own words) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const reasoning = document.createElement('div');\n reasoning.id = '__bad_overlay_reasoning';\n Object.assign(reasoning.style, {\n position: 'fixed',\n top: '40px',\n right: '14px',\n maxWidth: '360px',\n minWidth: '220px',\n padding: '12px 14px',\n background: 'rgba(11, 18, 32, 0.92)',\n color: '#e6ebf5',\n fontSize: '12px',\n lineHeight: '1.5',\n borderRadius: '10px',\n borderLeft: '3px solid #7aa2ff',\n pointerEvents: 'none',\n opacity: '0',\n transform: 'translateY(-6px)',\n transition: 'opacity 250ms ease, transform 250ms ease',\n boxShadow: '0 6px 20px rgba(0,0,0,0.35)',\n backdropFilter: 'blur(4px)',\n });\n const reasoningHeader = document.createElement('div');\n Object.assign(reasoningHeader.style, {\n fontSize: '10px',\n fontWeight: '700',\n letterSpacing: '0.1em',\n textTransform: 'uppercase',\n color: '#7aa2ff',\n marginBottom: '6px',\n });\n reasoningHeader.textContent = 'Agent reasoning';\n const reasoningBody = document.createElement('div');\n Object.assign(reasoningBody.style, { whiteSpace: 'pre-wrap' });\n reasoning.appendChild(reasoningHeader);\n reasoning.appendChild(reasoningBody);\n\n // \u2500\u2500 Verdict badges (bottom-left, stacked) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const badges = document.createElement('div');\n badges.id = '__bad_overlay_badges';\n Object.assign(badges.style, {\n position: 'fixed',\n bottom: '14px',\n left: '14px',\n display: 'flex',\n flexDirection: 'column-reverse',\n gap: '6px',\n pointerEvents: 'none',\n maxHeight: '60vh',\n overflow: 'hidden',\n });\n\n // \u2500\u2500 Gen 34 Hydra View \u2014 fan-out grid (live thumbnails of sub-tabs) \u2500\u2500\u2500\u2500\u2500\n // Full-viewport dim overlay + grid of live sub-tab screenshot cells.\n // Cells lay out based on count: 1\u21921, 2\u21921x2, 3-4\u21922x2, 5-6\u21922x3, 7-8\u21922x4.\n // Each cell background updates via updateFanOutCell(i, dataUrl, meta).\n const hydra = document.createElement('div');\n hydra.id = '__bad_overlay_hydra';\n Object.assign(hydra.style, {\n position: 'fixed',\n inset: '0',\n display: 'none',\n background: 'radial-gradient(ellipse at center, rgba(11,18,32,0.80) 0%, rgba(11,18,32,0.95) 100%)',\n backdropFilter: 'blur(6px)',\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n gap: '20px',\n transition: 'opacity 400ms ease',\n opacity: '0',\n pointerEvents: 'none',\n });\n const hydraTitle = document.createElement('div');\n Object.assign(hydraTitle.style, {\n fontSize: '11px',\n fontWeight: '700',\n letterSpacing: '0.16em',\n textTransform: 'uppercase',\n color: '#7aa2ff',\n textAlign: 'center',\n });\n hydraTitle.textContent = 'Fan-out \u00B7 investigating branches in parallel';\n const hydraGrid = document.createElement('div');\n hydraGrid.id = '__bad_overlay_hydra_grid';\n Object.assign(hydraGrid.style, {\n display: 'grid',\n gap: '16px',\n maxWidth: '1200px',\n maxHeight: '70vh',\n padding: '0 40px',\n });\n const hydraCounter = document.createElement('div');\n Object.assign(hydraCounter.style, {\n fontSize: '13px',\n color: '#e6ebf5',\n fontWeight: '600',\n textAlign: 'center',\n });\n hydra.appendChild(hydraTitle);\n hydra.appendChild(hydraGrid);\n hydra.appendChild(hydraCounter);\n\n // Append to documentElement (not body) so the overlay is not affected by\n // body's stacking context \u2014 many modern sites apply transform/will-change\n // to body which would clip a max-z-index child appended to body.\n // Bound the retry loop so a body-less doc (XML, PDF viewer, chrome://)\n // doesn't spin requestAnimationFrame forever.\n let attachAttempts = 0;\n function attach() {\n const host = document.documentElement || document.body;\n if (!host) {\n if (++attachAttempts > 60) return; // ~1 second of attempts\n requestAnimationFrame(attach);\n return;\n }\n host.appendChild(root);\n root.appendChild(progress);\n root.appendChild(progressLabel);\n root.appendChild(reasoning);\n root.appendChild(badges);\n root.appendChild(box);\n root.appendChild(ring);\n root.appendChild(cursor);\n root.appendChild(label);\n root.appendChild(hydra);\n }\n attach();\n\n // \u2500\u2500 Badge factory \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const BADGE_COLORS = {\n positive: { fg: '#fb7185', bg: 'rgba(251,113,133,0.15)', border: 'rgba(251,113,133,0.5)' },\n cleared: { fg: '#4ade80', bg: 'rgba(74,222,128,0.15)', border: 'rgba(74,222,128,0.5)' },\n review: { fg: '#fbbf24', bg: 'rgba(251,191,36,0.15)', border: 'rgba(251,191,36,0.5)' },\n info: { fg: '#7aa2ff', bg: 'rgba(122,162,255,0.15)', border: 'rgba(122,162,255,0.5)' },\n };\n const MAX_BADGES = 6;\n\n function makeBadge(kind, text) {\n const palette = BADGE_COLORS[kind] || BADGE_COLORS.info;\n const el = document.createElement('div');\n Object.assign(el.style, {\n padding: '8px 14px',\n background: 'rgba(11, 18, 32, 0.92)',\n color: palette.fg,\n fontSize: '12px',\n fontWeight: '700',\n letterSpacing: '0.02em',\n borderRadius: '8px',\n border: '1px solid ' + palette.border,\n boxShadow: '0 4px 16px rgba(0,0,0,0.35), inset 0 0 0 9999px ' + palette.bg,\n animation: '__bad_badge_in 300ms cubic-bezier(0.34, 1.56, 0.64, 1) both',\n whiteSpace: 'nowrap',\n maxWidth: '480px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n });\n el.textContent = text;\n return el;\n }\n\n // \u2500\u2500 Public API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n window.__bad_overlay = {\n /**\n * Highlight a target element by CSS selector. Returns the rect or null.\n */\n highlight(selector) {\n try {\n const el = typeof selector === 'string'\n ? document.querySelector(selector)\n : null;\n if (!el) return null;\n const rect = el.getBoundingClientRect();\n if (rect.width === 0 || rect.height === 0) return null;\n Object.assign(box.style, {\n width: rect.width + 'px',\n height: rect.height + 'px',\n transform: `translate(${rect.left}px, ${rect.top}px)`,\n opacity: '1',\n });\n return { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2, width: rect.width, height: rect.height };\n } catch { return null; }\n },\n\n highlightRect(x, y, width, height) {\n try {\n Object.assign(box.style, {\n width: width + 'px',\n height: height + 'px',\n transform: `translate(${x}px, ${y}px)`,\n opacity: '1',\n });\n } catch { /* never let cosmetic overlay break a run */ }\n },\n\n moveTo(x, y, labelText) {\n cursor.style.transform = `translate(${x - 4}px, ${y - 4}px)`;\n if (labelText) {\n label.textContent = labelText;\n Object.assign(label.style, {\n transform: `translate(${x + 16}px, ${y + 16}px)`,\n opacity: '1',\n });\n }\n },\n\n pulseClick(x, y) {\n Object.assign(ring.style, {\n width: '0',\n height: '0',\n transform: `translate(${x}px, ${y}px)`,\n opacity: '1',\n });\n requestAnimationFrame(() => {\n Object.assign(ring.style, {\n width: '60px',\n height: '60px',\n transform: `translate(${x - 30}px, ${y - 30}px)`,\n opacity: '0',\n });\n });\n },\n\n /**\n * Show the agent's reasoning for the current turn. Multi-line text,\n * word-wrapped, in the top-right panel. Pass empty string or null to\n * hide the panel.\n */\n setReasoning(text) {\n try {\n const t = (text || '').trim();\n if (!t) {\n Object.assign(reasoning.style, { opacity: '0', transform: 'translateY(-6px)' });\n return;\n }\n reasoningBody.textContent = t;\n Object.assign(reasoning.style, { opacity: '1', transform: 'translateY(0)' });\n } catch { /* cosmetic */ }\n },\n\n /**\n * Update the progress strip: \"current\" of \"total\" actions done.\n * progressText is optional (e.g., \"Turn 27 \u00B7 C-003\").\n */\n setProgress(current, total, progressText) {\n try {\n const c = Math.max(0, Number(current) || 0);\n const tot = Math.max(1, Number(total) || 1);\n const pct = Math.min(100, (c / tot) * 100);\n progressFill.style.width = pct + '%';\n progress.style.opacity = '1';\n if (progressText) {\n progressLabel.textContent = progressText;\n progressLabel.style.opacity = '1';\n }\n } catch { /* cosmetic */ }\n },\n\n /**\n * Push a verdict badge onto the bottom-left stack. Auto-trims to the\n * most recent MAX_BADGES. kind is one of \"positive\" | \"cleared\" |\n * \"review\" | \"info\".\n */\n pushBadge(kind, text) {\n try {\n const el = makeBadge(kind, text);\n badges.appendChild(el);\n // Trim oldest if over cap (column-reverse means first child = bottom)\n while (badges.children.length > MAX_BADGES) {\n const first = badges.firstChild;\n if (!first) break;\n badges.removeChild(first);\n }\n } catch { /* cosmetic */ }\n },\n\n clearBadges() {\n try {\n while (badges.firstChild) badges.removeChild(badges.firstChild);\n } catch { /* cosmetic */ }\n },\n\n // \u2500\u2500 Gen 34 Hydra API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * Begin a fan-out: render the dim overlay + grid of N labeled cells.\n * Cells start in \"queued\" state (empty). Call updateFanOutCell(i, ...)\n * as sub-agent screenshots stream in.\n *\n * labels: human-readable label per cell, one per sub-agent.\n * originX/originY: optional viewport coord where the fan-out was\n * initiated \u2014 cells burst outward from this point (default: center).\n */\n fanOutStart(labels, originX, originY) {\n try {\n const n = Math.max(1, Math.min(8, labels.length));\n // Layout: 1\u21921, 2\u21921x2, 3-4\u21922x2, 5-6\u21923x2, 7-8\u21924x2\n const cols = n === 1 ? 1 : n === 2 ? 2 : n <= 4 ? 2 : n <= 6 ? 3 : 4;\n const rows = Math.ceil(n / cols);\n hydraGrid.style.gridTemplateColumns = 'repeat(' + cols + ', 1fr)';\n hydraGrid.style.gridTemplateRows = 'repeat(' + rows + ', 1fr)';\n // Cell size: scale to fit. For a 1200x600 viewport budget:\n const cellW = Math.floor(1120 / cols) - 10;\n const cellH = Math.floor(Math.min(520 / rows, cellW * 0.7));\n // Clear prior cells\n while (hydraGrid.firstChild) hydraGrid.removeChild(hydraGrid.firstChild);\n const originPx = typeof originX === 'number' && typeof originY === 'number'\n ? { x: originX, y: originY }\n : { x: window.innerWidth / 2, y: window.innerHeight / 2 };\n for (let i = 0; i < n; i++) {\n const cell = document.createElement('div');\n cell.className = '__bad_hydra_cell';\n cell.dataset.index = String(i);\n Object.assign(cell.style, {\n position: 'relative',\n width: cellW + 'px',\n height: cellH + 'px',\n background: '#0b1220',\n backgroundSize: 'cover',\n backgroundPosition: 'center top',\n border: '2px solid rgba(122,162,255,0.55)',\n borderRadius: '10px',\n overflow: 'hidden',\n boxShadow: '0 10px 30px rgba(0,0,0,0.55), inset 0 0 0 1px rgba(122,162,255,0.2)',\n opacity: '0',\n transform: 'translate(' + (originPx.x - window.innerWidth / 2) + 'px, ' + (originPx.y - window.innerHeight / 2) + 'px) scale(0.15)',\n transition: 'transform 480ms cubic-bezier(0.34, 1.56, 0.64, 1), opacity 300ms ease, border-color 300ms ease, box-shadow 300ms ease',\n });\n // Header strip: label + live elapsed\n const header = document.createElement('div');\n Object.assign(header.style, {\n position: 'absolute',\n top: '0', left: '0', right: '0',\n padding: '6px 10px',\n background: 'linear-gradient(180deg, rgba(11,18,32,0.95) 0%, rgba(11,18,32,0.0) 100%)',\n color: '#e6ebf5',\n fontSize: '11px',\n fontWeight: '700',\n letterSpacing: '0.04em',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n });\n const headerLabel = document.createElement('span');\n headerLabel.textContent = labels[i] || ('branch-' + (i + 1));\n const headerTimer = document.createElement('span');\n headerTimer.className = '__bad_hydra_timer';\n headerTimer.style.cssText = 'font-family:SF Mono,Menlo,monospace;font-size:10px;color:#9aa3b8;font-weight:500;';\n headerTimer.textContent = '0.0s';\n header.appendChild(headerLabel);\n header.appendChild(headerTimer);\n cell.appendChild(header);\n // Verdict chip (hidden until complete)\n const chip = document.createElement('div');\n chip.className = '__bad_hydra_chip';\n Object.assign(chip.style, {\n position: 'absolute',\n bottom: '8px',\n left: '8px',\n padding: '3px 10px',\n background: 'rgba(11,18,32,0.92)',\n color: '#ffffff',\n fontSize: '10px',\n fontWeight: '700',\n letterSpacing: '0.05em',\n textTransform: 'uppercase',\n borderRadius: '6px',\n opacity: '0',\n transition: 'opacity 220ms ease',\n });\n cell.appendChild(chip);\n hydraGrid.appendChild(cell);\n }\n hydra.style.display = 'flex';\n hydraCounter.textContent = '0 / ' + n + ' branches complete';\n // Next frame: fade in + animate cells to their grid positions\n requestAnimationFrame(() => {\n hydra.style.opacity = '1';\n const cells = hydraGrid.children;\n for (let i = 0; i < cells.length; i++) {\n const c = cells[i];\n // Staggered burst: 0ms, 60ms, 120ms, ...\n setTimeout(function () {\n c.style.opacity = '1';\n c.style.transform = 'translate(0, 0) scale(1)';\n }, i * 60);\n }\n });\n // Start the elapsed-time ticker\n hydra.__tickerStart = Date.now();\n if (hydra.__ticker) clearInterval(hydra.__ticker);\n hydra.__ticker = setInterval(function () {\n const elapsed = (Date.now() - hydra.__tickerStart) / 1000;\n const cells = hydraGrid.children;\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i];\n if (cell.__completedAt) continue;\n const timer = cell.querySelector('.__bad_hydra_timer');\n if (timer) timer.textContent = elapsed.toFixed(1) + 's';\n }\n }, 100);\n } catch { /* cosmetic */ }\n },\n\n /**\n * Update cell N with a fresh screenshot (data URL) and/or metadata.\n * Call this at 2-5 FPS from the runner's screenshot streamer.\n * meta: { action?: string, turn?: number }\n */\n fanOutUpdateCell(index, dataUrl, meta) {\n try {\n const cell = hydraGrid.children[index];\n if (!cell) return;\n if (dataUrl) {\n cell.style.backgroundImage = 'url(\"' + dataUrl + '\")';\n }\n // eslint-disable-next-line no-empty\n if (meta) { /* reserved for future overlays inside the cell */ }\n } catch { /* cosmetic */ }\n },\n\n /**\n * Mark cell N as complete with a verdict. kind is one of\n * 'positive' | 'cleared' | 'review' | 'info'. Final state: border\n * recolors, chip fades in, timer freezes.\n */\n fanOutCompleteCell(index, kind, verdictText) {\n try {\n const cell = hydraGrid.children[index];\n if (!cell) return;\n cell.__completedAt = Date.now();\n const palette = (kind === 'positive' ? { c: '#fb7185', bg: 'rgba(251,113,133,0.25)' }\n : kind === 'cleared' ? { c: '#4ade80', bg: 'rgba(74,222,128,0.25)' }\n : kind === 'review' ? { c: '#fbbf24', bg: 'rgba(251,191,36,0.25)' }\n : { c: '#7aa2ff', bg: 'rgba(122,162,255,0.25)' });\n cell.style.borderColor = palette.c;\n cell.style.boxShadow = '0 10px 30px rgba(0,0,0,0.55), inset 0 0 0 1px ' + palette.c + ', 0 0 24px ' + palette.bg;\n const chip = cell.querySelector('.__bad_hydra_chip');\n if (chip) {\n chip.style.background = palette.bg;\n chip.style.color = palette.c;\n chip.style.border = '1px solid ' + palette.c;\n chip.textContent = (verdictText || kind).slice(0, 32);\n chip.style.opacity = '1';\n }\n // Update global counter\n const total = hydraGrid.children.length;\n let done = 0;\n for (let i = 0; i < total; i++) if (hydraGrid.children[i].__completedAt) done++;\n hydraCounter.textContent = done + ' / ' + total + ' branches complete';\n } catch { /* cosmetic */ }\n },\n\n /**\n * Collapse the grid: cells fly inward to center, merge into a result\n * tile, then dissolve. Returns after ~800ms when the animation is\n * done (but does NOT hide the overlay \u2014 caller invokes fanOutDismiss).\n */\n fanOutCollapse() {\n try {\n if (hydra.__ticker) { clearInterval(hydra.__ticker); hydra.__ticker = null; }\n const cells = hydraGrid.children;\n const cx = window.innerWidth / 2;\n const cy = window.innerHeight / 2;\n for (let i = 0; i < cells.length; i++) {\n const c = cells[i];\n const rect = c.getBoundingClientRect();\n const dx = cx - (rect.left + rect.width / 2);\n const dy = cy - (rect.top + rect.height / 2);\n c.style.transition = 'transform 520ms cubic-bezier(0.6, 0, 0.4, 1), opacity 400ms ease';\n c.style.transform = 'translate(' + dx + 'px, ' + dy + 'px) scale(0.2)';\n c.style.opacity = '0';\n }\n hydraTitle.style.transition = 'opacity 400ms ease';\n hydraCounter.style.transition = 'opacity 400ms ease';\n setTimeout(function () { hydraTitle.style.opacity = '0'; hydraCounter.style.opacity = '0'; }, 200);\n } catch { /* cosmetic */ }\n },\n\n /**\n * Hide the Hydra overlay entirely. Call after fanOutCollapse has\n * finished + the parent agent has resumed.\n */\n fanOutDismiss() {\n try {\n hydra.style.opacity = '0';\n setTimeout(function () {\n hydra.style.display = 'none';\n hydraTitle.style.opacity = '1';\n hydraCounter.style.opacity = '1';\n while (hydraGrid.firstChild) hydraGrid.removeChild(hydraGrid.firstChild);\n if (hydra.__ticker) { clearInterval(hydra.__ticker); hydra.__ticker = null; }\n }, 400);\n } catch { /* cosmetic */ }\n },\n\n hide() {\n box.style.opacity = '0';\n label.style.opacity = '0';\n ring.style.opacity = '0';\n },\n\n clearHighlight() {\n box.style.opacity = '0';\n },\n };\n})();\n";
29
29
  //# sourceMappingURL=cursor-overlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-overlay.d.ts","sourceRoot":"","sources":["../../src/drivers/cursor-overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;GAGG;AACH,eAAO,MAAM,0BAA0B,uieAoZtC,CAAA"}
1
+ {"version":3,"file":"cursor-overlay.d.ts","sourceRoot":"","sources":["../../src/drivers/cursor-overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;GAGG;AACH,eAAO,MAAM,0BAA0B,uh1BA4pBtC,CAAA"}
@@ -240,6 +240,56 @@ export const CURSOR_OVERLAY_INIT_SCRIPT = `
240
240
  overflow: 'hidden',
241
241
  });
242
242
 
243
+ // ── Gen 34 Hydra View — fan-out grid (live thumbnails of sub-tabs) ─────
244
+ // Full-viewport dim overlay + grid of live sub-tab screenshot cells.
245
+ // Cells lay out based on count: 1→1, 2→1x2, 3-4→2x2, 5-6→2x3, 7-8→2x4.
246
+ // Each cell background updates via updateFanOutCell(i, dataUrl, meta).
247
+ const hydra = document.createElement('div');
248
+ hydra.id = '__bad_overlay_hydra';
249
+ Object.assign(hydra.style, {
250
+ position: 'fixed',
251
+ inset: '0',
252
+ display: 'none',
253
+ background: 'radial-gradient(ellipse at center, rgba(11,18,32,0.80) 0%, rgba(11,18,32,0.95) 100%)',
254
+ backdropFilter: 'blur(6px)',
255
+ alignItems: 'center',
256
+ justifyContent: 'center',
257
+ flexDirection: 'column',
258
+ gap: '20px',
259
+ transition: 'opacity 400ms ease',
260
+ opacity: '0',
261
+ pointerEvents: 'none',
262
+ });
263
+ const hydraTitle = document.createElement('div');
264
+ Object.assign(hydraTitle.style, {
265
+ fontSize: '11px',
266
+ fontWeight: '700',
267
+ letterSpacing: '0.16em',
268
+ textTransform: 'uppercase',
269
+ color: '#7aa2ff',
270
+ textAlign: 'center',
271
+ });
272
+ hydraTitle.textContent = 'Fan-out · investigating branches in parallel';
273
+ const hydraGrid = document.createElement('div');
274
+ hydraGrid.id = '__bad_overlay_hydra_grid';
275
+ Object.assign(hydraGrid.style, {
276
+ display: 'grid',
277
+ gap: '16px',
278
+ maxWidth: '1200px',
279
+ maxHeight: '70vh',
280
+ padding: '0 40px',
281
+ });
282
+ const hydraCounter = document.createElement('div');
283
+ Object.assign(hydraCounter.style, {
284
+ fontSize: '13px',
285
+ color: '#e6ebf5',
286
+ fontWeight: '600',
287
+ textAlign: 'center',
288
+ });
289
+ hydra.appendChild(hydraTitle);
290
+ hydra.appendChild(hydraGrid);
291
+ hydra.appendChild(hydraCounter);
292
+
243
293
  // Append to documentElement (not body) so the overlay is not affected by
244
294
  // body's stacking context — many modern sites apply transform/will-change
245
295
  // to body which would clip a max-z-index child appended to body.
@@ -262,6 +312,7 @@ export const CURSOR_OVERLAY_INIT_SCRIPT = `
262
312
  root.appendChild(ring);
263
313
  root.appendChild(cursor);
264
314
  root.appendChild(label);
315
+ root.appendChild(hydra);
265
316
  }
266
317
  attach();
267
318
 
@@ -418,6 +469,219 @@ export const CURSOR_OVERLAY_INIT_SCRIPT = `
418
469
  } catch { /* cosmetic */ }
419
470
  },
420
471
 
472
+ // ── Gen 34 Hydra API ─────────────────────────────────────────────
473
+ /**
474
+ * Begin a fan-out: render the dim overlay + grid of N labeled cells.
475
+ * Cells start in "queued" state (empty). Call updateFanOutCell(i, ...)
476
+ * as sub-agent screenshots stream in.
477
+ *
478
+ * labels: human-readable label per cell, one per sub-agent.
479
+ * originX/originY: optional viewport coord where the fan-out was
480
+ * initiated — cells burst outward from this point (default: center).
481
+ */
482
+ fanOutStart(labels, originX, originY) {
483
+ try {
484
+ const n = Math.max(1, Math.min(8, labels.length));
485
+ // Layout: 1→1, 2→1x2, 3-4→2x2, 5-6→3x2, 7-8→4x2
486
+ const cols = n === 1 ? 1 : n === 2 ? 2 : n <= 4 ? 2 : n <= 6 ? 3 : 4;
487
+ const rows = Math.ceil(n / cols);
488
+ hydraGrid.style.gridTemplateColumns = 'repeat(' + cols + ', 1fr)';
489
+ hydraGrid.style.gridTemplateRows = 'repeat(' + rows + ', 1fr)';
490
+ // Cell size: scale to fit. For a 1200x600 viewport budget:
491
+ const cellW = Math.floor(1120 / cols) - 10;
492
+ const cellH = Math.floor(Math.min(520 / rows, cellW * 0.7));
493
+ // Clear prior cells
494
+ while (hydraGrid.firstChild) hydraGrid.removeChild(hydraGrid.firstChild);
495
+ const originPx = typeof originX === 'number' && typeof originY === 'number'
496
+ ? { x: originX, y: originY }
497
+ : { x: window.innerWidth / 2, y: window.innerHeight / 2 };
498
+ for (let i = 0; i < n; i++) {
499
+ const cell = document.createElement('div');
500
+ cell.className = '__bad_hydra_cell';
501
+ cell.dataset.index = String(i);
502
+ Object.assign(cell.style, {
503
+ position: 'relative',
504
+ width: cellW + 'px',
505
+ height: cellH + 'px',
506
+ background: '#0b1220',
507
+ backgroundSize: 'cover',
508
+ backgroundPosition: 'center top',
509
+ border: '2px solid rgba(122,162,255,0.55)',
510
+ borderRadius: '10px',
511
+ overflow: 'hidden',
512
+ boxShadow: '0 10px 30px rgba(0,0,0,0.55), inset 0 0 0 1px rgba(122,162,255,0.2)',
513
+ opacity: '0',
514
+ transform: 'translate(' + (originPx.x - window.innerWidth / 2) + 'px, ' + (originPx.y - window.innerHeight / 2) + 'px) scale(0.15)',
515
+ transition: 'transform 480ms cubic-bezier(0.34, 1.56, 0.64, 1), opacity 300ms ease, border-color 300ms ease, box-shadow 300ms ease',
516
+ });
517
+ // Header strip: label + live elapsed
518
+ const header = document.createElement('div');
519
+ Object.assign(header.style, {
520
+ position: 'absolute',
521
+ top: '0', left: '0', right: '0',
522
+ padding: '6px 10px',
523
+ background: 'linear-gradient(180deg, rgba(11,18,32,0.95) 0%, rgba(11,18,32,0.0) 100%)',
524
+ color: '#e6ebf5',
525
+ fontSize: '11px',
526
+ fontWeight: '700',
527
+ letterSpacing: '0.04em',
528
+ display: 'flex',
529
+ justifyContent: 'space-between',
530
+ alignItems: 'center',
531
+ });
532
+ const headerLabel = document.createElement('span');
533
+ headerLabel.textContent = labels[i] || ('branch-' + (i + 1));
534
+ const headerTimer = document.createElement('span');
535
+ headerTimer.className = '__bad_hydra_timer';
536
+ headerTimer.style.cssText = 'font-family:SF Mono,Menlo,monospace;font-size:10px;color:#9aa3b8;font-weight:500;';
537
+ headerTimer.textContent = '0.0s';
538
+ header.appendChild(headerLabel);
539
+ header.appendChild(headerTimer);
540
+ cell.appendChild(header);
541
+ // Verdict chip (hidden until complete)
542
+ const chip = document.createElement('div');
543
+ chip.className = '__bad_hydra_chip';
544
+ Object.assign(chip.style, {
545
+ position: 'absolute',
546
+ bottom: '8px',
547
+ left: '8px',
548
+ padding: '3px 10px',
549
+ background: 'rgba(11,18,32,0.92)',
550
+ color: '#ffffff',
551
+ fontSize: '10px',
552
+ fontWeight: '700',
553
+ letterSpacing: '0.05em',
554
+ textTransform: 'uppercase',
555
+ borderRadius: '6px',
556
+ opacity: '0',
557
+ transition: 'opacity 220ms ease',
558
+ });
559
+ cell.appendChild(chip);
560
+ hydraGrid.appendChild(cell);
561
+ }
562
+ hydra.style.display = 'flex';
563
+ hydraCounter.textContent = '0 / ' + n + ' branches complete';
564
+ // Next frame: fade in + animate cells to their grid positions
565
+ requestAnimationFrame(() => {
566
+ hydra.style.opacity = '1';
567
+ const cells = hydraGrid.children;
568
+ for (let i = 0; i < cells.length; i++) {
569
+ const c = cells[i];
570
+ // Staggered burst: 0ms, 60ms, 120ms, ...
571
+ setTimeout(function () {
572
+ c.style.opacity = '1';
573
+ c.style.transform = 'translate(0, 0) scale(1)';
574
+ }, i * 60);
575
+ }
576
+ });
577
+ // Start the elapsed-time ticker
578
+ hydra.__tickerStart = Date.now();
579
+ if (hydra.__ticker) clearInterval(hydra.__ticker);
580
+ hydra.__ticker = setInterval(function () {
581
+ const elapsed = (Date.now() - hydra.__tickerStart) / 1000;
582
+ const cells = hydraGrid.children;
583
+ for (let i = 0; i < cells.length; i++) {
584
+ const cell = cells[i];
585
+ if (cell.__completedAt) continue;
586
+ const timer = cell.querySelector('.__bad_hydra_timer');
587
+ if (timer) timer.textContent = elapsed.toFixed(1) + 's';
588
+ }
589
+ }, 100);
590
+ } catch { /* cosmetic */ }
591
+ },
592
+
593
+ /**
594
+ * Update cell N with a fresh screenshot (data URL) and/or metadata.
595
+ * Call this at 2-5 FPS from the runner's screenshot streamer.
596
+ * meta: { action?: string, turn?: number }
597
+ */
598
+ fanOutUpdateCell(index, dataUrl, meta) {
599
+ try {
600
+ const cell = hydraGrid.children[index];
601
+ if (!cell) return;
602
+ if (dataUrl) {
603
+ cell.style.backgroundImage = 'url("' + dataUrl + '")';
604
+ }
605
+ // eslint-disable-next-line no-empty
606
+ if (meta) { /* reserved for future overlays inside the cell */ }
607
+ } catch { /* cosmetic */ }
608
+ },
609
+
610
+ /**
611
+ * Mark cell N as complete with a verdict. kind is one of
612
+ * 'positive' | 'cleared' | 'review' | 'info'. Final state: border
613
+ * recolors, chip fades in, timer freezes.
614
+ */
615
+ fanOutCompleteCell(index, kind, verdictText) {
616
+ try {
617
+ const cell = hydraGrid.children[index];
618
+ if (!cell) return;
619
+ cell.__completedAt = Date.now();
620
+ const palette = (kind === 'positive' ? { c: '#fb7185', bg: 'rgba(251,113,133,0.25)' }
621
+ : kind === 'cleared' ? { c: '#4ade80', bg: 'rgba(74,222,128,0.25)' }
622
+ : kind === 'review' ? { c: '#fbbf24', bg: 'rgba(251,191,36,0.25)' }
623
+ : { c: '#7aa2ff', bg: 'rgba(122,162,255,0.25)' });
624
+ cell.style.borderColor = palette.c;
625
+ cell.style.boxShadow = '0 10px 30px rgba(0,0,0,0.55), inset 0 0 0 1px ' + palette.c + ', 0 0 24px ' + palette.bg;
626
+ const chip = cell.querySelector('.__bad_hydra_chip');
627
+ if (chip) {
628
+ chip.style.background = palette.bg;
629
+ chip.style.color = palette.c;
630
+ chip.style.border = '1px solid ' + palette.c;
631
+ chip.textContent = (verdictText || kind).slice(0, 32);
632
+ chip.style.opacity = '1';
633
+ }
634
+ // Update global counter
635
+ const total = hydraGrid.children.length;
636
+ let done = 0;
637
+ for (let i = 0; i < total; i++) if (hydraGrid.children[i].__completedAt) done++;
638
+ hydraCounter.textContent = done + ' / ' + total + ' branches complete';
639
+ } catch { /* cosmetic */ }
640
+ },
641
+
642
+ /**
643
+ * Collapse the grid: cells fly inward to center, merge into a result
644
+ * tile, then dissolve. Returns after ~800ms when the animation is
645
+ * done (but does NOT hide the overlay — caller invokes fanOutDismiss).
646
+ */
647
+ fanOutCollapse() {
648
+ try {
649
+ if (hydra.__ticker) { clearInterval(hydra.__ticker); hydra.__ticker = null; }
650
+ const cells = hydraGrid.children;
651
+ const cx = window.innerWidth / 2;
652
+ const cy = window.innerHeight / 2;
653
+ for (let i = 0; i < cells.length; i++) {
654
+ const c = cells[i];
655
+ const rect = c.getBoundingClientRect();
656
+ const dx = cx - (rect.left + rect.width / 2);
657
+ const dy = cy - (rect.top + rect.height / 2);
658
+ c.style.transition = 'transform 520ms cubic-bezier(0.6, 0, 0.4, 1), opacity 400ms ease';
659
+ c.style.transform = 'translate(' + dx + 'px, ' + dy + 'px) scale(0.2)';
660
+ c.style.opacity = '0';
661
+ }
662
+ hydraTitle.style.transition = 'opacity 400ms ease';
663
+ hydraCounter.style.transition = 'opacity 400ms ease';
664
+ setTimeout(function () { hydraTitle.style.opacity = '0'; hydraCounter.style.opacity = '0'; }, 200);
665
+ } catch { /* cosmetic */ }
666
+ },
667
+
668
+ /**
669
+ * Hide the Hydra overlay entirely. Call after fanOutCollapse has
670
+ * finished + the parent agent has resumed.
671
+ */
672
+ fanOutDismiss() {
673
+ try {
674
+ hydra.style.opacity = '0';
675
+ setTimeout(function () {
676
+ hydra.style.display = 'none';
677
+ hydraTitle.style.opacity = '1';
678
+ hydraCounter.style.opacity = '1';
679
+ while (hydraGrid.firstChild) hydraGrid.removeChild(hydraGrid.firstChild);
680
+ if (hydra.__ticker) { clearInterval(hydra.__ticker); hydra.__ticker = null; }
681
+ }, 400);
682
+ } catch { /* cosmetic */ }
683
+ },
684
+
421
685
  hide() {
422
686
  box.style.opacity = '0';
423
687
  label.style.opacity = '0';
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-overlay.js","sourceRoot":"","sources":["../../src/drivers/cursor-overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoZzC,CAAA"}
1
+ {"version":3,"file":"cursor-overlay.js","sourceRoot":"","sources":["../../src/drivers/cursor-overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4pBzC,CAAA"}
@@ -2,18 +2,26 @@
2
2
  * Cursor-overlay label builder.
3
3
  *
4
4
  * The overlay renders a single short label string next to the animated
5
- * cursor. A bare verb (`click`, `type`) leaves 90% of the agent's intent
6
- * invisible to anyone watching the recording. Rich labels turn the cursor
7
- * into a readable narrative `click · Search`, `type · "IVANOV ALEKSANDR"`,
8
- * `press · Enter`, `nav · sanctionssearch.ofac.treas.gov`.
5
+ * cursor. The label is the PRIMARY channel of agent intent visible to
6
+ * anyone watching a recorded video it needs to read like a human
7
+ * narrator, not like a debug log.
8
+ *
9
+ * Gen 34 rewrite: natural-English sentences.
10
+ *
11
+ * Before: `type "JOHN SMITH" · Last Name: insert criteria`
12
+ * After: `Typing "JOHN SMITH" into Last Name`
9
13
  *
10
14
  * Design rules:
11
- * - Labels MUST fit on one line at ~13px. Target max 48 chars rendered.
15
+ * - Labels MUST fit on one line at ~13px. Target max 56 chars rendered.
12
16
  * - Truncate with an ellipsis; never wrap.
13
17
  * - Verb-only is the SAFE FALLBACK — never throw, never return empty.
14
- * - Target accessible name goes in the label only when it's short and
15
- * informative. Skip generic names ('button', 'link', 'textbox') that
16
- * restate the role the viewer already sees from context.
18
+ * - Target names get aggressive cleanup: strip trailing punctuation,
19
+ * drop generic role-restatements, drop verbose suffixes like
20
+ * "insert criteria" / "search input" that ARIA labels carry but
21
+ * viewers don't need.
22
+ * - Start every action with a verb-in-progress ("Typing", "Clicking",
23
+ * "Pressing") for readability. Status-bar shorthand ("click · X")
24
+ * was good for devs; bad for anyone else.
17
25
  */
18
26
  import type { Action } from '../types.js';
19
27
  export interface OverlayLabelContext {
@@ -26,8 +34,8 @@ export interface OverlayLabelContext {
26
34
  * Build a single-line label string for the cursor overlay given an action
27
35
  * and (optionally) the resolved target element's accessible name.
28
36
  *
29
- * Always returns a non-empty string. Falls back to the bare verb on any
30
- * missing context.
37
+ * Always returns a non-empty string. Falls back to a bare verb-phrase
38
+ * ("Clicking", "Typing") on any missing context. Never throws.
31
39
  */
32
40
  export declare function formatOverlayLabel(action: Action, ctx?: OverlayLabelContext): string;
33
41
  //# sourceMappingURL=overlay-label.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"overlay-label.d.ts","sourceRoot":"","sources":["../../src/drivers/overlay-label.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AA0CzC,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,mBAAwB,GAAG,MAAM,CAsCxF"}
1
+ {"version":3,"file":"overlay-label.d.ts","sourceRoot":"","sources":["../../src/drivers/overlay-label.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AA+HzC,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,mBAAwB,GAAG,MAAM,CAsCxF"}