@petukhovart/agent-view 0.1.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.
Files changed (131) hide show
  1. package/.claude-plugin/marketplace.json +14 -0
  2. package/.claude-plugin/plugin.json +13 -2
  3. package/README.md +211 -61
  4. package/dist/adapters/browser.d.ts.map +1 -1
  5. package/dist/adapters/browser.js +11 -11
  6. package/dist/adapters/browser.js.map +1 -1
  7. package/dist/adapters/electron.d.ts.map +1 -1
  8. package/dist/adapters/electron.js +11 -11
  9. package/dist/adapters/electron.js.map +1 -1
  10. package/dist/adapters/tauri.d.ts.map +1 -1
  11. package/dist/adapters/tauri.js +11 -11
  12. package/dist/adapters/tauri.js.map +1 -1
  13. package/dist/adapters/types.d.ts +5 -2
  14. package/dist/adapters/types.d.ts.map +1 -1
  15. package/dist/cdp/_tests/console-stream.d.ts +35 -0
  16. package/dist/cdp/_tests/console-stream.d.ts.map +1 -0
  17. package/dist/cdp/_tests/console-stream.js +103 -0
  18. package/dist/cdp/_tests/console-stream.js.map +1 -0
  19. package/dist/cdp/ax-cache.d.ts +16 -0
  20. package/dist/cdp/ax-cache.d.ts.map +1 -0
  21. package/dist/cdp/ax-cache.js +31 -0
  22. package/dist/cdp/ax-cache.js.map +1 -0
  23. package/dist/cdp/console-stream.d.ts +35 -0
  24. package/dist/cdp/console-stream.d.ts.map +1 -0
  25. package/dist/cdp/console-stream.js +103 -0
  26. package/dist/cdp/console-stream.js.map +1 -0
  27. package/dist/cdp/transport.d.ts +5 -2
  28. package/dist/cdp/transport.d.ts.map +1 -1
  29. package/dist/cdp/transport.js +309 -26
  30. package/dist/cdp/transport.js.map +1 -1
  31. package/dist/cdp/types.d.ts +109 -8
  32. package/dist/cdp/types.d.ts.map +1 -1
  33. package/dist/cdp/types.js +35 -1
  34. package/dist/cdp/types.js.map +1 -1
  35. package/dist/cli/commands/console.d.ts +12 -0
  36. package/dist/cli/commands/console.d.ts.map +1 -0
  37. package/dist/cli/commands/console.js +32 -0
  38. package/dist/cli/commands/console.js.map +1 -0
  39. package/dist/cli/commands/dom.d.ts +5 -0
  40. package/dist/cli/commands/dom.d.ts.map +1 -1
  41. package/dist/cli/commands/dom.js +5 -0
  42. package/dist/cli/commands/dom.js.map +1 -1
  43. package/dist/cli/commands/drag.d.ts +13 -0
  44. package/dist/cli/commands/drag.d.ts.map +1 -0
  45. package/dist/cli/commands/drag.js +72 -0
  46. package/dist/cli/commands/drag.js.map +1 -0
  47. package/dist/cli/commands/eval.d.ts +9 -0
  48. package/dist/cli/commands/eval.d.ts.map +1 -0
  49. package/dist/cli/commands/eval.js +30 -0
  50. package/dist/cli/commands/eval.js.map +1 -0
  51. package/dist/cli/commands/scene.d.ts +1 -0
  52. package/dist/cli/commands/scene.d.ts.map +1 -1
  53. package/dist/cli/commands/scene.js +2 -0
  54. package/dist/cli/commands/scene.js.map +1 -1
  55. package/dist/cli/commands/screenshot.d.ts +2 -0
  56. package/dist/cli/commands/screenshot.d.ts.map +1 -1
  57. package/dist/cli/commands/screenshot.js +6 -0
  58. package/dist/cli/commands/screenshot.js.map +1 -1
  59. package/dist/cli/commands/snap.d.ts +1 -0
  60. package/dist/cli/commands/snap.d.ts.map +1 -1
  61. package/dist/cli/commands/snap.js +2 -0
  62. package/dist/cli/commands/snap.js.map +1 -1
  63. package/dist/cli/commands/targets.d.ts +7 -0
  64. package/dist/cli/commands/targets.d.ts.map +1 -0
  65. package/dist/cli/commands/targets.js +30 -0
  66. package/dist/cli/commands/targets.js.map +1 -0
  67. package/dist/cli/commands/watch.d.ts +12 -0
  68. package/dist/cli/commands/watch.d.ts.map +1 -0
  69. package/dist/cli/commands/watch.js +233 -0
  70. package/dist/cli/commands/watch.js.map +1 -0
  71. package/dist/cli/index.js +86 -1
  72. package/dist/cli/index.js.map +1 -1
  73. package/dist/config/manager.d.ts.map +1 -1
  74. package/dist/config/manager.js +11 -1
  75. package/dist/config/manager.js.map +1 -1
  76. package/dist/config/types.d.ts +11 -3
  77. package/dist/config/types.d.ts.map +1 -1
  78. package/dist/inspectors/dom/index.d.ts +30 -0
  79. package/dist/inspectors/dom/index.d.ts.map +1 -0
  80. package/dist/inspectors/dom/index.js +283 -0
  81. package/dist/inspectors/dom/index.js.map +1 -0
  82. package/dist/inspectors/scene/adapters/pixi/adapter.d.ts +3 -0
  83. package/dist/inspectors/scene/adapters/pixi/adapter.d.ts.map +1 -0
  84. package/dist/inspectors/scene/adapters/pixi/adapter.js +51 -0
  85. package/dist/inspectors/scene/adapters/pixi/adapter.js.map +1 -0
  86. package/dist/inspectors/scene/adapters/pixi/index.d.ts +2 -0
  87. package/dist/inspectors/scene/adapters/pixi/index.d.ts.map +1 -0
  88. package/dist/inspectors/scene/adapters/pixi/index.js +2 -0
  89. package/dist/inspectors/scene/adapters/pixi/index.js.map +1 -0
  90. package/dist/inspectors/scene/adapters/pixi/injection.d.ts +39 -0
  91. package/dist/inspectors/scene/adapters/pixi/injection.d.ts.map +1 -0
  92. package/dist/inspectors/scene/adapters/pixi/injection.js +41 -0
  93. package/dist/inspectors/scene/adapters/pixi/injection.js.map +1 -0
  94. package/dist/inspectors/scene/formatter.d.ts +0 -1
  95. package/dist/inspectors/scene/formatter.d.ts.map +1 -1
  96. package/dist/inspectors/scene/formatter.js +100 -43
  97. package/dist/inspectors/scene/formatter.js.map +1 -1
  98. package/dist/inspectors/scene/index.d.ts +4 -4
  99. package/dist/inspectors/scene/index.d.ts.map +1 -1
  100. package/dist/inspectors/scene/index.js +8 -5
  101. package/dist/inspectors/scene/index.js.map +1 -1
  102. package/dist/inspectors/scene/pixi.js.map +1 -1
  103. package/dist/inspectors/scene/registry.d.ts +2 -2
  104. package/dist/inspectors/scene/registry.d.ts.map +1 -1
  105. package/dist/inspectors/scene/registry.js +8 -8
  106. package/dist/inspectors/scene/registry.js.map +1 -1
  107. package/dist/inspectors/scene/types.d.ts +6 -10
  108. package/dist/inspectors/scene/types.d.ts.map +1 -1
  109. package/dist/inspectors/watch/index.d.ts +18 -0
  110. package/dist/inspectors/watch/index.d.ts.map +1 -0
  111. package/dist/inspectors/watch/index.js +39 -0
  112. package/dist/inspectors/watch/index.js.map +1 -0
  113. package/dist/inspectors/watch/types.d.ts +70 -0
  114. package/dist/inspectors/watch/types.d.ts.map +1 -0
  115. package/dist/inspectors/watch/types.js +21 -0
  116. package/dist/inspectors/watch/types.js.map +1 -0
  117. package/dist/server/server.d.ts +31 -1
  118. package/dist/server/server.d.ts.map +1 -1
  119. package/dist/server/server.js +620 -67
  120. package/dist/server/server.js.map +1 -1
  121. package/dist/server/watch-session.d.ts +32 -0
  122. package/dist/server/watch-session.d.ts.map +1 -0
  123. package/dist/server/watch-session.js +165 -0
  124. package/dist/server/watch-session.js.map +1 -0
  125. package/dist/types.d.ts +4 -1
  126. package/dist/types.d.ts.map +1 -1
  127. package/dist/types.js +1 -0
  128. package/dist/types.js.map +1 -1
  129. package/package.json +61 -59
  130. package/skills/verify/SKILL.md +146 -11
  131. package/skills/verify-recipe/SKILL.md +185 -0
