@petukhovart/agent-view 0.1.0 → 0.3.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 (101) hide show
  1. package/.claude-plugin/plugin.json +12 -1
  2. package/README.md +101 -2
  3. package/dist/adapters/browser.d.ts.map +1 -1
  4. package/dist/adapters/browser.js +11 -11
  5. package/dist/adapters/browser.js.map +1 -1
  6. package/dist/adapters/electron.d.ts.map +1 -1
  7. package/dist/adapters/electron.js +11 -11
  8. package/dist/adapters/electron.js.map +1 -1
  9. package/dist/adapters/tauri.d.ts.map +1 -1
  10. package/dist/adapters/tauri.js +11 -11
  11. package/dist/adapters/tauri.js.map +1 -1
  12. package/dist/adapters/types.d.ts +5 -2
  13. package/dist/adapters/types.d.ts.map +1 -1
  14. package/dist/cdp/_tests/console-stream.d.ts +35 -0
  15. package/dist/cdp/_tests/console-stream.d.ts.map +1 -0
  16. package/dist/cdp/_tests/console-stream.js +103 -0
  17. package/dist/cdp/_tests/console-stream.js.map +1 -0
  18. package/dist/cdp/ax-cache.d.ts +9 -0
  19. package/dist/cdp/ax-cache.d.ts.map +1 -0
  20. package/dist/cdp/ax-cache.js +24 -0
  21. package/dist/cdp/ax-cache.js.map +1 -0
  22. package/dist/cdp/console-stream.d.ts +35 -0
  23. package/dist/cdp/console-stream.d.ts.map +1 -0
  24. package/dist/cdp/console-stream.js +103 -0
  25. package/dist/cdp/console-stream.js.map +1 -0
  26. package/dist/cdp/transport.d.ts +5 -2
  27. package/dist/cdp/transport.d.ts.map +1 -1
  28. package/dist/cdp/transport.js +236 -24
  29. package/dist/cdp/transport.js.map +1 -1
  30. package/dist/cdp/types.d.ts +66 -8
  31. package/dist/cdp/types.d.ts.map +1 -1
  32. package/dist/cdp/types.js +29 -1
  33. package/dist/cdp/types.js.map +1 -1
  34. package/dist/cli/commands/console.d.ts +11 -0
  35. package/dist/cli/commands/console.d.ts.map +1 -0
  36. package/dist/cli/commands/console.js +31 -0
  37. package/dist/cli/commands/console.js.map +1 -0
  38. package/dist/cli/commands/dom.d.ts +1 -0
  39. package/dist/cli/commands/dom.d.ts.map +1 -1
  40. package/dist/cli/commands/dom.js +1 -0
  41. package/dist/cli/commands/dom.js.map +1 -1
  42. package/dist/cli/commands/eval.d.ts +9 -0
  43. package/dist/cli/commands/eval.d.ts.map +1 -0
  44. package/dist/cli/commands/eval.js +30 -0
  45. package/dist/cli/commands/eval.js.map +1 -0
  46. package/dist/cli/commands/screenshot.d.ts +1 -0
  47. package/dist/cli/commands/screenshot.d.ts.map +1 -1
  48. package/dist/cli/commands/screenshot.js +2 -0
  49. package/dist/cli/commands/screenshot.js.map +1 -1
  50. package/dist/cli/commands/targets.d.ts +7 -0
  51. package/dist/cli/commands/targets.d.ts.map +1 -0
  52. package/dist/cli/commands/targets.js +30 -0
  53. package/dist/cli/commands/targets.js.map +1 -0
  54. package/dist/cli/index.js +39 -1
  55. package/dist/cli/index.js.map +1 -1
  56. package/dist/config/manager.d.ts.map +1 -1
  57. package/dist/config/manager.js +10 -0
  58. package/dist/config/manager.js.map +1 -1
  59. package/dist/config/types.d.ts +11 -0
  60. package/dist/config/types.d.ts.map +1 -1
  61. package/dist/inspectors/dom/index.d.ts +17 -0
  62. package/dist/inspectors/dom/index.d.ts.map +1 -0
  63. package/dist/inspectors/dom/index.js +131 -0
  64. package/dist/inspectors/dom/index.js.map +1 -0
  65. package/dist/inspectors/scene/adapters/pixi/adapter.d.ts +3 -0
  66. package/dist/inspectors/scene/adapters/pixi/adapter.d.ts.map +1 -0
  67. package/dist/inspectors/scene/adapters/pixi/adapter.js +51 -0
  68. package/dist/inspectors/scene/adapters/pixi/adapter.js.map +1 -0
  69. package/dist/inspectors/scene/adapters/pixi/index.d.ts +2 -0
  70. package/dist/inspectors/scene/adapters/pixi/index.d.ts.map +1 -0
  71. package/dist/inspectors/scene/adapters/pixi/index.js +2 -0
  72. package/dist/inspectors/scene/adapters/pixi/index.js.map +1 -0
  73. package/dist/inspectors/scene/adapters/pixi/injection.d.ts +39 -0
  74. package/dist/inspectors/scene/adapters/pixi/injection.d.ts.map +1 -0
  75. package/dist/inspectors/scene/adapters/pixi/injection.js +41 -0
  76. package/dist/inspectors/scene/adapters/pixi/injection.js.map +1 -0
  77. package/dist/inspectors/scene/formatter.d.ts +0 -1
  78. package/dist/inspectors/scene/formatter.d.ts.map +1 -1
  79. package/dist/inspectors/scene/formatter.js +52 -43
  80. package/dist/inspectors/scene/formatter.js.map +1 -1
  81. package/dist/inspectors/scene/index.d.ts +4 -4
  82. package/dist/inspectors/scene/index.d.ts.map +1 -1
  83. package/dist/inspectors/scene/index.js +8 -5
  84. package/dist/inspectors/scene/index.js.map +1 -1
  85. package/dist/inspectors/scene/pixi.js.map +1 -1
  86. package/dist/inspectors/scene/registry.d.ts +2 -2
  87. package/dist/inspectors/scene/registry.d.ts.map +1 -1
  88. package/dist/inspectors/scene/registry.js +8 -8
  89. package/dist/inspectors/scene/registry.js.map +1 -1
  90. package/dist/inspectors/scene/types.d.ts +5 -10
  91. package/dist/inspectors/scene/types.d.ts.map +1 -1
  92. package/dist/server/server.d.ts +23 -1
  93. package/dist/server/server.d.ts.map +1 -1
  94. package/dist/server/server.js +384 -62
  95. package/dist/server/server.js.map +1 -1
  96. package/dist/types.d.ts +2 -1
  97. package/dist/types.d.ts.map +1 -1
  98. package/dist/types.js +1 -0
  99. package/dist/types.js.map +1 -1
  100. package/package.json +10 -9
  101. package/skills/verify/SKILL.md +99 -15
