@tangle-network/browser-agent-driver 0.24.2 → 0.26.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 (66) hide show
  1. package/dist/brain/index.d.ts.map +1 -1
  2. package/dist/brain/index.js +1 -0
  3. package/dist/brain/index.js.map +1 -1
  4. package/dist/cli-preview.d.ts +59 -0
  5. package/dist/cli-preview.d.ts.map +1 -0
  6. package/dist/cli-preview.js +144 -0
  7. package/dist/cli-preview.js.map +1 -0
  8. package/dist/cli-share.d.ts +77 -0
  9. package/dist/cli-share.d.ts.map +1 -0
  10. package/dist/cli-share.js +141 -0
  11. package/dist/cli-share.js.map +1 -0
  12. package/dist/cli-ui.d.ts.map +1 -1
  13. package/dist/cli-ui.js +8 -4
  14. package/dist/cli-ui.js.map +1 -1
  15. package/dist/cli.js +153 -5
  16. package/dist/cli.js.map +1 -1
  17. package/dist/drivers/cursor-overlay.d.ts +18 -10
  18. package/dist/drivers/cursor-overlay.d.ts.map +1 -1
  19. package/dist/drivers/cursor-overlay.js +221 -30
  20. package/dist/drivers/cursor-overlay.js.map +1 -1
  21. package/dist/drivers/overlay-label.d.ts +33 -0
  22. package/dist/drivers/overlay-label.d.ts.map +1 -0
  23. package/dist/drivers/overlay-label.js +92 -0
  24. package/dist/drivers/overlay-label.js.map +1 -0
  25. package/dist/drivers/playwright.d.ts +22 -0
  26. package/dist/drivers/playwright.d.ts.map +1 -1
  27. package/dist/drivers/playwright.js +87 -9
  28. package/dist/drivers/playwright.js.map +1 -1
  29. package/dist/drivers/snapshot.d.ts +12 -0
  30. package/dist/drivers/snapshot.d.ts.map +1 -1
  31. package/dist/drivers/snapshot.js +17 -0
  32. package/dist/drivers/snapshot.js.map +1 -1
  33. package/dist/drivers/types.d.ts +8 -0
  34. package/dist/drivers/types.d.ts.map +1 -1
  35. package/dist/runner/fan-out.d.ts +91 -0
  36. package/dist/runner/fan-out.d.ts.map +1 -0
  37. package/dist/runner/fan-out.js +183 -0
  38. package/dist/runner/fan-out.js.map +1 -0
  39. package/dist/runner/interrupt-controller.d.ts +67 -0
  40. package/dist/runner/interrupt-controller.d.ts.map +1 -0
  41. package/dist/runner/interrupt-controller.js +142 -0
  42. package/dist/runner/interrupt-controller.js.map +1 -0
  43. package/dist/runner/overlay-narration.d.ts +83 -0
  44. package/dist/runner/overlay-narration.d.ts.map +1 -0
  45. package/dist/runner/overlay-narration.js +172 -0
  46. package/dist/runner/overlay-narration.js.map +1 -0
  47. package/dist/runner/runner.d.ts +9 -0
  48. package/dist/runner/runner.d.ts.map +1 -1
  49. package/dist/runner/runner.js +93 -0
  50. package/dist/runner/runner.js.map +1 -1
  51. package/dist/runner/stream-webhook.d.ts +70 -0
  52. package/dist/runner/stream-webhook.d.ts.map +1 -0
  53. package/dist/runner/stream-webhook.js +132 -0
  54. package/dist/runner/stream-webhook.js.map +1 -0
  55. package/dist/skills/macro-loader.d.ts +1 -1
  56. package/dist/skills/macro-loader.d.ts.map +1 -1
  57. package/dist/supervisor/policy.js +11 -0
  58. package/dist/supervisor/policy.js.map +1 -1
  59. package/dist/test-runner.d.ts +7 -0
  60. package/dist/test-runner.d.ts.map +1 -1
  61. package/dist/test-runner.js +3 -0
  62. package/dist/test-runner.js.map +1 -1
  63. package/dist/types.d.ts +36 -1
  64. package/dist/types.d.ts.map +1 -1
  65. package/dist/viewer/viewer.html +264 -16
  66. package/package.json +2 -2
