@tangle-network/browser-agent-driver 0.8.0 → 0.8.7

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 (44) hide show
  1. package/dist/brain/index.d.ts +24 -7
  2. package/dist/brain/index.d.ts.map +1 -1
  3. package/dist/brain/index.js +227 -93
  4. package/dist/brain/index.js.map +1 -1
  5. package/dist/captcha.d.ts +55 -0
  6. package/dist/captcha.d.ts.map +1 -0
  7. package/dist/captcha.js +403 -0
  8. package/dist/captcha.js.map +1 -0
  9. package/dist/cli-design-audit.d.ts.map +1 -1
  10. package/dist/cli-design-audit.js +81 -59
  11. package/dist/cli-design-audit.js.map +1 -1
  12. package/dist/cli-ui.d.ts +49 -0
  13. package/dist/cli-ui.d.ts.map +1 -0
  14. package/dist/cli-ui.js +383 -0
  15. package/dist/cli-ui.js.map +1 -0
  16. package/dist/cli.js +54 -186
  17. package/dist/cli.js.map +1 -1
  18. package/dist/drivers/cdp-snapshot.d.ts.map +1 -1
  19. package/dist/drivers/cdp-snapshot.js +2 -1
  20. package/dist/drivers/cdp-snapshot.js.map +1 -1
  21. package/dist/drivers/playwright.d.ts +6 -0
  22. package/dist/drivers/playwright.d.ts.map +1 -1
  23. package/dist/drivers/playwright.js +34 -9
  24. package/dist/drivers/playwright.js.map +1 -1
  25. package/dist/drivers/snapshot.d.ts +1 -0
  26. package/dist/drivers/snapshot.d.ts.map +1 -1
  27. package/dist/drivers/snapshot.js +12 -5
  28. package/dist/drivers/snapshot.js.map +1 -1
  29. package/dist/drivers/types.d.ts +2 -0
  30. package/dist/drivers/types.d.ts.map +1 -1
  31. package/dist/index.d.ts +2 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/recovery.d.ts.map +1 -1
  36. package/dist/recovery.js +16 -35
  37. package/dist/recovery.js.map +1 -1
  38. package/dist/runner/runner.d.ts +1 -0
  39. package/dist/runner/runner.d.ts.map +1 -1
  40. package/dist/runner/runner.js +133 -98
  41. package/dist/runner/runner.js.map +1 -1
  42. package/dist/types.d.ts +9 -0
  43. package/dist/types.d.ts.map +1 -1
  44. package/package.json +4 -2
