@vforsh/argus 0.1.10 → 0.1.12

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 (146) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/argus.js +4781 -4880
  3. package/dist/bin.js +4 -47
  4. package/dist/bin.js.map +1 -1
  5. package/dist/cdp/sendCdpCommand.d.ts +11 -0
  6. package/dist/cdp/sendCdpCommand.d.ts.map +1 -0
  7. package/dist/cdp/sendCdpCommand.js +103 -0
  8. package/dist/cdp/sendCdpCommand.js.map +1 -0
  9. package/dist/cli/program.d.ts.map +1 -1
  10. package/dist/cli/program.js +2 -1
  11. package/dist/cli/program.js.map +1 -1
  12. package/dist/cli/register/domCommandBuilder.d.ts +22 -0
  13. package/dist/cli/register/domCommandBuilder.d.ts.map +1 -0
  14. package/dist/cli/register/domCommandBuilder.js +33 -0
  15. package/dist/cli/register/domCommandBuilder.js.map +1 -0
  16. package/dist/cli/register/index.d.ts +4 -0
  17. package/dist/cli/register/index.d.ts.map +1 -0
  18. package/dist/cli/register/index.js +45 -0
  19. package/dist/cli/register/index.js.map +1 -0
  20. package/dist/cli/register/registerDom.d.ts.map +1 -1
  21. package/dist/cli/register/registerDom.js +138 -121
  22. package/dist/cli/register/registerDom.js.map +1 -1
  23. package/dist/commands/chrome/browser.d.ts +5 -0
  24. package/dist/commands/chrome/browser.d.ts.map +1 -0
  25. package/dist/commands/chrome/browser.js +71 -0
  26. package/dist/commands/chrome/browser.js.map +1 -0
  27. package/dist/commands/chrome/processes.d.ts +24 -0
  28. package/dist/commands/chrome/processes.d.ts.map +1 -0
  29. package/dist/commands/chrome/processes.js +115 -0
  30. package/dist/commands/chrome/processes.js.map +1 -0
  31. package/dist/commands/chrome/shared.d.ts +31 -0
  32. package/dist/commands/chrome/shared.d.ts.map +1 -0
  33. package/dist/commands/chrome/shared.js +48 -0
  34. package/dist/commands/chrome/shared.js.map +1 -0
  35. package/dist/commands/chrome/targets.d.ts +26 -0
  36. package/dist/commands/chrome/targets.d.ts.map +1 -0
  37. package/dist/commands/chrome/targets.js +240 -0
  38. package/dist/commands/chrome/targets.js.map +1 -0
  39. package/dist/commands/chrome.d.ts +6 -63
  40. package/dist/commands/chrome.d.ts.map +1 -1
  41. package/dist/commands/chrome.js +3 -609
  42. package/dist/commands/chrome.js.map +1 -1
  43. package/dist/commands/chromeStart.d.ts.map +1 -1
  44. package/dist/commands/chromeStart.js +14 -44
  45. package/dist/commands/chromeStart.js.map +1 -1
  46. package/dist/commands/dom/shared.d.ts +12 -0
  47. package/dist/commands/dom/shared.d.ts.map +1 -0
  48. package/dist/commands/dom/shared.js +42 -0
  49. package/dist/commands/dom/shared.js.map +1 -0
  50. package/dist/commands/domAdd.d.ts.map +1 -1
  51. package/dist/commands/domAdd.js +11 -27
  52. package/dist/commands/domAdd.js.map +1 -1
  53. package/dist/commands/domClick.d.ts.map +1 -1
  54. package/dist/commands/domClick.js +14 -40
  55. package/dist/commands/domClick.js.map +1 -1
  56. package/dist/commands/domFill.d.ts.map +1 -1
  57. package/dist/commands/domFill.js +10 -31
  58. package/dist/commands/domFill.js.map +1 -1
  59. package/dist/commands/domFocus.d.ts.map +1 -1
  60. package/dist/commands/domFocus.js +11 -26
  61. package/dist/commands/domFocus.js.map +1 -1
  62. package/dist/commands/domHover.d.ts.map +1 -1
  63. package/dist/commands/domHover.js +11 -26
  64. package/dist/commands/domHover.js.map +1 -1
  65. package/dist/commands/domInfo.d.ts.map +1 -1
  66. package/dist/commands/domInfo.js +10 -25
  67. package/dist/commands/domInfo.js.map +1 -1
  68. package/dist/commands/domModify.d.ts.map +1 -1
  69. package/dist/commands/domModify.js +14 -26
  70. package/dist/commands/domModify.js.map +1 -1
  71. package/dist/commands/domRemove.d.ts.map +1 -1
  72. package/dist/commands/domRemove.js +10 -25
  73. package/dist/commands/domRemove.js.map +1 -1
  74. package/dist/commands/domScroll.d.ts.map +1 -1
  75. package/dist/commands/domScroll.js +7 -33
  76. package/dist/commands/domScroll.js.map +1 -1
  77. package/dist/commands/domScrollTo.d.ts.map +1 -1
  78. package/dist/commands/domScrollTo.js +7 -33
  79. package/dist/commands/domScrollTo.js.map +1 -1
  80. package/dist/commands/domSetFile.d.ts.map +1 -1
  81. package/dist/commands/domSetFile.js +14 -36
  82. package/dist/commands/domSetFile.js.map +1 -1
  83. package/dist/commands/domTree.d.ts.map +1 -1
  84. package/dist/commands/domTree.js +10 -25
  85. package/dist/commands/domTree.js.map +1 -1
  86. package/dist/commands/extension/setup.js +1 -1
  87. package/dist/commands/extension/setup.js.map +1 -1
  88. package/dist/commands/list.d.ts.map +1 -1
  89. package/dist/commands/list.js +3 -5
  90. package/dist/commands/list.js.map +1 -1
  91. package/dist/commands/logs.d.ts.map +1 -1
  92. package/dist/commands/logs.js +10 -57
  93. package/dist/commands/logs.js.map +1 -1
  94. package/dist/commands/net.d.ts.map +1 -1
  95. package/dist/commands/net.js +8 -22
  96. package/dist/commands/net.js.map +1 -1
  97. package/dist/commands/netTail.d.ts.map +1 -1
  98. package/dist/commands/netTail.js +11 -25
  99. package/dist/commands/netTail.js.map +1 -1
  100. package/dist/commands/page.d.ts.map +1 -1
  101. package/dist/commands/page.js +1 -99
  102. package/dist/commands/page.js.map +1 -1
  103. package/dist/commands/start.d.ts +1 -1
  104. package/dist/commands/start.d.ts.map +1 -1
  105. package/dist/commands/start.js +19 -86
  106. package/dist/commands/start.js.map +1 -1
  107. package/dist/commands/startShared.d.ts +32 -0
  108. package/dist/commands/startShared.d.ts.map +1 -0
  109. package/dist/commands/startShared.js +74 -0
  110. package/dist/commands/startShared.js.map +1 -0
  111. package/dist/commands/tail.d.ts.map +1 -1
  112. package/dist/commands/tail.js +8 -43
  113. package/dist/commands/tail.js.map +1 -1
  114. package/dist/commands/trace.d.ts.map +1 -1
  115. package/dist/commands/trace.js +7 -9
  116. package/dist/commands/trace.js.map +1 -1
  117. package/dist/commands/watcherSession.d.ts +29 -0
  118. package/dist/commands/watcherSession.d.ts.map +1 -0
  119. package/dist/commands/watcherSession.js +64 -0
  120. package/dist/commands/watcherSession.js.map +1 -0
  121. package/dist/commands/watcherStart.d.ts +1 -1
  122. package/dist/commands/watcherStart.d.ts.map +1 -1
  123. package/dist/commands/watcherStart.js +23 -89
  124. package/dist/commands/watcherStart.js.map +1 -1
  125. package/dist/config/argusConfig.d.ts.map +1 -1
  126. package/dist/config/argusConfig.js +69 -81
  127. package/dist/config/argusConfig.js.map +1 -1
  128. package/dist/eval/evalClient.js +5 -14
  129. package/dist/eval/evalClient.js.map +1 -1
  130. package/dist/httpClient.d.ts +1 -12
  131. package/dist/httpClient.d.ts.map +1 -1
  132. package/dist/httpClient.js +1 -84
  133. package/dist/httpClient.js.map +1 -1
  134. package/dist/runtime-code/strings.js +9 -1
  135. package/dist/runtime-code/strings.js.map +1 -1
  136. package/dist/watchers/queryParams.d.ts +34 -0
  137. package/dist/watchers/queryParams.d.ts.map +1 -0
  138. package/dist/watchers/queryParams.js +80 -0
  139. package/dist/watchers/queryParams.js.map +1 -0
  140. package/dist/watchers/requestWatcher.d.ts +16 -1
  141. package/dist/watchers/requestWatcher.d.ts.map +1 -1
  142. package/dist/watchers/requestWatcher.js +47 -9
  143. package/dist/watchers/requestWatcher.js.map +1 -1
  144. package/dist/watchers/resolveWatcher.js +2 -3
  145. package/dist/watchers/resolveWatcher.js.map +1 -1
  146. package/package.json +1 -1