@@ -0,0 +1,103 @@
1
+ const DEFAULT_CAPACITY = 500;
2
+ /**
3
+ * Multi-target console subscription with per-target ring buffer.
4
+ * Server owns one instance for its lifetime; commands attach/drain.
5
+ */
6
+ export class ConsoleStream {
7
+ capacity;
8
+ targets = new Map();
9
+ extraSubscribers = new Set();
10
+ constructor(opts = {}) {
11
+ this.capacity = opts.capacity ?? DEFAULT_CAPACITY;
12
+ }
13
+ get attachedCount() {
14
+ return this.targets.size;
15
+ }
16
+ /** Idempotent per target id — second attach for same id is a no-op. */
17
+ attach(session) {
18
+ const id = session.target.id;
19
+ if (this.targets.has(id))
20
+ return;
21
+ const entry = {
22
+ session,
23
+ ring: new Array(this.capacity),
24
+ cursor: 0,
25
+ full: false,
26
+ dispose: () => { },
27
+ };
28
+ entry.dispose = session.onConsole((msg) => {
29
+ const stamped = {
30
+ ...msg,
31
+ targetId: id,
32
+ targetType: session.target.type,
33
+ };
34
+ entry.ring[entry.cursor] = stamped;
35
+ entry.cursor = (entry.cursor + 1) % this.capacity;
36
+ if (entry.cursor === 0)
37
+ entry.full = true;
38
+ for (const sub of this.extraSubscribers) {
39
+ try {
40
+ sub(stamped);
41
+ }
42
+ catch { /* ignore */ }
43
+ }
44
+ });
45
+ this.targets.set(id, entry);
46
+ }
47
+ detach(targetId) {
48
+ if (targetId === undefined) {
49
+ for (const t of this.targets.values())
50
+ t.dispose();
51
+ this.targets.clear();
52
+ return;
53
+ }
54
+ const t = this.targets.get(targetId);
55
+ if (!t)
56
+ return;
57
+ t.dispose();
58
+ this.targets.delete(targetId);
59
+ }
60
+ clear(targetId) {
61
+ if (targetId === undefined) {
62
+ for (const t of this.targets.values()) {
63
+ t.cursor = 0;
64
+ t.full = false;
65
+ }
66
+ return;
67
+ }
68
+ const t = this.targets.get(targetId);
69
+ if (!t)
70
+ return;
71
+ t.cursor = 0;
72
+ t.full = false;
73
+ }
74
+ /** Snapshot of buffered messages, sorted by timestamp (oldest first). */
75
+ drain(filter = {}) {
76
+ const result = [];
77
+ for (const [id, entry] of this.targets) {
78
+ if (filter.targetId && filter.targetId !== id)
79
+ continue;
80
+ const msgs = this.snapshot(entry);
81
+ for (const m of msgs) {
82
+ if (filter.since !== undefined && m.ts < filter.since)
83
+ continue;
84
+ if (filter.level && !filter.level.has(m.level))
85
+ continue;
86
+ result.push(m);
87
+ }
88
+ }
89
+ result.sort((a, b) => a.ts - b.ts);
90
+ return result;
91
+ }
92
+ /** Subscribe to live messages. Returns disposer. Used by --follow streaming. */
93
+ subscribe(handler) {
94
+ this.extraSubscribers.add(handler);
95
+ return () => this.extraSubscribers.delete(handler);
96
+ }
97
+ snapshot(entry) {
98
+ if (!entry.full)
99
+ return entry.ring.slice(0, entry.cursor);
100
+ return [...entry.ring.slice(entry.cursor), ...entry.ring.slice(0, entry.cursor)];
101
+ }
102
+ }
103
+ //# sourceMappingURL=console-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-stream.js","sourceRoot":"","sources":["../../src/cdp/console-stream.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
- import type { CDPConnection, CDPTarget } from './types.js';
1
+ import { type CDPTarget, type TargetInfo, type RuntimeSession, type PageSession } from './types.js';
2
+ import type { AxTreeCache } from './ax-cache.js';
2
3
  export declare function listTargets(port: number): Promise<CDPTarget[]>;
