@vforsh/argus 0.1.18 → 0.1.20
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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/argus.js +3008 -572
- package/dist/cli/plugins/pluginHost.d.ts.map +1 -1
- package/dist/cli/plugins/pluginHost.js +1 -0
- package/dist/cli/plugins/pluginHost.js.map +1 -1
- package/dist/cli/register/extensionCommands.d.ts.map +1 -1
- package/dist/cli/register/extensionCommands.js +131 -6
- package/dist/cli/register/extensionCommands.js.map +1 -1
- package/dist/cli/register/index.d.ts.map +1 -1
- package/dist/cli/register/index.js +6 -0
- package/dist/cli/register/index.js.map +1 -1
- package/dist/cli/register/recordCommands.d.ts +3 -0
- package/dist/cli/register/recordCommands.d.ts.map +1 -0
- package/dist/cli/register/recordCommands.js +90 -0
- package/dist/cli/register/recordCommands.js.map +1 -0
- package/dist/cli/register/skillCommands.d.ts +3 -0
- package/dist/cli/register/skillCommands.d.ts.map +1 -0
- package/dist/cli/register/skillCommands.js +13 -0
- package/dist/cli/register/skillCommands.js.map +1 -0
- package/dist/commands/domDrag.d.ts +21 -0
- package/dist/commands/domDrag.d.ts.map +1 -0
- package/dist/commands/domDrag.js +179 -0
- package/dist/commands/domDrag.js.map +1 -0
- package/dist/commands/extension/attach.d.ts +2 -0
- package/dist/commands/extension/attach.d.ts.map +1 -1
- package/dist/commands/extension/attach.js +31 -6
- package/dist/commands/extension/attach.js.map +1 -1
- package/dist/commands/extension/doctor.d.ts +6 -0
- package/dist/commands/extension/doctor.d.ts.map +1 -0
- package/dist/commands/extension/doctor.js +185 -0
- package/dist/commands/extension/doctor.js.map +1 -0
- package/dist/commands/extension/extensionId.d.ts +27 -0
- package/dist/commands/extension/extensionId.d.ts.map +1 -0
- package/dist/commands/extension/extensionId.js +37 -0
- package/dist/commands/extension/extensionId.js.map +1 -0
- package/dist/commands/extension/extensionPath.d.ts +15 -0
- package/dist/commands/extension/extensionPath.d.ts.map +1 -0
- package/dist/commands/extension/extensionPath.js +61 -0
- package/dist/commands/extension/extensionPath.js.map +1 -0
- package/dist/commands/extension/install.d.ts +16 -0
- package/dist/commands/extension/install.d.ts.map +1 -0
- package/dist/commands/extension/install.js +154 -0
- package/dist/commands/extension/install.js.map +1 -0
- package/dist/commands/extension/select.d.ts +7 -0
- package/dist/commands/extension/select.d.ts.map +1 -0
- package/dist/commands/extension/select.js +73 -0
- package/dist/commands/extension/select.js.map +1 -0
- package/dist/commands/extension/setup.d.ts +2 -1
- package/dist/commands/extension/setup.d.ts.map +1 -1
- package/dist/commands/extension/setup.js +5 -2
- package/dist/commands/extension/setup.js.map +1 -1
- package/dist/commands/extension/show.d.ts +4 -0
- package/dist/commands/extension/show.d.ts.map +1 -1
- package/dist/commands/extension/show.js +12 -88
- package/dist/commands/extension/show.js.map +1 -1
- package/dist/commands/extension/tabAttach.d.ts +28 -0
- package/dist/commands/extension/tabAttach.d.ts.map +1 -0
- package/dist/commands/extension/tabAttach.js +106 -0
- package/dist/commands/extension/tabAttach.js.map +1 -0
- package/dist/commands/extension/tabWatcher.d.ts +22 -0
- package/dist/commands/extension/tabWatcher.d.ts.map +1 -0
- package/dist/commands/extension/tabWatcher.js +89 -0
- package/dist/commands/extension/tabWatcher.js.map +1 -0
- package/dist/commands/extension/targetSelection.d.ts +62 -0
- package/dist/commands/extension/targetSelection.d.ts.map +1 -0
- package/dist/commands/extension/targetSelection.js +210 -0
- package/dist/commands/extension/targetSelection.js.map +1 -0
- package/dist/commands/extension/targets.d.ts +7 -0
- package/dist/commands/extension/targets.d.ts.map +1 -0
- package/dist/commands/extension/targets.js +73 -0
- package/dist/commands/extension/targets.js.map +1 -0
- package/dist/commands/extension/use.d.ts +13 -0
- package/dist/commands/extension/use.d.ts.map +1 -0
- package/dist/commands/extension/use.js +66 -0
- package/dist/commands/extension/use.js.map +1 -0
- package/dist/commands/record.d.ts +35 -0
- package/dist/commands/record.d.ts.map +1 -0
- package/dist/commands/record.js +210 -0
- package/dist/commands/record.js.map +1 -0
- package/dist/commands/skill.d.ts +6 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +42 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/watcherNativeHost.js +48 -1
- package/dist/commands/watcherNativeHost.js.map +1 -1
- package/dist/extension/dist/background/auth-header-monitor.js +77 -0
- package/dist/extension/dist/background/bridge-client.js +120 -0
- package/dist/extension/dist/background/cdp-proxy.js +201 -0
- package/dist/extension/dist/background/debugger-manager.js +296 -0
- package/dist/extension/dist/background/service-worker.js +2004 -0
- package/dist/extension/dist/background/service-worker.js.map +7 -0
- package/dist/extension/dist/popup/popup.js +730 -0
- package/dist/extension/dist/popup/popup.js.map +7 -0
- package/dist/extension/dist/popup/tabMarkup.js +104 -0
- package/dist/extension/dist/popup/viewState.js +60 -0
- package/dist/extension/dist/types/messages.js +5 -0
- package/dist/extension/icons/icon-128.png +0 -0
- package/dist/extension/icons/icon-16.png +0 -0
- package/dist/extension/icons/icon-48.png +0 -0
- package/dist/extension/manifest.json +26 -0
- package/dist/extension/src/popup/popup.html +756 -0
- package/dist/skill/argus/SKILL.md +202 -0
- package/dist/skill/argus/reference/CAPTURE.md +77 -0
- package/dist/skill/argus/reference/DIALOG.md +31 -0
- package/dist/skill/argus/reference/EVAL.md +137 -0
- package/dist/skill/argus/reference/EXTENSION.md +43 -0
- package/dist/skill/argus/reference/EXTENSION_IFRAME_EVAL.md +58 -0
- package/dist/skill/argus/reference/IFRAMES.md +46 -0
- package/dist/skill/argus/reference/INJECT.md +145 -0
- package/dist/skill/argus/reference/INSPECT.md +175 -0
- package/dist/skill/argus/reference/NET.md +108 -0
- package/dist/skill/argus/reference/PLUGINS.md +172 -0
- package/dist/skill/argus/reference/RUNTIME_CODE.md +42 -0
- package/dist/skill/argus/reference/START.md +120 -0
- package/dist/skill/argus/start-watcher.ts +108 -0
- package/package.json +2 -2
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { createOutput } from '../../output/io.js';
|
|
5
|
+
/**
|
|
6
|
+
* Print the absolute path to the unpacked Argus extension to load via
|
|
7
|
+
* chrome://extensions ("Load unpacked"). The built extension ships inside the
|
|
8
|
+
* CLI package (`dist/extension`), so end users never run a build step.
|
|
9
|
+
*/
|
|
10
|
+
export const runExtensionPath = (options) => {
|
|
11
|
+
const output = createOutput(options);
|
|
12
|
+
const extensionDir = resolveExtensionDir();
|
|
13
|
+
if (!extensionDir) {
|
|
14
|
+
const message = `Packaged Argus extension not found. Checked:\n${resolveExtensionCandidates().join('\n')}`;
|
|
15
|
+
if (options.json) {
|
|
16
|
+
output.writeJson({ ok: false, error: { message } });
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
console.error(message);
|
|
20
|
+
}
|
|
21
|
+
process.exitCode = 2;
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (options.json) {
|
|
25
|
+
output.writeJson({ ok: true, path: extensionDir });
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
output.writeHuman(extensionDir);
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Resolve the directory of the loadable unpacked extension, or `null` if no
|
|
32
|
+
* candidate contains both a manifest and a built service worker.
|
|
33
|
+
*/
|
|
34
|
+
export const resolveExtensionDir = () => {
|
|
35
|
+
for (const candidate of resolveExtensionCandidates()) {
|
|
36
|
+
if (isLoadableExtensionDir(candidate)) {
|
|
37
|
+
return candidate;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
};
|
|
42
|
+
const isLoadableExtensionDir = (dir) => {
|
|
43
|
+
return fs.existsSync(path.join(dir, 'manifest.json')) && fs.existsSync(path.join(dir, 'dist', 'background', 'service-worker.js'));
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Candidate locations, covering the bundled CLI (`<dist>/extension`), the
|
|
47
|
+
* tsc-only build (`<dist>/commands/extension` -> `<dist>/extension`), and the
|
|
48
|
+
* dev source tree (`packages/argus-extension`).
|
|
49
|
+
*/
|
|
50
|
+
const resolveExtensionCandidates = () => {
|
|
51
|
+
const moduleDir = path.dirname(fileURLToPath(import.meta.url));
|
|
52
|
+
const candidates = [
|
|
53
|
+
path.resolve(moduleDir, 'extension'),
|
|
54
|
+
path.resolve(moduleDir, '..', '..', 'extension'),
|
|
55
|
+
path.resolve(moduleDir, '..', 'extension'),
|
|
56
|
+
path.resolve(moduleDir, '..', '..', '..', 'argus-extension'),
|
|
57
|
+
path.resolve(moduleDir, '..', '..', '..', '..', 'argus-extension'),
|
|
58
|
+
];
|
|
59
|
+
return [...new Set(candidates)];
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=extensionPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensionPath.js","sourceRoot":"","sources":["../../../src/commands/extension/extensionPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAMjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAA6B,EAAQ,EAAE;IACvE,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAA;IAE1C,IAAI,CAAC,YAAY,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,iDAAiD,0BAA0B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QAC1G,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QACpD,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACP,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAA;QAClD,OAAM;IACP,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAkB,EAAE;IACtD,KAAK,MAAM,SAAS,IAAI,0BAA0B,EAAE,EAAE,CAAC;QACtD,IAAI,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,OAAO,SAAS,CAAA;QACjB,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,CAAC,GAAW,EAAW,EAAE;IACvD,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC,CAAA;AAClI,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,0BAA0B,GAAG,GAAa,EAAE;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9D,MAAM,UAAU,GAAG;QAClB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC;KAClE,CAAA;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA;AAChC,CAAC,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type ExtensionInstallOptions = {
|
|
2
|
+
/** Open chrome://extensions automatically. Disable with --no-open. */
|
|
3
|
+
open?: boolean;
|
|
4
|
+
/** Wait for the extension to connect. Disable with --no-wait. */
|
|
5
|
+
wait?: boolean;
|
|
6
|
+
/** Seconds to wait for the extension to connect (default 120). */
|
|
7
|
+
timeout?: string;
|
|
8
|
+
json?: boolean;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* One-command extension setup: install the native messaging hosts with the
|
|
12
|
+
* pinned ID, open chrome://extensions, point the user at the unpacked folder,
|
|
13
|
+
* then wait until the extension connects and report the first command to run.
|
|
14
|
+
*/
|
|
15
|
+
export declare const runExtensionInstall: (options: ExtensionInstallOptions) => Promise<void>;
|
|
16
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/install.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,uBAAuB,GAAG;IACrC,sEAAsE;IACtE,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,iEAAiE;IACjE,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAKD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAU,SAAS,uBAAuB,KAAG,OAAO,CAAC,IAAI,CAqDxF,CAAA"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { readRegistry } from '@vforsh/argus-core';
|
|
3
|
+
import { createOutput } from '../../output/io.js';
|
|
4
|
+
import { pruneRegistry } from '../../registry.js';
|
|
5
|
+
import { resolveChromeBin } from '../../utils/chromeBin.js';
|
|
6
|
+
import { ARGUS_EXTENSION_ID } from './extensionId.js';
|
|
7
|
+
import { resolveExtensionDir } from './extensionPath.js';
|
|
8
|
+
import { CONTROL_WATCHER_ID, findArgusExecutable, getPlatform, installNativeHosts } from './nativeHost.js';
|
|
9
|
+
const DEFAULT_TIMEOUT_SECONDS = 120;
|
|
10
|
+
const POLL_INTERVAL_MS = 700;
|
|
11
|
+
/**
|
|
12
|
+
* One-command extension setup: install the native messaging hosts with the
|
|
13
|
+
* pinned ID, open chrome://extensions, point the user at the unpacked folder,
|
|
14
|
+
* then wait until the extension connects and report the first command to run.
|
|
15
|
+
*/
|
|
16
|
+
export const runExtensionInstall = async (options) => {
|
|
17
|
+
const output = createOutput(options);
|
|
18
|
+
let platform;
|
|
19
|
+
try {
|
|
20
|
+
platform = getPlatform();
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
return fail(output, error.message);
|
|
24
|
+
}
|
|
25
|
+
const extensionDir = resolveExtensionDir();
|
|
26
|
+
if (!extensionDir) {
|
|
27
|
+
return fail(output, 'Packaged Argus extension not found. Build the CLI (npm run build:packages) or run from a built checkout.');
|
|
28
|
+
}
|
|
29
|
+
let executablePath;
|
|
30
|
+
try {
|
|
31
|
+
executablePath = findArgusExecutable();
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return fail(output, error.message);
|
|
35
|
+
}
|
|
36
|
+
let hosts;
|
|
37
|
+
try {
|
|
38
|
+
hosts = installNativeHosts(platform, ARGUS_EXTENSION_ID, executablePath);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
return fail(output, `Failed to install native hosts: ${error.message}`);
|
|
42
|
+
}
|
|
43
|
+
await pruneRegistry();
|
|
44
|
+
let connected = await isControlConnected();
|
|
45
|
+
const shouldOpen = options.open !== false && !connected;
|
|
46
|
+
const opened = shouldOpen ? openExtensionsPage() : false;
|
|
47
|
+
if (!output.json) {
|
|
48
|
+
printSummary(output, { extensionDir, hosts, connected, opened, shouldOpen });
|
|
49
|
+
}
|
|
50
|
+
const shouldWait = options.wait !== false && !connected;
|
|
51
|
+
if (shouldWait) {
|
|
52
|
+
connected = await waitForControl(parseTimeoutMs(options.timeout), output);
|
|
53
|
+
}
|
|
54
|
+
if (output.json) {
|
|
55
|
+
output.writeJson({ success: true, extensionId: ARGUS_EXTENSION_ID, extensionPath: extensionDir, hosts, connected });
|
|
56
|
+
if (!connected && shouldWait) {
|
|
57
|
+
process.exitCode = 1;
|
|
58
|
+
}
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
printResult(output, connected, shouldWait);
|
|
62
|
+
};
|
|
63
|
+
const isControlConnected = async () => {
|
|
64
|
+
const { registry } = await readRegistry();
|
|
65
|
+
return Boolean(registry.watchers[CONTROL_WATCHER_ID]);
|
|
66
|
+
};
|
|
67
|
+
const openExtensionsPage = () => {
|
|
68
|
+
const chromeBin = resolveChromeBin();
|
|
69
|
+
if (!chromeBin) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const child = spawn(chromeBin, ['chrome://extensions/'], { stdio: 'ignore', detached: true });
|
|
74
|
+
child.unref();
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const waitForControl = async (timeoutMs, output) => {
|
|
82
|
+
if (!output.json) {
|
|
83
|
+
output.writeHuman(`Waiting for the extension to connect (up to ${Math.round(timeoutMs / 1000)}s)...`);
|
|
84
|
+
}
|
|
85
|
+
const deadline = Date.now() + timeoutMs;
|
|
86
|
+
while (Date.now() < deadline) {
|
|
87
|
+
if (await isControlConnected()) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
await delay(POLL_INTERVAL_MS);
|
|
91
|
+
}
|
|
92
|
+
return isControlConnected();
|
|
93
|
+
};
|
|
94
|
+
const printSummary = (output, info) => {
|
|
95
|
+
output.writeHuman('');
|
|
96
|
+
output.writeHuman('Argus extension setup');
|
|
97
|
+
output.writeHuman('');
|
|
98
|
+
output.writeHuman(` Native hosts: installed (${info.hosts.map((host) => host.hostName).join(', ')})`);
|
|
99
|
+
output.writeHuman(` Extension ID: ${ARGUS_EXTENSION_ID}`);
|
|
100
|
+
output.writeHuman(` Load unpacked: ${info.extensionDir}`);
|
|
101
|
+
output.writeHuman('');
|
|
102
|
+
if (info.connected) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (info.opened) {
|
|
106
|
+
output.writeHuman('Opened chrome://extensions. Click "Load unpacked" and select the folder above.');
|
|
107
|
+
}
|
|
108
|
+
else if (info.shouldOpen) {
|
|
109
|
+
output.writeHuman('Open chrome://extensions, then click "Load unpacked" and select the folder above.');
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
output.writeHuman('Open chrome://extensions and "Load unpacked" the folder above.');
|
|
113
|
+
}
|
|
114
|
+
output.writeHuman('(Enable Developer mode if the "Load unpacked" button is hidden.)');
|
|
115
|
+
output.writeHuman('');
|
|
116
|
+
};
|
|
117
|
+
const printResult = (output, connected, waited) => {
|
|
118
|
+
if (connected) {
|
|
119
|
+
output.writeHuman('Extension connected.');
|
|
120
|
+
output.writeHuman('');
|
|
121
|
+
output.writeHuman('Try it:');
|
|
122
|
+
output.writeHuman(' argus ext tabs');
|
|
123
|
+
output.writeHuman('');
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (waited) {
|
|
127
|
+
output.writeHuman('Extension did not connect yet.');
|
|
128
|
+
output.writeHuman(' - If it is already loaded, open its popup or reload it in chrome://extensions.');
|
|
129
|
+
output.writeHuman(' - Then check `argus extension status` and `argus ext doctor`.');
|
|
130
|
+
output.writeHuman('');
|
|
131
|
+
process.exitCode = 1;
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
output.writeHuman('Once loaded, verify with `argus ext tabs`.');
|
|
135
|
+
output.writeHuman('');
|
|
136
|
+
};
|
|
137
|
+
const parseTimeoutMs = (value) => {
|
|
138
|
+
const seconds = value ? Number.parseInt(value, 10) : DEFAULT_TIMEOUT_SECONDS;
|
|
139
|
+
if (!Number.isFinite(seconds) || seconds < 5) {
|
|
140
|
+
return DEFAULT_TIMEOUT_SECONDS * 1000;
|
|
141
|
+
}
|
|
142
|
+
return seconds * 1000;
|
|
143
|
+
};
|
|
144
|
+
const fail = (output, message) => {
|
|
145
|
+
if (output.json) {
|
|
146
|
+
output.writeJson({ success: false, error: { message } });
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
console.error(message);
|
|
150
|
+
}
|
|
151
|
+
process.exitCode = 1;
|
|
152
|
+
};
|
|
153
|
+
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
154
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/extension/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ExtensionTargetSelectorOptions } from './targetSelection.js';
|
|
2
|
+
export type ExtensionSelectOptions = ExtensionTargetSelectorOptions & {
|
|
3
|
+
wait?: boolean;
|
|
4
|
+
json?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare const runExtensionSelect: (id: string | undefined, options: ExtensionSelectOptions) => Promise<void>;
|
|
7
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/select.ts"],"names":[],"mappings":"AAIA,OAAO,EAMN,KAAK,8BAA8B,EACnC,MAAM,sBAAsB,CAAA;AAE7B,MAAM,MAAM,sBAAsB,GAAG,8BAA8B,GAAG;IACrE,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,sBAAsB,KAAG,OAAO,CAAC,IAAI,CAiD9G,CAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { createOutput } from '../../output/io.js';
|
|
2
|
+
import { resolveWatcher } from '../../watchers/resolveWatcher.js';
|
|
3
|
+
import { formatWatcherLine } from '../../output/format.js';
|
|
4
|
+
import { writeFailure } from './tabWatcher.js';
|
|
5
|
+
import { fetchExtensionTargets, formatExtensionTargetLine, resolveExtensionTarget, selectExtensionTarget, waitForSelectedTarget, } from './targetSelection.js';
|
|
6
|
+
export const runExtensionSelect = async (id, options) => {
|
|
7
|
+
const output = createOutput(options);
|
|
8
|
+
if (!id) {
|
|
9
|
+
writeFailure(output, options, 'Specify an extension watcher id.', 2);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const resolved = await resolveWatcher({ id });
|
|
13
|
+
if (!resolved.ok) {
|
|
14
|
+
writeResolveFailure(output, options, resolved);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (resolved.watcher.source !== 'extension') {
|
|
18
|
+
writeFailure(output, options, `Watcher ${resolved.watcher.id} is not extension-backed.`, 2);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const targets = await fetchExtensionTargets(resolved.watcher);
|
|
22
|
+
if (!targets.ok) {
|
|
23
|
+
writeFailure(output, options, targets.error, 1);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const target = resolveExtensionTarget(targets.targets, options);
|
|
27
|
+
if (!target.ok) {
|
|
28
|
+
writeTargetFailure(output, options, target);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const selected = await selectExtensionTarget(resolved.watcher, target.target);
|
|
32
|
+
if (!selected.ok) {
|
|
33
|
+
writeFailure(output, options, selected.error, 1);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const ready = options.wait === false ? null : await waitForSelectedTarget(resolved.watcher, target.target);
|
|
37
|
+
if (ready && !ready.ok) {
|
|
38
|
+
writeFailure(output, options, ready.error, 1);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const selectedTarget = ready?.target ?? target.target;
|
|
42
|
+
if (options.json) {
|
|
43
|
+
output.writeJson({ ok: true, watcherId: resolved.watcher.id, target: selectedTarget, status: ready?.status ?? null, tab: selected.tab });
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
output.writeHuman(`selected ${selectedTarget.id} on ${resolved.watcher.id}`);
|
|
47
|
+
output.writeHuman(` ${formatExtensionTargetLine(selectedTarget)}`);
|
|
48
|
+
};
|
|
49
|
+
const writeTargetFailure = (output, options, result) => {
|
|
50
|
+
if (options.json) {
|
|
51
|
+
output.writeJson({ ok: false, error: result.reason, matches: result.matches ?? [] });
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
output.writeWarn(result.reason);
|
|
55
|
+
for (const target of result.matches ?? []) {
|
|
56
|
+
output.writeWarn(` ${formatExtensionTargetLine(target)}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
process.exitCode = result.exitCode;
|
|
60
|
+
};
|
|
61
|
+
const writeResolveFailure = (output, options, resolved) => {
|
|
62
|
+
if (options.json) {
|
|
63
|
+
output.writeJson({ ok: false, error: resolved.error, candidates: resolved.candidates?.map((watcher) => watcher.id) ?? [] });
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
output.writeWarn(resolved.error);
|
|
67
|
+
for (const watcher of resolved.candidates ?? []) {
|
|
68
|
+
output.writeWarn(formatWatcherLine(watcher));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
process.exitCode = resolved.exitCode;
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/commands/extension/select.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type ExtensionSetupOptions = {
|
|
2
|
-
|
|
2
|
+
/** Override the pinned extension ID. Defaults to {@link ARGUS_EXTENSION_ID}. */
|
|
3
|
+
extensionId?: string;
|
|
3
4
|
json?: boolean;
|
|
4
5
|
};
|
|
5
6
|
export declare const runExtensionSetup: (options: ExtensionSetupOptions) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/setup.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,qBAAqB,GAAG;IACnC,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAU,SAAS,qBAAqB,KAAG,OAAO,CAAC,IAAI,CAqEpF,CAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { createOutput } from '../../output/io.js';
|
|
2
2
|
import { getPlatform, findArgusExecutable, installNativeHosts, shortenPath } from './nativeHost.js';
|
|
3
|
+
import { ARGUS_EXTENSION_ID } from './extensionId.js';
|
|
3
4
|
export const runExtensionSetup = async (options) => {
|
|
4
5
|
const output = createOutput(options);
|
|
5
|
-
const
|
|
6
|
+
const extensionId = options.extensionId ?? ARGUS_EXTENSION_ID;
|
|
6
7
|
let platform;
|
|
7
8
|
try {
|
|
8
9
|
platform = getPlatform();
|
|
@@ -66,9 +67,11 @@ export const runExtensionSetup = async (options) => {
|
|
|
66
67
|
}
|
|
67
68
|
output.writeHuman('');
|
|
68
69
|
output.writeHuman('Next steps:');
|
|
69
|
-
output.writeHuman(' 1.
|
|
70
|
+
output.writeHuman(' 1. Load the unpacked extension from `argus extension path` (if not already loaded)');
|
|
70
71
|
output.writeHuman(' 2. Run `argus ext tabs` or open the extension popup and attach a tab');
|
|
71
72
|
output.writeHuman('');
|
|
73
|
+
output.writeHuman('Tip: `argus extension install` does this end-to-end and waits for the extension to connect.');
|
|
74
|
+
output.writeHuman('');
|
|
72
75
|
}
|
|
73
76
|
};
|
|
74
77
|
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/extension/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
import type { ExtensionBrowserTab, WatcherRecord } from '@vforsh/argus-core';
|
|
2
|
+
import { createOutput } from '../../output/io.js';
|
|
1
3
|
export type ExtensionShowOptions = {
|
|
2
4
|
tab?: string | number;
|
|
3
5
|
url?: string;
|
|
4
6
|
title?: string;
|
|
7
|
+
as?: string;
|
|
5
8
|
json?: boolean;
|
|
6
9
|
};
|
|
7
10
|
type ExtensionShowConfig = {
|
|
8
11
|
missingSelectorReason?: string;
|
|
9
12
|
};
|
|
10
13
|
export declare const runExtensionShow: (id: string | undefined, options: ExtensionShowOptions, config?: ExtensionShowConfig) => Promise<void>;
|
|
14
|
+
export declare const showWatcher: (watcher: WatcherRecord, tab: ExtensionBrowserTab | null, output: ReturnType<typeof createOutput>, options: ExtensionShowOptions) => Promise<void>;
|
|
11
15
|
export {};
|
|
12
16
|
//# sourceMappingURL=show.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/show.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/show.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,mBAAmB,EAAsB,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC/G,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAejD,MAAM,MAAM,oBAAoB,GAAG;IAClC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,KAAK,mBAAmB,GAAG;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA;AAKD,eAAO,MAAM,gBAAgB,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,oBAAoB,EAAE,SAAQ,mBAAwB,KAAG,OAAO,CAAC,IAAI,CAgF5I,CAAA;AAED,eAAO,MAAM,WAAW,GACvB,SAAS,aAAa,EACtB,KAAK,mBAAmB,GAAG,IAAI,EAC/B,QAAQ,UAAU,CAAC,OAAO,YAAY,CAAC,EACvC,SAAS,oBAAoB,KAC3B,OAAO,CAAC,IAAI,CAmCd,CAAA"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { createOutput } from '../../output/io.js';
|
|
2
|
-
import { pruneRegistry } from '../../registry.js';
|
|
3
2
|
import { fetchWatcherJson } from '../../watchers/requestWatcher.js';
|
|
4
3
|
import { resolveWatcher } from '../../watchers/resolveWatcher.js';
|
|
5
4
|
import { resolveExtensionWatcher } from './resolveExtensionWatcher.js';
|
|
5
|
+
import { attachTab, waitForTabWatcher } from './tabAttach.js';
|
|
6
6
|
import { fetchExtensionTabs, formatExtensionTabLine, hasTabSelector, isExtensionTab, parseTabSelector, resolveTab, } from './tabSelection.js';
|
|
7
|
-
const WATCHER_POLL_TIMEOUT_MS = 5_000;
|
|
8
|
-
const WATCHER_POLL_INTERVAL_MS = 200;
|
|
9
7
|
export const runExtensionShow = async (id, options, config = {}) => {
|
|
10
8
|
const output = createOutput(options);
|
|
11
9
|
if (id && hasTabSelector(options)) {
|
|
@@ -46,21 +44,29 @@ export const runExtensionShow = async (id, options, config = {}) => {
|
|
|
46
44
|
return;
|
|
47
45
|
}
|
|
48
46
|
const tab = tabResult.tab;
|
|
47
|
+
if (options.as && tab.attached && tab.watcherId && tab.watcherId !== options.as) {
|
|
48
|
+
writeFailure(output, options, `Tab ${tab.tabId} is already attached as ${tab.watcherId}. Detach it before re-attaching as ${options.as}.`, 2);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
let attachedTab = tab;
|
|
52
|
+
let attachedWatcherId = tab.watcherId;
|
|
49
53
|
if (!tab.attached) {
|
|
50
|
-
const attached = await attachTab(control.watcher, tab);
|
|
54
|
+
const attached = await attachTab(control.watcher, tab, { watcherId: options.as });
|
|
51
55
|
if (!attached.ok) {
|
|
52
56
|
writeFailure(output, options, attached.error, 1);
|
|
53
57
|
return;
|
|
54
58
|
}
|
|
59
|
+
attachedTab = attached.tab;
|
|
60
|
+
attachedWatcherId = attached.watcherId;
|
|
55
61
|
}
|
|
56
|
-
const watcherResult = await waitForTabWatcher(control.watcher, selector.selector, { ...
|
|
62
|
+
const watcherResult = await waitForTabWatcher(control.watcher, selector.selector, { ...attachedTab, attached: true }, attachedWatcherId ?? options.as);
|
|
57
63
|
if (!watcherResult.ok) {
|
|
58
64
|
writeWatcherFailure(output, options, watcherResult);
|
|
59
65
|
return;
|
|
60
66
|
}
|
|
61
67
|
await showWatcher(watcherResult.watcher, watcherResult.tab, output, options);
|
|
62
68
|
};
|
|
63
|
-
const showWatcher = async (watcher, tab, output, options) => {
|
|
69
|
+
export const showWatcher = async (watcher, tab, output, options) => {
|
|
64
70
|
let response;
|
|
65
71
|
try {
|
|
66
72
|
response = await fetchWatcherJson(watcher, {
|
|
@@ -94,87 +100,6 @@ const showWatcher = async (watcher, tab, output, options) => {
|
|
|
94
100
|
output.writeHuman(` ${formatExtensionTabLine(tab)}`);
|
|
95
101
|
}
|
|
96
102
|
};
|
|
97
|
-
const attachTab = async (controlWatcher, tab) => {
|
|
98
|
-
let response;
|
|
99
|
-
try {
|
|
100
|
-
response = await fetchWatcherJson(controlWatcher, {
|
|
101
|
-
path: '/attach',
|
|
102
|
-
method: 'POST',
|
|
103
|
-
body: { tabId: tab.tabId },
|
|
104
|
-
timeoutMs: 5_000,
|
|
105
|
-
returnErrorResponse: true,
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
return { ok: false, error: `${controlWatcher.id}: failed to attach tab (${formatError(error)})` };
|
|
110
|
-
}
|
|
111
|
-
if (!response.ok) {
|
|
112
|
-
return { ok: false, error: `Error: ${response.error.message}` };
|
|
113
|
-
}
|
|
114
|
-
return { ok: true };
|
|
115
|
-
};
|
|
116
|
-
const waitForTabWatcher = async (controlWatcher, selector, tab) => {
|
|
117
|
-
const startedAt = Date.now();
|
|
118
|
-
let lastResult = { ok: false, reason: 'No extension watcher matched the tab.', exitCode: 1 };
|
|
119
|
-
while (Date.now() - startedAt <= WATCHER_POLL_TIMEOUT_MS) {
|
|
120
|
-
const latestTab = await refreshTab(controlWatcher, selector, tab);
|
|
121
|
-
if (latestTab?.watcherId) {
|
|
122
|
-
// Fresh extension attaches report their tab-scoped watcher id asynchronously through `ext tabs`.
|
|
123
|
-
const watcher = await resolveWatcherById(latestTab.watcherId);
|
|
124
|
-
if (watcher) {
|
|
125
|
-
return { ok: true, watcher, tab: latestTab };
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
lastResult = await resolveTabWatcher(latestTab ?? tab);
|
|
129
|
-
if (lastResult.ok) {
|
|
130
|
-
return lastResult;
|
|
131
|
-
}
|
|
132
|
-
await delay(WATCHER_POLL_INTERVAL_MS);
|
|
133
|
-
}
|
|
134
|
-
return lastResult;
|
|
135
|
-
};
|
|
136
|
-
const resolveTabWatcher = async (tab) => {
|
|
137
|
-
const registry = await pruneRegistry();
|
|
138
|
-
const extensionWatchers = Object.values(registry.watchers).filter((watcher) => watcher.source === 'extension' && watcher.id !== 'extension-control');
|
|
139
|
-
const entries = await Promise.all(extensionWatchers.map(async (watcher) => {
|
|
140
|
-
const status = await fetchStatus(watcher);
|
|
141
|
-
return status ? { watcher, status } : null;
|
|
142
|
-
}));
|
|
143
|
-
const matches = entries.filter((entry) => Boolean(entry?.status.attached && entry.status.target && targetMatchesTab(entry.status.target, tab)));
|
|
144
|
-
if (matches.length === 0) {
|
|
145
|
-
return { ok: false, reason: 'No attached extension watcher matched the tab.', exitCode: 1 };
|
|
146
|
-
}
|
|
147
|
-
if (matches.length > 1) {
|
|
148
|
-
return { ok: false, reason: 'Multiple attached extension watchers matched the tab. Use watcher id instead.', exitCode: 2, matches };
|
|
149
|
-
}
|
|
150
|
-
return { ok: true, watcher: matches[0].watcher, status: matches[0].status, tab };
|
|
151
|
-
};
|
|
152
|
-
const refreshTab = async (controlWatcher, selector, fallback) => {
|
|
153
|
-
const tabs = await fetchExtensionTabs(controlWatcher, selector);
|
|
154
|
-
if (!tabs.ok) {
|
|
155
|
-
return null;
|
|
156
|
-
}
|
|
157
|
-
const tab = resolveTab(tabs.tabs, { kind: 'tab', tabId: fallback.tabId });
|
|
158
|
-
return tab.ok ? { ...tab.tab, attached: true } : null;
|
|
159
|
-
};
|
|
160
|
-
const resolveWatcherById = async (id) => {
|
|
161
|
-
const resolved = await resolveWatcher({ id });
|
|
162
|
-
return resolved.ok && resolved.watcher.source === 'extension' ? resolved.watcher : null;
|
|
163
|
-
};
|
|
164
|
-
const fetchStatus = async (watcher) => {
|
|
165
|
-
try {
|
|
166
|
-
return await fetchWatcherJson(watcher, { path: '/status', timeoutMs: 1_000 });
|
|
167
|
-
}
|
|
168
|
-
catch {
|
|
169
|
-
return null;
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
const targetMatchesTab = (target, tab) => {
|
|
173
|
-
if (target.url && target.url === tab.url) {
|
|
174
|
-
return true;
|
|
175
|
-
}
|
|
176
|
-
return Boolean(target.title && target.title === tab.title && target.url === tab.url);
|
|
177
|
-
};
|
|
178
103
|
const writeTabFailure = (output, options, result) => {
|
|
179
104
|
writeFailure(output, options, result.reason, result.exitCode, { matches: result.matches ?? [] });
|
|
180
105
|
};
|
|
@@ -203,6 +128,5 @@ const writeFailure = (output, options, error, exitCode, extra = {}) => {
|
|
|
203
128
|
}
|
|
204
129
|
process.exitCode = exitCode;
|
|
205
130
|
};
|
|
206
|
-
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
207
131
|
const formatError = (error) => (error instanceof Error ? error.message : String(error));
|
|
208
132
|
//# sourceMappingURL=show.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/extension/show.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/extension/show.ts"],"names":[],"mappings":"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"}
|