@vforsh/argus 0.1.11 → 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 (100) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/argus.js +5881 -5892
  3. package/dist/bin.js +4 -47
  4. package/dist/bin.js.map +1 -1
  5. package/dist/cli/program.d.ts.map +1 -1
  6. package/dist/cli/program.js +2 -1
  7. package/dist/cli/program.js.map +1 -1
  8. package/dist/cli/register/domCommandBuilder.d.ts +22 -0
  9. package/dist/cli/register/domCommandBuilder.d.ts.map +1 -0
  10. package/dist/cli/register/domCommandBuilder.js +33 -0
  11. package/dist/cli/register/domCommandBuilder.js.map +1 -0
  12. package/dist/cli/register/index.d.ts +4 -0
  13. package/dist/cli/register/index.d.ts.map +1 -0
  14. package/dist/cli/register/index.js +45 -0
  15. package/dist/cli/register/index.js.map +1 -0
  16. package/dist/cli/register/registerDom.d.ts.map +1 -1
  17. package/dist/cli/register/registerDom.js +138 -121
  18. package/dist/cli/register/registerDom.js.map +1 -1
  19. package/dist/commands/chrome/browser.d.ts +5 -0
  20. package/dist/commands/chrome/browser.d.ts.map +1 -0
  21. package/dist/commands/chrome/browser.js +71 -0
  22. package/dist/commands/chrome/browser.js.map +1 -0
  23. package/dist/commands/chrome/processes.d.ts +24 -0
  24. package/dist/commands/chrome/processes.d.ts.map +1 -0
  25. package/dist/commands/chrome/processes.js +115 -0
  26. package/dist/commands/chrome/processes.js.map +1 -0
  27. package/dist/commands/chrome/shared.d.ts +31 -0
  28. package/dist/commands/chrome/shared.d.ts.map +1 -0
  29. package/dist/commands/chrome/shared.js +48 -0
  30. package/dist/commands/chrome/shared.js.map +1 -0
  31. package/dist/commands/chrome/targets.d.ts +26 -0
  32. package/dist/commands/chrome/targets.d.ts.map +1 -0
  33. package/dist/commands/chrome/targets.js +240 -0
  34. package/dist/commands/chrome/targets.js.map +1 -0
  35. package/dist/commands/chrome.d.ts +6 -63
  36. package/dist/commands/chrome.d.ts.map +1 -1
  37. package/dist/commands/chrome.js +3 -511
  38. package/dist/commands/chrome.js.map +1 -1
  39. package/dist/commands/dom/shared.d.ts +12 -0
  40. package/dist/commands/dom/shared.d.ts.map +1 -0
  41. package/dist/commands/dom/shared.js +42 -0
  42. package/dist/commands/dom/shared.js.map +1 -0
  43. package/dist/commands/domAdd.d.ts.map +1 -1
  44. package/dist/commands/domAdd.js +11 -27
  45. package/dist/commands/domAdd.js.map +1 -1
  46. package/dist/commands/domClick.d.ts.map +1 -1
  47. package/dist/commands/domClick.js +14 -40
  48. package/dist/commands/domClick.js.map +1 -1
  49. package/dist/commands/domFill.d.ts.map +1 -1
  50. package/dist/commands/domFill.js +10 -31
  51. package/dist/commands/domFill.js.map +1 -1
  52. package/dist/commands/domFocus.d.ts.map +1 -1
  53. package/dist/commands/domFocus.js +11 -26
  54. package/dist/commands/domFocus.js.map +1 -1
  55. package/dist/commands/domHover.d.ts.map +1 -1
  56. package/dist/commands/domHover.js +11 -26
  57. package/dist/commands/domHover.js.map +1 -1
  58. package/dist/commands/domInfo.d.ts.map +1 -1
  59. package/dist/commands/domInfo.js +10 -25
  60. package/dist/commands/domInfo.js.map +1 -1
  61. package/dist/commands/domModify.d.ts.map +1 -1
  62. package/dist/commands/domModify.js +14 -26
  63. package/dist/commands/domModify.js.map +1 -1
  64. package/dist/commands/domRemove.d.ts.map +1 -1
  65. package/dist/commands/domRemove.js +10 -25
  66. package/dist/commands/domRemove.js.map +1 -1
  67. package/dist/commands/domScroll.d.ts.map +1 -1
  68. package/dist/commands/domScroll.js +7 -33
  69. package/dist/commands/domScroll.js.map +1 -1
  70. package/dist/commands/domScrollTo.d.ts.map +1 -1
  71. package/dist/commands/domScrollTo.js +7 -33
  72. package/dist/commands/domScrollTo.js.map +1 -1
  73. package/dist/commands/domSetFile.d.ts.map +1 -1
  74. package/dist/commands/domSetFile.js +14 -36
  75. package/dist/commands/domSetFile.js.map +1 -1
  76. package/dist/commands/domTree.d.ts.map +1 -1
  77. package/dist/commands/domTree.js +10 -25
  78. package/dist/commands/domTree.js.map +1 -1
  79. package/dist/commands/extension/setup.js +1 -1
  80. package/dist/commands/extension/setup.js.map +1 -1
  81. package/dist/commands/start.d.ts +1 -1
  82. package/dist/commands/start.d.ts.map +1 -1
  83. package/dist/commands/start.js +15 -42
  84. package/dist/commands/start.js.map +1 -1
  85. package/dist/commands/watcherSession.d.ts +29 -0
  86. package/dist/commands/watcherSession.d.ts.map +1 -0
  87. package/dist/commands/watcherSession.js +64 -0
  88. package/dist/commands/watcherSession.js.map +1 -0
  89. package/dist/commands/watcherStart.d.ts +1 -1
  90. package/dist/commands/watcherStart.d.ts.map +1 -1
  91. package/dist/commands/watcherStart.js +15 -40
  92. package/dist/commands/watcherStart.js.map +1 -1
  93. package/dist/config/argusConfig.d.ts.map +1 -1
  94. package/dist/config/argusConfig.js +69 -81
  95. package/dist/config/argusConfig.js.map +1 -1
  96. package/dist/watchers/requestWatcher.d.ts +13 -1
  97. package/dist/watchers/requestWatcher.d.ts.map +1 -1
  98. package/dist/watchers/requestWatcher.js +32 -0
  99. package/dist/watchers/requestWatcher.js.map +1 -1
  100. package/package.json +1 -1
