@tangle-network/browser-agent-driver 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brain/index.d.ts +3 -0
- package/dist/brain/index.d.ts.map +1 -1
- package/dist/brain/index.js +103 -11
- package/dist/brain/index.js.map +1 -1
- package/dist/browser-launch.d.ts +3 -0
- package/dist/browser-launch.d.ts.map +1 -1
- package/dist/browser-launch.js +12 -2
- package/dist/browser-launch.js.map +1 -1
- package/dist/cli-auth.d.ts +19 -0
- package/dist/cli-auth.d.ts.map +1 -0
- package/dist/cli-auth.js +195 -0
- package/dist/cli-auth.js.map +1 -0
- package/dist/cli-design-audit.d.ts +8 -0
- package/dist/cli-design-audit.d.ts.map +1 -1
- package/dist/cli-design-audit.js +858 -31
- package/dist/cli-design-audit.js.map +1 -1
- package/dist/cli-showcase.d.ts +28 -0
- package/dist/cli-showcase.d.ts.map +1 -0
- package/dist/cli-showcase.js +131 -0
- package/dist/cli-showcase.js.map +1 -0
- package/dist/cli-ui.d.ts.map +1 -1
- package/dist/cli-ui.js +41 -2
- package/dist/cli-ui.js.map +1 -1
- package/dist/cli.js +418 -211
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/design/compare.d.ts +9 -0
- package/dist/design/compare.d.ts.map +1 -0
- package/dist/design/compare.js +339 -0
- package/dist/design/compare.js.map +1 -0
- package/dist/design/index.d.ts +6 -0
- package/dist/design/index.d.ts.map +1 -0
- package/dist/design/index.js +5 -0
- package/dist/design/index.js.map +1 -0
- package/dist/design/page-interaction.d.ts +24 -0
- package/dist/design/page-interaction.d.ts.map +1 -0
- package/dist/design/page-interaction.js +244 -0
- package/dist/design/page-interaction.js.map +1 -0
- package/dist/design/rip.d.ts +9 -0
- package/dist/design/rip.d.ts.map +1 -0
- package/dist/design/rip.js +362 -0
- package/dist/design/rip.js.map +1 -0
- package/dist/design/types.d.ts +126 -0
- package/dist/design/types.d.ts.map +1 -0
- package/dist/design/types.js +3 -0
- package/dist/design/types.js.map +1 -0
- package/dist/drivers/playwright.d.ts +1 -0
- package/dist/drivers/playwright.d.ts.map +1 -1
- package/dist/drivers/playwright.js +21 -5
- package/dist/drivers/playwright.js.map +1 -1
- package/dist/drivers/types.d.ts +8 -0
- package/dist/drivers/types.d.ts.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/runner/effect-verification.d.ts +12 -0
- package/dist/runner/effect-verification.d.ts.map +1 -0
- package/dist/runner/effect-verification.js +169 -0
- package/dist/runner/effect-verification.js.map +1 -0
- package/dist/runner/index.d.ts +1 -0
- package/dist/runner/index.d.ts.map +1 -1
- package/dist/runner/index.js +2 -0
- package/dist/runner/index.js.map +1 -1
- package/dist/runner/runner.d.ts.map +1 -1
- package/dist/runner/runner.js +34 -57
- package/dist/runner/runner.js.map +1 -1
- package/dist/runner.d.ts +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +2 -0
- package/dist/runner.js.map +1 -1
- package/dist/showcase/annotate.d.ts +28 -0
- package/dist/showcase/annotate.d.ts.map +1 -0
- package/dist/showcase/annotate.js +95 -0
- package/dist/showcase/annotate.js.map +1 -0
- package/dist/showcase/assemble.d.ts +31 -0
- package/dist/showcase/assemble.d.ts.map +1 -0
- package/dist/showcase/assemble.js +107 -0
- package/dist/showcase/assemble.js.map +1 -0
- package/dist/showcase/demo-player.d.ts +53 -0
- package/dist/showcase/demo-player.d.ts.map +1 -0
- package/dist/showcase/demo-player.js +325 -0
- package/dist/showcase/demo-player.js.map +1 -0
- package/dist/showcase/index.d.ts +21 -0
- package/dist/showcase/index.d.ts.map +1 -0
- package/dist/showcase/index.js +289 -0
- package/dist/showcase/index.js.map +1 -0
- package/dist/showcase/types.d.ts +111 -0
- package/dist/showcase/types.d.ts.map +1 -0
- package/dist/showcase/types.js +3 -0
- package/dist/showcase/types.js.map +1 -0
- package/dist/types.d.ts +69 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +13 -1
package/dist/cli-auth.js
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import readline from 'node:readline/promises';
|
|
4
|
+
import { stdin, stdout } from 'node:process';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
const DEFAULT_PATH = '.auth/storage-state.json';
|
|
7
|
+
function resolve(input) {
|
|
8
|
+
return path.resolve(input || process.env.AI_TANGLE_STORAGE_STATE_PATH || DEFAULT_PATH);
|
|
9
|
+
}
|
|
10
|
+
function validate(filePath) {
|
|
11
|
+
const resolved = path.resolve(filePath);
|
|
12
|
+
if (!fs.existsSync(resolved)) {
|
|
13
|
+
throw new Error(`Storage state file not found: ${resolved}`);
|
|
14
|
+
}
|
|
15
|
+
let parsed;
|
|
16
|
+
try {
|
|
17
|
+
parsed = JSON.parse(fs.readFileSync(resolved, 'utf-8'));
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
throw new Error(`Storage state is not valid JSON: ${resolved}`);
|
|
21
|
+
}
|
|
22
|
+
const obj = parsed;
|
|
23
|
+
if (!Array.isArray(obj?.cookies) || !Array.isArray(obj?.origins)) {
|
|
24
|
+
throw new Error(`Storage state must contain cookies[] and origins[]: ${resolved}`);
|
|
25
|
+
}
|
|
26
|
+
const cookies = obj.cookies;
|
|
27
|
+
const origins = obj.origins;
|
|
28
|
+
return {
|
|
29
|
+
path: resolved,
|
|
30
|
+
parsed: obj,
|
|
31
|
+
cookieCount: cookies.length,
|
|
32
|
+
originCount: origins.length,
|
|
33
|
+
originNames: origins
|
|
34
|
+
.map((e) => String(e?.origin || '').trim())
|
|
35
|
+
.filter(Boolean),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export async function handleAuthSave(opts) {
|
|
39
|
+
const url = opts.url || 'https://ai.tangle.tools';
|
|
40
|
+
const outPath = resolve(opts.output);
|
|
41
|
+
fs.mkdirSync(path.dirname(outPath), { recursive: true });
|
|
42
|
+
// Dynamic import — playwright is a peer dep
|
|
43
|
+
const { chromium } = await import('playwright');
|
|
44
|
+
const browser = await chromium.launch({ headless: false });
|
|
45
|
+
const context = await browser.newContext({ viewport: { width: 1440, height: 900 } });
|
|
46
|
+
const page = await context.newPage();
|
|
47
|
+
console.log(`${chalk.cyan('Opening:')} ${url}`);
|
|
48
|
+
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 120_000 });
|
|
49
|
+
console.log('');
|
|
50
|
+
console.log('Log in manually in the opened browser window.');
|
|
51
|
+
console.log(`When done, press ${chalk.bold('Enter')} here to save storage state.`);
|
|
52
|
+
console.log(`Output: ${chalk.dim(outPath)}`);
|
|
53
|
+
const rl = readline.createInterface({ input: stdin, output: stdout });
|
|
54
|
+
await rl.question('Press Enter after login is complete... ');
|
|
55
|
+
rl.close();
|
|
56
|
+
await context.storageState({ path: outPath });
|
|
57
|
+
await browser.close();
|
|
58
|
+
console.log(`${chalk.green('✓')} Saved storage state: ${outPath}`);
|
|
59
|
+
console.log(`${chalk.dim('Verify:')} bad auth check ${outPath}`);
|
|
60
|
+
console.log(`${chalk.dim('Use:')} bad run --storage-state ${outPath} --goal "..." --url "..."`);
|
|
61
|
+
}
|
|
62
|
+
function parseFillArg(raw) {
|
|
63
|
+
// "selector=value" or "name:field=value" (shorthand for [name="field"])
|
|
64
|
+
const eqIdx = raw.indexOf('=');
|
|
65
|
+
if (eqIdx === -1)
|
|
66
|
+
throw new Error(`Invalid --fill format: "${raw}". Expected "selector=value" or "name:field=value".`);
|
|
67
|
+
const left = raw.slice(0, eqIdx).trim();
|
|
68
|
+
const value = raw.slice(eqIdx + 1);
|
|
69
|
+
// Shorthand: "email=foo" → input[name="email"], input[type="email"], or #email
|
|
70
|
+
const selector = left.includes('[') || left.includes('#') || left.includes('.')
|
|
71
|
+
? left
|
|
72
|
+
: `input[name="${left}"], input[type="${left}"], textarea[name="${left}"], #${left}`;
|
|
73
|
+
return { selector, value };
|
|
74
|
+
}
|
|
75
|
+
function parseCookieArg(raw, url) {
|
|
76
|
+
// "name=value" — domain inferred from --url
|
|
77
|
+
const eqIdx = raw.indexOf('=');
|
|
78
|
+
if (eqIdx === -1)
|
|
79
|
+
throw new Error(`Invalid --cookie format: "${raw}". Expected "name=value".`);
|
|
80
|
+
const domain = new URL(url).hostname;
|
|
81
|
+
return {
|
|
82
|
+
name: raw.slice(0, eqIdx),
|
|
83
|
+
value: raw.slice(eqIdx + 1),
|
|
84
|
+
domain,
|
|
85
|
+
path: '/',
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
export async function handleAuthLogin(opts) {
|
|
89
|
+
const url = opts.url;
|
|
90
|
+
if (!url) {
|
|
91
|
+
throw new Error('--url is required for auth login');
|
|
92
|
+
}
|
|
93
|
+
const outPath = resolve(opts.output);
|
|
94
|
+
fs.mkdirSync(path.dirname(outPath), { recursive: true });
|
|
95
|
+
const headless = opts.headless ?? true;
|
|
96
|
+
const waitTimeout = opts.waitTimeout ?? 30_000;
|
|
97
|
+
const fills = (opts.fill || []).map(parseFillArg);
|
|
98
|
+
const cookies = (opts.cookie || []).map((c) => parseCookieArg(c, url));
|
|
99
|
+
if (fills.length === 0 && cookies.length === 0) {
|
|
100
|
+
throw new Error('auth login requires --fill and/or --cookie. Use "auth save" for interactive login.');
|
|
101
|
+
}
|
|
102
|
+
const { chromium } = await import('playwright');
|
|
103
|
+
const browser = await chromium.launch({ headless });
|
|
104
|
+
const context = await browser.newContext({ viewport: { width: 1440, height: 900 } });
|
|
105
|
+
const page = await context.newPage();
|
|
106
|
+
try {
|
|
107
|
+
// Inject cookies before navigation if provided
|
|
108
|
+
if (cookies.length > 0) {
|
|
109
|
+
console.log(`${chalk.cyan('Injecting')} ${cookies.length} cookie(s)`);
|
|
110
|
+
await context.addCookies(cookies.map((c) => ({
|
|
111
|
+
name: c.name,
|
|
112
|
+
value: c.value,
|
|
113
|
+
domain: c.domain,
|
|
114
|
+
path: c.path,
|
|
115
|
+
})));
|
|
116
|
+
}
|
|
117
|
+
console.log(`${chalk.cyan('Navigating:')} ${url}`);
|
|
118
|
+
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60_000 });
|
|
119
|
+
// Fill form fields
|
|
120
|
+
for (const { selector, value } of fills) {
|
|
121
|
+
const el = page.locator(selector).first();
|
|
122
|
+
await el.waitFor({ state: 'visible', timeout: 10_000 });
|
|
123
|
+
await el.fill(value);
|
|
124
|
+
console.log(`${chalk.dim('Filled:')} ${selector.length > 60 ? selector.slice(0, 57) + '...' : selector}`);
|
|
125
|
+
}
|
|
126
|
+
// Submit: press Enter on the last filled field, or click a submit button
|
|
127
|
+
if (fills.length > 0) {
|
|
128
|
+
const submitBtn = page.locator('button[type="submit"], input[type="submit"]').first();
|
|
129
|
+
const hasSubmit = await submitBtn.isVisible().catch(() => false);
|
|
130
|
+
if (hasSubmit) {
|
|
131
|
+
await submitBtn.click();
|
|
132
|
+
console.log(`${chalk.dim('Clicked:')} submit button`);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
await page.keyboard.press('Enter');
|
|
136
|
+
console.log(`${chalk.dim('Pressed:')} Enter`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Wait for success signal
|
|
140
|
+
if (opts.waitFor) {
|
|
141
|
+
const wf = opts.waitFor;
|
|
142
|
+
if (wf.startsWith('url:')) {
|
|
143
|
+
// Wait for URL pattern: "url:*/dashboard*"
|
|
144
|
+
const pattern = wf.slice(4);
|
|
145
|
+
console.log(`${chalk.dim('Waiting for URL:')} ${pattern}`);
|
|
146
|
+
await page.waitForURL(pattern, { timeout: waitTimeout });
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// Wait for selector
|
|
150
|
+
console.log(`${chalk.dim('Waiting for:')} ${wf}`);
|
|
151
|
+
await page.waitForSelector(wf, { state: 'visible', timeout: waitTimeout });
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
// Default: wait for navigation to settle
|
|
156
|
+
console.log(`${chalk.dim('Waiting for navigation to settle...')}`);
|
|
157
|
+
await page.waitForLoadState('networkidle', { timeout: waitTimeout }).catch(() => {
|
|
158
|
+
// networkidle can be flaky — fall back to just waiting a bit
|
|
159
|
+
});
|
|
160
|
+
// Give SPAs time to redirect after auth
|
|
161
|
+
await page.waitForTimeout(2_000);
|
|
162
|
+
}
|
|
163
|
+
await context.storageState({ path: outPath });
|
|
164
|
+
const state = validate(outPath);
|
|
165
|
+
console.log(`${chalk.green('✓')} Saved storage state: ${outPath}`);
|
|
166
|
+
console.log(` cookies: ${state.cookieCount}, origins: ${state.originCount}`);
|
|
167
|
+
console.log(` final URL: ${page.url()}`);
|
|
168
|
+
}
|
|
169
|
+
finally {
|
|
170
|
+
await browser.close();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export async function handleAuthCheck(opts) {
|
|
174
|
+
const target = resolve(opts.path);
|
|
175
|
+
const state = validate(target);
|
|
176
|
+
const expectedOrigin = opts.origin || '';
|
|
177
|
+
console.log(`${chalk.cyan('Storage state:')} ${state.path}`);
|
|
178
|
+
console.log(` cookies: ${state.cookieCount}`);
|
|
179
|
+
console.log(` origins: ${state.originCount}`);
|
|
180
|
+
for (const origin of state.originNames.slice(0, 10)) {
|
|
181
|
+
console.log(` origin: ${origin}`);
|
|
182
|
+
}
|
|
183
|
+
if (expectedOrigin) {
|
|
184
|
+
const found = state.originNames.some((o) => o.includes(expectedOrigin));
|
|
185
|
+
if (!found) {
|
|
186
|
+
console.error(`${chalk.red('✗')} Expected origin not found: ${expectedOrigin}`);
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
console.log(`${chalk.green('✓')} Origin matched: ${expectedOrigin}`);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
console.log(`${chalk.green('✓')} Valid`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=cli-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-auth.js","sourceRoot":"","sources":["../src/cli-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,14 @@ export interface DesignAuditOptions {
|
|
|
18
18
|
debug?: boolean;
|
|
19
19
|
viewport?: string;
|
|
20
20
|
extractTokens?: boolean;
|
|
21
|
+
/** Evolve mode: true/css for CSS injection, or agent name (claude-code, codex, opencode) for agent dispatch */
|
|
22
|
+
evolve?: string | boolean;
|
|
23
|
+
/** Max fix-reaudit cycles (default: 3) */
|
|
24
|
+
evolveRounds?: number;
|
|
25
|
+
/** Run 3x and report score variance for reproducibility testing */
|
|
26
|
+
reproducibility?: boolean;
|
|
27
|
+
/** Project directory the agent should edit (defaults to cwd) */
|
|
28
|
+
projectDir?: string;
|
|
21
29
|
}
|
|
22
30
|
export declare function runDesignAudit(opts: DesignAuditOptions): Promise<void>;
|
|
23
31
|
export interface ExtractDesignTokensOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-design-audit.d.ts","sourceRoot":"","sources":["../src/cli-design-audit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"cli-design-audit.d.ts","sourceRoot":"","sources":["../src/cli-design-audit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAA4B,YAAY,EAA8L,MAAM,YAAY,CAAA;AA8XpQ,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,+GAA+G;IAC/G,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACzB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mEAAmE;IACnE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+K5E;AAyxCD,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CACjK;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACxC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsRrG"}
|