@vforsh/argus 0.1.15 → 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 (54) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/argus.js +691 -285
  3. package/dist/cli/register/registerEval.d.ts.map +1 -1
  4. package/dist/cli/register/registerEval.js +6 -0
  5. package/dist/cli/register/registerEval.js.map +1 -1
  6. package/dist/cli/register/registerExtension.d.ts.map +1 -1
  7. package/dist/cli/register/registerExtension.js +24 -1
  8. package/dist/cli/register/registerExtension.js.map +1 -1
  9. package/dist/cli/register/registerWatcher.d.ts.map +1 -1
  10. package/dist/cli/register/registerWatcher.js +1 -0
  11. package/dist/cli/register/registerWatcher.js.map +1 -1
  12. package/dist/commands/eval.d.ts +2 -0
  13. package/dist/commands/eval.d.ts.map +1 -1
  14. package/dist/commands/eval.js.map +1 -1
  15. package/dist/commands/evalBundle.d.ts +17 -0
  16. package/dist/commands/evalBundle.d.ts.map +1 -0
  17. package/dist/commands/evalBundle.js +119 -0
  18. package/dist/commands/evalBundle.js.map +1 -0
  19. package/dist/commands/evalShared.d.ts +1 -0
  20. package/dist/commands/evalShared.d.ts.map +1 -1
  21. package/dist/commands/evalShared.js +21 -3
  22. package/dist/commands/evalShared.js.map +1 -1
  23. package/dist/commands/evalUntil.d.ts +2 -0
  24. package/dist/commands/evalUntil.d.ts.map +1 -1
  25. package/dist/commands/evalUntil.js.map +1 -1
  26. package/dist/commands/extension/attach.d.ts +12 -0
  27. package/dist/commands/extension/attach.d.ts.map +1 -0
  28. package/dist/commands/extension/attach.js +175 -0
  29. package/dist/commands/extension/attach.js.map +1 -0
  30. package/dist/commands/extension/info.d.ts.map +1 -1
  31. package/dist/commands/extension/info.js +13 -33
  32. package/dist/commands/extension/info.js.map +1 -1
  33. package/dist/commands/extension/nativeHost.d.ts +35 -5
  34. package/dist/commands/extension/nativeHost.d.ts.map +1 -1
  35. package/dist/commands/extension/nativeHost.js +95 -12
  36. package/dist/commands/extension/nativeHost.js.map +1 -1
  37. package/dist/commands/extension/remove.d.ts.map +1 -1
  38. package/dist/commands/extension/remove.js +18 -38
  39. package/dist/commands/extension/remove.js.map +1 -1
  40. package/dist/commands/extension/resolveExtensionWatcher.d.ts +1 -1
  41. package/dist/commands/extension/resolveExtensionWatcher.d.ts.map +1 -1
  42. package/dist/commands/extension/resolveExtensionWatcher.js +15 -29
  43. package/dist/commands/extension/resolveExtensionWatcher.js.map +1 -1
  44. package/dist/commands/extension/setup.d.ts.map +1 -1
  45. package/dist/commands/extension/setup.js +20 -35
  46. package/dist/commands/extension/setup.js.map +1 -1
  47. package/dist/commands/extension/status.d.ts.map +1 -1
  48. package/dist/commands/extension/status.js +12 -38
  49. package/dist/commands/extension/status.js.map +1 -1
  50. package/dist/commands/watcherNativeHost.d.ts +1 -0
  51. package/dist/commands/watcherNativeHost.d.ts.map +1 -1
  52. package/dist/commands/watcherNativeHost.js +8 -2
  53. package/dist/commands/watcherNativeHost.js.map +1 -1
  54. package/package.json +3 -2