@@ -1,610 +1,4 @@
1
- import { execFile } from 'node:child_process';
2
- import { resolveCdpEndpoint } from '../cdp/resolveCdpEndpoint.js';
3
- import { filterTargets, selectTargetFromCandidates } from '../cdp/selectTarget.js';
4
- import { fetchJson, fetchText } from '../httpClient.js';
5
- import { createOutput } from '../output/io.js';
6
- import { resolveWatcher } from '../watchers/resolveWatcher.js';
7
- const normalizeUrl = (url) => {
8
- if (url.startsWith('http://') || url.startsWith('https://')) {
9
- return url;
10
- }
11
- return `http://${url}`;
12
- };
13
- const getWebSocketCtor = () => {
14
- const ctor = globalThis.WebSocket;
15
- return ctor ?? null;
16
- };
17
- const toMessageText = (data) => {
18
- if (typeof data === 'string') {
19
- return data;
20
- }
21
- if (data instanceof ArrayBuffer) {
22
- return Buffer.from(data).toString('utf8');
23
- }
24
- if (Buffer.isBuffer(data)) {
25
- return data.toString('utf8');
26
- }
27
- return null;
28
- };
29
- const sendCdpCommand = async (wsUrl, payload, timeoutMs = 5_000) => {
30
- const WebSocketConstructor = getWebSocketCtor();
31
- if (!WebSocketConstructor) {
32
- throw new Error('WebSocket unavailable. Node 18+ required.');
33
- }
34
- const ws = new WebSocketConstructor(wsUrl);
35
- const requestId = payload.id;
36
- await new Promise((resolve, reject) => {
37
- let settled = false;
38
- const timer = setTimeout(() => {
39
- if (!settled) {
40
- settled = true;
41
- try {
42
- ws.close();
43
- }
44
- catch { }
45
- reject(new Error(`CDP command timed out after ${timeoutMs}ms`));
46
- }
47
- }, timeoutMs);
48
- const cleanup = () => {
49
- clearTimeout(timer);
50
- ws.removeEventListener?.('open', onOpen);
51
- ws.removeEventListener?.('message', onMessage);
52
- ws.removeEventListener?.('error', onError);
53
- ws.removeEventListener?.('close', onClose);
54
- };
55
- const finish = (error) => {
56
- if (settled) {
57
- return;
58
- }
59
- settled = true;
60
- cleanup();
61
- try {
62
- ws.close();
63
- }
64
- catch { }
65
- if (error) {
66
- reject(error);
67
- }
68
- else {
69
- resolve();
70
- }
71
- };
72
- const onOpen = () => {
73
- try {
74
- ws.send(JSON.stringify(payload));
75
- }
76
- catch (error) {
77
- finish(error instanceof Error ? error : new Error(String(error)));
78
- }
79
- };
80
- const onMessage = (event) => {
81
- const text = toMessageText(event.data);
82
- if (!text) {
83
- return;
84
- }
85
- try {
86
- const message = JSON.parse(text);
87
- if (message.id !== requestId) {
88
- return;
89
- }
90
- if (message.error?.message) {
91
- finish(new Error(message.error.message));
92
- return;
93
- }
94
- finish();
95
- }
96
- catch (error) {
97
- finish(error instanceof Error ? error : new Error(String(error)));
98
- }
99
- };
100
- const onError = () => {
101
- finish(new Error('WebSocket error'));
102
- };
103
- const onClose = () => {
104
- finish(new Error('WebSocket closed before response'));
105
- };
106
- ws.addEventListener('open', onOpen);
107
- ws.addEventListener('message', onMessage);
108
- ws.addEventListener('error', onError);
109
- ws.addEventListener('close', onClose);
110
- });
111
- };
112
- export const runChromeVersion = async (options) => {
113
- const output = createOutput(options);
114
- const endpoint = await resolveCdpEndpoint(options);
115
- if (!endpoint.ok) {
116
- output.writeWarn(endpoint.error);
117
- process.exitCode = endpoint.exitCode;
118
- return;
119
- }
120
- const url = `http://${endpoint.host}:${endpoint.port}/json/version`;
121
- let response;
122
- try {
123
- response = await fetchJson(url);
124
- }
125
- catch (error) {
126
- output.writeWarn(`Failed to connect to Chrome at ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
127
- process.exitCode = 1;
128
- return;
129
- }
130
- if (options.json) {
131
- output.writeJson(response);
132
- }
133
- else {
134
- output.writeHuman(`Browser: ${response.Browser}`);
135
- output.writeHuman(`WebSocket: ${response.webSocketDebuggerUrl}`);
136
- }
137
- };
138
- export const runChromeStatus = async (options) => {
139
- const output = createOutput(options);
140
- const endpoint = await resolveCdpEndpoint(options);
141
- if (!endpoint.ok) {
142
- output.writeWarn(endpoint.error);
143
- process.exitCode = endpoint.exitCode;
144
- return;
145
- }
146
- const url = `http://${endpoint.host}:${endpoint.port}/json/version`;
147
- let response;
148
- try {
149
- response = await fetchJson(url);
150
- }
151
- catch (error) {
152
- output.writeWarn(`Failed to connect to Chrome at ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
153
- process.exitCode = 1;
154
- return;
155
- }
156
- if (!response.Browser) {
157
- output.writeWarn(`invalid response from ${endpoint.host}:${endpoint.port}`);
158
- process.exitCode = 1;
159
- return;
160
- }
161
- if (options.json) {
162
- output.writeJson(response);
163
- }
164
- else {
165
- output.writeHuman(`ok ${endpoint.host}:${endpoint.port} ${response.Browser}`);
166
- }
167
- };
168
- export const runChromeTargets = async (options) => {
169
- const output = createOutput(options);
170
- if (options.id) {
171
- const resolved = await resolveWatcher({ id: options.id });
172
- if (!resolved.ok) {
173
- output.writeWarn(resolved.error);
174
- process.exitCode = resolved.exitCode;
175
- return;
176
- }
177
- if (resolved.watcher.source === 'extension') {
178
- let targets;
179
- try {
180
- const response = await fetchJson(`http://${resolved.watcher.host}:${resolved.watcher.port}/targets`);
181
- targets = response.targets;
182
- }
183
- catch (error) {
184
- output.writeWarn(`Failed to load watcher targets from ${resolved.watcher.id}: ${error instanceof Error ? error.message : error}`);
185
- process.exitCode = 1;
186
- return;
187
- }
188
- renderTargets(targets, { output, type: options.type, tree: options.tree, json: options.json });
189
- return;
190
- }
191
- }
192
- const endpoint = await resolveCdpEndpoint(options);
193
- if (!endpoint.ok) {
194
- output.writeWarn(endpoint.error);
195
- process.exitCode = endpoint.exitCode;
196
- return;
197
- }
198
- const url = `http://${endpoint.host}:${endpoint.port}/json/list`;
199
- let targets;
200
- try {
201
- targets = await fetchJson(url);
202
- }
203
- catch (error) {
204
- output.writeWarn(`Failed to connect to Chrome at ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
205
- process.exitCode = 1;
206
- return;
207
- }
208
- renderTargets(targets, { output, type: options.type, tree: options.tree, json: options.json });
209
- };
210
- const renderTargets = (targets, options) => {
211
- let filteredTargets = targets;
212
- if (options.type) {
213
- filteredTargets = filteredTargets.filter((target) => target.type === options.type);
214
- }
215
- if (options.json) {
216
- options.output.writeJson(filteredTargets);
217
- return;
218
- }
219
- if (options.tree) {
220
- renderTargetTree(filteredTargets, options.output);
221
- return;
222
- }
223
- for (const target of filteredTargets) {
224
- const title = target.title ? ` ${target.title}` : '';
225
- const targetUrl = target.url ? ` ${target.url}` : '';
226
- const parentInfo = target.parentId ? ` [parent: ${target.parentId.slice(0, 8)}...]` : '';
227
- options.output.writeHuman(`${target.id} ${target.type}${title}${targetUrl}${parentInfo}`);
228
- }
229
- };
230
- /**
231
- * Render targets as a tree showing parent-child relationships.
232
- */
233
- const renderTargetTree = (targets, output) => {
234
- // Build lookup maps
235
- const targetById = new Map(targets.map((t) => [t.id, t]));
236
- const childrenByParent = new Map();
237
- for (const target of targets) {
238
- const parentId = target.parentId ?? null;
239
- const children = childrenByParent.get(parentId) ?? [];
240
- children.push(target);
241
- childrenByParent.set(parentId, children);
242
- }
243
- // Find root targets (no parent or parent not in our list)
244
- const roots = targets.filter((t) => !t.parentId || !targetById.has(t.parentId));
245
- const renderNode = (target, prefix, isLast) => {
246
- const connector = isLast ? '└── ' : '├── ';
247
- const title = target.title || '(untitled)';
248
- const shortId = target.id.slice(0, 8) + '...';
249
- output.writeHuman(`${prefix}${connector}${title} (${target.type}, ${shortId})`);
250
- output.writeHuman(`${prefix}${isLast ? ' ' : '│ '}${target.url}`);
251
- const children = childrenByParent.get(target.id) ?? [];
252
- children.forEach((child, index) => {
253
- const childIsLast = index === children.length - 1;
254
- renderNode(child, prefix + (isLast ? ' ' : '│ '), childIsLast);
255
- });
256
- };
257
- if (roots.length === 0) {
258
- output.writeHuman('(no targets)');
259
- return;
260
- }
261
- roots.forEach((root, index) => {
262
- const isLast = index === roots.length - 1;
263
- const title = root.title || '(untitled)';
264
- const shortId = root.id.slice(0, 8) + '...';
265
- output.writeHuman(`${title} (${root.type}, ${shortId})`);
266
- output.writeHuman(`${root.url}`);
267
- const children = childrenByParent.get(root.id) ?? [];
268
- children.forEach((child, childIndex) => {
269
- const childIsLast = childIndex === children.length - 1;
270
- renderNode(child, '', childIsLast);
271
- });
272
- if (!isLast) {
273
- output.writeHuman('');
274
- }
275
- });
276
- };
277
- export const runChromeOpen = async (options) => {
278
- const output = createOutput(options);
279
- if (!options.url || options.url.trim() === '') {
280
- output.writeWarn('--url is required.');
281
- process.exitCode = 2;
282
- return;
283
- }
284
- const endpoint = await resolveCdpEndpoint(options);
285
- if (!endpoint.ok) {
286
- output.writeWarn(endpoint.error);
287
- process.exitCode = endpoint.exitCode;
288
- return;
289
- }
290
- const normalizedUrl = normalizeUrl(options.url.trim());
291
- const encodedUrl = encodeURIComponent(normalizedUrl);
292
- const url = `http://${endpoint.host}:${endpoint.port}/json/new?${encodedUrl}`;
293
- let target;
294
- try {
295
- target = await fetchJson(url, { method: 'PUT' });
296
- }
297
- catch (error) {
298
- output.writeWarn(`Failed to open tab: ${error instanceof Error ? error.message : error}`);
299
- process.exitCode = 1;
300
- return;
301
- }
302
- if (options.json) {
303
- output.writeJson(target);
304
- }
305
- else {
306
- output.writeHuman(`${target.id} ${target.url}`);
307
- }
308
- };
309
- export const runChromeActivate = async (options) => {
310
- const output = createOutput(options);
311
- const targetIdInput = options.targetId?.trim();
312
- const hasTargetId = Boolean(targetIdInput);
313
- const hasFilters = Boolean(options.title || options.url || options.match);
314
- if (hasTargetId && hasFilters) {
315
- output.writeWarn('Cannot combine targetId with --title/--url/--match.');
316
- process.exitCode = 2;
317
- return;
318
- }
319
- if (!hasTargetId && !hasFilters) {
320
- output.writeWarn('targetId or --title/--url/--match is required.');
321
- process.exitCode = 2;
322
- return;
323
- }
324
- const endpoint = await resolveCdpEndpoint(options);
325
- if (!endpoint.ok) {
326
- output.writeWarn(endpoint.error);
327
- process.exitCode = endpoint.exitCode;
328
- return;
329
- }
330
- let targetId = targetIdInput;
331
- if (!targetId) {
332
- const url = `http://${endpoint.host}:${endpoint.port}/json/list`;
333
- let targets;
334
- try {
335
- targets = await fetchJson(url);
336
- }
337
- catch (error) {
338
- output.writeWarn(`Failed to load targets from ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
339
- process.exitCode = 1;
340
- return;
341
- }
342
- const candidates = filterTargets(targets, { title: options.title, url: options.url, match: options.match });
343
- const selection = await selectTargetFromCandidates(candidates, output, {
344
- interactive: process.stdin.isTTY === true,
345
- messages: {
346
- empty: 'No targets matched the provided filters.',
347
- ambiguous: 'Multiple targets matched. Provide a narrower filter or a targetId.',
348
- },
349
- });
350
- if (!selection.ok) {
351
- output.writeWarn(selection.error);
352
- process.exitCode = selection.exitCode;
353
- return;
354
- }
355
- targetId = selection.target.id;
356
- }
357
- const activateUrl = `http://${endpoint.host}:${endpoint.port}/json/activate/${targetId}`;
358
- try {
359
- await fetchText(activateUrl);
360
- }
361
- catch (error) {
362
- output.writeWarn(`Failed to activate target: ${error instanceof Error ? error.message : error}`);
363
- process.exitCode = 1;
364
- return;
365
- }
366
- if (options.json) {
367
- output.writeJson({ activated: targetId });
368
- }
369
- else {
370
- output.writeHuman(`activated ${targetId}`);
371
- }
372
- };
373
- export const runChromeClose = async (options) => {
374
- const output = createOutput(options);
375
- if (!options.targetId || options.targetId.trim() === '') {
376
- output.writeWarn('targetId is required.');
377
- process.exitCode = 2;
378
- return;
379
- }
380
- const endpoint = await resolveCdpEndpoint(options);
381
- if (!endpoint.ok) {
382
- output.writeWarn(endpoint.error);
383
- process.exitCode = endpoint.exitCode;
384
- return;
385
- }
386
- const targetId = options.targetId.trim();
387
- const url = `http://${endpoint.host}:${endpoint.port}/json/close/${targetId}`;
388
- try {
389
- await fetchText(url);
390
- }
391
- catch (error) {
392
- output.writeWarn(`Failed to close target: ${error instanceof Error ? error.message : error}`);
393
- process.exitCode = 1;
394
- return;
395
- }
396
- if (options.json) {
397
- output.writeJson({ closed: targetId });
398
- }
399
- else {
400
- output.writeHuman(`closed ${targetId}`);
401
- }
402
- };
403
- export const runChromeStop = async (options) => {
404
- const output = createOutput(options);
405
- const endpoint = await resolveCdpEndpoint(options);
406
- if (!endpoint.ok) {
407
- output.writeWarn(endpoint.error);
408
- process.exitCode = endpoint.exitCode;
409
- return;
410
- }
411
- const url = `http://${endpoint.host}:${endpoint.port}/json/version`;
412
- let response;
413
- try {
414
- response = await fetchJson(url);
415
- }
416
- catch (error) {
417
- output.writeWarn(`Failed to connect to Chrome at ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
418
- process.exitCode = 1;
419
- return;
420
- }
421
- if (!response.webSocketDebuggerUrl) {
422
- output.writeWarn(`No browser WebSocket endpoint exposed at ${endpoint.host}:${endpoint.port}.`);
423
- process.exitCode = 1;
424
- return;
425
- }
426
- try {
427
- await sendCdpCommand(response.webSocketDebuggerUrl, { id: 1, method: 'Browser.close' });
428
- }
429
- catch (error) {
430
- output.writeWarn(`Failed to close Chrome at ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
431
- process.exitCode = 1;
432
- return;
433
- }
434
- if (options.json) {
435
- output.writeJson({ closed: true, host: endpoint.host, port: endpoint.port });
436
- }
437
- else {
438
- output.writeHuman(`closed ${endpoint.host}:${endpoint.port}`);
439
- }
440
- };
441
- export const runChromeReload = async (options) => {
442
- const output = createOutput(options);
443
- if (!options.targetId || options.targetId.trim() === '') {
444
- output.writeWarn('targetId is required.');
445
- process.exitCode = 2;
446
- return;
447
- }
448
- const endpoint = await resolveCdpEndpoint(options);
449
- if (!endpoint.ok) {
450
- output.writeWarn(endpoint.error);
451
- process.exitCode = endpoint.exitCode;
452
- return;
453
- }
454
- const targetId = options.targetId.trim();
455
- const targetsUrl = `http://${endpoint.host}:${endpoint.port}/json/list`;
456
- let targets;
457
- try {
458
- targets = await fetchJson(targetsUrl);
459
- }
460
- catch (error) {
461
- output.writeWarn(`Failed to load targets from ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
462
- process.exitCode = 1;
463
- return;
464
- }
465
- const target = targets.find((entry) => entry.id === targetId);
466
- if (!target) {
467
- output.writeWarn(`Target not found: ${targetId}`);
468
- process.exitCode = 2;
469
- return;
470
- }
471
- if (!target.webSocketDebuggerUrl) {
472
- output.writeWarn(`Target ${targetId} has no webSocketDebuggerUrl.`);
473
- process.exitCode = 1;
474
- return;
475
- }
476
- try {
477
- await sendCdpCommand(target.webSocketDebuggerUrl, { id: 1, method: 'Page.reload' });
478
- }
479
- catch (error) {
480
- output.writeWarn(`Failed to reload target ${targetId}: ${error instanceof Error ? error.message : error}`);
481
- process.exitCode = 1;
482
- return;
483
- }
484
- if (options.json) {
485
- output.writeJson({ reloaded: targetId, url: target.url });
486
- }
487
- else {
488
- output.writeHuman(`reloaded ${targetId}`);
489
- }
490
- };
491
- /** Discover reachable Chrome instances with CDP enabled. */
492
- export const discoverChromeInstances = async (options) => {
493
- const ports = await discoverChromeCdpPorts();
494
- if (ports.length === 0)
495
- return [];
496
- const results = await Promise.all(ports.map(async ({ port, pid }) => {
497
- try {
498
- const [version, targets] = await Promise.all([
499
- fetchJson(`http://127.0.0.1:${port}/json/version`, { timeoutMs: 2_000 }),
500
- fetchJson(`http://127.0.0.1:${port}/json/list`, { timeoutMs: 2_000 }),
501
- ]);
502
- const userPages = targets.filter((t) => t.type === 'page' && isUserPage(t.url));
503
- return {
504
- port,
505
- pid,
506
- reachable: true,
507
- browser: version.Browser,
508
- webSocketDebuggerUrl: version.webSocketDebuggerUrl,
509
- targets: targets.length,
510
- pages: userPages.length,
511
- ...(options?.pages && { pageDetails: userPages.map((p) => ({ title: p.title, url: p.url })) }),
512
- };
513
- }
514
- catch {
515
- return { port, pid, reachable: false };
516
- }
517
- }));
518
- return results.filter((r) => r.reachable);
519
- };
520
- /** Format a Chrome instance as a human-readable line. */
521
- export const formatChromeInstanceLine = (r) => `127.0.0.1:${r.port} pid=${r.pid} ${r.browser} ${r.pages} page${r.pages === 1 ? '' : 's'}`;
522
- export const runChromeList = async (options) => {
523
- const output = createOutput(options);
524
- const ports = await discoverChromeCdpPorts();
525
- if (ports.length === 0) {
526
- output.writeHuman('No Chrome instances found listening on TCP ports.');
527
- return;
528
- }
529
- const instances = await discoverChromeInstances(options);
530
- if (instances.length === 0) {
531
- output.writeHuman('Found Chrome processes listening on TCP, but none responded to CDP.');
532
- return;
533
- }
534
- if (options.json) {
535
- output.writeJson(instances);
536
- }
537
- else {
538
- for (const r of instances) {
539
- output.writeHuman(formatChromeInstanceLine(r));
540
- if (r.pageDetails) {
541
- for (const p of r.pageDetails) {
542
- output.writeHuman(` ${p.title} — ${p.url}`);
543
- }
544
- }
545
- }
546
- }
547
- };
548
- /**
549
- * Chrome-internal URLs that CDP reports as `type: "page"` but are not user-visible tabs.
550
- * Covers omnibox popups, NTP sub-frames, side panels, and other top-chrome UI surfaces.
551
- */
552
- const CHROME_INTERNAL_URL_PATTERN = /^(devtools|chrome-untrusted):\/\/|\.top-chrome\/|^chrome:\/\/newtab-footer\b/;
553
- /** Whether a CDP target URL represents a real user-visible page (tab). */
554
- const isUserPage = (url) => !CHROME_INTERNAL_URL_PATTERN.test(url);
555
- /**
556
- * Match Chrome/Chromium process names in lsof output.
557
- * With `+c 0`, macOS lsof escapes spaces as `\x20` (e.g. `Google\x20Chrome`).
558
- */
559
- const CHROME_NAME_PATTERN = /\b(google(\s|\\x20)*chrome|chromium|chrome)\b/i;
560
- /**
561
- * Discover Chrome processes listening on TCP ports via `lsof`.
562
- * Returns deduplicated `{ port, pid }` pairs.
563
- */
564
- const discoverChromeCdpPorts = async () => {
565
- let stdout;
566
- try {
567
- stdout = await new Promise((resolve, reject) => {
568
- execFile('lsof', ['+c', '0', '-iTCP', '-sTCP:LISTEN', '-P', '-n'], { timeout: 5_000 }, (error, out) => {
569
- if (error) {
570
- reject(error);
571
- return;
572
- }
573
- resolve(out);
574
- });
575
- });
576
- }
577
- catch {
578
- return [];
579
- }
580
- const seen = new Set();
581
- const results = [];
582
- for (const line of stdout.split('\n')) {
583
- if (!CHROME_NAME_PATTERN.test(line)) {
584
- continue;
585
- }
586
- // lsof columns: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
587
- // With +c 0, COMMAND can contain escaped spaces — PID is the first purely numeric column.
588
- const pidMatch = line.match(/\s+(\d+)\s+/);
589
- if (!pidMatch) {
590
- continue;
591
- }
592
- const pid = parseInt(pidMatch[1], 10);
593
- if (isNaN(pid)) {
594
- continue;
595
- }
596
- // NAME column is last, format: *:PORT or 127.0.0.1:PORT (LISTEN)
597
- const portMatch = line.match(/:(\d+)\s+\(LISTEN\)/);
598
- if (!portMatch) {
599
- continue;
600
- }
601
- const port = parseInt(portMatch[1], 10);
602
- if (isNaN(port) || seen.has(port)) {
603
- continue;
604
- }
605
- seen.add(port);
606
- results.push({ port, pid });
607
- }
608
- return results;
609
- };
1
+ export { runChromeVersion, runChromeStatus, runChromeStop } from './chrome/browser.js';
2
+ export { runChromeTargets, runChromeOpen, runChromeActivate, runChromeClose, runChromeReload } from './chrome/targets.js';
3
+ export { discoverChromeInstances, formatChromeInstanceLine, runChromeList } from './chrome/processes.js';
610
4
  //# sourceMappingURL=chrome.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/commands/chrome.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/commands/chrome.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACzH,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"chromeStart.d.ts","sourceRoot":"","sources":["../../src/commands/chromeStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAW7D,MAAM,MAAM,kBAAkB,GAAG;IAChC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,gBAAgB,GAAG,cAAc,CAAA;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAUD,MAAM,MAAM,mBAAmB,GAAG;IACjC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,gBAAgB,GAAG,cAAc,CAAA;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,YAAY,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,gFAAgF;IAChF,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,+FAA+F;IAC/F,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC,CAAA;AAiND;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAU,SAAS,mBAAmB,KAAG,OAAO,CAAC,kBAAkB,CA2H3F,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,SAAS,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAkF9E,CAAA"}
1
+ {"version":3,"file":"chromeStart.d.ts","sourceRoot":"","sources":["../../src/commands/chromeStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAa7D,MAAM,MAAM,kBAAkB,GAAG;IAChC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,gBAAgB,GAAG,cAAc,CAAA;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAUD,MAAM,MAAM,mBAAmB,GAAG;IACjC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,gBAAgB,GAAG,cAAc,CAAA;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,YAAY,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,gFAAgF;IAChF,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,+FAA+F;IAC/F,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC,CAAA;AAsLD;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAU,SAAS,mBAAmB,KAAG,OAAO,CAAC,kBAAkB,CA2H3F,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,SAAS,kBAAkB,KAAG,OAAO,CAAC,IAAI,CA0E9E,CAAA"}