@@ -0,0 +1,77 @@
1
+ /**
2
+ * `bad share <run-id>` — create a bad-app share link from a completed
3
+ * run and copy the URL to the system clipboard.
4
+ *
5
+ * The whole command exists to collapse five clicks into one:
6
+ * 1. Open the bad-app UI
7
+ * 2. Find the run
8
+ * 3. Click Share
9
+ * 4. Copy URL
10
+ * 5. Paste into Slack / Linear / email
11
+ *
12
+ * Now: `bad share <run-id>` → URL on stdout + clipboard.
13
+ *
14
+ * Library-friendly: throws `ShareError` instead of calling process.exit.
15
+ * Clipboard write is best-effort — we print the URL regardless so the
16
+ * command works over SSH and in CI.
17
+ */
18
+ export declare class ShareError extends Error {
19
+ constructor(message: string);
20
+ }
21
+ export interface ShareOptions {
22
+ /** Run ID from `bad runs` (e.g., "run_1710543210_abc"). */
23
+ runId: string;
24
+ /**
25
+ * Visibility tier for the share link. Defaults to 'metadata' — the safest
26
+ * tier that still shows run summary (goal, cost, turns, verdict). Use
27
+ * 'full' for demo links that need per-step reasoning. Use 'artifacts'
28
+ * for competitive-research material where reasoning is proprietary.
29
+ */
30
+ visibility?: 'artifacts' | 'metadata' | 'full';
31
+ /**
32
+ * bad-app base URL. Defaults to env BAD_APP_BASE_URL or
33
+ * https://browser.tangle.tools. Override for staging / local dev.
34
+ */
35
+ baseUrl?: string;
36
+ /**
37
+ * API key (bad_sk_...) used to authenticate POST /api/ci/share-links.
38
+ * Falls back to env BAD_APP_API_KEY. Not required in every deployment
39
+ * — some setups expose a cookie-authenticated share endpoint; this
40
+ * command uses the CI API surface which requires a key.
41
+ */
42
+ apiKey?: string;
43
+ /** Skip clipboard copy. Default: false (we try to copy). */
44
+ noCopy?: boolean;
45
+ /** Emit URL only on stdout (no color, no prefix). Good for piping. */
46
+ json?: boolean;
47
+ }
48
+ export interface ShareResult {
49
+ id: string;
50
+ url: string;
51
+ expiresAt: string;
52
+ visibility: string;
53
+ copiedToClipboard: boolean;
54
+ }
55
+ /**
56
+ * Create a share link via the bad-app CI API. Returns the parsed response
57
+ * (id, url, expiresAt, visibility). Throws `ShareError` on any failure.
58
+ *
59
+ * This uses POST /api/ci/share-links — an endpoint that MAY not exist in
60
+ * every bad-app deployment yet. When absent we fall through to
61
+ * POST /api/share with a session cookie if one is available via
62
+ * `~/.bad/session` (left for a future cookie-flow). For now the command
63
+ * requires a CI API key.
64
+ */
65
+ export declare function createShareLink(opts: ShareOptions): Promise<{
66
+ id: string;
67
+ url: string;
68
+ expiresAt: string;
69
+ visibility: string;
70
+ }>;
71
+ /**
72
+ * Top-level `bad share` command handler. Prints the share URL, attempts
73
+ * to copy it to the clipboard, and returns the result so callers can
74
+ * pipe it further.
75
+ */
76
+ export declare function handleShareCommand(opts: ShareOptions): Promise<ShareResult>;
77
+ //# sourceMappingURL=cli-share.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-share.d.ts","sourceRoot":"","sources":["../src/cli-share.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,UAAU,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,MAAM,CAAA;IAC9C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,sEAAsE;IACtE,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAgCD;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC;IACjE,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAC,CAqDD;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAsBjF"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * `bad share <run-id>` — create a bad-app share link from a completed
3
+ * run and copy the URL to the system clipboard.
4
+ *
5
+ * The whole command exists to collapse five clicks into one:
6
+ * 1. Open the bad-app UI
7
+ * 2. Find the run
8
+ * 3. Click Share
9
+ * 4. Copy URL
10
+ * 5. Paste into Slack / Linear / email
11
+ *
12
+ * Now: `bad share <run-id>` → URL on stdout + clipboard.
13
+ *
14
+ * Library-friendly: throws `ShareError` instead of calling process.exit.
15
+ * Clipboard write is best-effort — we print the URL regardless so the
16
+ * command works over SSH and in CI.
17
+ */
18
+ import { spawn } from 'node:child_process';
19
+ import chalk from 'chalk';
20
+ export class ShareError extends Error {
21
+ constructor(message) {
22
+ super(message);
23
+ this.name = 'ShareError';
24
+ }
25
+ }
26
+ const DEFAULT_BASE_URL = 'https://browser.tangle.tools';
27
+ /**
28
+ * Copy to the macOS clipboard via pbcopy. On Linux falls back to xclip /
29
+ * xsel if available. On Windows falls back to clip.exe. All best-effort
30
+ * — a missing tool is a warning, not a fatal.
31
+ */
32
+ async function copyToClipboard(text) {
33
+ const candidates = [
34
+ { cmd: 'pbcopy', args: [] }, // macOS
35
+ { cmd: 'wl-copy', args: [] }, // Wayland
36
+ { cmd: 'xclip', args: ['-selection', 'clipboard'] }, // X11
37
+ { cmd: 'xsel', args: ['--clipboard', '--input'] }, // X11 fallback
38
+ { cmd: 'clip.exe', args: [] }, // Windows / WSL
39
+ ];
40
+ for (const c of candidates) {
41
+ const ok = await new Promise((resolve) => {
42
+ try {
43
+ const p = spawn(c.cmd, c.args, { stdio: ['pipe', 'ignore', 'ignore'] });
44
+ p.on('error', () => resolve(false));
45
+ p.on('close', (code) => resolve(code === 0));
46
+ p.stdin.write(text);
47
+ p.stdin.end();
48
+ }
49
+ catch {
50
+ resolve(false);
51
+ }
52
+ });
53
+ if (ok)
54
+ return true;
55
+ }
56
+ return false;
57
+ }
58
+ /**
59
+ * Create a share link via the bad-app CI API. Returns the parsed response
60
+ * (id, url, expiresAt, visibility). Throws `ShareError` on any failure.
61
+ *
62
+ * This uses POST /api/ci/share-links — an endpoint that MAY not exist in
63
+ * every bad-app deployment yet. When absent we fall through to
64
+ * POST /api/share with a session cookie if one is available via
65
+ * `~/.bad/session` (left for a future cookie-flow). For now the command
66
+ * requires a CI API key.
67
+ */
68
+ export async function createShareLink(opts) {
69
+ const baseUrl = (opts.baseUrl || process.env.BAD_APP_BASE_URL || DEFAULT_BASE_URL).replace(/\/+$/, '');
70
+ const apiKey = opts.apiKey || process.env.BAD_APP_API_KEY;
71
+ if (!apiKey) {
72
+ throw new ShareError('bad-app API key required. Set BAD_APP_API_KEY or pass --api-key <bad_sk_...>.\n' +
73
+ ` Create one at: ${baseUrl}/settings/api-keys`);
74
+ }
75
+ const visibility = opts.visibility || 'metadata';
76
+ const endpoint = `${baseUrl}/api/ci/share-links`;
77
+ const res = await fetch(endpoint, {
78
+ method: 'POST',
79
+ headers: {
80
+ Authorization: `Bearer ${apiKey}`,
81
+ 'Content-Type': 'application/json',
82
+ },
83
+ body: JSON.stringify({ runId: opts.runId, visibility }),
84
+ }).catch((err) => {
85
+ throw new ShareError(`Network error: ${err.message}`);
86
+ });
87
+ if (res.status === 404) {
88
+ throw new ShareError(`Run not found: ${opts.runId}\n` +
89
+ ` The run may belong to another workspace, be expired, or not exist.\n` +
90
+ ` Verify with: bad runs`);
91
+ }
92
+ if (res.status === 401 || res.status === 403) {
93
+ throw new ShareError(`API key rejected (${res.status}). Verify the key at ${baseUrl}/settings/api-keys`);
94
+ }
95
+ if (!res.ok) {
96
+ const body = await res.text().catch(() => '(no body)');
97
+ throw new ShareError(`Share link creation failed (${res.status}): ${body.slice(0, 200)}`);
98
+ }
99
+ const payload = await res.json().catch(() => {
100
+ throw new ShareError('Share link endpoint returned non-JSON response');
101
+ });
102
+ if (!payload.id || !payload.url) {
103
+ throw new ShareError(`Malformed share-link response: ${JSON.stringify(payload).slice(0, 200)}`);
104
+ }
105
+ return {
106
+ id: payload.id,
107
+ url: payload.url,
108
+ expiresAt: payload.expiresAt ?? '',
109
+ visibility: payload.visibility ?? visibility,
110
+ };
111
+ }
112
+ /**
113
+ * Top-level `bad share` command handler. Prints the share URL, attempts
114
+ * to copy it to the clipboard, and returns the result so callers can
115
+ * pipe it further.
116
+ */
117
+ export async function handleShareCommand(opts) {
118
+ const link = await createShareLink(opts);
119
+ let copied = false;
120
+ if (!opts.noCopy) {
121
+ copied = await copyToClipboard(link.url);
122
+ }
123
+ if (opts.json) {
124
+ console.log(JSON.stringify({ ...link, copiedToClipboard: copied }, null, 2));
125
+ }
126
+ else {
127
+ console.log('');
128
+ console.log(` ${chalk.green('✓')} Share link created`);
129
+ console.log(` ${chalk.bold(link.url)}`);
130
+ const tail = [];
131
+ tail.push(chalk.dim(`visibility: ${link.visibility}`));
132
+ if (link.expiresAt)
133
+ tail.push(chalk.dim(`expires ${link.expiresAt}`));
134
+ if (copied)
135
+ tail.push(chalk.dim('(copied to clipboard)'));
136
+ console.log(` ${tail.join(chalk.dim(' · '))}`);
137
+ console.log('');
138
+ }
139
+ return { ...link, copiedToClipboard: copied };
140
+ }
141
+ //# sourceMappingURL=cli-share.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-share.js","sourceRoot":"","sources":["../src/cli-share.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli-ui.d.ts","sourceRoot":"","sources":["../src/cli-ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAExD;AAyED,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAyF;IACvG,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAMtC,MAAM,CAAC,IAAI,EAAE;QACX,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,eAAe,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;QAC3D,SAAS,EAAE,MAAM,CAAA;KAClB,GAAG,IAAI;IAmBR,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC,UAAU,IAAI,IAAI;IAMlB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMpC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKjD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAcpG,YAAY,CACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,MAAM,GACxB,IAAI;IAwBP,aAAa,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI;IAmBP,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIhC,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,WAAW;CAapB;AAID,wBAAgB,eAAe,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAwNnI"}
1
+ {"version":3,"file":"cli-ui.d.ts","sourceRoot":"","sources":["../src/cli-ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAExD;AAyED,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAyF;IACvG,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAMtC,MAAM,CAAC,IAAI,EAAE;QACX,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,eAAe,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;QAC3D,SAAS,EAAE,MAAM,CAAA;KAClB,GAAG,IAAI;IAmBR,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC,UAAU,IAAI,IAAI;IAMlB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMpC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKjD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAcpG,YAAY,CACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,MAAM,GACxB,IAAI;IAwBP,aAAa,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI;IAmBP,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIhC,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,WAAW;CAapB;AAID,wBAAgB,eAAe,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CA4NnI"}
package/dist/cli-ui.js CHANGED
@@ -234,9 +234,12 @@ ${chalk.bold('bad')} ${D('— LLM-driven browser automation CLI')}
234
234
 
235
235
  ${H('USAGE')}
236
236
  bad run [options]
237
- bad run --attach [--attach-port <n>] --goal "..."
238
- bad chrome-debug [--attach-port <n>]
239
- bad runs [--session-id <id>] [--json]
237
+ bad attach [--attach-port <n>] --goal "..." ${D('# drive your already-running Chrome')}
238
+ bad preview --goal "..." --url <url> ${D('# plan-only dry run (no execution)')}
239
+ bad chrome-debug [--attach-port <n>] ${D('# launch system Chrome on :9222')}
240
+ bad view <run-dir> ${D('# replay with frame-synced timeline')}
241
+ bad share <run-id> ${D('# create share link, copy to clipboard')}
242
+ bad runs [--session-id <id>] [--json] ${D('# list recent runs')}
240
243
  bad design-audit --url <url>
241
244
  bad auth save [--url <url>] [--storage-state <path>]
242
245
  bad auth login --url <url> --fill "field=value" [--wait-for <signal>]
@@ -244,7 +247,8 @@ ${H('USAGE')}
244
247
 
245
248
  ${H('ATTACH MODE')}
246
249
  ${D('$')} bad chrome-debug ${D('# launch system Chrome on :9222 with your real profile')}
247
- ${D('$')} bad run ${C('--attach')} ${C('-g')} "Post to TikTok" ${D('# drive the already-logged-in Chrome')}
250
+ ${D('$')} bad attach ${C('-g')} "Post to TikTok" ${D('# drive the already-logged-in Chrome')}
251
+ ${D('$')} bad run ${C('--attach')} ${C('-g')} "..." ${D('# same thing, flag form (still supported)')}
248
252
 
249
253
  Attach mode connects to your real Chrome via CDP so your login state,
250
254
  cookies, and extensions are preserved. Incompatible with ${C('--wallet')}
@@ -1 +1 @@
1
- {"version":3,"file":"cli-ui.js","sourceRoot":"","sources":["../src/cli-ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-ui.js","sourceRoot":"","sources":["../src/cli-ui.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -180,6 +180,16 @@ async function main() {
180
180
  cookie: { type: 'string', multiple: true },
181
181
  'wait-for': { type: 'string' },
182
182
  'wait-timeout': { type: 'string' },
183
+ // Gen 32 — `bad share` flags
184
+ visibility: { type: 'string' },
185
+ 'bad-app-url': { type: 'string' },
186
+ 'no-copy': { type: 'boolean' },
187
+ // Gen 32 — preview / stream / interrupt
188
+ 'max-steps': { type: 'string' },
189
+ headed: { type: 'boolean' },
190
+ stream: { type: 'string' },
191
+ 'stream-token': { type: 'string' },
192
+ interrupt: { type: 'boolean' },
183
193
  help: { type: 'boolean', short: 'h', default: false },
184
194
  version: { type: 'boolean', short: 'v', default: false },
185
195
  },
@@ -364,8 +374,80 @@ async function main() {
364
374
  cliError(`Unknown auth subcommand: ${sub || '(none)'}. Use "auth save", "auth login", or "auth check".`);
365
375
  process.exit(1);
366
376
  }
367
- if (command !== 'run') {
368
- cliError(`Unknown command: ${command}. Use "run", "runs", "design-audit", "view", "showcase", or "auth".`);
377
+ // `bad attach` is a top-level alias for `bad run --attach`. Every other
378
+ // flag on `run` (--goal, --url, --model, --provider, --base-url,
379
+ // --api-key, --show-cursor, --mode, --max-turns, --timeout, --no-memory,
380
+ // --attach-port) works identically. Attach's mental model is "drive my
381
+ // real Chrome," which is distinct enough from "spawn a fresh browser"
382
+ // to deserve its own command name.
383
+ if (command === 'attach') {
384
+ values.attach = true;
385
+ }
386
+ // `bad preview` — plan-only dry-run. Observe the URL once, ask the
387
+ // planner to emit a structured plan, render it, exit. No execution.
388
+ // terraform plan for browser agents.
389
+ if (command === 'preview') {
390
+ if (!values.goal || !values.url) {
391
+ cliError('usage: bad preview --goal "..." --url <url> [--max-steps 12] [--headed] [--json] [--out plan.json]');
392
+ process.exit(1);
393
+ }
394
+ const { handlePreviewCommand, PreviewError } = await import('./cli-preview.js');
395
+ try {
396
+ const result = await handlePreviewCommand({
397
+ goal: values.goal,
398
+ url: values.url,
399
+ model: values.model,
400
+ provider: values.provider,
401
+ apiKey: values['api-key'],
402
+ baseUrl: values['base-url'],
403
+ output: values.sink,
404
+ json: values.json,
405
+ maxSteps: values['max-steps'] ? parseInt(values['max-steps'], 10) : undefined,
406
+ headed: values.headed,
407
+ });
408
+ process.exit(result.plan ? 0 : 1);
409
+ }
410
+ catch (err) {
411
+ if (err instanceof PreviewError) {
412
+ cliError(err.message);
413
+ process.exit(1);
414
+ }
415
+ throw err;
416
+ }
417
+ }
418
+ // `bad share <run-id>` — create a bad-app share link, copy to clipboard.
419
+ if (command === 'share') {
420
+ const runId = positionals[1];
421
+ if (!runId) {
422
+ cliError('usage: bad share <run-id> [--visibility metadata|full|artifacts] [--json]');
423
+ process.exit(1);
424
+ }
425
+ const { handleShareCommand, ShareError } = await import('./cli-share.js');
426
+ const visArg = values.visibility;
427
+ const visibility = visArg === 'full' || visArg === 'artifacts' || visArg === 'metadata'
428
+ ? visArg
429
+ : undefined;
430
+ try {
431
+ await handleShareCommand({
432
+ runId,
433
+ visibility,
434
+ baseUrl: values['bad-app-url'],
435
+ apiKey: values['api-key'],
436
+ noCopy: values['no-copy'],
437
+ json: values.json,
438
+ });
439
+ process.exit(0);
440
+ }
441
+ catch (err) {
442
+ if (err instanceof ShareError) {
443
+ cliError(err.message);
444
+ process.exit(1);
445
+ }
446
+ throw err;
447
+ }
448
+ }
449
+ if (command !== 'run' && command !== 'attach') {
450
+ cliError(`Unknown command: ${command}. Use "run", "attach", "preview", "runs", "view", "share", "chrome-debug", "design-audit", "showcase", or "auth".`);
369
451
  process.exit(1);
370
452
  }
371
453
  // Validate inputs
@@ -741,9 +823,13 @@ async function main() {
741
823
  // Optional live event bus + SSE viewer. Constructed only when `--live` is
742
824
  // passed; otherwise the runner uses an internal no-op bus and pays nothing.
743
825
  // The bus is shared across the entire suite so a single SSE connection
744
- // observes all turns of all test cases.
826
+ // observes all turns of all test cases. Gen 32: when `--stream <url>` is
827
+ // passed the bus is always created (even without --live) so the webhook
828
+ // streamer has something to subscribe to.
745
829
  const liveEnabled = values.live === true;
746
- const liveBus = liveEnabled ? new TurnEventBus() : undefined;
830
+ const streamUrl = typeof values.stream === 'string' && values.stream.length > 0 ? values.stream : undefined;
831
+ const needsBus = liveEnabled || !!streamUrl;
832
+ const liveBus = needsBus ? new TurnEventBus() : undefined;
747
833
  const liveCancelController = liveEnabled ? new AbortController() : undefined;
748
834
  let liveViewHandle;
749
835
  if (liveEnabled && liveBus) {
@@ -755,6 +841,39 @@ async function main() {
755
841
  noOpen: values['no-open'] === true,
756
842
  });
757
843
  }
844
+ // Gen 32 — webhook streamer. When `--stream <url>` is passed, subscribe
845
+ // to the bus and POST every event to <url> as it fires. Auth via
846
+ // `--stream-token` or $BAD_STREAM_TOKEN. Non-fatal on failure — the
847
+ // canonical record is always events.jsonl on disk.
848
+ let webhookStreamer;
849
+ if (streamUrl && liveBus) {
850
+ const { WebhookStreamer } = await import('./runner/stream-webhook.js');
851
+ const token = values['stream-token'] || process.env.BAD_STREAM_TOKEN;
852
+ const streamId = `stream_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
853
+ webhookStreamer = new WebhookStreamer({
854
+ url: streamUrl,
855
+ authToken: token,
856
+ streamId,
857
+ onError: (err, dropped) => {
858
+ if (!values.json)
859
+ cliWarn(`stream: ${err.message} (dropped ${dropped} event${dropped === 1 ? '' : 's'})`);
860
+ },
861
+ }).attach(liveBus);
862
+ if (!values.json)
863
+ cliLog('stream', `POST → ${streamUrl} (id ${streamId})`);
864
+ }
865
+ // Gen 32 — interrupt controller. `--interrupt` enables keyboard pause/
866
+ // resume/abort during a run. No-op in non-TTY (CI, piped output).
867
+ let interruptController;
868
+ let detachInterrupt;
869
+ if (values.interrupt === true && process.stdin.isTTY) {
870
+ const { InterruptController } = await import('./runner/interrupt-controller.js');
871
+ interruptController = new InterruptController({
872
+ onStatus: (msg) => { if (!values.json)
873
+ cliLog('interrupt', msg); },
874
+ });
875
+ detachInterrupt = interruptController.attach();
876
+ }
758
877
  // Auto-discover bad.config.{ts,mjs,js,...} from cwd plus any explicit
759
878
  // --extension paths. Failures are reported but never fatal: a broken user
760
879
  // config should warn, not abort the run.
@@ -1434,6 +1553,9 @@ async function main() {
1434
1553
  extensions: extensionLoad.resolved,
1435
1554
  ...(macroRegistry ? { macroPromptBlock: macroRegistry.promptBlock } : {}),
1436
1555
  ...(liveBus ? { eventBus: liveBus } : {}),
1556
+ ...(interruptController
1557
+ ? { beforeTurn: async () => { await interruptController.waitIfPaused(); } }
1558
+ : {}),
1437
1559
  onProgress: (event) => {
1438
1560
  if (values.json) {
1439
1561
  console.log(JSON.stringify(event));
@@ -1463,7 +1585,23 @@ async function main() {
1463
1585
  let result;
1464
1586
  let runError;
1465
1587
  try {
1466
- result = await runner.runSuite(cases, liveCancelController ? { signal: liveCancelController.signal } : undefined);
1588
+ // Gen 32 wire interrupt controller. When the user presses `q`,
1589
+ // abort() fires which the runner observes via the suite-level
1590
+ // signal. Runs a check before the runner starts so pressing `q`
1591
+ // BEFORE the first turn still aborts cleanly.
1592
+ const interruptSignal = interruptController
1593
+ ? (() => {
1594
+ const ac = new AbortController();
1595
+ interruptController.on('abort', () => ac.abort('interrupted by user'));
1596
+ if (interruptController.isAborted)
1597
+ ac.abort('interrupted by user');
1598
+ return ac.signal;
1599
+ })()
1600
+ : undefined;
1601
+ // If --live already provided a signal, merge both. Prefer the user
1602
+ // interrupt signal so `q` wins even when --live is set.
1603
+ const mergedSignal = interruptSignal ?? liveCancelController?.signal;
1604
+ result = await runner.runSuite(cases, mergedSignal ? { signal: mergedSignal } : undefined);
1467
1605
  // Write reports for each configured format
1468
1606
  const { generateReport } = await import('./test-report.js');
1469
1607
  const reporters = driverConfig.reporters ?? ['json'];
@@ -1499,6 +1637,16 @@ async function main() {
1499
1637
  }
1500
1638
  finally {
1501
1639
  renderer?.destroy();
1640
+ // Gen 32 — detach interrupt controller first so stdin leaves raw mode
1641
+ // BEFORE we try to write any shutdown logs. Otherwise the user's TTY
1642
+ // stays in raw mode after the run ends and Ctrl-C, arrow keys, etc.
1643
+ // come through as garbage bytes.
1644
+ if (detachInterrupt)
1645
+ detachInterrupt();
1646
+ // Flush and close the stream webhook so the final events (run-completed,
1647
+ // suite-complete) reach the endpoint before the CLI exits.
1648
+ if (webhookStreamer)
1649
+ await webhookStreamer.close().catch(() => { });
1502
1650
  await singleDriver?.close?.().catch(() => { });
1503
1651
  stopWalletAutoApprover?.();
1504
1652
  await persistentContext?.close().catch(() => { });