3
- export declare function connectToTarget(port: number, targetId: string): Promise<CDPConnection>;
4
+ export declare function listSupportedTargets(port: number): Promise<TargetInfo[]>;
5
+ export declare function connectToRuntime(port: number, target: TargetInfo): Promise<RuntimeSession>;
6
+ export declare function connectToPage(port: number, target: TargetInfo, cache: AxTreeCache): Promise<PageSession>;
4
7
  //# sourceMappingURL=transport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/cdp/transport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAU,MAAM,YAAY,CAAA;AAQlE,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAkBpE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAwE5F"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/cdp/transport.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,SAAS,EAGd,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAGjB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAoBhD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAkBpE;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAQ9E;AAsKD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAmBhG;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,WAAW,CAAC,CAmItB"}
@@ -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, } 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,40 +34,241 @@ 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
+ Page.frameNavigated(async () => {
208
+ cache.invalidate(cacheKey);
209
+ try {
210
+ const { root: newRoot } = await DOM.getDocument({ depth: 0 });
211
+ documentBackendNodeId = newRoot.backendNodeId;
212
+ }
213
+ catch { /* ignore refresh errors — next queryAXTree call will fall back */ }
214
+ });
32
215
  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 });
216
+ const pressed = Input.dispatchMouseEvent({ type: 'mousePressed', x, y, button: 'left', clickCount: 1 });
217
+ const released = Input.dispatchMouseEvent({ type: 'mouseReleased', x, y, button: 'left', clickCount: 1 });
218
+ await Promise.all([pressed, released]);
35
219
  }