@@ -1,64 +1,7 @@
1
- import type { CdpEndpointOptions } from '../cdp/resolveCdpEndpoint.js';
2
- export type ChromeEndpointOptions = CdpEndpointOptions;
3
- export type ChromeVersionResponse = {
4
- Browser: string;
5
- 'Protocol-Version': string;
6
- 'User-Agent': string;
7
- 'V8-Version': string;
8
- 'WebKit-Version': string;
9
- webSocketDebuggerUrl: string;
10
- };
11
- export type ChromeCommandOptions = ChromeEndpointOptions & {
12
- json?: boolean;
13
- };
14
- export declare const runChromeVersion: (options: ChromeCommandOptions) => Promise<void>;
15
- export declare const runChromeStatus: (options: ChromeCommandOptions) => Promise<void>;
16
- export type ChromeTargetsOptions = ChromeCommandOptions & {
17
- type?: string;
18
- tree?: boolean;
19
- };
20
- export declare const runChromeTargets: (options: ChromeTargetsOptions) => Promise<void>;
21
- export type ChromeOpenOptions = ChromeCommandOptions & {
22
- url: string;
23
- };
24
- export declare const runChromeOpen: (options: ChromeOpenOptions) => Promise<void>;
25
- export type ChromeActivateOptions = ChromeCommandOptions & {
26
- targetId?: string;
27
- title?: string;
28
- url?: string;
29
- match?: string;
30
- };
31
- export declare const runChromeActivate: (options: ChromeActivateOptions) => Promise<void>;
32
- export type ChromeCloseOptions = ChromeCommandOptions & {
33
- targetId: string;
34
- };
35
- export declare const runChromeClose: (options: ChromeCloseOptions) => Promise<void>;
36
- export declare const runChromeStop: (options: ChromeCommandOptions) => Promise<void>;
37
- export type ChromeReloadOptions = ChromeCommandOptions & {
38
- targetId: string;
39
- };
40
- export declare const runChromeReload: (options: ChromeReloadOptions) => Promise<void>;
41
- export type ChromeListOptions = {
42
- json?: boolean;
43
- pages?: boolean;
44
- };
45
- export type ChromeInstanceInfo = {
46
- port: number;
47
- pid: number;
48
- browser: string;
49
- webSocketDebuggerUrl: string;
50
- targets: number;
51
- pages: number;
52
- pageDetails?: Array<{
53
- title: string;
54
- url: string;
55
- }>;
56
- };
57
- /** Discover reachable Chrome instances with CDP enabled. */
58
- export declare const discoverChromeInstances: (options?: {
59
- pages?: boolean;
60
- }) => Promise<ChromeInstanceInfo[]>;
61
- /** Format a Chrome instance as a human-readable line. */
62
- export declare const formatChromeInstanceLine: (r: ChromeInstanceInfo) => string;
63
- export declare const runChromeList: (options: ChromeListOptions) => Promise<void>;
1
+ export type { ChromeCommandOptions, ChromeEndpointOptions, ChromeVersionResponse } from './chrome/shared.js';
2
+ export type { ChromeCloseOptions, ChromeActivateOptions, ChromeOpenOptions, ChromeReloadOptions, ChromeTargetsOptions } from './chrome/targets.js';
3
+ export type { ChromeInstanceInfo, ChromeListOptions } from './chrome/processes.js';
4
+ export { runChromeVersion, runChromeStatus, runChromeStop } from './chrome/browser.js';
5
+ export { runChromeTargets, runChromeOpen, runChromeActivate, runChromeClose, runChromeReload } from './chrome/targets.js';
6
+ export { discoverChromeInstances, formatChromeInstanceLine, runChromeList } from './chrome/processes.js';
64
7
  //# sourceMappingURL=chrome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/commands/chrome.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/commands/chrome.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC5G,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAClJ,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAElF,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,512 +1,4 @@
