@petukhovart/agent-view 0.3.0 → 0.5.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/.claude-plugin/marketplace.json +14 -0
- package/.claude-plugin/plugin.json +2 -2
- package/README.md +164 -113
- package/dist/cdp/ax-cache.d.ts +7 -0
- package/dist/cdp/ax-cache.d.ts.map +1 -1
- package/dist/cdp/ax-cache.js +7 -0
- package/dist/cdp/ax-cache.js.map +1 -1
- package/dist/cdp/transport.d.ts.map +1 -1
- package/dist/cdp/transport.js +98 -27
- package/dist/cdp/transport.js.map +1 -1
- package/dist/cdp/types.d.ts +45 -2
- package/dist/cdp/types.d.ts.map +1 -1
- package/dist/cdp/types.js +6 -0
- package/dist/cdp/types.js.map +1 -1
- package/dist/cli/commands/console.d.ts +1 -0
- package/dist/cli/commands/console.d.ts.map +1 -1
- package/dist/cli/commands/console.js +1 -0
- package/dist/cli/commands/console.js.map +1 -1
- package/dist/cli/commands/dom.d.ts +4 -0
- package/dist/cli/commands/dom.d.ts.map +1 -1
- package/dist/cli/commands/dom.js +4 -0
- package/dist/cli/commands/dom.js.map +1 -1
- package/dist/cli/commands/drag.d.ts +13 -0
- package/dist/cli/commands/drag.d.ts.map +1 -0
- package/dist/cli/commands/drag.js +72 -0
- package/dist/cli/commands/drag.js.map +1 -0
- package/dist/cli/commands/scene.d.ts +1 -0
- package/dist/cli/commands/scene.d.ts.map +1 -1
- package/dist/cli/commands/scene.js +2 -0
- package/dist/cli/commands/scene.js.map +1 -1
- package/dist/cli/commands/screenshot.d.ts +1 -0
- package/dist/cli/commands/screenshot.d.ts.map +1 -1
- package/dist/cli/commands/screenshot.js +4 -0
- package/dist/cli/commands/screenshot.js.map +1 -1
- package/dist/cli/commands/snap.d.ts +1 -0
- package/dist/cli/commands/snap.d.ts.map +1 -1
- package/dist/cli/commands/snap.js +2 -0
- package/dist/cli/commands/snap.js.map +1 -1
- package/dist/cli/commands/watch.d.ts +12 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +233 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/index.js +48 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/config/manager.js +1 -1
- package/dist/config/types.d.ts +0 -3
- package/dist/config/types.d.ts.map +1 -1
- package/dist/inspectors/dom/index.d.ts +13 -0
- package/dist/inspectors/dom/index.d.ts.map +1 -1
- package/dist/inspectors/dom/index.js +255 -103
- package/dist/inspectors/dom/index.js.map +1 -1
- package/dist/inspectors/scene/formatter.d.ts.map +1 -1
- package/dist/inspectors/scene/formatter.js +56 -8
- package/dist/inspectors/scene/formatter.js.map +1 -1
- package/dist/inspectors/scene/types.d.ts +1 -0
- package/dist/inspectors/scene/types.d.ts.map +1 -1
- package/dist/inspectors/watch/index.d.ts +18 -0
- package/dist/inspectors/watch/index.d.ts.map +1 -0
- package/dist/inspectors/watch/index.js +39 -0
- package/dist/inspectors/watch/index.js.map +1 -0
- package/dist/inspectors/watch/types.d.ts +70 -0
- package/dist/inspectors/watch/types.d.ts.map +1 -0
- package/dist/inspectors/watch/types.js +21 -0
- package/dist/inspectors/watch/types.js.map +1 -0
- package/dist/server/server.d.ts +9 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +279 -48
- package/dist/server/server.js.map +1 -1
- package/dist/server/watch-session.d.ts +32 -0
- package/dist/server/watch-session.d.ts.map +1 -0
- package/dist/server/watch-session.js +165 -0
- package/dist/server/watch-session.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +61 -60
- package/skills/verify/SKILL.md +64 -13
- package/skills/verify-recipe/SKILL.md +185 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AgentViewConfig } from '../../config/types.js';
|
|
2
|
+
export type WatchOptions = {
|
|
3
|
+
interval?: string;
|
|
4
|
+
duration?: string;
|
|
5
|
+
maxChanges?: string;
|
|
6
|
+
until?: string;
|
|
7
|
+
json?: boolean;
|
|
8
|
+
target?: string;
|
|
9
|
+
window?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function runWatch(config: AgentViewConfig, expression: string, options: WatchOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=watch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAO5D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAyCf"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { connect } from 'node:net';
|
|
2
|
+
import { spawn } from 'node:child_process';
|
|
3
|
+
import { join, dirname } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
6
|
+
import { homedir } from 'node:os';
|
|
7
|
+
import { WATCH_MIN_INTERVAL_MS } from '../../inspectors/watch/types.js';
|
|
8
|
+
const SERVER_PORT = 47922;
|
|
9
|
+
const DELIMITER = '\n';
|
|
10
|
+
const TOKEN_PATH = join(homedir(), '.agent-view', 'token');
|
|
11
|
+
export async function runWatch(config, expression, options) {
|
|
12
|
+
if (!expression) {
|
|
13
|
+
console.error('watch requires an expression');
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const intervalMs = parsePosInt(options.interval, 250, '--interval');
|
|
17
|
+
const durationS = parsePosInt(options.duration, 30, '--duration');
|
|
18
|
+
const maxChanges = parsePosInt(options.maxChanges, 10, '--max-changes');
|
|
19
|
+
if (maxChanges <= 0) {
|
|
20
|
+
console.error('--max-changes must be > 0');
|
|
21
|
+
process.exit(2);
|
|
22
|
+
}
|
|
23
|
+
let effectiveInterval = intervalMs;
|
|
24
|
+
if (effectiveInterval < WATCH_MIN_INTERVAL_MS) {
|
|
25
|
+
process.stderr.write(`warning: --interval ${effectiveInterval} clamped to ${WATCH_MIN_INTERVAL_MS}ms\n`);
|
|
26
|
+
effectiveInterval = WATCH_MIN_INTERVAL_MS;
|
|
27
|
+
}
|
|
28
|
+
const args = {
|
|
29
|
+
expression,
|
|
30
|
+
intervalMs: effectiveInterval,
|
|
31
|
+
durationS,
|
|
32
|
+
maxChanges,
|
|
33
|
+
until: options.until,
|
|
34
|
+
target: options.target,
|
|
35
|
+
window: options.window,
|
|
36
|
+
cwd: process.cwd(),
|
|
37
|
+
};
|
|
38
|
+
const request = {
|
|
39
|
+
command: 'watch',
|
|
40
|
+
port: config.port,
|
|
41
|
+
runtime: config.runtime,
|
|
42
|
+
args,
|
|
43
|
+
token: readToken(),
|
|
44
|
+
};
|
|
45
|
+
await runStream(request, options);
|
|
46
|
+
}
|
|
47
|
+
async function runStream(request, options) {
|
|
48
|
+
try {
|
|
49
|
+
await openAndStream(request, options);
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
if (err instanceof ConnRefused) {
|
|
53
|
+
await startServer();
|
|
54
|
+
const newRequest = { ...request, token: readToken() };
|
|
55
|
+
await openAndStream(newRequest, options);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
throw err;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
class ConnRefused extends Error {
|
|
62
|
+
}
|
|
63
|
+
function openAndStream(request, options) {
|
|
64
|
+
return new Promise((resolve, reject) => {
|
|
65
|
+
const socket = connect(SERVER_PORT, '127.0.0.1');
|
|
66
|
+
let buffer = '';
|
|
67
|
+
let exitCode = 0;
|
|
68
|
+
let stopReceived = false;
|
|
69
|
+
let sigintReceived = false;
|
|
70
|
+
const onSigint = () => {
|
|
71
|
+
sigintReceived = true;
|
|
72
|
+
socket.end();
|
|
73
|
+
// Don't exit immediately — wait for stop frame to flush stdout.
|
|
74
|
+
// Fallback after 1s.
|
|
75
|
+
setTimeout(() => process.exit(130), 1000).unref();
|
|
76
|
+
};
|
|
77
|
+
process.on('SIGINT', onSigint);
|
|
78
|
+
socket.on('connect', () => {
|
|
79
|
+
socket.write(JSON.stringify(request) + DELIMITER);
|
|
80
|
+
});
|
|
81
|
+
socket.on('data', (chunk) => {
|
|
82
|
+
buffer += chunk.toString();
|
|
83
|
+
let idx = buffer.indexOf(DELIMITER);
|
|
84
|
+
while (idx !== -1) {
|
|
85
|
+
const line = buffer.slice(0, idx);
|
|
86
|
+
buffer = buffer.slice(idx + 1);
|
|
87
|
+
idx = buffer.indexOf(DELIMITER);
|
|
88
|
+
if (!line)
|
|
89
|
+
continue;
|
|
90
|
+
let parsed;
|
|
91
|
+
try {
|
|
92
|
+
parsed = JSON.parse(line);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
process.stderr.write(`warning: malformed frame from server: ${line}\n`);
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
// Server-side validation error comes as ServerResponse with `ok` field.
|
|
99
|
+
if (parsed && typeof parsed === 'object' && 'ok' in parsed) {
|
|
100
|
+
const r = parsed;
|
|
101
|
+
if (r.ok === false) {
|
|
102
|
+
process.stderr.write(`Error: ${r.error ?? 'unknown'}\n`);
|
|
103
|
+
exitCode = 1;
|
|
104
|
+
socket.destroy();
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const frame = parsed;
|
|
109
|
+
printFrame(frame, options);
|
|
110
|
+
if (frame.type === 'stop') {
|
|
111
|
+
stopReceived = true;
|
|
112
|
+
if (!frame.ok)
|
|
113
|
+
exitCode = 1;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
socket.on('close', () => {
|
|
118
|
+
process.off('SIGINT', onSigint);
|
|
119
|
+
if (!stopReceived && exitCode === 0) {
|
|
120
|
+
// Server closed without a stop frame → unusual
|
|
121
|
+
process.stderr.write('warning: server closed connection without stop frame\n');
|
|
122
|
+
exitCode = 1;
|
|
123
|
+
}
|
|
124
|
+
if (sigintReceived && exitCode === 0)
|
|
125
|
+
exitCode = 130;
|
|
126
|
+
resolve();
|
|
127
|
+
process.exit(exitCode);
|
|
128
|
+
});
|
|
129
|
+
socket.on('error', (err) => {
|
|
130
|
+
if (err.code === 'ECONNREFUSED' || err.code === 'ENOENT') {
|
|
131
|
+
reject(new ConnRefused(err.message));
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
reject(err);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
function printFrame(frame, options) {
|
|
139
|
+
if (options.json) {
|
|
140
|
+
process.stdout.write(JSON.stringify(frame) + '\n');
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const ts = `[${frame.ts}]`;
|
|
144
|
+
switch (frame.type) {
|
|
145
|
+
case 'init': {
|
|
146
|
+
process.stdout.write(`${ts} init ${stringify(frame.value)}\n`);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
case 'diff': {
|
|
150
|
+
for (const op of frame.ops)
|
|
151
|
+
process.stdout.write(`${ts} ${formatOp(op)}\n`);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
case 'error': {
|
|
155
|
+
process.stdout.write(`${ts} error ${frame.message}\n`);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
case 'stop': {
|
|
159
|
+
const cnt = frame.count !== undefined ? ` count=${frame.count}` : '';
|
|
160
|
+
process.stdout.write(`${ts} stop reason=${frame.reason}${cnt}\n`);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function formatOp(op) {
|
|
166
|
+
const path = op.path === '' ? '/' : op.path;
|
|
167
|
+
switch (op.op) {
|
|
168
|
+
case 'replace': return `replace ${path} → ${stringify(op.value)}`;
|
|
169
|
+
case 'add': return `add ${path} ${stringify(op.value)}`;
|
|
170
|
+
case 'remove': return `remove ${path}`;
|
|
171
|
+
case 'move': return `move ${op.from} → ${path}`;
|
|
172
|
+
case 'copy': return `copy ${op.from} → ${path}`;
|
|
173
|
+
case 'test': return `test ${path} ${stringify(op.value)}`;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function stringify(value) {
|
|
177
|
+
try {
|
|
178
|
+
return JSON.stringify(value);
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return String(value);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
function parsePosInt(raw, fallback, name) {
|
|
185
|
+
if (raw === undefined)
|
|
186
|
+
return fallback;
|
|
187
|
+
const n = Number(raw);
|
|
188
|
+
if (!Number.isFinite(n) || n <= 0) {
|
|
189
|
+
console.error(`Invalid ${name}: "${raw}"`);
|
|
190
|
+
process.exit(2);
|
|
191
|
+
}
|
|
192
|
+
return Math.floor(n);
|
|
193
|
+
}
|
|
194
|
+
function readToken() {
|
|
195
|
+
try {
|
|
196
|
+
return readFileSync(TOKEN_PATH, 'utf-8').trim();
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
return '';
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
async function startServer() {
|
|
203
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
204
|
+
const serverEntryJs = join(__dirname, '..', '..', 'server', 'index.js');
|
|
205
|
+
const serverEntryTs = join(__dirname, '..', '..', 'server', 'index.ts');
|
|
206
|
+
const isDev = existsSync(serverEntryTs) && !existsSync(serverEntryJs);
|
|
207
|
+
const npx = process.platform === 'win32' ? 'npx.cmd' : 'npx';
|
|
208
|
+
const cmd = isDev ? npx : 'node';
|
|
209
|
+
const args = isDev ? ['tsx', serverEntryTs] : [serverEntryJs];
|
|
210
|
+
const projectRoot = join(__dirname, '..', '..', '..');
|
|
211
|
+
const child = spawn(cmd, args, {
|
|
212
|
+
detached: true,
|
|
213
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
214
|
+
shell: false,
|
|
215
|
+
cwd: projectRoot,
|
|
216
|
+
windowsHide: true,
|
|
217
|
+
});
|
|
218
|
+
child.unref();
|
|
219
|
+
return new Promise((resolve, reject) => {
|
|
220
|
+
const timeout = setTimeout(() => reject(new Error('Server startup timeout (10s)')), 10_000);
|
|
221
|
+
child.stdout?.on('data', (chunk) => {
|
|
222
|
+
if (chunk.toString().includes('READY')) {
|
|
223
|
+
clearTimeout(timeout);
|
|
224
|
+
resolve();
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
child.on('error', (err) => {
|
|
228
|
+
clearTimeout(timeout);
|
|
229
|
+
reject(err);
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { runDiscover } from './commands/discover.js';
|
|
|
11
11
|
import { runLaunch } from './commands/launch.js';
|
|
12
12
|
import { runDom } from './commands/dom.js';
|
|
13
13
|
import { runClick } from './commands/click.js';
|
|
14
|
+
import { runDrag } from './commands/drag.js';
|
|
14
15
|
import { runFill } from './commands/fill.js';
|
|
15
16
|
import { runScreenshot } from './commands/screenshot.js';
|
|
16
17
|
import { runScene } from './commands/scene.js';
|
|
@@ -20,10 +21,11 @@ import { runWait } from './commands/wait.js';
|
|
|
20
21
|
import { runTargets } from './commands/targets.js';
|
|
21
22
|
import { runEval } from './commands/eval.js';
|
|
22
23
|
import { runConsole } from './commands/console.js';
|
|
24
|
+
import { runWatch } from './commands/watch.js';
|
|
23
25
|
const program = new Command()
|
|
24
26
|
.name('agent-view')
|
|
25
27
|
.description('Visual verification CLI for desktop apps')
|
|
26
|
-
.version('0.
|
|
28
|
+
.version('0.5.0');
|
|
27
29
|
program
|
|
28
30
|
.command('init')
|
|
29
31
|
.description('Auto-generate agent-view.config.json')
|
|
@@ -51,6 +53,10 @@ program
|
|
|
51
53
|
.option('-f, --filter <text>', 'Filter by text/name')
|
|
52
54
|
.option('-d, --depth <n>', 'Max tree depth', parseDepth)
|
|
53
55
|
.option('--text', 'Fall back to DOM textContent search when AX tree returns no match')
|
|
56
|
+
.option('--compact', 'Merge single-child chains onto one line to reduce token count')
|
|
57
|
+
.option('--count', 'Return only the count of matching nodes (no tree output, no ref mutations)')
|
|
58
|
+
.option('--max-lines <n>', 'Hard line budget — truncates output with a "… N more nodes" tail; refs for hidden nodes are still stored', parseMaxLines)
|
|
59
|
+
.option('--diff', 'Show only changes since last dom call (first call returns full tree)')
|
|
54
60
|
.action(async (options) => {
|
|
55
61
|
const config = requireConfig();
|
|
56
62
|
await runDom(config, options);
|
|
@@ -65,6 +71,21 @@ program
|
|
|
65
71
|
const config = requireConfig();
|
|
66
72
|
await runClick(config, ref, options);
|
|
67
73
|
});
|
|
74
|
+
program
|
|
75
|
+
.command('drag')
|
|
76
|
+
.description('Drag from one point to another via CDP mouse events (HTML5/pointer DnD)')
|
|
77
|
+
.option('--from <ref>', 'Source element by ref from `dom`')
|
|
78
|
+
.option('--to <ref>', 'Target element by ref from `dom`')
|
|
79
|
+
.option('--from-pos <x,y>', 'Source coordinates (canvas, custom DnD)')
|
|
80
|
+
.option('--to-pos <x,y>', 'Target coordinates')
|
|
81
|
+
.option('--steps <n>', 'Intermediate mouseMoved events (default 10)')
|
|
82
|
+
.option('--button <name>', 'Mouse button: left|right|middle (default left)')
|
|
83
|
+
.option('--hold-ms <n>', 'Pause between press and first move, ms (default 0)')
|
|
84
|
+
.option('-w, --window <id>', 'Target window ID or name')
|
|
85
|
+
.action(async (options) => {
|
|
86
|
+
const config = requireConfig();
|
|
87
|
+
await runDrag(config, options);
|
|
88
|
+
});
|
|
68
89
|
program
|
|
69
90
|
.command('fill <refOrValue> [value]')
|
|
70
91
|
.description('Type text into input by ref or filter')
|
|
@@ -89,6 +110,7 @@ program
|
|
|
89
110
|
.description('Capture screenshot and save to temp dir')
|
|
90
111
|
.option('-w, --window <id>', 'Target window ID or name')
|
|
91
112
|
.option('-s, --scale <factor>', 'Scale factor 0..1 — reduces image size and Claude vision token cost (e.g. 0.5)', parseFloat)
|
|
113
|
+
.option('--crop <filter>', 'Crop to bounding box of matched element (massive vision-token win)')
|
|
92
114
|
.action(async (options) => {
|
|
93
115
|
const config = requireConfig();
|
|
94
116
|
await runScreenshot(config, options);
|
|
@@ -101,6 +123,7 @@ program
|
|
|
101
123
|
.option('-d, --depth <n>', 'Max tree depth', parseDepth)
|
|
102
124
|
.option('-v, --verbose', 'Show extended properties')
|
|
103
125
|
.option('--diff', 'Show only changes since last call')
|
|
126
|
+
.option('--compact', 'Merge single-child chains onto one line')
|
|
104
127
|
.action(async (options) => {
|
|
105
128
|
const config = requireConfig();
|
|
106
129
|
await runScene(config, options);
|
|
@@ -111,6 +134,7 @@ program
|
|
|
111
134
|
.option('-w, --window <id>', 'Target window ID or name')
|
|
112
135
|
.option('-f, --filter <text>', 'Filter by text/name')
|
|
113
136
|
.option('-d, --depth <n>', 'Max tree depth', parseDepth)
|
|
137
|
+
.option('--scale <factor>', 'Capture a screenshot at this scale (0,1] and append to output', parseFloat)
|
|
114
138
|
.action(async (options) => {
|
|
115
139
|
const config = requireConfig();
|
|
116
140
|
await runSnap(config, options);
|
|
@@ -141,6 +165,7 @@ program
|
|
|
141
165
|
.option('-t, --target <id>', 'Restrict to one target')
|
|
142
166
|
.option('-f, --follow', 'Stream new messages until --timeout elapses')
|
|
143
167
|
.option('--timeout <seconds>', 'Follow window in seconds (default 10)', parseDepth)
|
|
168
|
+
.option('--until <pattern>', 'Exit as soon as a message matches (substring or /regex/); requires --follow')
|
|
144
169
|
.option('-l, --level <levels>', 'Comma-separated level filter (log,info,warn,error,debug)')
|
|
145
170
|
.option('--since <iso>', 'Only messages newer than ISO timestamp')
|
|
146
171
|
.option('--clear', 'Drop the in-memory ring buffer')
|
|
@@ -148,6 +173,20 @@ program
|
|
|
148
173
|
const config = requireConfig();
|
|
149
174
|
await runConsole(config, options);
|
|
150
175
|
});
|
|
176
|
+
program
|
|
177
|
+
.command('watch <expression>')
|
|
178
|
+
.description('Watch a JS expression and stream JSON-patch diffs (requires "allowEval": true)')
|
|
179
|
+
.option('--interval <ms>', 'Polling interval (default 250, min 50)')
|
|
180
|
+
.option('--duration <s>', 'Stop after N seconds (default 30)')
|
|
181
|
+
.option('--max-changes <n>', 'Stop after N diffs (default 10)')
|
|
182
|
+
.option('--until <expression>', 'Stop when this JS expression becomes truthy')
|
|
183
|
+
.option('--json', 'NDJSON output, one frame per line')
|
|
184
|
+
.option('-t, --target <id>', 'Target by CDP id, title, or URL substring')
|
|
185
|
+
.option('-w, --window <id>', 'Page-target by id or title')
|
|
186
|
+
.action(async (expression, options) => {
|
|
187
|
+
const config = requireConfig();
|
|
188
|
+
await runWatch(config, expression, options);
|
|
189
|
+
});
|
|
151
190
|
program
|
|
152
191
|
.command('stop')
|
|
153
192
|
.description('Stop the lazy server')
|
|
@@ -170,5 +209,13 @@ function parseDepth(value) {
|
|
|
170
209
|
}
|
|
171
210
|
return n;
|
|
172
211
|
}
|
|
212
|
+
function parseMaxLines(value) {
|
|
213
|
+
const n = parseInt(value, 10);
|
|
214
|
+
if (isNaN(n) || n <= 0) {
|
|
215
|
+
console.error(`Invalid --max-lines value: "${value}" (must be a positive integer)`);
|
|
216
|
+
process.exit(1);
|
|
217
|
+
}
|
|
218
|
+
return n;
|
|
219
|
+
}
|
|
173
220
|
program.parse();
|
|
174
221
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAChE,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAA;IACrG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/config/manager.js
CHANGED
package/dist/config/types.d.ts
CHANGED
|
@@ -17,8 +17,5 @@ export type AgentViewConfig = {
|
|
|
17
17
|
consoleBufferSize?: number;
|
|
18
18
|
/** Target types that `agent-view console` auto-attaches to on first call. */
|
|
19
19
|
consoleTargets?: ReadonlyArray<TargetType>;
|
|
20
|
-
verify?: Record<string, {
|
|
21
|
-
steps: string[];
|
|
22
|
-
}>;
|
|
23
20
|
};
|
|
24
21
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,WAAW,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,WAAW,CAAA;KACpB,CAAA;IACD;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,6EAA6E;IAC7E,cAAc,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,WAAW,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,WAAW,CAAA;KACpB,CAAA;IACD;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,6EAA6E;IAC7E,cAAc,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CAC3C,CAAA"}
|
|
@@ -7,11 +7,24 @@ export type DOMSnapshotOptions = {
|
|
|
7
7
|
filter?: string;
|
|
8
8
|
depth?: number;
|
|
9
9
|
startRef?: number;
|
|
10
|
+
compact?: boolean;
|
|
11
|
+
maxLines?: number;
|
|
10
12
|
};
|
|
11
13
|
export type DOMSnapshotResult = {
|
|
12
14
|
text: string;
|
|
13
15
|
refs: RefEntry[];
|
|
14
16
|
nextRef: number;
|
|
15
17
|
};
|
|
18
|
+
export type DOMCountResult = {
|
|
19
|
+
count: number;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Compute a line-level diff between two formatted DOM texts. Refs are
|
|
23
|
+
* normalised before comparison (sessions reuse ids monotonically; without
|
|
24
|
+
* normalisation every line would look "changed"). Emitted lines retain the
|
|
25
|
+
* real `[ref=N]` from the *current* snapshot so the user can still click them.
|
|
26
|
+
*/
|
|
27
|
+
export declare function diffDomText(prev: string, curr: string): string;
|
|
16
28
|
export declare function formatAccessibilityTree(nodes: AXNode[], options?: DOMSnapshotOptions): DOMSnapshotResult;
|
|
29
|
+
export declare function countAccessibilityNodes(nodes: AXNode[], options?: Pick<DOMSnapshotOptions, 'filter' | 'depth'>): DOMCountResult;
|
|
17
30
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/inspectors/dom/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/inspectors/dom/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAQD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAqD9D;AAuHD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAiDnB;AA+DD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,OAAO,CAAM,GACzD,cAAc,CAehB"}
|