@@ -1,9 +1,21 @@
1
1
  // @ts-expect-error no types available for chrome-remote-interface
2
2
  import CDP from 'chrome-remote-interface';
3
+ import { TargetType, ConsoleLevel, ConsoleSource, EvaluationError, MouseButton, } from './types.js';
3
4
  // CDP hosts to try: IPv4 first, then IPv6 (WebView2/Tauri often listens on ::1)
4
5
  const CDP_HOSTS = ['127.0.0.1', '::1'];
5
6
  // Maps targetId → host for connection routing
6
7
  const targetHostMap = new Map();
8
+ const KNOWN_TARGET_TYPES = new Set(Object.values(TargetType));
9
+ function toTargetInfo(t) {
10
+ if (!KNOWN_TARGET_TYPES.has(t.type))
11
+ return null;
12
+ return {
13
+ id: t.id,
14
+ type: t.type,
15
+ title: t.title ?? '',
16
+ url: t.url ?? '',
17
+ };
18
+ }
7
19
  export async function listTargets(port) {
8
20
  const seen = new Set();
9
21
  const result = [];
@@ -22,52 +34,323 @@ export async function listTargets(port) {
22
34
  }
23
35
  return result;
24
36
  }
25
- export async function connectToTarget(port, targetId) {
26
- const host = targetHostMap.get(`${port}:${targetId}`) ?? 'localhost';
27
- const client = await CDP({ host, port, target: targetId });
37
+ export async function listSupportedTargets(port) {
38
+ const raw = await listTargets(port);
39
+ const result = [];
40
+ for (const t of raw) {
41
+ const info = toTargetInfo(t);
42
+ if (info)
43
+ result.push(info);
44
+ }
45
+ return result;
46
+ }
47
+ const CONSOLE_TYPE_TO_LEVEL = {
48
+ log: ConsoleLevel.Log,
49
+ info: ConsoleLevel.Info,
50
+ warn: ConsoleLevel.Warn,
51
+ warning: ConsoleLevel.Warn,
52
+ error: ConsoleLevel.Error,
53
+ debug: ConsoleLevel.Debug,
54
+ trace: ConsoleLevel.Debug,
55
+ };
56
+ function levelFromConsoleType(type) {
57
+ return CONSOLE_TYPE_TO_LEVEL[type] ?? ConsoleLevel.Log;
58
+ }
59
+ function levelFromLogEntry(level) {
60
+ if (level === 'verbose')
61
+ return ConsoleLevel.Debug;
62
+ if (level === 'warning')
63
+ return ConsoleLevel.Warn;
64
+ if (level === 'info' || level === 'log' || level === 'error' || level === 'debug') {
65
+ return level;
66
+ }
67
+ return ConsoleLevel.Log;
68
+ }
69
+ function formatRemoteObject(obj) {
70
+ if (obj.unserializableValue !== undefined)
71
+ return String(obj.unserializableValue);
72
+ if (obj.value !== undefined) {
73
+ if (typeof obj.value === 'string')
74
+ return obj.value;
75
+ try {
76
+ return JSON.stringify(obj.value);
77
+ }
78
+ catch {
79
+ return String(obj.value);
80
+ }
81
+ }
82
+ if (obj.description)
83
+ return obj.description;
84
+ if (obj.type)
85
+ return `[${obj.type}${obj.subtype ? ` ${obj.subtype}` : ''}]`;
86
+ return '';
87
+ }
88
+ function formatStackTrace(stack) {
89
+ if (!stack?.callFrames?.length)
90
+ return undefined;
91
+ return stack.callFrames
92
+ .map(f => ` at ${f.functionName || '<anonymous>'} (${f.url ?? ''}:${f.lineNumber ?? 0}:${f.columnNumber ?? 0})`)
93
+ .join('\n');
94
+ }
95
+ function attachConsoleSubscription(client) {
96
+ const handlers = new Set();
97
+ const emit = (msg) => {
98
+ for (const h of handlers) {
99
+ try {
100
+ h(msg);
101
+ }
102
+ catch { /* one bad handler shouldn't break others */ }
103
+ }
104
+ };
105
+ const handleConsoleApi = (params) => {
106
+ if (process.env.AV_DEBUG_CONSOLE) {
107
+ // eslint-disable-next-line no-console
108
+ console.error('[av-debug] Runtime.consoleAPICalled:', params.type, params.args?.length);
109
+ }
110
+ const text = params.args.map(formatRemoteObject).filter(Boolean).join(' ');
111
+ emit({
112
+ ts: Date.now(),
113
+ level: levelFromConsoleType(params.type),
114
+ source: ConsoleSource.Runtime,
115
+ text,
116
+ stack: formatStackTrace(params.stackTrace),
117
+ });
118
+ };
119
+ const handleLogEntry = (params) => {
120
+ if (process.env.AV_DEBUG_CONSOLE) {
121
+ // eslint-disable-next-line no-console
122
+ console.error('[av-debug] Log.entryAdded:', params.entry.level, params.entry.text?.slice(0, 60));
123
+ }
124
+ emit({
125
+ ts: Date.now(),
126
+ level: levelFromLogEntry(params.entry.level),
127
+ source: ConsoleSource.Log,
128
+ text: params.entry.text,
129
+ stack: formatStackTrace(params.entry.stackTrace),
130
+ });
131
+ };
132
+ // chrome-remote-interface event subscription — per-domain shorthand.
133
+ client.Runtime.consoleAPICalled(handleConsoleApi);
134
+ client.Log.entryAdded(handleLogEntry);
135
+ return {
136
+ emit,
137
+ add(handler) {
138
+ handlers.add(handler);
139
+ return () => handlers.delete(handler);
140
+ },
141
+ };
142
+ }
143
+ async function evaluateImpl(client, expression, opts) {
144
+ const returnByValue = opts?.returnByValue ?? true;
145
+ const awaitPromise = opts?.awaitPromise ?? false;
146
+ const { result, exceptionDetails } = await client.Runtime.evaluate({
147
+ expression,
148
+ returnByValue,
149
+ awaitPromise,
150
+ });
151
+ if (exceptionDetails) {
152
+ const text = exceptionDetails.exception?.description
153
+ ?? exceptionDetails.text
154
+ ?? 'Evaluation failed';
155
+ throw new EvaluationError(text, exceptionDetails.stackTrace?.description);
156
+ }
157
+ if (returnByValue)
158
+ return result.value;
159
+ return result;
160
+ }
161
+ async function openClient(port, target) {
162
+ const host = targetHostMap.get(`${port}:${target.id}`) ?? 'localhost';
163
+ return await CDP({ host, port, target: target.id });
164
+ }
165
+ export async function connectToRuntime(port, target) {
166
+ if (process.env.AV_DEBUG_CONSOLE) {
167
+ // eslint-disable-next-line no-console
168
+ console.error(`[av-debug] connectToRuntime ${target.type}:${target.id.slice(0, 8)}`);
169
+ }
170
+ const client = await openClient(port, target);
171
+ // Subscribe BEFORE enable so we catch buffered messages emitted at enable-time.
172
+ const consoleSub = attachConsoleSubscription(client);
173
+ await client.Runtime.enable();
174
+ await client.Log.enable();
175
+ return {
176
+ target,
177
+ evaluate: (expression, opts) => evaluateImpl(client, expression, opts),
178
+ onConsole: (handler) => consoleSub.add(handler),
179
+ async close() {
180
+ await client.close();
181
+ },
182
+ };
183
+ }
184
+ export async function connectToPage(port, target, cache) {
185
+ if (target.type !== TargetType.Page && target.type !== TargetType.Iframe) {
186
+ throw new Error(`connectToPage requires a page/iframe target, got: ${target.type}`);
187
+ }
188
+ if (process.env.AV_DEBUG_CONSOLE) {
189
+ // eslint-disable-next-line no-console
190
+ console.error(`[av-debug] connectToPage ${target.type}:${target.id.slice(0, 8)}`);
191
+ }
192
+ const client = await openClient(port, target);
28
193
  const { Runtime, Accessibility, Page, DOM, Input } = client;
194
+ const cacheKey = `${port}:${target.id}`;
195
+ // Subscribe BEFORE enable so we catch buffered console/log entries emitted at enable-time.
196
+ const consoleSub = attachConsoleSubscription(client);
29
197
  await Page.enable();
30
198
  await DOM.enable();
31
199
  await Accessibility.enable();
200
+ await Runtime.enable();
201
+ await client.Log.enable();
202
+ // Fetch document root once — needed as subtree root for Accessibility.queryAXTree
203
+ const { root } = await DOM.getDocument({ depth: 0 });
204
+ let documentBackendNodeId = root.backendNodeId;
205
+ // null = not yet tested; true = available; false = unavailable (API not supported)
206
+ let queryAXTreeAvailable = null;
207
+ // null = not yet tested; true = webp supported; false = not supported (old Chrome/Electron)
208
+ let webpSupported = null;
209
+ Page.frameNavigated(async () => {
210
+ cache.invalidate(cacheKey);
211
+ try {
212
+ const { root: newRoot } = await DOM.getDocument({ depth: 0 });
213
+ documentBackendNodeId = newRoot.backendNodeId;
214
+ }
215
+ catch { /* ignore refresh errors — next queryAXTree call will fall back */ }
216
+ });
32
217
  async function dispatchClick(x, y) {
33
- await Input.dispatchMouseEvent({ type: 'mousePressed', x, y, button: 'left', clickCount: 1 });
34
- await Input.dispatchMouseEvent({ type: 'mouseReleased', x, y, button: 'left', clickCount: 1 });
218
+ const pressed = Input.dispatchMouseEvent({ type: 'mousePressed', x, y, button: 'left', clickCount: 1 });
219
+ const released = Input.dispatchMouseEvent({ type: 'mouseReleased', x, y, button: 'left', clickCount: 1 });
220
+ await Promise.all([pressed, released]);
221
+ }
222
+ async function dispatchDrag(from, to, opts) {
223
+ const steps = Math.max(0, opts?.steps ?? 10);
224
+ const button = opts?.button ?? MouseButton.Left;
225
+ const holdMs = Math.max(0, opts?.holdMs ?? 0);
226
+ await Input.dispatchMouseEvent({ type: 'mousePressed', x: from.x, y: from.y, button, clickCount: 1 });
227
+ if (holdMs > 0)
228
+ await new Promise(r => setTimeout(r, holdMs));
229
+ for (let i = 1; i <= steps; i++) {
230
+ const t = i / (steps + 1);
231
+ const x = from.x + (to.x - from.x) * t;
232
+ const y = from.y + (to.y - from.y) * t;
233
+ await Input.dispatchMouseEvent({ type: 'mouseMoved', x, y, button });
234
+ }
235
+ await Input.dispatchMouseEvent({ type: 'mouseMoved', x: to.x, y: to.y, button });
236
+ await Input.dispatchMouseEvent({ type: 'mouseReleased', x: to.x, y: to.y, button, clickCount: 1 });
237
+ }
238
+ async function scrollNodeIntoView(backendNodeId) {
239
+ const { object } = await DOM.resolveNode({ backendNodeId });
240
+ await Runtime.callFunctionOn({
241
+ objectId: object.objectId,
242
+ functionDeclaration: 'function() { this.scrollIntoViewIfNeeded() }',
243
+ });
244
+ }
245
+ async function resolveBoxCenter(backendNodeId, scrollIntoView) {
246
+ if (scrollIntoView)
247
+ await scrollNodeIntoView(backendNodeId);
248
+ const { model } = await DOM.getBoxModel({ backendNodeId });
249
+ const [x1, y1, x2, y2, x3, y3, x4, y4] = model.content;
250
+ return { x: (x1 + x2 + x3 + x4) / 4, y: (y1 + y2 + y3 + y4) / 4 };
251
+ }
252
+ async function resolveBoxRect(backendNodeId, scrollIntoView) {
253
+ if (scrollIntoView)
254
+ await scrollNodeIntoView(backendNodeId);
255
+ const { model } = await DOM.getBoxModel({ backendNodeId });
256
+ const [x1, y1, x2, y2, x3, y3, x4, y4] = model.content;
257
+ const xs = [x1, x2, x3, x4];
258
+ const ys = [y1, y2, y3, y4];
259
+ const minX = Math.min(...xs);
260
+ const minY = Math.min(...ys);
261
+ return { x: minX, y: minY, width: Math.max(...xs) - minX, height: Math.max(...ys) - minY };
35
262
  }
36
263
  return {
37
- async evaluate(expression) {
38
- const { result } = await Runtime.evaluate({
39
- expression,
40
- returnByValue: true,
41
- });
42
- return result.value;
43
- },
264
+ target,
265
+ evaluate: (expression, opts) => evaluateImpl(client, expression, opts),
266
+ onConsole: (handler) => consoleSub.add(handler),
44
267
  async getAccessibilityTree() {
268
+ const cached = cache.get(cacheKey);
269
+ if (cached)
270
+ return cached;
45
271
  const { nodes } = await Accessibility.getFullAXTree();
272
+ cache.set(cacheKey, nodes);
46
273
  return nodes;
47
274
  },
48
- async captureScreenshot() {
49
- const { data } = await Page.captureScreenshot({ format: 'png' });
50
- return Buffer.from(data, 'base64');
275
+ async getAccessibilityTreeMeta() {
276
+ const meta = cache.getWithMeta(cacheKey);
277
+ if (meta.found) {
278
+ return { nodes: meta.nodes, fromCache: true };
279
+ }
280
+ const { nodes } = await Accessibility.getFullAXTree();
281
+ cache.set(cacheKey, nodes);
282
+ return { nodes, fromCache: false };
283
+ },
284
+ async queryAXTree({ accessibleName, role }) {
285
+ if (queryAXTreeAvailable === false)
286
+ return null;
287
+ try {
288
+ const { nodes } = await Accessibility.queryAXTree({
289
+ backendNodeId: documentBackendNodeId,
290
+ accessibleName,
291
+ role,
292
+ });
293
+ queryAXTreeAvailable = true;
294
+ return nodes;
295
+ }
296
+ catch {
297
+ queryAXTreeAvailable = false;
298
+ return null;
299
+ }
300
+ },
301
+ async captureScreenshot(opts) {
302
+ const scale = opts?.scale ?? 1;
303
+ const explicitClip = opts?.clip;
304
+ if (explicitClip !== undefined) {
305
+ const format = scale < 1 ? 'jpeg' : 'png';
306
+ const params = { format, clip: { ...explicitClip, scale } };
307
+ if (format === 'jpeg')
308
+ params.quality = 80;
309
+ const { data } = await Page.captureScreenshot(params);
310
+ return { buffer: Buffer.from(data, 'base64'), format };
311
+ }
312
+ if (scale >= 1) {
313
+ const { data } = await Page.captureScreenshot({ format: 'png' });
314
+ return { buffer: Buffer.from(data, 'base64'), format: 'png' };
315
+ }
316
+ const { cssLayoutViewport } = await Page.getLayoutMetrics();
317
+ const clip = { x: 0, y: 0, width: cssLayoutViewport.clientWidth, height: cssLayoutViewport.clientHeight, scale };
318
+ if (webpSupported !== false) {
319
+ try {
320
+ const { data } = await Page.captureScreenshot({ format: 'webp', quality: 80, clip });
321
+ webpSupported = true;
322
+ return { buffer: Buffer.from(data, 'base64'), format: 'webp' };
323
+ }
324
+ catch {
325
+ if (webpSupported === null) {
326
+ // eslint-disable-next-line no-console
327
+ console.error('[agent-view] WebP not supported by this Chrome/Electron version, falling back to JPEG');
328
+ webpSupported = false;
329
+ }
330
+ }
331
+ }
332
+ const { data } = await Page.captureScreenshot({ format: 'jpeg', quality: 80, clip });
333
+ return { buffer: Buffer.from(data, 'base64'), format: 'jpeg' };
51
334
  },
52
335
  async clickByNodeId(backendNodeId) {
53
- const { object } = await DOM.resolveNode({ backendNodeId });
54
- await Runtime.callFunctionOn({
55
- objectId: object.objectId,
56
- functionDeclaration: 'function() { this.scrollIntoViewIfNeeded() }',
57
- });
58
- const { model } = await DOM.getBoxModel({ backendNodeId });
59
- const [x1, y1, x2, y2, x3, y3, x4, y4] = model.content;
60
- const cx = (x1 + x2 + x3 + x4) / 4;
61
- const cy = (y1 + y2 + y3 + y4) / 4;
62
- await dispatchClick(cx, cy);
336
+ const { x, y } = await resolveBoxCenter(backendNodeId, true);
337
+ await dispatchClick(x, y);
63
338
  },
64
339
  async clickAtPosition(x, y) {
65
340
  await dispatchClick(x, y);
66
341
  },
342
+ async getBoxCenter(backendNodeId, opts) {
343
+ return resolveBoxCenter(backendNodeId, opts?.scrollIntoView ?? true);
344
+ },
345
+ async getBoxRect(backendNodeId, opts) {
346
+ return resolveBoxRect(backendNodeId, opts?.scrollIntoView ?? true);
347
+ },
348
+ async dragBetweenPositions(from, to, opts) {
349
+ await dispatchDrag(from, to, opts);
350
+ },
67
351
  async fillByNodeId(backendNodeId, value) {
68
352
  const { object } = await DOM.resolveNode({ backendNodeId });
69
353
  await DOM.focus({ backendNodeId });
70
- // Set value and dispatch input/change events for framework reactivity
71
354
  await Runtime.callFunctionOn({
72
355
  objectId: object.objectId,
73
356
  functionDeclaration: `function(val) {
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/cdp/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/cdp/transport.ts"],"names":[],"mappings":"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"}
@@ -3,17 +3,118 @@ export type CDPTarget = {
3
3
  type: string;
4
4
  title: string;
5
5
  url: string;
6
- webSocketDebuggerUrl: string;
6
+ webSocketDebuggerUrl?: string;
7
7
  };
8
- export type CDPConnection = {
8
+ export declare enum TargetType {
9
+ Page = "page",
10
+ Iframe = "iframe",
11
+ SharedWorker = "shared_worker",
12
+ ServiceWorker = "service_worker",
13
+ Worker = "worker"
14
+ }
15
+ export type TargetInfo = {
16
+ id: string;
17
+ type: TargetType;
18
+ title: string;
19
+ url: string;
20
+ };
21
+ export type ScreenshotClip = {
22
+ x: number;
23
+ y: number;
24
+ width: number;
25
+ height: number;
26
+ };
27
+ export type ScreenshotOpts = {
28
+ /** Scale factor (0 < scale ≤ 1). Values < 1 use WebP at q=80 (JPEG fallback for old Chrome/Electron). */
29
+ scale?: number;
30
+ /** Crop to this rect before capturing. Combined with scale when both are set. */
31
+ clip?: ScreenshotClip;
32
+ };
33
+ export type ScreenshotResult = {
34
+ buffer: Buffer;
35
+ format: 'png' | 'jpeg' | 'webp';
36
+ };
37
+ export declare enum MouseButton {
38
+ Left = "left",
39
+ Right = "right",
40
+ Middle = "middle"
41
+ }
42
+ export type DragOpts = {
43
+ /** Number of intermediate `mouseMoved` events between press and release. Default 10. */
44
+ steps?: number;
45
+ button?: MouseButton;
46
+ /** Pause between `mousePressed` and the first `mouseMoved`, in ms. Some libs require >100ms. */
47
+ holdMs?: number;
48
+ };
49
+ export type Point = {
50
+ x: number;
51
+ y: number;
52
+ };
53
+ export declare enum ConsoleLevel {
54
+ Log = "log",
55
+ Info = "info",
56
+ Warn = "warn",
57
+ Error = "error",
58
+ Debug = "debug"
59
+ }
60
+ export declare enum ConsoleSource {
61
+ Runtime = "runtime",
62
+ Log = "log"
63
+ }
64
+ export type ConsoleMessage = {
65
+ ts: number;
66
+ level: ConsoleLevel;
67
+ source: ConsoleSource;
68
+ text: string;
69
+ stack?: string;
70
+ };
71
+ export type EvaluateOpts = {
72
+ awaitPromise?: boolean;
73
+ /** When true, return the raw RemoteObject instead of unwrapped value. Used by the eval CLI to format DOM nodes etc. */
74
+ returnByValue?: boolean;
75
+ };
76
+ export declare class EvaluationError extends Error {
77
+ readonly stack?: string | undefined;
78
+ constructor(message: string, stack?: string | undefined);
79
+ }
80
+ export type RuntimeSession = {
81
+ readonly target: TargetInfo;
82
+ /**
83
+ * Run JS in the target. Returns the unwrapped value (returnByValue: true by default).
84
+ * Throws `EvaluationError` if the script throws or has a syntax error.
85
+ * Only pass trusted, hardcoded expressions or expressions explicitly authorized via `allowEval`.
86
+ */
87
+ evaluate: (expression: string, opts?: EvaluateOpts) => Promise<unknown>;
88
+ /** Subscribe to normalized console events. Returns disposer. Multiple subscribers share the underlying CDP subscription. */
89
+ onConsole: (handler: (msg: ConsoleMessage) => void) => () => void;
90
+ close: () => Promise<void>;
91
+ };
92
+ export type PageSession = RuntimeSession & {
9
93
  getAccessibilityTree: () => Promise<AXNode[]>;
10
- captureScreenshot: () => Promise<Buffer>;
11
- clickByNodeId: (backendNodeId: number) => Promise<void>;
94
+ /** Same as getAccessibilityTree but also signals whether nodes came from the AX tree cache. */
95
+ getAccessibilityTreeMeta: () => Promise<{
96
+ nodes: AXNode[];
97
+ fromCache: boolean;
98
+ }>;
99
+ /** Returns matching nodes by accessible name/role. null = API unavailable; [] = no match. */
100
+ queryAXTree: (params: {
101
+ accessibleName?: string;
102
+ role?: string;
103
+ }) => Promise<AXNode[] | null>;
104
+ captureScreenshot: (opts?: ScreenshotOpts) => Promise<ScreenshotResult>;
105
+ clickByNodeId: (backendDOMNodeId: number) => Promise<void>;
12
106
  clickAtPosition: (x: number, y: number) => Promise<void>;
13
- fillByNodeId: (backendNodeId: number, value: string) => Promise<void>;
14
- /** Executes arbitrary JS in the target process. Only pass trusted, hardcoded expressions. */
15
- evaluate: (js: string) => Promise<unknown>;
16
- close: () => Promise<void>;
107
+ fillByNodeId: (backendDOMNodeId: number, value: string) => Promise<void>;
108
+ /** Resolve box-model center for an element. `scrollIntoView` defaults to true. */
109
+ getBoxCenter: (backendDOMNodeId: number, opts?: {
110
+ scrollIntoView?: boolean;
111
+ }) => Promise<Point>;
112
+ /** Resolve axis-aligned bounding rect for an element. `scrollIntoView` defaults to true. */
113
+ getBoxRect: (backendDOMNodeId: number, opts?: {
114
+ scrollIntoView?: boolean;
115
+ }) => Promise<ScreenshotClip>;
116
+ /** CDP-level mouse drag: press → N × move → release. */
117
+ dragBetweenPositions: (from: Point, to: Point, opts?: DragOpts) => Promise<void>;
17
118
  };
18
119
  export type AXNode = {
19
120
  nodeId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cdp/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,oBAAoB,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,oBAAoB,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7C,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,aAAa,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,eAAe,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,YAAY,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,6FAA6F;IAC7F,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1C,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACvB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,UAAU,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CACzC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cdp/types.ts"],"names":[],"mappings":"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"}
package/dist/cdp/types.js CHANGED
@@ -1,2 +1,36 @@
1
- export {};
1
+ export var TargetType;
2
+ (function (TargetType) {
3
+ TargetType["Page"] = "page";
4
+ TargetType["Iframe"] = "iframe";
5
+ TargetType["SharedWorker"] = "shared_worker";
6
+ TargetType["ServiceWorker"] = "service_worker";
7
+ TargetType["Worker"] = "worker";
8
+ })(TargetType || (TargetType = {}));
9
+ export var MouseButton;
10
+ (function (MouseButton) {
11
+ MouseButton["Left"] = "left";
12
+ MouseButton["Right"] = "right";
13
+ MouseButton["Middle"] = "middle";
14
+ })(MouseButton || (MouseButton = {}));
15
+ export var ConsoleLevel;
16
+ (function (ConsoleLevel) {
17
+ ConsoleLevel["Log"] = "log";
18
+ ConsoleLevel["Info"] = "info";
19
+ ConsoleLevel["Warn"] = "warn";
20
+ ConsoleLevel["Error"] = "error";
21
+ ConsoleLevel["Debug"] = "debug";
22
+ })(ConsoleLevel || (ConsoleLevel = {}));
23
+ export var ConsoleSource;
24
+ (function (ConsoleSource) {
25
+ ConsoleSource["Runtime"] = "runtime";
26
+ ConsoleSource["Log"] = "log";
27
+ })(ConsoleSource || (ConsoleSource = {}));
28
+ export class EvaluationError extends Error {
29
+ stack;
30
+ constructor(message, stack) {
31
+ super(message);
32
+ this.stack = stack;
33
+ this.name = 'EvaluationError';
34
+ }
35
+ }
2
36
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cdp/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cdp/types.ts"],"names":[],"mappings":"AAQA,MAAM,CAAN,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,+BAAiB,CAAA;IACjB,4CAA8B,CAAA;IAC9B,8CAAgC,CAAA;IAChC,+BAAiB,CAAA;AACnB,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB;AA4BD,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,gCAAiB,CAAA;AACnB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAYD,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,2BAAW,CAAA;IACX,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,+BAAe,CAAA;IACf,+BAAe,CAAA;AACjB,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;AAED,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,4BAAW,CAAA;AACb,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAgBD,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACK;IAA7C,YAAY,OAAe,EAAkB,KAAc;QACzD,KAAK,CAAC,OAAO,CAAC,CAAA;QAD6B,UAAK,GAAL,KAAK,CAAS;QAEzD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import type { AgentViewConfig } from '../../config/types.js';
2
+ export type ConsoleOptions = {
3
+ target?: string;
4
+ follow?: boolean;
5
+ timeout?: number;
6
+ until?: string;
7
+ level?: string;
8
+ since?: string;
9
+ clear?: boolean;
10
+ };
11
+ export declare function runConsole(config: AgentViewConfig, options: ConsoleOptions): Promise<void>;
12
+ //# sourceMappingURL=console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/console.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiChG"}
@@ -0,0 +1,32 @@
1
+ import { sendCommand } from '../client.js';
2
+ export async function runConsole(config, options) {
3
+ const levels = options.level
4
+ ? options.level.split(',').map(s => s.trim().toLowerCase()).filter(Boolean)
5
+ : undefined;
6
+ const since = options.since ? Date.parse(options.since) : undefined;
7
+ if (options.since && Number.isNaN(since)) {
8
+ console.error(`Invalid --since timestamp: "${options.since}"`);
9
+ process.exit(1);
10
+ }
11
+ const response = await sendCommand({
12
+ command: 'console',
13
+ port: config.port,
14
+ runtime: config.runtime,
15
+ args: {
16
+ target: options.target,
17
+ follow: options.follow,
18
+ timeout: options.timeout,
19
+ until: options.until,
20
+ levels,
21
+ since,
22
+ clear: options.clear,
23
+ cwd: process.cwd(),
24
+ },
25
+ });
26
+ if (!response.ok) {
27
+ console.error(`Error: ${response.error}`);
28
+ process.exit(1);
29
+ }
30
+ console.log(response.data);
31
+ }
32
+ //# sourceMappingURL=console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/cli/commands/console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAa1C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAuB,EAAE,OAAuB;IAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK;QAC1B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3E,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACnE,IAAI,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,+BAA+B,OAAO,CAAC,KAAK,GAAG,CAAC,CAAA;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE;YACJ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM;YACN,KAAK;YACL,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;SACnB;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC"}