1
- import { execFile } from 'node:child_process';
2
- import { resolveCdpEndpoint } from '../cdp/resolveCdpEndpoint.js';
3
- import { sendCdpCommand } from '../cdp/sendCdpCommand.js';
4
- import { filterTargets, selectTargetFromCandidates } from '../cdp/selectTarget.js';
5
- import { fetchJson, fetchText } from '../httpClient.js';
6
- import { createOutput } from '../output/io.js';
7
- import { resolveWatcher } from '../watchers/resolveWatcher.js';
8
- const normalizeUrl = (url) => {
9
- if (url.startsWith('http://') || url.startsWith('https://')) {
10
- return url;
11
- }
12
- return `http://${url}`;
13
- };
14
- export const runChromeVersion = async (options) => {
15
- const output = createOutput(options);
16
- const endpoint = await resolveCdpEndpoint(options);
17
- if (!endpoint.ok) {
18
- output.writeWarn(endpoint.error);
19
- process.exitCode = endpoint.exitCode;
20
- return;
21
- }
22
- const url = `http://${endpoint.host}:${endpoint.port}/json/version`;
23
- let response;
24
- try {
25
- response = await fetchJson(url);
26
- }
27
- catch (error) {
28
- output.writeWarn(`Failed to connect to Chrome at ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
29
- process.exitCode = 1;
30
- return;
31
- }
32
- if (options.json) {
33
- output.writeJson(response);
34
- }
35
- else {
36
- output.writeHuman(`Browser: ${response.Browser}`);
37
- output.writeHuman(`WebSocket: ${response.webSocketDebuggerUrl}`);
38
- }
39
- };
40
- export const runChromeStatus = async (options) => {
41
- const output = createOutput(options);
42
- const endpoint = await resolveCdpEndpoint(options);
43
- if (!endpoint.ok) {
44
- output.writeWarn(endpoint.error);
45
- process.exitCode = endpoint.exitCode;
46
- return;
47
- }
48
- const url = `http://${endpoint.host}:${endpoint.port}/json/version`;
49
- let response;
50
- try {
51
- response = await fetchJson(url);
52
- }
53
- catch (error) {
54
- output.writeWarn(`Failed to connect to Chrome at ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
55
- process.exitCode = 1;
56
- return;
57
- }
58
- if (!response.Browser) {
59
- output.writeWarn(`invalid response from ${endpoint.host}:${endpoint.port}`);
60
- process.exitCode = 1;
61
- return;
62
- }
63
- if (options.json) {
64
- output.writeJson(response);
65
- }
66
- else {
67
- output.writeHuman(`ok ${endpoint.host}:${endpoint.port} ${response.Browser}`);
68
- }
69
- };
70
- export const runChromeTargets = async (options) => {
71
- const output = createOutput(options);
72
- if (options.id) {
73
- const resolved = await resolveWatcher({ id: options.id });
74
- if (!resolved.ok) {
75
- output.writeWarn(resolved.error);
76
- process.exitCode = resolved.exitCode;
77
- return;
78
- }
79
- if (resolved.watcher.source === 'extension') {
80
- let targets;
81
- try {
82
- const response = await fetchJson(`http://${resolved.watcher.host}:${resolved.watcher.port}/targets`);
83
- targets = response.targets;
84
- }
85
- catch (error) {
86
- output.writeWarn(`Failed to load watcher targets from ${resolved.watcher.id}: ${error instanceof Error ? error.message : error}`);
87
- process.exitCode = 1;
88
- return;
89
- }
90
- renderTargets(targets, { output, type: options.type, tree: options.tree, json: options.json });
91
- return;
92
- }
93
- }
94
- const endpoint = await resolveCdpEndpoint(options);
95
- if (!endpoint.ok) {
96
- output.writeWarn(endpoint.error);
97
- process.exitCode = endpoint.exitCode;
98
- return;
99
- }
100
- const url = `http://${endpoint.host}:${endpoint.port}/json/list`;
101
- let targets;
102
- try {
103
- targets = await fetchJson(url);
104
- }
105
- catch (error) {
106
- output.writeWarn(`Failed to connect to Chrome at ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
107
- process.exitCode = 1;
108
- return;
109
- }
110
- renderTargets(targets, { output, type: options.type, tree: options.tree, json: options.json });
111
- };
112
- const renderTargets = (targets, options) => {
113
- let filteredTargets = targets;
114
- if (options.type) {
115
- filteredTargets = filteredTargets.filter((target) => target.type === options.type);
116
- }
117
- if (options.json) {
118
- options.output.writeJson(filteredTargets);
119
- return;
120
- }
121
- if (options.tree) {
122
- renderTargetTree(filteredTargets, options.output);
123
- return;
124
- }
125
- for (const target of filteredTargets) {
126
- const title = target.title ? ` ${target.title}` : '';
127
- const targetUrl = target.url ? ` ${target.url}` : '';
128
- const parentInfo = target.parentId ? ` [parent: ${target.parentId.slice(0, 8)}...]` : '';
129
- options.output.writeHuman(`${target.id} ${target.type}${title}${targetUrl}${parentInfo}`);
130
- }
131
- };
132
- /**
133
- * Render targets as a tree showing parent-child relationships.
134
- */
135
- const renderTargetTree = (targets, output) => {
136
- // Build lookup maps
137
- const targetById = new Map(targets.map((t) => [t.id, t]));
138
- const childrenByParent = new Map();
139
- for (const target of targets) {
140
- const parentId = target.parentId ?? null;
141
- const children = childrenByParent.get(parentId) ?? [];
142
- children.push(target);
143
- childrenByParent.set(parentId, children);
144
- }
145
- // Find root targets (no parent or parent not in our list)
146
- const roots = targets.filter((t) => !t.parentId || !targetById.has(t.parentId));
147
- const renderNode = (target, prefix, isLast) => {
148
- const connector = isLast ? '└── ' : '├── ';
149
- const title = target.title || '(untitled)';
150
- const shortId = target.id.slice(0, 8) + '...';
151
- output.writeHuman(`${prefix}${connector}${title} (${target.type}, ${shortId})`);
152
- output.writeHuman(`${prefix}${isLast ? ' ' : '│ '}${target.url}`);
153
- const children = childrenByParent.get(target.id) ?? [];
154
- children.forEach((child, index) => {
155
- const childIsLast = index === children.length - 1;
156
- renderNode(child, prefix + (isLast ? ' ' : '│ '), childIsLast);
157
- });
158
- };
159
- if (roots.length === 0) {
160
- output.writeHuman('(no targets)');
161
- return;
162
- }
163
- roots.forEach((root, index) => {
164
- const isLast = index === roots.length - 1;
165
- const title = root.title || '(untitled)';
166
- const shortId = root.id.slice(0, 8) + '...';
167
- output.writeHuman(`${title} (${root.type}, ${shortId})`);
168
- output.writeHuman(`${root.url}`);
169
- const children = childrenByParent.get(root.id) ?? [];
170
- children.forEach((child, childIndex) => {
171
- const childIsLast = childIndex === children.length - 1;
172
- renderNode(child, '', childIsLast);
173
- });
174
- if (!isLast) {
175
- output.writeHuman('');
176
- }
177
- });
178
- };
179
- export const runChromeOpen = async (options) => {
180
- const output = createOutput(options);
181
- if (!options.url || options.url.trim() === '') {
182
- output.writeWarn('--url is required.');
183
- process.exitCode = 2;
184
- return;
185
- }
186
- const endpoint = await resolveCdpEndpoint(options);
187
- if (!endpoint.ok) {
188
- output.writeWarn(endpoint.error);
189
- process.exitCode = endpoint.exitCode;
190
- return;
191
- }
192
- const normalizedUrl = normalizeUrl(options.url.trim());
193
- const encodedUrl = encodeURIComponent(normalizedUrl);
194
- const url = `http://${endpoint.host}:${endpoint.port}/json/new?${encodedUrl}`;
195
- let target;
196
- try {
197
- target = await fetchJson(url, { method: 'PUT' });
198
- }
199
- catch (error) {
200
- output.writeWarn(`Failed to open tab: ${error instanceof Error ? error.message : error}`);
201
- process.exitCode = 1;
202
- return;
203
- }
204
- if (options.json) {
205
- output.writeJson(target);
206
- }
207
- else {
208
- output.writeHuman(`${target.id} ${target.url}`);
209
- }
210
- };
211
- export const runChromeActivate = async (options) => {
212
- const output = createOutput(options);
213
- const targetIdInput = options.targetId?.trim();
214
- const hasTargetId = Boolean(targetIdInput);
215
- const hasFilters = Boolean(options.title || options.url || options.match);
216
- if (hasTargetId && hasFilters) {
217
- output.writeWarn('Cannot combine targetId with --title/--url/--match.');
218
- process.exitCode = 2;
219
- return;
220
- }
221
- if (!hasTargetId && !hasFilters) {
222
- output.writeWarn('targetId or --title/--url/--match is required.');
223
- process.exitCode = 2;
224
- return;
225
- }
226
- const endpoint = await resolveCdpEndpoint(options);
227
- if (!endpoint.ok) {
228
- output.writeWarn(endpoint.error);
229
- process.exitCode = endpoint.exitCode;
230
- return;
231
- }
232
- let targetId = targetIdInput;
233
- if (!targetId) {
234
- const url = `http://${endpoint.host}:${endpoint.port}/json/list`;
235
- let targets;
236
- try {
237
- targets = await fetchJson(url);
238
- }
239
- catch (error) {
240
- output.writeWarn(`Failed to load targets from ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
241
- process.exitCode = 1;
242
- return;
243
- }
244
- const candidates = filterTargets(targets, { title: options.title, url: options.url, match: options.match });
245
- const selection = await selectTargetFromCandidates(candidates, output, {
246
- interactive: process.stdin.isTTY === true,
247
- messages: {
248
- empty: 'No targets matched the provided filters.',
249
- ambiguous: 'Multiple targets matched. Provide a narrower filter or a targetId.',
250
- },
251
- });
252
- if (!selection.ok) {
253
- output.writeWarn(selection.error);
254
- process.exitCode = selection.exitCode;
255
- return;
256
- }
257
- targetId = selection.target.id;
258
- }
259
- const activateUrl = `http://${endpoint.host}:${endpoint.port}/json/activate/${targetId}`;
260
- try {
261
- await fetchText(activateUrl);
262
- }
263
- catch (error) {
264
- output.writeWarn(`Failed to activate target: ${error instanceof Error ? error.message : error}`);
265
- process.exitCode = 1;
266
- return;
267
- }
268
- if (options.json) {
269
- output.writeJson({ activated: targetId });
270
- }
271
- else {
272
- output.writeHuman(`activated ${targetId}`);
273
- }
274
- };
275
- export const runChromeClose = async (options) => {
276
- const output = createOutput(options);
277
- if (!options.targetId || options.targetId.trim() === '') {
278
- output.writeWarn('targetId is required.');
279
- process.exitCode = 2;
280
- return;
281
- }
282
- const endpoint = await resolveCdpEndpoint(options);
283
- if (!endpoint.ok) {
284
- output.writeWarn(endpoint.error);
285
- process.exitCode = endpoint.exitCode;
286
- return;
287
- }
288
- const targetId = options.targetId.trim();
289
- const url = `http://${endpoint.host}:${endpoint.port}/json/close/${targetId}`;
290
- try {
291
- await fetchText(url);
292
- }
293
- catch (error) {
294
- output.writeWarn(`Failed to close target: ${error instanceof Error ? error.message : error}`);
295
- process.exitCode = 1;
296
- return;
297
- }
298
- if (options.json) {
299
- output.writeJson({ closed: targetId });
300
- }
301
- else {
302
- output.writeHuman(`closed ${targetId}`);
303
- }
304
- };
305
- export const runChromeStop = async (options) => {
306
- const output = createOutput(options);
307
- const endpoint = await resolveCdpEndpoint(options);
308
- if (!endpoint.ok) {
309
- output.writeWarn(endpoint.error);
310
- process.exitCode = endpoint.exitCode;
311
- return;
312
- }
313
- const url = `http://${endpoint.host}:${endpoint.port}/json/version`;
314
- let response;
315
- try {
316
- response = await fetchJson(url);
317
- }
318
- catch (error) {
319
- output.writeWarn(`Failed to connect to Chrome at ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
320
- process.exitCode = 1;
321
- return;
322
- }
323
- if (!response.webSocketDebuggerUrl) {
324
- output.writeWarn(`No browser WebSocket endpoint exposed at ${endpoint.host}:${endpoint.port}.`);
325
- process.exitCode = 1;
326
- return;
327
- }
328
- try {
329
- await sendCdpCommand(response.webSocketDebuggerUrl, { id: 1, method: 'Browser.close' });
330
- }
331
- catch (error) {
332
- output.writeWarn(`Failed to close Chrome at ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
333
- process.exitCode = 1;
334
- return;
335
- }
336
- if (options.json) {
337
- output.writeJson({ closed: true, host: endpoint.host, port: endpoint.port });
338
- }
339
- else {
340
- output.writeHuman(`closed ${endpoint.host}:${endpoint.port}`);
341
- }
342
- };
343
- export const runChromeReload = async (options) => {
344
- const output = createOutput(options);
345
- if (!options.targetId || options.targetId.trim() === '') {
346
- output.writeWarn('targetId is required.');
347
- process.exitCode = 2;
348
- return;
349
- }
350
- const endpoint = await resolveCdpEndpoint(options);
351
- if (!endpoint.ok) {
352
- output.writeWarn(endpoint.error);
353
- process.exitCode = endpoint.exitCode;
354
- return;
355
- }
356
- const targetId = options.targetId.trim();
357
- const targetsUrl = `http://${endpoint.host}:${endpoint.port}/json/list`;
358
- let targets;
359
- try {
360
- targets = await fetchJson(targetsUrl);
361
- }
362
- catch (error) {
363
- output.writeWarn(`Failed to load targets from ${endpoint.host}:${endpoint.port}: ${error instanceof Error ? error.message : error}`);
364
- process.exitCode = 1;
365
- return;
366
- }
367
- const target = targets.find((entry) => entry.id === targetId);
368
- if (!target) {
369
- output.writeWarn(`Target not found: ${targetId}`);
370
- process.exitCode = 2;
371
- return;
372
- }
373
- if (!target.webSocketDebuggerUrl) {
374
- output.writeWarn(`Target ${targetId} has no webSocketDebuggerUrl.`);
375
- process.exitCode = 1;
376
- return;
377
- }
378
- try {
379
- await sendCdpCommand(target.webSocketDebuggerUrl, { id: 1, method: 'Page.reload' });
380
- }
381
- catch (error) {
382
- output.writeWarn(`Failed to reload target ${targetId}: ${error instanceof Error ? error.message : error}`);
383
- process.exitCode = 1;
384
- return;
385
- }
386
- if (options.json) {
387
- output.writeJson({ reloaded: targetId, url: target.url });
388
- }
389
- else {
390
- output.writeHuman(`reloaded ${targetId}`);
391
- }
392
- };
393
- /** Discover reachable Chrome instances with CDP enabled. */
394
- export const discoverChromeInstances = async (options) => {
395
- const ports = await discoverChromeCdpPorts();
396
- if (ports.length === 0)
397
- return [];
398
- const results = await Promise.all(ports.map(async ({ port, pid }) => {
399
- try {
400
- const [version, targets] = await Promise.all([
401
- fetchJson(`http://127.0.0.1:${port}/json/version`, { timeoutMs: 2_000 }),
402
- fetchJson(`http://127.0.0.1:${port}/json/list`, { timeoutMs: 2_000 }),
403
- ]);
404
- const userPages = targets.filter((t) => t.type === 'page' && isUserPage(t.url));
405
- return {
406
- port,
407
- pid,
408
- reachable: true,
409
- browser: version.Browser,
410
- webSocketDebuggerUrl: version.webSocketDebuggerUrl,
411
- targets: targets.length,
412
- pages: userPages.length,
413
- ...(options?.pages && { pageDetails: userPages.map((p) => ({ title: p.title, url: p.url })) }),
414
- };
415
- }
416
- catch {
417
- return { port, pid, reachable: false };
418
- }
419
- }));
420
- return results.filter((r) => r.reachable);
421
- };
422
- /** Format a Chrome instance as a human-readable line. */
423
- export const formatChromeInstanceLine = (r) => `127.0.0.1:${r.port} pid=${r.pid} ${r.browser} ${r.pages} page${r.pages === 1 ? '' : 's'}`;
424
- export const runChromeList = async (options) => {
425
- const output = createOutput(options);
426
- const ports = await discoverChromeCdpPorts();
427
- if (ports.length === 0) {
428
- output.writeHuman('No Chrome instances found listening on TCP ports.');
429
- return;
430
- }
431
- const instances = await discoverChromeInstances(options);
432
- if (instances.length === 0) {
433
- output.writeHuman('Found Chrome processes listening on TCP, but none responded to CDP.');
434
- return;
435
- }
436
- if (options.json) {
437
- output.writeJson(instances);
438
- }
439
- else {
440
- for (const r of instances) {
441
- output.writeHuman(formatChromeInstanceLine(r));
442
- if (r.pageDetails) {
443
- for (const p of r.pageDetails) {
444
- output.writeHuman(` ${p.title} — ${p.url}`);
445
- }
446
- }
447
- }
448
- }
449
- };
450
- /**
451
- * Chrome-internal URLs that CDP reports as `type: "page"` but are not user-visible tabs.
452
- * Covers omnibox popups, NTP sub-frames, side panels, and other top-chrome UI surfaces.
453
- */
454
- const CHROME_INTERNAL_URL_PATTERN = /^(devtools|chrome-untrusted):\/\/|\.top-chrome\/|^chrome:\/\/newtab-footer\b/;
455
- /** Whether a CDP target URL represents a real user-visible page (tab). */
456
- const isUserPage = (url) => !CHROME_INTERNAL_URL_PATTERN.test(url);
457
- /**
458
- * Match Chrome/Chromium process names in lsof output.
459
- * With `+c 0`, macOS lsof escapes spaces as `\x20` (e.g. `Google\x20Chrome`).
460
- */
461
- const CHROME_NAME_PATTERN = /\b(google(\s|\\x20)*chrome|chromium|chrome)\b/i;
462
- /**
463
- * Discover Chrome processes listening on TCP ports via `lsof`.
464
- * Returns deduplicated `{ port, pid }` pairs.
465
- */
466
- const discoverChromeCdpPorts = async () => {
467
- let stdout;
468
- try {
469
- stdout = await new Promise((resolve, reject) => {
470
- execFile('lsof', ['+c', '0', '-iTCP', '-sTCP:LISTEN', '-P', '-n'], { timeout: 5_000 }, (error, out) => {
471
- if (error) {
472
- reject(error);
473
- return;
474
- }
475
- resolve(out);
476
- });
477
- });
478
- }
479
- catch {
480
- return [];
481
- }
482
- const seen = new Set();
483
- const results = [];
484
- for (const line of stdout.split('\n')) {
485
- if (!CHROME_NAME_PATTERN.test(line)) {
486
- continue;
487
- }
488
- // lsof columns: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
489
- // With +c 0, COMMAND can contain escaped spaces — PID is the first purely numeric column.
490
- const pidMatch = line.match(/\s+(\d+)\s+/);
491
- if (!pidMatch) {
492
- continue;
493
- }
494
- const pid = parseInt(pidMatch[1], 10);
495
- if (isNaN(pid)) {
496
- continue;
497
- }
498
- // NAME column is last, format: *:PORT or 127.0.0.1:PORT (LISTEN)
499
- const portMatch = line.match(/:(\d+)\s+\(LISTEN\)/);
500
- if (!portMatch) {
501
- continue;
502
- }
503
- const port = parseInt(portMatch[1], 10);
504
- if (isNaN(port) || seen.has(port)) {
505
- continue;
506
- }
507
- seen.add(port);
508
- results.push({ port, pid });
509
- }
510
- return results;
511
- };
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';
512
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"}
@@ -0,0 +1,12 @@
1
+ import type { Output } from '../../output/io.js';
2
+ export type DomSelectorOptions = {
3
+ selector?: string;
4
+ };
5
+ export declare const requireSelector: (options: DomSelectorOptions, output: Output) => string | null;
6
+ export declare const parseWaitDuration: (value: string | undefined, output: Output) => number | null;
7
+ export declare const writeNoElementFound: (selector: string, output: Output, hint?: string) => void;
8
+ export declare const parseXY: (value: string) => {
9
+ x: number;
10
+ y: number;
11
+ } | null;
12
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/commands/dom/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,MAAM,kBAAkB,GAAG;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,MAAM,GAAG,IAStF,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,GAAG,SAAS,EAAE,QAAQ,MAAM,KAAG,MAAM,GAAG,IAatF,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,IAMrF,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,KAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAalE,CAAA"}