@vforsh/argus 0.1.14 → 0.1.16

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 (175) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/argus.js +1861 -1171
  3. package/dist/cli/defineWatcherCommand.d.ts +17 -0
  4. package/dist/cli/defineWatcherCommand.d.ts.map +1 -1
  5. package/dist/cli/defineWatcherCommand.js +19 -2
  6. package/dist/cli/defineWatcherCommand.js.map +1 -1
  7. package/dist/cli/plugins/pluginAliases.d.ts +6 -0
  8. package/dist/cli/plugins/pluginAliases.d.ts.map +1 -0
  9. package/dist/cli/plugins/pluginAliases.js +10 -0
  10. package/dist/cli/plugins/pluginAliases.js.map +1 -0
  11. package/dist/cli/plugins/pluginHost.d.ts +3 -0
  12. package/dist/cli/plugins/pluginHost.d.ts.map +1 -0
  13. package/dist/cli/plugins/pluginHost.js +30 -0
  14. package/dist/cli/plugins/pluginHost.js.map +1 -0
  15. package/dist/cli/plugins/registerPlugins.d.ts +32 -1
  16. package/dist/cli/plugins/registerPlugins.d.ts.map +1 -1
  17. package/dist/cli/plugins/registerPlugins.js +102 -12
  18. package/dist/cli/plugins/registerPlugins.js.map +1 -1
  19. package/dist/cli/program.d.ts.map +1 -1
  20. package/dist/cli/program.js +2 -0
  21. package/dist/cli/program.js.map +1 -1
  22. package/dist/cli/register/index.d.ts.map +1 -1
  23. package/dist/cli/register/index.js +2 -0
  24. package/dist/cli/register/index.js.map +1 -1
  25. package/dist/cli/register/registerAuth.d.ts.map +1 -1
  26. package/dist/cli/register/registerAuth.js +13 -8
  27. package/dist/cli/register/registerAuth.js.map +1 -1
  28. package/dist/cli/register/registerEval.d.ts.map +1 -1
  29. package/dist/cli/register/registerEval.js +12 -0
  30. package/dist/cli/register/registerEval.js.map +1 -1
  31. package/dist/cli/register/registerExtension.d.ts.map +1 -1
  32. package/dist/cli/register/registerExtension.js +24 -1
  33. package/dist/cli/register/registerExtension.js.map +1 -1
  34. package/dist/cli/register/registerPlugin.d.ts +3 -0
  35. package/dist/cli/register/registerPlugin.d.ts.map +1 -0
  36. package/dist/cli/register/registerPlugin.js +34 -0
  37. package/dist/cli/register/registerPlugin.js.map +1 -0
  38. package/dist/cli/register/registerWatcher.d.ts.map +1 -1
  39. package/dist/cli/register/registerWatcher.js +1 -0
  40. package/dist/cli/register/registerWatcher.js.map +1 -1
  41. package/dist/commands/auth.d.ts.map +1 -1
  42. package/dist/commands/auth.js +4 -9
  43. package/dist/commands/auth.js.map +1 -1
  44. package/dist/commands/authCookieSupport.d.ts.map +1 -1
  45. package/dist/commands/authCookieSupport.js +4 -6
  46. package/dist/commands/authCookieSupport.js.map +1 -1
  47. package/dist/commands/authCookies.d.ts +4 -4
  48. package/dist/commands/authCookies.d.ts.map +1 -1
  49. package/dist/commands/authCookies.js +85 -105
  50. package/dist/commands/authCookies.js.map +1 -1
  51. package/dist/commands/code.js +3 -25
  52. package/dist/commands/code.js.map +1 -1
  53. package/dist/commands/codeEdit.js +3 -3
  54. package/dist/commands/codeEdit.js.map +1 -1
  55. package/dist/commands/configInit.d.ts.map +1 -1
  56. package/dist/commands/configInit.js +1 -0
  57. package/dist/commands/configInit.js.map +1 -1
  58. package/dist/commands/domAdd.d.ts +1 -1
  59. package/dist/commands/domAdd.d.ts.map +1 -1
  60. package/dist/commands/domAdd.js +26 -30
  61. package/dist/commands/domAdd.js.map +1 -1
  62. package/dist/commands/domInfo.d.ts +1 -1
  63. package/dist/commands/domInfo.d.ts.map +1 -1
  64. package/dist/commands/domInfo.js +18 -23
  65. package/dist/commands/domInfo.js.map +1 -1
  66. package/dist/commands/domKeydown.d.ts +1 -1
  67. package/dist/commands/domKeydown.d.ts.map +1 -1
  68. package/dist/commands/domKeydown.js +22 -43
  69. package/dist/commands/domKeydown.js.map +1 -1
  70. package/dist/commands/domModify.js +27 -30
  71. package/dist/commands/domModify.js.map +1 -1
  72. package/dist/commands/domScroll.d.ts +1 -1
  73. package/dist/commands/domScroll.d.ts.map +1 -1
  74. package/dist/commands/domScroll.js +18 -24
  75. package/dist/commands/domScroll.js.map +1 -1
  76. package/dist/commands/domScrollTo.d.ts +1 -1
  77. package/dist/commands/domScrollTo.d.ts.map +1 -1
  78. package/dist/commands/domScrollTo.js +15 -24
  79. package/dist/commands/domScrollTo.js.map +1 -1
  80. package/dist/commands/domTree.d.ts +1 -1
  81. package/dist/commands/domTree.d.ts.map +1 -1
  82. package/dist/commands/domTree.js +18 -24
  83. package/dist/commands/domTree.js.map +1 -1
  84. package/dist/commands/eval.d.ts +4 -0
  85. package/dist/commands/eval.d.ts.map +1 -1
  86. package/dist/commands/eval.js +43 -62
  87. package/dist/commands/eval.js.map +1 -1
  88. package/dist/commands/evalBundle.d.ts +17 -0
  89. package/dist/commands/evalBundle.d.ts.map +1 -0
  90. package/dist/commands/evalBundle.js +119 -0
  91. package/dist/commands/evalBundle.js.map +1 -0
  92. package/dist/commands/evalPolling.d.ts +55 -0
  93. package/dist/commands/evalPolling.d.ts.map +1 -0
  94. package/dist/commands/evalPolling.js +59 -0
  95. package/dist/commands/evalPolling.js.map +1 -0
  96. package/dist/commands/evalShared.d.ts +14 -0
  97. package/dist/commands/evalShared.d.ts.map +1 -1
  98. package/dist/commands/evalShared.js +75 -10
  99. package/dist/commands/evalShared.js.map +1 -1
  100. package/dist/commands/evalUntil.d.ts +4 -0
  101. package/dist/commands/evalUntil.d.ts.map +1 -1
  102. package/dist/commands/evalUntil.js +47 -70
  103. package/dist/commands/evalUntil.js.map +1 -1
  104. package/dist/commands/extension/attach.d.ts +12 -0
  105. package/dist/commands/extension/attach.d.ts.map +1 -0
  106. package/dist/commands/extension/attach.js +175 -0
  107. package/dist/commands/extension/attach.js.map +1 -0
  108. package/dist/commands/extension/info.d.ts.map +1 -1
  109. package/dist/commands/extension/info.js +13 -33
  110. package/dist/commands/extension/info.js.map +1 -1
  111. package/dist/commands/extension/nativeHost.d.ts +35 -5
  112. package/dist/commands/extension/nativeHost.d.ts.map +1 -1
  113. package/dist/commands/extension/nativeHost.js +95 -12
  114. package/dist/commands/extension/nativeHost.js.map +1 -1
  115. package/dist/commands/extension/remove.d.ts.map +1 -1
  116. package/dist/commands/extension/remove.js +18 -38
  117. package/dist/commands/extension/remove.js.map +1 -1
  118. package/dist/commands/extension/resolveExtensionWatcher.d.ts +1 -1
  119. package/dist/commands/extension/resolveExtensionWatcher.d.ts.map +1 -1
  120. package/dist/commands/extension/resolveExtensionWatcher.js +15 -29
  121. package/dist/commands/extension/resolveExtensionWatcher.js.map +1 -1
  122. package/dist/commands/extension/setup.d.ts.map +1 -1
  123. package/dist/commands/extension/setup.js +20 -35
  124. package/dist/commands/extension/setup.js.map +1 -1
  125. package/dist/commands/extension/status.d.ts.map +1 -1
  126. package/dist/commands/extension/status.js +12 -38
  127. package/dist/commands/extension/status.js.map +1 -1
  128. package/dist/commands/locate.js +2 -2
  129. package/dist/commands/locate.js.map +1 -1
  130. package/dist/commands/logs.d.ts +1 -1
  131. package/dist/commands/logs.d.ts.map +1 -1
  132. package/dist/commands/logs.js +18 -27
  133. package/dist/commands/logs.js.map +1 -1
  134. package/dist/commands/net.d.ts +1 -1
  135. package/dist/commands/net.d.ts.map +1 -1
  136. package/dist/commands/net.js +14 -19
  137. package/dist/commands/net.js.map +1 -1
  138. package/dist/commands/netClear.d.ts +1 -1
  139. package/dist/commands/netClear.d.ts.map +1 -1
  140. package/dist/commands/netClear.js +7 -19
  141. package/dist/commands/netClear.js.map +1 -1
  142. package/dist/commands/netSse.js +2 -2
  143. package/dist/commands/netSse.js.map +1 -1
  144. package/dist/commands/netWebSocket.js +3 -3
  145. package/dist/commands/netWebSocket.js.map +1 -1
  146. package/dist/commands/pageEmulation.d.ts +3 -3
  147. package/dist/commands/pageEmulation.d.ts.map +1 -1
  148. package/dist/commands/pageEmulation.js +72 -143
  149. package/dist/commands/pageEmulation.js.map +1 -1
  150. package/dist/commands/pluginConfig.d.ts +7 -0
  151. package/dist/commands/pluginConfig.d.ts.map +1 -0
  152. package/dist/commands/pluginConfig.js +199 -0
  153. package/dist/commands/pluginConfig.js.map +1 -0
  154. package/dist/commands/pluginList.d.ts +5 -0
  155. package/dist/commands/pluginList.d.ts.map +1 -0
  156. package/dist/commands/pluginList.js +26 -0
  157. package/dist/commands/pluginList.js.map +1 -0
  158. package/dist/commands/screenshot.d.ts +1 -1
  159. package/dist/commands/screenshot.d.ts.map +1 -1
  160. package/dist/commands/screenshot.js +12 -18
  161. package/dist/commands/screenshot.js.map +1 -1
  162. package/dist/commands/watcherNativeHost.d.ts +1 -0
  163. package/dist/commands/watcherNativeHost.d.ts.map +1 -1
  164. package/dist/commands/watcherNativeHost.js +8 -2
  165. package/dist/commands/watcherNativeHost.js.map +1 -1
  166. package/dist/commands/watcherStatus.d.ts +1 -1
  167. package/dist/commands/watcherStatus.d.ts.map +1 -1
  168. package/dist/commands/watcherStatus.js +8 -21
  169. package/dist/commands/watcherStatus.js.map +1 -1
  170. package/dist/config/argusConfig.d.ts +5 -0
  171. package/dist/config/argusConfig.d.ts.map +1 -1
  172. package/dist/config/argusConfig.js +33 -2
  173. package/dist/config/argusConfig.js.map +1 -1
  174. package/package.json +3 -2
  175. package/schemas/argus.config.schema.json +16 -0