@@ -0,0 +1,175 @@
1
+ import { createOutput } from '../../output/io.js';
2
+ import { formatWatcherLine } from '../../output/format.js';
3
+ import { fetchWatcherJson } from '../../watchers/requestWatcher.js';
4
+ import { resolveExtensionWatcher } from './resolveExtensionWatcher.js';
5
+ export const runExtensionAttach = async (options) => {
6
+ await runExtensionTabAction('attach', options);
7
+ };
8
+ export const runExtensionDetach = async (options) => {
9
+ await runExtensionTabAction('detach', options);
10
+ };
11
+ const runExtensionTabAction = async (action, options) => {
12
+ const output = createOutput(options);
13
+ const resolved = await resolveExtensionWatcher({});
14
+ if (!resolved.ok) {
15
+ writeResolveFailure(output, options, resolved);
16
+ return;
17
+ }
18
+ const selector = parseTabSelector(options);
19
+ if (!selector.ok) {
20
+ writeTabResolutionFailure(output, options, selector);
21
+ return;
22
+ }
23
+ const tabs = await fetchTabs(resolved.watcher, selector.selector, output, options);
24
+ if (!tabs) {
25
+ return;
26
+ }
27
+ const tab = resolveTab(tabs, selector.selector);
28
+ if (!tab.ok) {
29
+ writeTabResolutionFailure(output, options, tab);
30
+ return;
31
+ }
32
+ let response;
33
+ try {
34
+ response = await fetchWatcherJson(resolved.watcher, {
35
+ path: action === 'attach' ? '/attach' : '/detach',
36
+ method: 'POST',
37
+ body: { tabId: tab.tab.tabId },
38
+ timeoutMs: 5_000,
39
+ returnErrorResponse: true,
40
+ });
41
+ }
42
+ catch (error) {
43
+ const message = error instanceof Error ? error.message : String(error);
44
+ writeCommandError(output, options, `${resolved.watcher.id}: failed to ${action} tab (${message})`, message);
45
+ return;
46
+ }
47
+ if (!response.ok) {
48
+ writeCommandError(output, options, `Error: ${response.error.message}`, response);
49
+ return;
50
+ }
51
+ if (options.json) {
52
+ output.writeJson({
53
+ ok: true,
54
+ tab: tab.tab,
55
+ watcherId: resolved.watcher.id,
56
+ });
57
+ return;
58
+ }
59
+ const verb = action === 'attach' ? 'Attach' : 'Detach';
60
+ output.writeHuman(`${verb} request sent via ${resolved.watcher.id}`);
61
+ output.writeHuman(` ${formatExtensionTabLine(tab.tab)}`);
62
+ };
63
+ const fetchTabs = async (watcher, selector, output, options) => {
64
+ const query = buildTabsQuery(selector);
65
+ try {
66
+ const response = await fetchWatcherJson(watcher, {
67
+ path: '/tabs',
68
+ query,
69
+ timeoutMs: 5_000,
70
+ returnErrorResponse: true,
71
+ });
72
+ if (!response.ok) {
73
+ writeCommandError(output, options, `Error: ${response.error.message}`, response);
74
+ return null;
75
+ }
76
+ return response.tabs;
77
+ }
78
+ catch (error) {
79
+ const message = error instanceof Error ? error.message : String(error);
80
+ writeCommandError(output, options, `${watcher.id}: failed to list extension tabs (${message})`, message);
81
+ return null;
82
+ }
83
+ };
84
+ const parseTabSelector = (options) => {
85
+ const tabId = parseTabId(options.tab);
86
+ const url = options.url?.trim();
87
+ const title = options.title?.trim();
88
+ if (tabId !== null && (url || title)) {
89
+ return { ok: false, reason: 'Use --tab by itself, or resolve by --url/--title.', exitCode: 2 };
90
+ }
91
+ if (tabId === null && !url && !title) {
92
+ return { ok: false, reason: 'Specify --tab <tabId>, --url <substring>, or --title <substring>.', exitCode: 2 };
93
+ }
94
+ if (options.tab != null && tabId === null) {
95
+ return { ok: false, reason: `Invalid --tab value: ${options.tab}`, exitCode: 2 };
96
+ }
97
+ if (tabId !== null) {
98
+ return { ok: true, selector: { kind: 'tab', tabId } };
99
+ }
100
+ return { ok: true, selector: { kind: 'query', url, title } };
101
+ };
102
+ const resolveTab = (tabs, selector) => {
103
+ const matches = selector.kind === 'tab' ? tabs.filter((tab) => tab.tabId === selector.tabId) : tabs;
104
+ if (matches.length === 0) {
105
+ return { ok: false, reason: 'No extension tab matched.', exitCode: 2 };
106
+ }
107
+ if (matches.length > 1) {
108
+ return { ok: false, reason: 'Multiple extension tabs matched. Use --tab to pick one.', exitCode: 2, matches };
109
+ }
110
+ return { ok: true, tab: matches[0] };
111
+ };
112
+ const parseTabId = (value) => {
113
+ if (value === undefined) {
114
+ return null;
115
+ }
116
+ const tabId = typeof value === 'number' ? value : Number(value);
117
+ return Number.isInteger(tabId) ? tabId : null;
118
+ };
119
+ const buildTabsQuery = (selector) => {
120
+ const query = new URLSearchParams();
121
+ if (selector.kind === 'tab') {
122
+ return query;
123
+ }
124
+ if (selector.url) {
125
+ query.set('url', selector.url);
126
+ }
127
+ if (selector.title) {
128
+ query.set('title', selector.title);
129
+ }
130
+ return query;
131
+ };
132
+ const writeTabResolutionFailure = (output, options, result) => {
133
+ const matches = 'matches' in result ? result.matches : undefined;
134
+ if (options.json) {
135
+ output.writeJson({ ok: false, error: result.reason, matches: matches ?? [] });
136
+ }
137
+ else {
138
+ output.writeWarn(result.reason);
139
+ if (matches) {
140
+ for (const tab of matches) {
141
+ output.writeWarn(` ${formatExtensionTabLine(tab)}`);
142
+ }
143
+ }
144
+ }
145
+ process.exitCode = result.exitCode;
146
+ };
147
+ const writeResolveFailure = (output, options, resolved) => {
148
+ if (options.json) {
149
+ output.writeJson({ ok: false, error: resolved.error, candidates: resolved.candidates?.map((watcher) => watcher.id) ?? [] });
150
+ }
151
+ else {
152
+ output.writeWarn(resolved.error);
153
+ if (resolved.candidates && resolved.candidates.length > 0) {
154
+ for (const watcher of resolved.candidates) {
155
+ output.writeWarn(formatWatcherLine(watcher));
156
+ }
157
+ }
158
+ }
159
+ process.exitCode = resolved.exitCode;
160
+ };
161
+ const writeCommandError = (output, options, humanMessage, jsonPayload) => {
162
+ if (options.json) {
163
+ output.writeJson(typeof jsonPayload === 'string' ? { ok: false, error: jsonPayload } : jsonPayload);
164
+ }
165
+ else {
166
+ output.writeWarn(humanMessage);
167
+ }
168
+ process.exitCode = 1;
169
+ };
170
+ const formatExtensionTabLine = (tab) => {
171
+ const state = tab.attached ? 'attached' : 'available';
172
+ const label = tab.title || '(untitled)';
173
+ return `${tab.tabId} [${state}] ${label} - ${tab.url}`;
174
+ };
175
+ //# sourceMappingURL=attach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/commands/extension/attach.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/info.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,oBAAoB,GAAG;IAClC,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,SAAS,oBAAoB,KAAG,OAAO,CAAC,IAAI,CAqElF,CAAA"}
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/info.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,oBAAoB,GAAG;IAClC,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,SAAS,oBAAoB,KAAG,OAAO,CAAC,IAAI,CA8ClF,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, shortenPath } from './nativeHost.js';
2
+ import { getPlatform, inspectNativeHosts, shortenPath } from './nativeHost.js';
4
3
  export const runExtensionInfo = async (options) => {
5
4
  const output = createOutput(options);
6
5
  let platform;
@@ -17,51 +16,32 @@ export const runExtensionInfo = 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
- let extensionId = null;
25
- let argusPath = null;
26
- if (manifestExists) {
27
- const manifest = readManifest(manifestPath);
28
- if (manifest) {
29
- argusPath = manifest.path;
30
- const origin = manifest.allowed_origins?.[0];
31
- if (origin) {
32
- const match = origin.match(/^chrome-extension:\/\/([^/]+)\/$/);
33
- if (match) {
34
- extensionId = match[1];
35
- }
36
- }
37
- }
38
- }
39
- const installed = manifestExists && wrapperExists;
19
+ const hosts = inspectNativeHosts(platform);
20
+ const installed = hosts.every((host) => host.installed);
40
21
  if (options.json) {
41
22
  output.writeJson({
42
- hostName: HOST_NAME,
43
23
  platform,
44
- manifestPath,
45
- wrapperPath,
46
24
  installed,
47
- extensionId,
48
- argusPath,
25
+ hosts,
49
26
  });
50
27
  return;
51
28
  }
52
29
  output.writeHuman('');
53
30
  output.writeHuman('Native Messaging Host Info');
54
31
  output.writeHuman('');
55
- output.writeHuman(` Host name: ${HOST_NAME}`);
56
32
  output.writeHuman(` Platform: ${platform}`);
57
- output.writeHuman(` Manifest path: ${shortenPath(manifestPath)}`);
58
- output.writeHuman(` Wrapper path: ${shortenPath(wrapperPath)}`);
33
+ for (const host of hosts) {
34
+ output.writeHuman(` Host name: ${host.hostName}`);
35
+ output.writeHuman(` Manifest path: ${shortenPath(host.manifestPath)}`);
36
+ output.writeHuman(` Wrapper path: ${shortenPath(host.wrapperPath)}`);
37
+ }
59
38
  output.writeHuman('');
60
39
  output.writeHuman('Current configuration:');
61
40
  output.writeHuman(` Installed: ${installed ? 'yes' : 'no'}`);
62
- if (installed) {
63
- output.writeHuman(` Extension ID: ${extensionId ?? '(unknown)'}`);
64
- output.writeHuman(` Argus path: ${argusPath ?? '(unknown)'}`);
41
+ for (const host of hosts.filter((entry) => entry.installed)) {
42
+ output.writeHuman(` ${host.hostName}`);
43
+ output.writeHuman(` Extension ID: ${host.extensionId ?? '(unknown)'}`);
44
+ output.writeHuman(` Argus path: ${host.argusPath ?? '(unknown)'}`);
65
45
  }
66
46
  output.writeHuman('');
67
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/commands/extension/info.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/commands/extension/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAM9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAA6B,EAAiB,EAAE;IACtF,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,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;QACtD,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,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAEvD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,SAAS,CAAC;YAChB,QAAQ;YACR,SAAS;YACT,KAAK;SACL,CAAC,CAAA;QACF,OAAM;IACP,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACrB,MAAM,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAA;IAC/C,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACrB,MAAM,CAAC,UAAU,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAA;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,CAAC,UAAU,CAAC,oBAAoB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QACtD,MAAM,CAAC,UAAU,CAAC,oBAAoB,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QACvE,MAAM,CAAC,UAAU,CAAC,oBAAoB,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACvE,CAAC;IACD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACrB,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAA;IAC3C,MAAM,CAAC,UAAU,CAAC,oBAAoB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACjE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QACvC,MAAM,CAAC,UAAU,CAAC,qBAAqB,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,CAAC,CAAA;QACzE,MAAM,CAAC,UAAU,CAAC,qBAAqB,IAAI,CAAC,SAAS,IAAI,WAAW,EAAE,CAAC,CAAA;IACxE,CAAC;IACD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;AACtB,CAAC,CAAA"}
@@ -1,8 +1,12 @@
1
- export declare const HOST_NAME = "com.vforsh.argus.bridge";
1
+ export declare const BRIDGE_HOST_NAME = "com.vforsh.argus.bridge";
2
+ export declare const CONTROL_HOST_NAME = "com.vforsh.argus.control";
3
+ export declare const CONTROL_WATCHER_ID = "extension-control";
4
+ export declare const HOST_NAMES: readonly ["com.vforsh.argus.bridge", "com.vforsh.argus.control"];
5
+ export type NativeHostName = (typeof HOST_NAMES)[number];
2
6
  export type Platform = 'darwin' | 'linux' | 'win32';
3
7
  export declare const getManifestDir: (platform: Platform) => string;
4
- export declare const getManifestPath: (platform: Platform) => string;
5
- export declare const getWrapperPath: (platform: Platform) => string;
8
+ export declare const getManifestPath: (platform: Platform, hostName?: NativeHostName) => string;
9
+ export declare const getWrapperPath: (platform: Platform, hostName?: NativeHostName) => string;
6
10
  export declare const getPlatform: () => Platform;
7
11
  export declare const findArgusExecutable: () => string;
8
12
  export declare const findNodePath: () => string;
@@ -13,8 +17,34 @@ export type NativeHostManifest = {
13
17
  type: 'stdio';
14
18
  allowed_origins: string[];
15
19
  };
16
- export declare const createManifest: (extensionId: string, executablePath: string) => NativeHostManifest;
17
- export declare const createWrapperScript: (platform: Platform, executablePath: string) => string;
20
+ export type NativeHostInspection = {
21
+ hostName: NativeHostName;
22
+ manifestPath: string;
23
+ wrapperPath: string;
24
+ manifestExists: boolean;
25
+ manifestValid: boolean;
26
+ wrapperExists: boolean;
27
+ wrapperExecutable: boolean;
28
+ configured: boolean;
29
+ installed: boolean;
30
+ extensionId: string | null;
31
+ argusPath: string | null;
32
+ };
33
+ export type InstalledNativeHost = {
34
+ hostName: NativeHostName;
35
+ manifestPath: string;
36
+ wrapperPath: string;
37
+ };
38
+ export type RemovedNativeHost = NativeHostInspection & {
39
+ manifestRemoved: boolean;
40
+ wrapperRemoved: boolean;
41
+ };
42
+ export declare const createManifest: (extensionId: string, executablePath: string, hostName?: NativeHostName) => NativeHostManifest;
43
+ export declare const createWrapperScript: (platform: Platform, executablePath: string, hostName?: NativeHostName) => string;
44
+ export declare const installNativeHosts: (platform: Platform, extensionId: string, executablePath: string) => InstalledNativeHost[];
45
+ export declare const inspectNativeHosts: (platform: Platform) => NativeHostInspection[];
46
+ export declare const removeNativeHosts: (platform: Platform) => RemovedNativeHost[];
47
+ export declare const inspectNativeHost: (platform: Platform, hostName: NativeHostName) => NativeHostInspection;
18
48
  export declare const readManifest: (manifestPath: string) => NativeHostManifest | null;
19
49
  export declare const isWrapperExecutable: (wrapperPath: string) => boolean;
20
50
  export declare const shortenPath: (filePath: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"nativeHost.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/nativeHost.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,4BAA4B,CAAA;AAElD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAA;AAEnD,eAAO,MAAM,cAAc,GAAI,UAAU,QAAQ,KAAG,MAWnD,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,UAAU,QAAQ,KAAG,MAEpD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,UAAU,QAAQ,KAAG,MAEnD,CAAA;AAED,eAAO,MAAM,WAAW,QAAO,QAM9B,CAAA;AAED,eAAO,MAAM,mBAAmB,QAAO,MAuBtC,CAAA;AAED,eAAO,MAAM,YAAY,QAAO,MAI/B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;IACb,eAAe,EAAE,MAAM,EAAE,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,aAAa,MAAM,EAAE,gBAAgB,MAAM,KAAG,kBAQ5E,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,UAAU,QAAQ,EAAE,gBAAgB,MAAM,KAAG,MAahF,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,cAAc,MAAM,KAAG,kBAAkB,GAAG,IAOxE,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,aAAa,MAAM,KAAG,OAOzD,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MAM9C,CAAA"}
1
+ {"version":3,"file":"nativeHost.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/nativeHost.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,4BAA4B,CAAA;AACzD,eAAO,MAAM,iBAAiB,6BAA6B,CAAA;AAC3D,eAAO,MAAM,kBAAkB,sBAAsB,CAAA;AACrD,eAAO,MAAM,UAAU,kEAAiD,CAAA;AAExE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAExD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAA;AAEnD,eAAO,MAAM,cAAc,GAAI,UAAU,QAAQ,KAAG,MAWnD,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,UAAU,QAAQ,EAAE,WAAU,cAAiC,KAAG,MAEjG,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,UAAU,QAAQ,EAAE,WAAU,cAAiC,KAAG,MAGhG,CAAA;AAED,eAAO,MAAM,WAAW,QAAO,QAM9B,CAAA;AAED,eAAO,MAAM,mBAAmB,QAAO,MAuBtC,CAAA;AAED,eAAO,MAAM,YAAY,QAAO,MAI/B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;IACb,eAAe,EAAE,MAAM,EAAE,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IAClC,QAAQ,EAAE,cAAc,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;IACtB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IACjC,QAAQ,EAAE,cAAc,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,GAAG;IACtD,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,aAAa,MAAM,EAAE,gBAAgB,MAAM,EAAE,WAAU,cAAiC,KAAG,kBAQzH,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,UAAU,QAAQ,EAAE,gBAAgB,MAAM,EAAE,WAAU,cAAiC,KAAG,MAa7H,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,UAAU,QAAQ,EAAE,aAAa,MAAM,EAAE,gBAAgB,MAAM,KAAG,mBAAmB,EAUvH,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,UAAU,QAAQ,KAAG,oBAAoB,EAE3E,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,UAAU,QAAQ,KAAG,iBAAiB,EAQvE,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,UAAU,QAAQ,EAAE,UAAU,cAAc,KAAG,oBAuBhF,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,cAAc,MAAM,KAAG,kBAAkB,GAAG,IAOxE,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,aAAa,MAAM,KAAG,OAOzD,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MAM9C,CAAA"}
@@ -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":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAMtG,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,eAAe,CAAC,QAAQ,CAAC,CAAA;IAC9C,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IAE5C,IAAI,eAAe,GAAG,KAAK,CAAA;IAC3B,IAAI,cAAc,GAAG,KAAK,CAAA;IAE1B,kBAAkB;IAClB,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAC3B,eAAe,GAAG,IAAI,CAAA;IACvB,CAAC;IAED,wBAAwB;IACxB,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;QAC1B,cAAc,GAAG,IAAI,CAAA;IACtB,CAAC;IAED,+BAA+B;IAC/B,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,yDAAyD,SAAS,EAAE,CAAA;QACnF,IAAI,CAAC;YACJ,QAAQ,CAAC,eAAe,MAAM,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QACzD,CAAC;QAAC,MAAM,CAAC;YACR,sBAAsB;QACvB,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,SAAS,CAAC;YAChB,OAAO,EAAE,IAAI;YACb,eAAe;YACf,cAAc;YACd,YAAY;YACZ,WAAW;SACX,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,+BAA+B,CAAC,CAAA;YAClD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACrB,IAAI,eAAe,EAAE,CAAC;gBACrB,MAAM,CAAC,UAAU,CAAC,uBAAuB,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YACtE,CAAC;YACD,IAAI,cAAc,EAAE,CAAC;gBACpB,MAAM,CAAC,UAAU,CAAC,uBAAuB,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YACrE,CAAC;QACF,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,UAAU,CAAC,yCAAyC,CAAC,CAAA;YAC5D,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACrB,MAAM,CAAC,UAAU,CAAC,yBAAyB,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YACvE,MAAM,CAAC,UAAU,CAAC,yBAAyB,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACvE,CAAC;QACD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACtB,CAAC;AACF,CAAC,CAAA"}
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"}