package/dist/cli-ui.js ADDED
@@ -0,0 +1,383 @@
1
+ /**
2
+ * CLI rendering — colors, spinners, progress display.
3
+ *
4
+ * Zero external deps beyond chalk. Spinner is custom (no ora needed).
5
+ * Degrades gracefully: colors off when piped, spinner disabled in non-TTY.
6
+ */
7
+ import chalk from 'chalk';
8
+ // ── Formatting ──
9
+ export function fmtDuration(ms) {
10
+ const s = Math.round(ms / 1000);
11
+ if (s < 60)
12
+ return `${s}s`;
13
+ const m = Math.floor(s / 60);
14
+ const rem = s % 60;
15
+ return rem > 0 ? `${m}m ${rem}s` : `${m}m`;
16
+ }
17
+ export function cliError(msg) {
18
+ console.error(` ${chalk.red('error:')} ${msg}`);
19
+ }
20
+ export function cliWarn(msg) {
21
+ console.warn(` ${chalk.yellow('warn:')} ${msg}`);
22
+ }
23
+ export function cliLog(prefix, msg) {
24
+ console.log(` ${chalk.dim(`[${prefix}]`)} ${msg}`);
25
+ }
26
+ // ── Spinner ──
27
+ const FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
28
+ let cursorHookInstalled = false;
29
+ class Spinner {
30
+ timer = null;
31
+ frame = 0;
32
+ text = '';
33
+ textFn;
34
+ constructor() {
35
+ if (process.stdout.isTTY && !cursorHookInstalled) {
36
+ cursorHookInstalled = true;
37
+ process.on('exit', () => process.stdout.write('\x1B[?25h'));
38
+ }
39
+ }
40
+ get running() { return this.timer !== null; }
41
+ start(text) {
42
+ if (!process.stdout.isTTY)
43
+ return;
44
+ this.textFn = undefined;
45
+ this.text = text;
46
+ process.stdout.write('\x1B[?25l');
47
+ this.tick();
48
+ this.timer = setInterval(() => this.tick(), 80);
49
+ }
50
+ /** Start with a dynamic text function — re-evaluated every tick for live updates */
51
+ startDynamic(fn) {
52
+ if (!process.stdout.isTTY)
53
+ return;
54
+ this.textFn = fn;
55
+ this.text = fn();
56
+ process.stdout.write('\x1B[?25l');
57
+ this.tick();
58
+ this.timer = setInterval(() => this.tick(), 80);
59
+ }
60
+ update(text) {
61
+ this.textFn = undefined;
62
+ this.text = text;
63
+ }
64
+ updateDynamic(fn) {
65
+ this.textFn = fn;
66
+ }
67
+ /** Clear spinner line — call before console.log to avoid collision */
68
+ clear() {
69
+ if (!this.timer)
70
+ return;
71
+ clearInterval(this.timer);
72
+ this.timer = null;
73
+ if (process.stdout.isTTY)
74
+ process.stdout.write('\r\x1B[K');
75
+ }
76
+ stop() {
77
+ this.clear();
78
+ this.text = '';
79
+ this.textFn = undefined;
80
+ }
81
+ tick() {
82
+ if (this.textFn)
83
+ this.text = this.textFn();
84
+ const f = FRAMES[this.frame++ % FRAMES.length];
85
+ process.stdout.write(`\r\x1B[K ${f} ${this.text}`);
86
+ }
87
+ }
88
+ // ── Renderer ──
89
+ export class CliRenderer {
90
+ spinner = new Spinner();
91
+ active = new Map();
92
+ done = 0;
93
+ total = 0;
94
+ totalTurns = 0;
95
+ showDebug;
96
+ constructor(opts) {
97
+ this.showDebug = opts?.debug ?? false;
98
+ }
99
+ // ── Banner ──
100
+ banner(opts) {
101
+ const { version, provider, model, browser, testCount, concurrency, mode, profile, adaptiveRouting, outputDir } = opts;
102
+ const n = testCount;
103
+ console.log('');
104
+ console.log(` ${chalk.bold('bad')} ${chalk.dim(`v${version}`)}`);
105
+ console.log(` ${chalk.cyan(`${provider}/${model}`)} ${chalk.dim('·')} ${browser} ${chalk.dim('·')} ${chalk.bold(String(n))} test${n !== 1 ? 's' : ''} ${chalk.dim('·')} ×${concurrency}`);
106
+ const meta = [];
107
+ if (mode)
108
+ meta.push(mode);
109
+ if (profile && profile !== 'default')
110
+ meta.push(profile);
111
+ if (adaptiveRouting) {
112
+ meta.push(`adaptive ${chalk.dim(`(${adaptiveRouting.navProvider}/${adaptiveRouting.navModel})`)}`);
113
+ }
114
+ meta.push(chalk.dim(`→ ${outputDir}`));
115
+ console.log(` ${meta.join(chalk.dim(' · '))}`);
116
+ console.log('');
117
+ }
118
+ // ── Launch phase ──
119
+ launchStart(browser) {
120
+ this.spinner.start(`Launching ${browser}…`);
121
+ }
122
+ launchDone() {
123
+ this.spinner.stop();
124
+ }
125
+ // ── Progress events ──
126
+ suiteStart(totalTests) {
127
+ this.total = totalTests;
128
+ this.done = 0;
129
+ this.totalTurns = 0;
130
+ }
131
+ testStart(testId, testName) {
132
+ this.active.set(testId, { name: testName, startedAt: Date.now() });
133
+ this.syncSpinner();
134
+ }
135
+ testTurn(testId, turn, action, durationMs, modelUsed) {
136
+ const t = this.active.get(testId);
137
+ if (t) {
138
+ t.turn = turn;
139
+ t.action = action;
140
+ }
141
+ if (this.showDebug) {
142
+ this.spinner.clear();
143
+ const tag = modelUsed ? chalk.dim(` [${modelUsed}]`) : '';
144
+ console.log(` ${chalk.dim(`turn ${turn}:`)} ${action} ${chalk.dim(`(${durationMs}ms)`)}${tag}`);
145
+ }
146
+ this.syncSpinner();
147
+ }
148
+ testComplete(testId, passed, verdict, turnsUsed, durationMs, estimatedCostUsd) {
149
+ this.active.delete(testId);
150
+ this.done++;
151
+ this.totalTurns += turnsUsed;
152
+ this.spinner.clear();
153
+ const icon = passed ? chalk.green('✓') : chalk.red('✗');
154
+ const name = passed ? chalk.green(testId) : chalk.red(testId);
155
+ const cost = estimatedCostUsd ? ` · ${chalk.yellow(`$${estimatedCostUsd.toFixed(3)}`)}` : '';
156
+ const stats = `${turnsUsed} turns · ${fmtDuration(durationMs)}${cost}`;
157
+ // Single-task: show full result on its own line for readability
158
+ if (this.total === 1) {
159
+ console.log(` ${icon} ${name} ${chalk.dim(`(${stats})`)}`);
160
+ const resultText = passed ? verdict : chalk.red(verdict);
161
+ console.log(` ${resultText}`);
162
+ }
163
+ else {
164
+ const truncated = verdict.length > 80 ? verdict.slice(0, 77) + '…' : verdict;
165
+ const verdictText = passed ? truncated : chalk.red(truncated);
166
+ console.log(` ${icon} ${name} ${chalk.dim('—')} ${verdictText} ${chalk.dim(`(${stats})`)}`);
167
+ }
168
+ this.syncSpinner();
169
+ }
170
+ suiteComplete(passed, failed, skipped, totalMs, totalCostUsd, manifestUri) {
171
+ this.spinner.stop();
172
+ console.log('');
173
+ console.log(` ${chalk.dim('─'.repeat(52))}`);
174
+ const parts = [];
175
+ if (passed > 0)
176
+ parts.push(chalk.green.bold(`${passed} passed`));
177
+ if (failed > 0)
178
+ parts.push(chalk.red.bold(`${failed} failed`));
179
+ if (skipped > 0)
180
+ parts.push(chalk.yellow(`${skipped} skipped`));
181
+ const extras = [fmtDuration(totalMs)];
182
+ if (this.totalTurns > 0)
183
+ extras.push(`${this.totalTurns} turns`);
184
+ if (totalCostUsd)
185
+ extras.push(chalk.yellow(`$${totalCostUsd.toFixed(2)}`));
186
+ console.log(` ${parts.join(chalk.dim(' · '))} ${chalk.dim('·')} ${extras.join(chalk.dim(' · '))}`);
187
+ if (manifestUri)
188
+ console.log(` ${chalk.dim('Artifacts →')} ${manifestUri}`);
189
+ console.log('');
190
+ }
191
+ report(reportPath) {
192
+ console.log(` ${chalk.dim('Report →')} ${reportPath}`);
193
+ }
194
+ destroy() {
195
+ this.spinner.stop();
196
+ }
197
+ // ── Internal ──
198
+ buildSpinnerText() {
199
+ const items = [...this.active.values()];
200
+ const names = items.slice(0, 3).map(t => t.name).join(chalk.dim(', '));
201
+ const overflow = items.length > 3 ? chalk.dim(` +${items.length - 3}`) : '';
202
+ // Show latest turn number and action
203
+ const latest = items.find(t => t.turn);
204
+ const turnInfo = latest
205
+ ? chalk.dim(` · turn ${latest.turn}`) + (latest.action ? ` ${chalk.dim(latest.action)}` : '')
206
+ : '';
207
+ // Live elapsed time — recomputed every spinner tick
208
+ const oldest = items.reduce((a, b) => a.startedAt < b.startedAt ? a : b);
209
+ const elapsed = chalk.dim(` · ${fmtDuration(Date.now() - oldest.startedAt)}`);
210
+ const counter = chalk.dim(`[${this.done}/${this.total}]`);
211
+ return `${counter} ${names}${overflow}${turnInfo}${elapsed}`;
212
+ }
213
+ syncSpinner() {
214
+ if (this.active.size === 0) {
215
+ this.spinner.stop();
216
+ return;
217
+ }
218
+ const textFn = () => this.buildSpinnerText();
219
+ if (this.spinner.running) {
220
+ this.spinner.updateDynamic(textFn);
221
+ }
222
+ else {
223
+ this.spinner.startDynamic(textFn);
224
+ }
225
+ }
226
+ }
227
+ // ── Help ──
228
+ export function printStyledHelp(runModes, driverProfiles, personaIds) {
229
+ const H = chalk.bold;
230
+ const C = chalk.cyan;
231
+ const D = chalk.dim;
232
+ console.log(`
233
+ ${chalk.bold('bad')} ${D('— LLM-driven browser automation CLI')}
234
+
235
+ ${H('USAGE')}
236
+ bad run [options]
237
+ bad design-audit --url <url>
238
+
239
+ ${H('SINGLE TASK')}
240
+ ${D('$')} bad run ${C('--goal')} "Sign up for account" ${C('--url')} http://localhost:3000
241
+ ${D('$')} bad run ${C('-g')} "Build a todo app" ${C('-u')} http://localhost:5173 ${C('-m')} claude-sonnet-4-20250514
242
+ ${D('$')} bad run ${C('--goal')} "Explore key routes" ${C('--url')} https://example.com ${C('--mode')} fast-explore
243
+
244
+ ${H('TEST SUITE')}
245
+ ${D('$')} bad run ${C('--cases')} ./cases.json ${C('--concurrency')} 4
246
+ ${D('$')} bad run ${C('--cases')} ./cases.json ${C('--sink')} ./results/ ${C('--model')} gpt-5.4
247
+
248
+ ${H('DESIGN AUDIT')}
249
+ ${D('$')} bad design-audit ${C('--url')} https://stripe.com
250
+ ${D('$')} bad design-audit ${C('--url')} https://app.uniswap.org ${C('--profile')} defi
251
+ ${D('$')} bad design-audit ${C('--url')} http://localhost:3000 ${C('--profile')} saas ${C('--pages')} 10
252
+
253
+ Profiles: ${C('general')}, ${C('saas')}, ${C('defi')}, ${C('marketing')}
254
+
255
+ ${H('DESIGN TOKEN EXTRACTION')}
256
+ ${D('$')} bad design-audit ${C('--url')} https://stripe.com ${C('--extract-tokens')}
257
+ ${D('$')} bad design-audit ${C('--url')} https://app.example.com ${C('--extract-tokens')} ${C('--json')}
258
+
259
+ Extracts colors, typography, spacing, components, logos, icons,
260
+ CSS custom properties, and brand assets at mobile/tablet/desktop viewports.
261
+ Outputs tokens.json — no LLM calls, pure DOM extraction.
262
+
263
+ ${H('DOCKER')}
264
+ ${D('$')} docker run -v ./cases.json:/data/cases.json -v ./out:/output \\
265
+ bad run ${C('--cases')} /data/cases.json ${C('--sink')} /output/
266
+
267
+ ${H('OPTIONS')}
268
+
269
+ ${D('Config')}
270
+ ${C('--config')} <path> Path to config file ${D('(default: auto-detect)')}
271
+
272
+ ${D('Test specification')}
273
+ ${C('-g, --goal')} <text> Natural language goal for single task
274
+ ${C('-u, --url')} <url> Starting URL
275
+ ${C('-c, --cases')} <file> JSON file with test cases array
276
+ ${C('--allowed-domains')} <csv> Comma-separated host allowlist
277
+ ${C('--vision-strategy')} <m> Vision policy: ${D('always, never, auto')}
278
+
279
+ ${D('LLM configuration')}
280
+ ${C('-m, --model')} <name> LLM model ${D('(default: gpt-5.4)')}
281
+ ${C('--provider')} <name> LLM provider: ${D('openai, anthropic, google, codex-cli, claude-code, sandbox-backend')}
282
+ ${C('--model-adaptive')} Enable adaptive model routing for decide() turns
283
+ ${C('--nav-model')} <name> Fast navigation model for adaptive routing
284
+ ${C('--nav-provider')} <name> Provider for nav model
285
+ ${C('--api-key')} <key> API key ${D('(or set OPENAI_API_KEY / ANTHROPIC_API_KEY)')}
286
+ ${C('--base-url')} <url> Custom LLM endpoint ${D('(e.g., LiteLLM proxy)')}
287
+ ${C('--persona')} <id> Append persona directive ${D(`(${personaIds.join(', ')})`)}
288
+
289
+ ${D('Execution')}
290
+ ${C('--mode')} <name> Mode preset: ${D(runModes.join(', '))}
291
+ ${C('--profile')} <name> Execution profile: ${D(driverProfiles.join(', '))}
292
+ ${C('--prompt-file')} <path> Load system prompt from file
293
+ ${C('--browser')} <name> Browser: ${D('chromium, firefox, webkit')}
294
+ ${C('--storage-state')} <file> Playwright storage state JSON
295
+ ${C('--concurrency')} <n> Parallel workers ${D('(default: 1)')}
296
+ ${C('--max-turns')} <n> Max turns per test ${D('(default: 30)')}
297
+ ${C('--llm-timeout')} <ms> Timeout per LLM call
298
+ ${C('--retries')} <n> Retries for transient failures
299
+ ${C('--retry-delay-ms')} <ms> Base retry backoff
300
+ ${C('--timeout')} <ms> Per-test timeout ${D('(default: 600000)')}
301
+ ${C('--headless')} Run browser headless ${D('(default: true)')}
302
+ ${C('--no-headless')} Show browser window
303
+ ${C('--screenshot-interval')} <n> Capture every N turns ${D('(default: 5)')}
304
+
305
+ ${D('Scout')}
306
+ ${C('--scout')} Enable scout/ranker recommendations
307
+ ${C('--scout-model')} <name> Model override for scout
308
+ ${C('--scout-provider')} <name> Provider override for scout
309
+ ${C('--scout-vision')} Let scout inspect screenshots
310
+ ${C('--scout-max-candidates')} <n>
311
+ ${C('--scout-min-top-score')} <n>
312
+ ${C('--scout-max-score-gap')} <n>
313
+
314
+ ${D('Wallet mode')}
315
+ ${C('--wallet')} Enable wallet mode ${D('(persistent Chromium profile)')}
316
+ ${C('--extension')} <path> Load unpacked wallet/browser extension ${D('(repeatable)')}
317
+ ${C('--user-data-dir')} <dir> Persistent profile directory
318
+ ${C('--wallet-auto-approve')} Extension prompt auto-approval ${D('(default: true)')}
319
+ ${C('--wallet-password')} <v> Wallet unlock password
320
+ ${C('--wallet-preflight')} Run wallet origin preflight ${D('(default: true)')}
321
+ ${C('--wallet-seed-url')} <u> Preflight URL ${D('(repeatable)')}
322
+ ${C('--wallet-chain-id')} <n> Target chain ID for preflight
323
+ ${C('--wallet-chain-rpc-url')} <u> RPC URL for preflight
324
+
325
+ ${D('Memory & scoring')}
326
+ ${C('--memory')} Enable trajectory memory ${D('(default: on)')}
327
+ ${C('--no-memory')} Disable trajectory memory
328
+ ${C('--memory-dir')} <dir> Memory directory ${D('(default: .agent-memory)')}
329
+ ${C('--quality-threshold')} <n> Min quality score 1-10 ${D('(default: 0 = skip)')}
330
+ ${C('--trace-scoring')} Enable trajectory scoring
331
+ ${C('--trace-ttl-days')} <n> Retention window ${D('(default: 30)')}
332
+
333
+ ${D('Output')}
334
+ ${C('-s, --sink')} <dir> Output directory ${D('(default: ./agent-results)')}
335
+ ${C('--json')} Output progress as JSON lines ${D('(for piping)')}
336
+ ${C('-q, --quiet')} Suppress all output
337
+ ${C('--goal-verification')} Verify goal completion ${D('(default: true)')}
338
+ ${C('--no-goal-verification')} Skip goal verification
339
+ ${C('--vision')} Enable vision/screenshots ${D('(default: true)')}
340
+ ${C('--no-vision')} Disable vision
341
+ ${C('--block-analytics')} Block analytics/tracking scripts
342
+ ${C('--block-images')} Block image loading
343
+ ${C('--block-media')} Block media loading
344
+
345
+ ${D('Other')}
346
+ ${C('-d, --debug')} Enable debug logging
347
+ ${C('-h, --help')} Show this help
348
+ ${C('-v, --version')} Show version
349
+
350
+ ${D('Sandbox backend')}
351
+ ${C('--sandbox-backend-type')} <type>
352
+ ${C('--sandbox-backend-profile')} <id>
353
+ ${C('--sandbox-backend-provider')} <id>
354
+
355
+ ${H('TEST CASES JSON FORMAT')}
356
+ [
357
+ {
358
+ ${C('"id"')}: "signup",
359
+ ${C('"name"')}: "User signup flow",
360
+ ${C('"goal"')}: "Create a new account with email test@example.com",
361
+ ${C('"startUrl"')}: "http://localhost:3000/signup",
362
+ ${C('"maxTurns"')}: 20,
363
+ ${C('"timeoutMs"')}: 300000,
364
+ ${C('"successDescription"')}: "Account created and redirected to dashboard"
365
+ }
366
+ ]
367
+
368
+ ${H('ENVIRONMENT VARIABLES')}
369
+ ${C('OPENAI_API_KEY')} OpenAI API key
370
+ ${C('ANTHROPIC_API_KEY')} Anthropic API key
371
+ ${C('LLM_BASE_URL')} Custom LLM endpoint URL
372
+ ${C('BROWSER_ENDPOINT')} Remote browser endpoint ${D('(CDP or Playwright)')}
373
+ ${C('CODEX_CLI_PATH')} Optional Codex CLI binary path
374
+ ${C('CODEX_ALLOW_NPX')} Set to 0 to disable npx fallback for codex-cli
375
+ ${C('CLAUDE_CODE_CLI_PATH')} Optional Claude CLI binary path
376
+ ${C('SANDBOX_BACKEND_TYPE')} Native backend type for sandbox-backend
377
+ ${C('SANDBOX_BACKEND_PROFILE')} Native backend profile/preset
378
+ ${C('SANDBOX_BACKEND_MODEL_PROVIDER')} Native backend provider override
379
+ ${C('SANDBOX_SIDECAR_URL')} Sidecar API URL ${D('(default: http://127.0.0.1:$SIDECAR_PORT)')}
380
+ ${C('SANDBOX_SIDECAR_AUTH_TOKEN')} Sidecar API bearer token
381
+ `);
382
+ }
383
+ //# sourceMappingURL=cli-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-ui.js","sourceRoot":"","sources":["../src/cli-ui.ts"],"names":[],"mappings":"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"}