@@ -2,7 +2,10 @@ import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import os from 'node:os';
4
4
  import { execSync } from 'node:child_process';
5
- export const HOST_NAME = 'com.vforsh.argus.bridge';
5
+ export const BRIDGE_HOST_NAME = 'com.vforsh.argus.bridge';
6
+ export const CONTROL_HOST_NAME = 'com.vforsh.argus.control';
7
+ export const CONTROL_WATCHER_ID = 'extension-control';
8
+ export const HOST_NAMES = [BRIDGE_HOST_NAME, CONTROL_HOST_NAME];
6
9
  export const getManifestDir = (platform) => {
7
10
  switch (platform) {
8
11
  case 'darwin':
@@ -15,11 +18,12 @@ export const getManifestDir = (platform) => {
15
18
  throw new Error(`Unsupported platform: ${platform}`);
16
19
  }
17
20
  };
18
- export const getManifestPath = (platform) => {
19
- return path.join(getManifestDir(platform), `${HOST_NAME}.json`);
21
+ export const getManifestPath = (platform, hostName = BRIDGE_HOST_NAME) => {
22
+ return path.join(getManifestDir(platform), `${hostName}.json`);
20
23
  };
21
- export const getWrapperPath = (platform) => {
22
- return path.join(getManifestDir(platform), 'argus-native-host.sh');
24
+ export const getWrapperPath = (platform, hostName = BRIDGE_HOST_NAME) => {
25
+ const filename = hostName === CONTROL_HOST_NAME ? 'argus-native-control-host.sh' : 'argus-native-host.sh';
26
+ return path.join(getManifestDir(platform), filename);
23
27
  };
24
28
  export const getPlatform = () => {
25
29
  const platform = os.platform();
@@ -57,27 +61,73 @@ export const findNodePath = () => {
57
61
  // This is important for fnm/nvm which use symlinks in temporary directories
58
62
  return fs.realpathSync(process.execPath);
59
63
  };
60
- export const createManifest = (extensionId, executablePath) => {
64
+ export const createManifest = (extensionId, executablePath, hostName = BRIDGE_HOST_NAME) => {
61
65
  return {
62
- name: HOST_NAME,
63
- description: 'Argus Watcher Native Messaging Host',
66
+ name: hostName,
67
+ description: hostName === CONTROL_HOST_NAME ? 'Argus Extension Control Native Messaging Host' : 'Argus Watcher Native Messaging Host',
64
68
  path: executablePath,
65
69
  type: 'stdio',
66
70
  allowed_origins: [`chrome-extension://${extensionId}/`],
67
71
  };
68
72
  };
69
- export const createWrapperScript = (platform, executablePath) => {
70
- const wrapperDir = getManifestDir(platform);
71
- const wrapperPath = path.join(wrapperDir, 'argus-native-host.sh');
73
+ export const createWrapperScript = (platform, executablePath, hostName = BRIDGE_HOST_NAME) => {
74
+ const wrapperPath = getWrapperPath(platform, hostName);
72
75
  const nodePath = findNodePath();
76
+ const args = hostName === CONTROL_HOST_NAME ? `watcher native-host --role control --id ${CONTROL_WATCHER_ID}` : 'watcher native-host --role tab';
73
77
  // Create a wrapper script that launches argus in native-host mode
74
78
  // Use absolute path to node since Chrome spawns without shell profile
75
79
  const script = `#!/bin/bash
76
- exec "${nodePath}" "${executablePath}" watcher native-host
80
+ exec "${nodePath}" "${executablePath}" ${args}
77
81
  `;
78
82
  fs.writeFileSync(wrapperPath, script, { mode: 0o755 });
79
83
  return wrapperPath;
80
84
  };
85
+ export const installNativeHosts = (platform, extensionId, executablePath) => {
86
+ fs.mkdirSync(getManifestDir(platform), { recursive: true });
87
+ return HOST_NAMES.map((hostName) => {
88
+ const wrapperPath = createWrapperScript(platform, executablePath, hostName);
89
+ const manifestPath = getManifestPath(platform, hostName);
90
+ const manifest = createManifest(extensionId, wrapperPath, hostName);
91
+ fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
92
+ registerWindowsNativeHost(platform, hostName, manifestPath);
93
+ return { hostName, manifestPath, wrapperPath };
94
+ });
95
+ };
96
+ export const inspectNativeHosts = (platform) => {
97
+ return HOST_NAMES.map((hostName) => inspectNativeHost(platform, hostName));
98
+ };
99
+ export const removeNativeHosts = (platform) => {
100
+ return HOST_NAMES.map((hostName) => {
101
+ const host = inspectNativeHost(platform, hostName);
102
+ const manifestRemoved = removeFileIfExists(host.manifestPath);
103
+ const wrapperRemoved = removeFileIfExists(host.wrapperPath);
104
+ unregisterWindowsNativeHost(platform, hostName);
105
+ return { ...host, manifestRemoved, wrapperRemoved };
106
+ });
107
+ };
108
+ export const inspectNativeHost = (platform, hostName) => {
109
+ const manifestPath = getManifestPath(platform, hostName);
110
+ const wrapperPath = getWrapperPath(platform, hostName);
111
+ const manifestExists = fs.existsSync(manifestPath);
112
+ const wrapperExists = fs.existsSync(wrapperPath);
113
+ const wrapperExecutable = wrapperExists && isWrapperExecutable(wrapperPath);
114
+ const manifest = manifestExists ? readManifest(manifestPath) : null;
115
+ const manifestValid = Boolean(manifest && manifest.name === hostName && manifest.type === 'stdio' && Array.isArray(manifest.allowed_origins));
116
+ const extensionId = extractExtensionId(manifest?.allowed_origins?.[0]);
117
+ return {
118
+ hostName,
119
+ manifestPath,
120
+ wrapperPath,
121
+ manifestExists,
122
+ manifestValid,
123
+ wrapperExists,
124
+ wrapperExecutable,
125
+ configured: manifestExists && manifestValid && wrapperExists && wrapperExecutable,
126
+ installed: manifestExists && wrapperExists,
127
+ extensionId,
128
+ argusPath: manifest?.path ?? null,
129
+ };
130
+ };
81
131
  export const readManifest = (manifestPath) => {
82
132
  try {
83
133
  const content = fs.readFileSync(manifestPath, 'utf8');
@@ -103,4 +153,37 @@ export const shortenPath = (filePath) => {
103
153
  }
104
154
  return filePath;
105
155
  };
156
+ const extractExtensionId = (origin) => {
157
+ if (!origin) {
158
+ return null;
159
+ }
160
+ const match = origin.match(/^chrome-extension:\/\/([^/]+)\/$/);
161
+ return match?.[1] ?? null;
162
+ };
163
+ const removeFileIfExists = (filePath) => {
164
+ if (!fs.existsSync(filePath)) {
165
+ return false;
166
+ }
167
+ fs.unlinkSync(filePath);
168
+ return true;
169
+ };
170
+ const registerWindowsNativeHost = (platform, hostName, manifestPath) => {
171
+ if (platform !== 'win32') {
172
+ return;
173
+ }
174
+ const regKey = `HKCU\\Software\\Google\\Chrome\\NativeMessagingHosts\\${hostName}`;
175
+ execSync(`reg add "${regKey}" /ve /t REG_SZ /d "${manifestPath}" /f`, { stdio: 'pipe' });
176
+ };
177
+ const unregisterWindowsNativeHost = (platform, hostName) => {
178
+ if (platform !== 'win32') {
179
+ return;
180
+ }
181
+ const regKey = `HKCU\\Software\\Google\\Chrome\\NativeMessagingHosts\\${hostName}`;
182
+ try {
183
+ execSync(`reg delete "${regKey}" /f`, { stdio: 'pipe' });
184
+ }
185
+ catch {
186
+ // Key might not exist.
187
+ }
188
+ };
106
189
  //# sourceMappingURL=nativeHost.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nativeHost.js","sourceRoot":"","sources":["../../../src/commands/extension/nativeHost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nativeHost.js","sourceRoot":"","sources":["../../../src/commands/extension/nativeHost.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/remove.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,sBAAsB,GAAG;IACpC,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,SAAS,sBAAsB,KAAG,OAAO,CAAC,IAAI,CAuEtF,CAAA"}
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/remove.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,sBAAsB,GAAG;IACpC,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,SAAS,sBAAsB,KAAG,OAAO,CAAC,IAAI,CAmDtF,CAAA"}
@@ -1,7 +1,5 @@
1
- import fs from 'node:fs';
2
- import { execSync } from 'node:child_process';
3
1
  import { createOutput } from '../../output/io.js';
4
- import { HOST_NAME, getPlatform, getManifestPath, getWrapperPath, shortenPath } from './nativeHost.js';
2
+ import { getPlatform, removeNativeHosts, shortenPath } from './nativeHost.js';
5
3
  export const runExtensionRemove = async (options) => {
6
4
  const output = createOutput(options);
7
5
  let platform;
@@ -18,56 +16,38 @@ export const runExtensionRemove = async (options) => {
18
16
  process.exitCode = 1;
19
17
  return;
20
18
  }
21
- const manifestPath = getManifestPath(platform);
22
- const wrapperPath = getWrapperPath(platform);
23
- let manifestRemoved = false;
24
- let wrapperRemoved = false;
25
- // Remove manifest
26
- if (fs.existsSync(manifestPath)) {
27
- fs.unlinkSync(manifestPath);
28
- manifestRemoved = true;
29
- }
30
- // Remove wrapper script
31
- if (fs.existsSync(wrapperPath)) {
32
- fs.unlinkSync(wrapperPath);
33
- wrapperRemoved = true;
34
- }
35
- // Windows: Remove registry key
36
- if (platform === 'win32') {
37
- const regKey = `HKCU\\Software\\Google\\Chrome\\NativeMessagingHosts\\${HOST_NAME}`;
38
- try {
39
- execSync(`reg delete "${regKey}" /f`, { stdio: 'pipe' });
40
- }
41
- catch {
42
- // Key might not exist
43
- }
44
- }
19
+ const removedHosts = removeNativeHosts(platform);
20
+ const manifestRemoved = removedHosts.some((host) => host.manifestRemoved);
21
+ const wrapperRemoved = removedHosts.some((host) => host.wrapperRemoved);
45
22
  if (options.json) {
46
23
  output.writeJson({
47
24
  success: true,
48
25
  manifestRemoved,
49
26
  wrapperRemoved,
50
- manifestPath,
51
- wrapperPath,
27
+ hosts: removedHosts,
52
28
  });
53
29
  }
54
30
  else {
55
31
  output.writeHuman('');
56
32
  if (manifestRemoved || wrapperRemoved) {
57
- output.writeHuman('Native messaging host removed');
33
+ output.writeHuman('Native messaging hosts removed');
58
34
  output.writeHuman('');
59
- if (manifestRemoved) {
60
- output.writeHuman(` Removed manifest: ${shortenPath(manifestPath)}`);
61
- }
62
- if (wrapperRemoved) {
63
- output.writeHuman(` Removed wrapper: ${shortenPath(wrapperPath)}`);
35
+ for (const host of removedHosts) {
36
+ if (host.manifestRemoved) {
37
+ output.writeHuman(` Removed manifest: ${shortenPath(host.manifestPath)}`);
38
+ }
39
+ if (host.wrapperRemoved) {
40
+ output.writeHuman(` Removed wrapper: ${shortenPath(host.wrapperPath)}`);
41
+ }
64
42
  }
65
43
  }
66
44
  else {
67
- output.writeHuman('Native messaging host was not installed');
45
+ output.writeHuman('Native messaging hosts were not installed');
68
46
  output.writeHuman('');
69
- output.writeHuman(` Manifest not found: ${shortenPath(manifestPath)}`);
70
- output.writeHuman(` Wrapper not found: ${shortenPath(wrapperPath)}`);
47
+ for (const host of removedHosts) {
48
+ output.writeHuman(` Manifest not found: ${shortenPath(host.manifestPath)}`);
49
+ output.writeHuman(` Wrapper not found: ${shortenPath(host.wrapperPath)}`);
50
+ }
71
51
  }
72
52
  output.writeHuman('');
73
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/extension/remove.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/extension/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAM7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAA+B,EAAiB,EAAE;IAC1F,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IAEpC,IAAI,QAAQ,CAAA;IACZ,IAAI,CAAC;QACJ,QAAQ,GAAG,WAAW,EAAE,CAAA;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;QACtE,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACP,CAAC;IAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAEhD,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACzE,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAEvE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,SAAS,CAAC;YAChB,OAAO,EAAE,IAAI;YACb,eAAe;YACf,cAAc;YACd,KAAK,EAAE,YAAY;SACnB,CAAC,CAAA;IACH,CAAC;SAAM,CAAC;QACP,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QACrB,IAAI,eAAe,IAAI,cAAc,EAAE,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,gCAAgC,CAAC,CAAA;YACnD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACrB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC1B,MAAM,CAAC,UAAU,CAAC,uBAAuB,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;gBAC3E,CAAC;gBACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;oBACzB,MAAM,CAAC,UAAU,CAAC,uBAAuB,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;gBAC1E,CAAC;YACF,CAAC;QACF,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,UAAU,CAAC,2CAA2C,CAAC,CAAA;YAC9D,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACrB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBACjC,MAAM,CAAC,UAAU,CAAC,yBAAyB,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;gBAC5E,MAAM,CAAC,UAAU,CAAC,yBAAyB,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YAC5E,CAAC;QACF,CAAC;QACD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACtB,CAAC;AACF,CAAC,CAAA"}
@@ -14,7 +14,7 @@ export type ResolveExtensionWatcherResult = {
14
14
  };
15
15
  /**
16
16
  * Resolve a watcher that is known to be backed by the Chrome extension transport.
17
- * When id is omitted, mirror the generic watcher heuristics but only across extension watchers.
17
+ * When id is omitted, use the browser-level control watcher.
18
18
  */
19
19
  export declare const resolveExtensionWatcher: (input: ResolveExtensionWatcherInput) => Promise<ResolveExtensionWatcherResult>;
20
20
  //# sourceMappingURL=resolveExtensionWatcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveExtensionWatcher.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/resolveExtensionWatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAInF,MAAM,MAAM,4BAA4B,GAAG;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAA;CACX,CAAA;AAED,MAAM,MAAM,6BAA6B,GACtC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;IAAC,UAAU,CAAC,EAAE,aAAa,EAAE,CAAA;CAAE,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAU,OAAO,4BAA4B,KAAG,OAAO,CAAC,6BAA6B,CAiExH,CAAA"}
1
+ {"version":3,"file":"resolveExtensionWatcher.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/resolveExtensionWatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAKnF,MAAM,MAAM,4BAA4B,GAAG;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAA;CACX,CAAA;AAED,MAAM,MAAM,6BAA6B,GACtC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;IAAC,UAAU,CAAC,EAAE,aAAa,EAAE,CAAA;CAAE,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAU,OAAO,4BAA4B,KAAG,OAAO,CAAC,6BAA6B,CA4CxH,CAAA"}
@@ -1,8 +1,9 @@
1
1
  import { pruneRegistry } from '../../registry.js';
2
2
  import { fetchWatcherJson } from '../../watchers/requestWatcher.js';
3
+ import { CONTROL_WATCHER_ID } from './nativeHost.js';
3
4
  /**
4
5
  * Resolve a watcher that is known to be backed by the Chrome extension transport.
5
- * When id is omitted, mirror the generic watcher heuristics but only across extension watchers.
6
+ * When id is omitted, use the browser-level control watcher.
6
7
  */
7
8
  export const resolveExtensionWatcher = async (input) => {
8
9
  let registry;
@@ -27,38 +28,23 @@ export const resolveExtensionWatcher = async (input) => {
27
28
  if (extensionWatchers.length === 0) {
28
29
  return {
29
30
  ok: false,
30
- error: 'No extension-backed watchers found. Attach a tab in the extension popup first.',
31
+ error: 'No extension-backed watchers found. Reload the extension after `argus extension setup`, or attach a tab in the extension popup.',
31
32
  exitCode: 2,
32
33
  };
33
34
  }
34
- const reachability = await Promise.all(extensionWatchers.map(async (watcher) => ({
35
- watcher,
36
- status: await checkWatcherStatus(watcher),
37
- })));
38
- const attached = reachability.filter((entry) => entry.status.ok && entry.status.status.attached);
39
- if (attached.length === 1) {
40
- return { ok: true, watcher: attached[0].watcher, registry };
41
- }
42
- const cwd = process.cwd();
43
- const cwdMatches = extensionWatchers.filter((watcher) => watcher.cwd === cwd);
44
- const attachedCwdMatches = attached.filter((entry) => entry.watcher.cwd === cwd);
45
- if (attachedCwdMatches.length === 1) {
46
- return { ok: true, watcher: attachedCwdMatches[0].watcher, registry };
47
- }
48
- if (attached.length > 1) {
49
- return { ok: false, error: 'Watcher id required.', exitCode: 2, candidates: attached.map((entry) => entry.watcher) };
50
- }
51
- if (cwdMatches.length === 1) {
52
- return { ok: true, watcher: cwdMatches[0], registry };
53
- }
54
- if (cwdMatches.length > 1) {
55
- return { ok: false, error: 'Watcher id required.', exitCode: 2, candidates: cwdMatches };
56
- }
57
- const reachable = reachability.filter((entry) => entry.status.ok);
58
- if (reachable.length === 1) {
59
- return { ok: true, watcher: reachable[0].watcher, registry };
35
+ const controlWatcher = registry.watchers[CONTROL_WATCHER_ID];
36
+ if (controlWatcher?.source === 'extension') {
37
+ const status = await checkWatcherStatus(controlWatcher);
38
+ if (status.ok) {
39
+ return { ok: true, watcher: controlWatcher, registry };
40
+ }
60
41
  }
61
- return { ok: false, error: 'Watcher id required.', exitCode: 2, candidates: extensionWatchers };
42
+ return {
43
+ ok: false,
44
+ error: 'extension-control watcher is unavailable. Reload the extension after `argus extension setup`.',
45
+ exitCode: 2,
46
+ candidates: extensionWatchers,
47
+ };
62
48
  };
63
49
  const getExtensionWatchers = (watchers) => watchers.filter((watcher) => watcher.source === 'extension');
64
50
  const checkWatcherStatus = async (watcher) => {
@@ -1 +1 @@
1
- {"version":3,"file":"resolveExtensionWatcher.js","sourceRoot":"","sources":["../../../src/commands/extension/resolveExtensionWatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAUnE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAAE,KAAmC,EAA0C,EAAE;IAC5H,IAAI,QAAoB,CAAA;IACxB,IAAI,CAAC;QACJ,QAAQ,GAAG,MAAM,aAAa,EAAE,CAAA;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAA;IACvH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAEpD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAA;QACpG,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,OAAO,CAAC,EAAE,2BAA2B,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAA;QAC1I,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;IACvC,CAAC;IAED,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAC3D,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO;YACN,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,gFAAgF;YACvF,QAAQ,EAAE,CAAC;SACX,CAAA;IACF,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO;QACP,MAAM,EAAE,MAAM,kBAAkB,CAAC,OAAO,CAAC;KACzC,CAAC,CAAC,CACH,CAAA;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAChG,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAA;IAC5D,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;IAC7E,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;IAChF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAA;IACtE,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAA;IACrH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtD,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAA;IACzF,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACjE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAA;IAC7D,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA;AAChG,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,QAAyB,EAAmB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,WAAW,CAAC,CAAA;AAEzI,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAsB,EAAgF,EAAE;IACzI,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAiB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QACrG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IACpF,CAAC;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"resolveExtensionWatcher.js","sourceRoot":"","sources":["../../../src/commands/extension/resolveExtensionWatcher.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/setup.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,qBAAqB,GAAG;IACnC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAU,SAAS,qBAAqB,KAAG,OAAO,CAAC,IAAI,CAoFpF,CAAA"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/setup.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,qBAAqB,GAAG;IACnC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAU,SAAS,qBAAqB,KAAG,OAAO,CAAC,IAAI,CAmEpF,CAAA"}
@@ -1,7 +1,5 @@
1
- import fs from 'node:fs';
2
- import { execSync } from 'node:child_process';
3
1
  import { createOutput } from '../../output/io.js';
4
- import { HOST_NAME, getPlatform, getManifestDir, getManifestPath, getWrapperPath, findArgusExecutable, createManifest, createWrapperScript, shortenPath, } from './nativeHost.js';
2
+ import { getPlatform, findArgusExecutable, installNativeHosts, shortenPath } from './nativeHost.js';
5
3
  export const runExtensionSetup = async (options) => {
6
4
  const output = createOutput(options);
7
5
  const { extensionId } = options;
@@ -19,11 +17,6 @@ export const runExtensionSetup = async (options) => {
19
17
  process.exitCode = 1;
20
18
  return;
21
19
  }
22
- const manifestDir = getManifestDir(platform);
23
- const manifestPath = getManifestPath(platform);
24
- const wrapperPath = getWrapperPath(platform);
25
- // Ensure directory exists
26
- fs.mkdirSync(manifestDir, { recursive: true });
27
20
  // Find argus executable
28
21
  let executablePath;
29
22
  try {
@@ -39,50 +32,42 @@ export const runExtensionSetup = async (options) => {
39
32
  process.exitCode = 1;
40
33
  return;
41
34
  }
42
- // Create wrapper script
43
- createWrapperScript(platform, executablePath);
44
- // Create manifest
45
- const manifest = createManifest(extensionId, wrapperPath);
46
- fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
47
- // Windows: Add registry key
48
- if (platform === 'win32') {
49
- const regKey = `HKCU\\Software\\Google\\Chrome\\NativeMessagingHosts\\${HOST_NAME}`;
50
- try {
51
- execSync(`reg add "${regKey}" /ve /t REG_SZ /d "${manifestPath}" /f`, { stdio: 'pipe' });
35
+ let installedHosts;
36
+ try {
37
+ installedHosts = installNativeHosts(platform, extensionId, executablePath);
38
+ }
39
+ catch (error) {
40
+ if (options.json) {
41
+ output.writeJson({ success: false, error: `Failed to install native hosts: ${error.message}` });
52
42
  }
53
- catch (error) {
54
- if (options.json) {
55
- output.writeJson({ success: false, error: `Failed to add registry key: ${error.message}` });
56
- }
57
- else {
58
- console.error('Failed to add registry key:', error);
59
- }
60
- process.exitCode = 1;
61
- return;
43
+ else {
44
+ console.error('Failed to install native hosts:', error);
62
45
  }
46
+ process.exitCode = 1;
47
+ return;
63
48
  }
64
49
  if (options.json) {
65
50
  output.writeJson({
66
51
  success: true,
67
- hostName: HOST_NAME,
68
52
  extensionId,
69
- manifestPath,
70
- wrapperPath,
53
+ hosts: installedHosts,
71
54
  argusPath: executablePath,
72
55
  });
73
56
  }
74
57
  else {
75
58
  output.writeHuman('');
76
- output.writeHuman('Native messaging host installed');
59
+ output.writeHuman('Native messaging hosts installed');
77
60
  output.writeHuman('');
78
- output.writeHuman(` Host name: ${HOST_NAME}`);
79
61
  output.writeHuman(` Extension ID: ${extensionId}`);
80
- output.writeHuman(` Manifest: ${shortenPath(manifestPath)}`);
81
- output.writeHuman(` Wrapper: ${shortenPath(wrapperPath)}`);
62
+ for (const host of installedHosts) {
63
+ output.writeHuman(` Host name: ${host.hostName}`);
64
+ output.writeHuman(` Manifest: ${shortenPath(host.manifestPath)}`);
65
+ output.writeHuman(` Wrapper: ${shortenPath(host.wrapperPath)}`);
66
+ }
82
67
  output.writeHuman('');
83
68
  output.writeHuman('Next steps:');
84
69
  output.writeHuman(' 1. Reload the extension in chrome://extensions');
85
- output.writeHuman(' 2. Open the extension popup and attach a tab');
70
+ output.writeHuman(' 2. Run `argus ext tabs` or open the extension popup and attach a tab');
86
71
  output.writeHuman('');
87
72
  }
88
73
  };
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/extension/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/extension/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAOnG,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAA8B,EAAiB,EAAE;IACxF,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;IAE/B,IAAI,QAAQ,CAAA;IACZ,IAAI,CAAC;QACJ,QAAQ,GAAG,WAAW,EAAE,CAAA;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;QACtE,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACP,CAAC;IAED,wBAAwB;IACxB,IAAI,cAAsB,CAAA;IAC1B,IAAI,CAAC;QACJ,cAAc,GAAG,mBAAmB,EAAE,CAAA;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;QACtE,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACP,CAAC;IAED,IAAI,cAAc,CAAA;IAClB,IAAI,CAAC;QACJ,cAAc,GAAG,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,CAAC,CAAA;IAC3E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAoC,KAAe,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QAC3G,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAA;QACxD,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACP,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,SAAS,CAAC;YAChB,OAAO,EAAE,IAAI;YACb,WAAW;YACX,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,cAAc;SACzB,CAAC,CAAA;IACH,CAAC;SAAM,CAAC;QACP,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QACrB,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAA;QACrD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QACrB,MAAM,CAAC,UAAU,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAA;QACnD,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,CAAC,UAAU,CAAC,mBAAmB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YACrD,MAAM,CAAC,UAAU,CAAC,mBAAmB,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YACtE,MAAM,CAAC,UAAU,CAAC,mBAAmB,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACtE,CAAC;QACD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QACrB,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAChC,MAAM,CAAC,UAAU,CAAC,kDAAkD,CAAC,CAAA;QACrE,MAAM,CAAC,UAAU,CAAC,wEAAwE,CAAC,CAAA;QAC3F,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACtB,CAAC;AACF,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/status.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,sBAAsB,GAAG;IACpC,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,SAAS,sBAAsB,KAAG,OAAO,CAAC,IAAI,CAkFtF,CAAA"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/status.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,sBAAsB,GAAG;IACpC,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,SAAS,sBAAsB,KAAG,OAAO,CAAC,IAAI,CAuDtF,CAAA"}
@@ -1,6 +1,5 @@
1
- import fs from 'node:fs';
2
1
  import { createOutput } from '../../output/io.js';
3
- import { HOST_NAME, getPlatform, getManifestPath, getWrapperPath, readManifest, isWrapperExecutable } from './nativeHost.js';
2
+ import { getPlatform, inspectNativeHosts } from './nativeHost.js';
4
3
  export const runExtensionStatus = async (options) => {
5
4
  const output = createOutput(options);
6
5
  let platform;
@@ -17,40 +16,14 @@ export const runExtensionStatus = async (options) => {
17
16
  process.exitCode = 1;
18
17
  return;
19
18
  }
20
- const manifestPath = getManifestPath(platform);
21
- const wrapperPath = getWrapperPath(platform);
22
- const manifestExists = fs.existsSync(manifestPath);
23
- const wrapperExists = fs.existsSync(wrapperPath);
24
- const wrapperExecutable = wrapperExists && isWrapperExecutable(wrapperPath);
25
- let manifest = null;
26
- let manifestValid = false;
27
- let extensionId = null;
28
- if (manifestExists) {
29
- manifest = readManifest(manifestPath);
30
- if (manifest && manifest.name === HOST_NAME && manifest.type === 'stdio' && Array.isArray(manifest.allowed_origins)) {
31
- manifestValid = true;
32
- const origin = manifest.allowed_origins[0];
33
- if (origin) {
34
- const match = origin.match(/^chrome-extension:\/\/([^/]+)\/$/);
35
- if (match) {
36
- extensionId = match[1];
37
- }
38
- }
39
- }
40
- }
41
- const configured = manifestExists && manifestValid && wrapperExists && wrapperExecutable;
19
+ const hosts = inspectNativeHosts(platform);
20
+ const configured = hosts.every((host) => host.configured);
21
+ const extensionId = hosts.find((host) => host.extensionId)?.extensionId ?? null;
42
22
  if (options.json) {
43
23
  output.writeJson({
44
24
  configured,
45
- hostName: HOST_NAME,
46
- manifestPath,
47
- wrapperPath,
48
- manifestExists,
49
- manifestValid,
50
- wrapperExists,
51
- wrapperExecutable,
25
+ hosts,
52
26
  extensionId,
53
- argusPath: manifest?.path ?? null,
54
27
  });
55
28
  if (!configured) {
56
29
  process.exitCode = 1;
@@ -59,17 +32,18 @@ export const runExtensionStatus = async (options) => {
59
32
  }
60
33
  output.writeHuman('');
61
34
  if (configured) {
62
- output.writeHuman('Native messaging host is configured');
35
+ output.writeHuman('Native messaging hosts are configured');
63
36
  output.writeHuman('');
64
- output.writeHuman(` Manifest: exists`);
65
- output.writeHuman(` Wrapper: exists, executable`);
66
37
  output.writeHuman(` Extension ID: ${extensionId}`);
67
38
  }
68
39
  else {
69
- output.writeHuman('Native messaging host not configured');
40
+ output.writeHuman('Native messaging hosts not configured');
70
41
  output.writeHuman('');
71
- output.writeHuman(` Manifest: ${manifestExists ? (manifestValid ? 'exists' : 'exists, invalid') : 'not found'}`);
72
- output.writeHuman(` Wrapper: ${wrapperExists ? (wrapperExecutable ? 'exists, executable' : 'exists, not executable') : 'not found'}`);
42
+ for (const host of hosts) {
43
+ output.writeHuman(` ${host.hostName}`);
44
+ output.writeHuman(` Manifest: ${host.manifestExists ? (host.manifestValid ? 'exists' : 'exists, invalid') : 'not found'}`);
45
+ output.writeHuman(` Wrapper: ${host.wrapperExists ? (host.wrapperExecutable ? 'exists, executable' : 'exists, not executable') : 'not found'}`);
46
+ }
73
47
  if (extensionId) {
74
48
  output.writeHuman(` Extension ID: ${extensionId}`);
75
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/extension/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/extension/status.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
+ import { requestWatcherCommandAction } from '../cli/defineWatcherCommand.js';
1
2
  import { createOutput } from '../output/io.js';
2
3
  import { formatLocatedElements } from '../output/locate.js';
3
- import { requestWatcherAction } from '../watchers/requestWatcher.js';
4
4
  import { runDomClick } from './domClick.js';
5
5
  import { runDomFill } from './domFill.js';
6
6
  import { runDomFocus } from './domFocus.js';
@@ -55,7 +55,7 @@ const runLocateRequest = async (id, path, body, options) => {
55
55
  process.exitCode = 2;
56
56
  return;
57
57
  }
58
- const result = await requestWatcherAction({
58
+ const result = await requestWatcherCommandAction({
59
59
  id,
60
60
  path,
61
61
  method: 'POST',