36
220
  return {
37
- async evaluate(expression) {
38
- const { result } = await Runtime.evaluate({
39
- expression,
40
- returnByValue: true,
41
- });
42
- return result.value;
43
- },
221
+ target,
222
+ evaluate: (expression, opts) => evaluateImpl(client, expression, opts),
223
+ onConsole: (handler) => consoleSub.add(handler),
44
224
  async getAccessibilityTree() {
225
+ const cached = cache.get(cacheKey);
226
+ if (cached)
227
+ return cached;
45
228
  const { nodes } = await Accessibility.getFullAXTree();
229
+ cache.set(cacheKey, nodes);
46
230
  return nodes;
47
231
  },
48
- async captureScreenshot() {
49
- const { data } = await Page.captureScreenshot({ format: 'png' });
232
+ async queryAXTree({ accessibleName, role }) {
233
+ if (queryAXTreeAvailable === false)
234
+ return null;
235
+ try {
236
+ const { nodes } = await Accessibility.queryAXTree({
237
+ backendNodeId: documentBackendNodeId,
238
+ accessibleName,
239
+ role,
240
+ });
241
+ queryAXTreeAvailable = true;
242
+ return nodes;
243
+ }
244
+ catch {
245
+ queryAXTreeAvailable = false;
246
+ return null;
247
+ }
248
+ },
249
+ async captureScreenshot(opts) {
250
+ const scale = opts?.scale ?? 1;
251
+ if (scale >= 1) {
252
+ const { data } = await Page.captureScreenshot({ format: 'png' });
253
+ return Buffer.from(data, 'base64');
254
+ }
255
+ const { cssLayoutViewport } = await Page.getLayoutMetrics();
256
+ const { data } = await Page.captureScreenshot({
257
+ format: 'jpeg',
258
+ quality: 80,
259
+ clip: { x: 0, y: 0, width: cssLayoutViewport.clientWidth, height: cssLayoutViewport.clientHeight, scale },
260
+ });
50
261
  return Buffer.from(data, 'base64');
51
262
  },
52
263
  async clickByNodeId(backendNodeId) {
53
- const { object } = await DOM.resolveNode({ backendNodeId });
264
+ const [{ object }, { model }] = await Promise.all([
265
+ DOM.resolveNode({ backendNodeId }),
266
+ DOM.getBoxModel({ backendNodeId }),
267
+ ]);
54
268
  await Runtime.callFunctionOn({
55
269
  objectId: object.objectId,
56
270
  functionDeclaration: 'function() { this.scrollIntoViewIfNeeded() }',
57
271
  });
58
- const { model } = await DOM.getBoxModel({ backendNodeId });
59
272
  const [x1, y1, x2, y2, x3, y3, x4, y4] = model.content;
60
273
  const cx = (x1 + x2 + x3 + x4) / 4;
61
274
  const cy = (y1 + y2 + y3 + y4) / 4;
@@ -67,16 +280,15 @@ export async function connectToTarget(port, targetId) {
67
280
  async fillByNodeId(backendNodeId, value) {
68
281
  const { object } = await DOM.resolveNode({ backendNodeId });
69
282
  await DOM.focus({ backendNodeId });
70
- // Set value and dispatch input/change events for framework reactivity
71
283
  await Runtime.callFunctionOn({
72
284
  objectId: object.objectId,
73
- functionDeclaration: `function(val) {
74
- const nativeSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')?.set
75
- || Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, 'value')?.set;
76
- if (nativeSetter) nativeSetter.call(this, val);
77
- else this.value = val;
78
- this.dispatchEvent(new Event('input', { bubbles: true }));
79
- this.dispatchEvent(new Event('change', { bubbles: true }));
285
+ functionDeclaration: `function(val) {
286
+ const nativeSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')?.set
287
+ || Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, 'value')?.set;
288
+ if (nativeSetter) nativeSetter.call(this, val);
289
+ else this.value = val;
290
+ this.dispatchEvent(new Event('input', { bubbles: true }));
291
+ this.dispatchEvent(new Event('change', { bubbles: true }));
80
292
  }`,
81
293
  arguments: [{ value }],
82
294
  });
@@ -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":"AAAA,kEAAkE;AAClE,OAAO,GAAG,MAAM,yBAAyB,CAAA;AACzC,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,eAAe,GAShB,MAAM,YAAY,CAAA;AAGnB,gFAAgF;AAChF,MAAM,SAAS,GAAG,CAAC,WAAW,EAAE,KAAK,CAAU,CAAA;AAE/C,8CAA8C;AAC9C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAA;AAE/C,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;AAElF,SAAS,YAAY,CAAC,CAAY;IAChC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAChD,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAkB;QAC1B,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;QACpB,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;KACjB,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,MAAM,MAAM,GAAgB,EAAE,CAAA;IAE9B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAC9C,KAAK,MAAM,CAAC,IAAI,OAAsB,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;oBACd,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;oBAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,MAAM,GAAiB,EAAE,CAAA;IAC/B,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;QAC5B,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AA+CD,MAAM,qBAAqB,GAAiC;IAC1D,GAAG,EAAE,YAAY,CAAC,GAAG;IACrB,IAAI,EAAE,YAAY,CAAC,IAAI;IACvB,IAAI,EAAE,YAAY,CAAC,IAAI;IACvB,OAAO,EAAE,YAAY,CAAC,IAAI;IAC1B,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,KAAK,EAAE,YAAY,CAAC,KAAK;CAC1B,CAAA;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,GAAG,CAAA;AACxD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,KAAK,CAAA;IAClD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,IAAI,CAAA;IACjD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QAClF,OAAO,KAAqB,CAAA;IAC9B,CAAC;IACD,OAAO,YAAY,CAAC,GAAG,CAAA;AACzB,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAiB;IAC3C,IAAI,GAAG,CAAC,mBAAmB,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IACjF,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,KAAK,CAAA;QACnD,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAAC,CAAC;IAC7E,CAAC;IACD,IAAI,GAAG,CAAC,WAAW;QAAE,OAAO,GAAG,CAAC,WAAW,CAAA;IAC3C,IAAI,GAAG,CAAC,IAAI;QAAE,OAAO,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAA;IAC3E,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA2C;IACnE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM;QAAE,OAAO,SAAS,CAAA;IAChD,OAAO,KAAK,CAAC,UAAU;SACpB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,YAAY,IAAI,aAAa,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC;SAClH,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAoB;IACrD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAA;IAEzD,MAAM,IAAI,GAAG,CAAC,GAAmB,EAAQ,EAAE;QACzC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC;gBAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,4CAA4C,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,MAA6B,EAAQ,EAAE;QAC/D,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACjC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACzF,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC1E,IAAI,CAAC;YACH,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YACd,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC;YACxC,MAAM,EAAE,aAAa,CAAC,OAAO;YAC7B,IAAI;YACJ,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC;SAC3C,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,CAAC,MAA0B,EAAQ,EAAE;QAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACjC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAClG,CAAC;QACD,IAAI,CAAC;YACH,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YACd,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5C,MAAM,EAAE,aAAa,CAAC,GAAG;YACzB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;YACvB,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SACjD,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,qEAAqE;IACrE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;IACjD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;IAErC,OAAO;QACL,IAAI;QACJ,GAAG,CAAC,OAAO;YACT,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACrB,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACvC,CAAC;KACF,CAAA;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,MAAoB,EACpB,UAAkB,EAClB,IAA8B;IAE9B,MAAM,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,IAAI,CAAA;IACjD,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,KAAK,CAAA;IAChD,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;QACjE,UAAU;QACV,aAAa;QACb,YAAY;KACb,CAAC,CAAA;IACF,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,EAAE,WAAW;eAC/C,gBAAgB,CAAC,IAAI;eACrB,mBAAmB,CAAA;QACxB,MAAM,IAAI,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;IAC3E,CAAC;IACD,IAAI,aAAa;QAAE,OAAO,MAAM,CAAC,KAAK,CAAA;IACtC,OAAO,MAAM,CAAA;AACf,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,MAAkB;IACxD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAA;IACrE,OAAO,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAiB,CAAA;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAkB;IACrE,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,+BAA+B,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IACtF,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7C,gFAAgF;IAChF,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACpD,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;IAC7B,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA;IAEzB,OAAO;QACL,MAAM;QACN,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC;QACtE,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/C,KAAK,CAAC,KAAK;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,MAAkB,EAClB,KAAkB;IAElB,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,qDAAqD,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACrF,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IACnF,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7C,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAKpD,CAAA;IACD,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,MAAM,CAAC,EAAE,EAAE,CAAA;IAEvC,2FAA2F;IAC3F,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACpD,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;IACnB,MAAM,GAAG,CAAC,MAAM,EAAE,CAAA;IAClB,MAAM,aAAa,CAAC,MAAM,EAAE,CAAA;IAC5B,MAAM,OAAO,CAAC,MAAM,EAAE,CAAA;IACtB,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA;IAEzB,kFAAkF;IAClF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;IACpD,IAAI,qBAAqB,GAAW,IAAI,CAAC,aAAa,CAAA;IAEtD,mFAAmF;IACnF,IAAI,oBAAoB,GAAmB,IAAI,CAAA;IAE/C,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE;QAC7B,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAC1B,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7D,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAA;QAC/C,CAAC;QAAC,MAAM,CAAC,CAAC,kEAAkE,CAAC,CAAC;IAChF,CAAC,CAAC,CAAA;IAEF,KAAK,UAAU,aAAa,CAAC,CAAS,EAAE,CAAS;QAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;QACvG,MAAM,QAAQ,GAAG,KAAK,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;QACzG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,OAAO;QACL,MAAM;QAEN,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC;QACtE,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;QAE/C,KAAK,CAAC,oBAAoB;YACxB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAClC,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAA;YACzB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,aAAa,EAAE,CAAA;YACrD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC1B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,EAAE,cAAc,EAAE,IAAI,EAA8C;YACpF,IAAI,oBAAoB,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAA;YAC/C,IAAI,CAAC;gBACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC;oBAChD,aAAa,EAAE,qBAAqB;oBACpC,cAAc;oBACd,IAAI;iBACL,CAAC,CAAA;gBACF,oBAAoB,GAAG,IAAI,CAAA;gBAC3B,OAAO,KAAK,CAAA;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,oBAAoB,GAAG,KAAK,CAAA;gBAC5B,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,IAAqB;YAC3C,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,CAAA;YAC9B,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;gBAChE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACpC,CAAC;YACD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;YAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;gBAC5C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,iBAAiB,CAAC,YAAY,EAAE,KAAK,EAAE;aAC1G,CAAC,CAAA;YACF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACpC,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,aAAqB;YACvC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChD,GAAG,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;gBAClC,GAAG,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;aACnC,CAAC,CAAA;YACF,MAAM,OAAO,CAAC,cAAc,CAAC;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,mBAAmB,EAAE,8CAA8C;aACpE,CAAC,CAAA;YACF,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAA;YACtD,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;YAClC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;YAClC,MAAM,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAC7B,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,CAAS,EAAE,CAAS;YACxC,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3B,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,aAAqB,EAAE,KAAa;YACrD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC,CAAA;YAC3D,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC,CAAA;YAClC,MAAM,OAAO,CAAC,cAAc,CAAC;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,mBAAmB,EAAE;;;;;;;UAOnB;gBACF,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;aACvB,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,KAAK;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -3,17 +3,75 @@ 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 ScreenshotOpts = {
22
+ /** Scale factor (0 < scale ≤ 1). Values < 1 use JPEG at 80% quality to reduce token cost. */
23
+ scale?: number;
24
+ };
25
+ export declare enum ConsoleLevel {
26
+ Log = "log",
27
+ Info = "info",
28
+ Warn = "warn",
29
+ Error = "error",
30
+ Debug = "debug"
31
+ }
32
+ export declare enum ConsoleSource {
33
+ Runtime = "runtime",
34
+ Log = "log"
35
+ }
36
+ export type ConsoleMessage = {
37
+ ts: number;
38
+ level: ConsoleLevel;
39
+ source: ConsoleSource;
40
+ text: string;
41
+ stack?: string;
42
+ };
43
+ export type EvaluateOpts = {
44
+ awaitPromise?: boolean;
45
+ /** When true, return the raw RemoteObject instead of unwrapped value. Used by the eval CLI to format DOM nodes etc. */
46
+ returnByValue?: boolean;
47
+ };
48
+ export declare class EvaluationError extends Error {
49
+ readonly stack?: string | undefined;
50
+ constructor(message: string, stack?: string | undefined);
51
+ }
52
+ export type RuntimeSession = {
53
+ readonly target: TargetInfo;
54
+ /**
55
+ * Run JS in the target. Returns the unwrapped value (returnByValue: true by default).
56
+ * Throws `EvaluationError` if the script throws or has a syntax error.
57
+ * Only pass trusted, hardcoded expressions or expressions explicitly authorized via `allowEval`.
58
+ */
59
+ evaluate: (expression: string, opts?: EvaluateOpts) => Promise<unknown>;
60
+ /** Subscribe to normalized console events. Returns disposer. Multiple subscribers share the underlying CDP subscription. */
61
+ onConsole: (handler: (msg: ConsoleMessage) => void) => () => void;
62
+ close: () => Promise<void>;
63
+ };
64
+ export type PageSession = RuntimeSession & {
9
65
  getAccessibilityTree: () => Promise<AXNode[]>;
10
- captureScreenshot: () => Promise<Buffer>;
11
- clickByNodeId: (backendNodeId: number) => Promise<void>;
66
+ /** Returns matching nodes by accessible name/role. null = API unavailable; [] = no match. */
67
+ queryAXTree: (params: {
68
+ accessibleName?: string;
69
+ role?: string;
70
+ }) => Promise<AXNode[] | null>;
71
+ captureScreenshot: (opts?: ScreenshotOpts) => Promise<Buffer>;
72
+ clickByNodeId: (backendDOMNodeId: number) => Promise<void>;
12
73
  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>;
74
+ fillByNodeId: (backendDOMNodeId: number, value: string) => Promise<void>;
17
75
  };
18
76
  export type AXNode = {
19
77
  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":"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,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,YAAY,kBAAkB;IAC9B,aAAa,mBAAmB;IAChC,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,6FAA6F;IAC7F,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,oBAAY,YAAY;IACtB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,aAAa,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,uHAAuH;IACvH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,qBAAa,eAAgB,SAAQ,KAAK;aACK,KAAK,CAAC,EAAE,MAAM;gBAA/C,OAAO,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,MAAM,YAAA;CAI5D;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B;;;;OAIG;IACH,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACvE,4HAA4H;IAC5H,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;IACjE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG;IACzC,oBAAoB,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7C,6FAA6F;IAC7F,WAAW,EAAE,CAAC,MAAM,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;IAC7F,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7D,aAAa,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,eAAe,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,YAAY,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACzE,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"}
package/dist/cdp/types.js CHANGED
@@ -1,2 +1,30 @@
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 ConsoleLevel;
10
+ (function (ConsoleLevel) {
11
+ ConsoleLevel["Log"] = "log";
12
+ ConsoleLevel["Info"] = "info";
13
+ ConsoleLevel["Warn"] = "warn";
14
+ ConsoleLevel["Error"] = "error";
15
+ ConsoleLevel["Debug"] = "debug";
16
+ })(ConsoleLevel || (ConsoleLevel = {}));
17
+ export var ConsoleSource;
18
+ (function (ConsoleSource) {
19
+ ConsoleSource["Runtime"] = "runtime";
20
+ ConsoleSource["Log"] = "log";
21
+ })(ConsoleSource || (ConsoleSource = {}));
22
+ export class EvaluationError extends Error {
23
+ stack;
24
+ constructor(message, stack) {
25
+ super(message);
26
+ this.stack = stack;
27
+ this.name = 'EvaluationError';
28
+ }
29
+ }
2
30
  //# 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;AAcD,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,11 @@
1
+ import type { AgentViewConfig } from '../../config/types.js';
2
+ export type ConsoleOptions = {
3
+ target?: string;
4
+ follow?: boolean;
5
+ timeout?: number;
6
+ level?: string;
7
+ since?: string;
8
+ clear?: boolean;
9
+ };
10
+ export declare function runConsole(config: AgentViewConfig, options: ConsoleOptions): Promise<void>;
11
+ //# 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,OAAO,CAAA;CAChB,CAAA;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChG"}
@@ -0,0 +1,31 @@
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
+ levels,
20
+ since,
21
+ clear: options.clear,
22
+ cwd: process.cwd(),
23
+ },
24
+ });
25
+ if (!response.ok) {
26
+ console.error(`Error: ${response.error}`);
27
+ process.exit(1);
28
+ }
29
+ console.log(response.data);
30
+ }
31
+ //# 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;AAY1C,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,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"}