@zincapp/znvault-cli 2.22.5 → 2.23.0
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/commands/agent/direct/index.d.ts +8 -0
- package/dist/commands/agent/direct/index.d.ts.map +1 -0
- package/dist/commands/agent/direct/index.js +16 -0
- package/dist/commands/agent/direct/index.js.map +1 -0
- package/dist/commands/agent/direct/ping.d.ts +6 -0
- package/dist/commands/agent/direct/ping.d.ts.map +1 -0
- package/dist/commands/agent/direct/ping.js +52 -0
- package/dist/commands/agent/direct/ping.js.map +1 -0
- package/dist/commands/agent/direct/plugins.d.ts +6 -0
- package/dist/commands/agent/direct/plugins.d.ts.map +1 -0
- package/dist/commands/agent/direct/plugins.js +56 -0
- package/dist/commands/agent/direct/plugins.js.map +1 -0
- package/dist/commands/agent/direct/update-all.d.ts +6 -0
- package/dist/commands/agent/direct/update-all.d.ts.map +1 -0
- package/dist/commands/agent/direct/update-all.js +233 -0
- package/dist/commands/agent/direct/update-all.js.map +1 -0
- package/dist/commands/agent/direct/update-plugins.d.ts +6 -0
- package/dist/commands/agent/direct/update-plugins.d.ts.map +1 -0
- package/dist/commands/agent/direct/update-plugins.js +91 -0
- package/dist/commands/agent/direct/update-plugins.js.map +1 -0
- package/dist/commands/agent/direct/update.d.ts +6 -0
- package/dist/commands/agent/direct/update.d.ts.map +1 -0
- package/dist/commands/agent/direct/update.js +90 -0
- package/dist/commands/agent/direct/update.js.map +1 -0
- package/dist/commands/agent/direct/version.d.ts +6 -0
- package/dist/commands/agent/direct/version.d.ts.map +1 -0
- package/dist/commands/agent/direct/version.js +47 -0
- package/dist/commands/agent/direct/version.js.map +1 -0
- package/dist/commands/agent/helpers.d.ts +72 -0
- package/dist/commands/agent/helpers.d.ts.map +1 -0
- package/dist/commands/agent/helpers.js +331 -0
- package/dist/commands/agent/helpers.js.map +1 -0
- package/dist/commands/agent/index.d.ts +45 -0
- package/dist/commands/agent/index.d.ts.map +1 -0
- package/dist/commands/agent/index.js +30 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/agent/remote/alerts.d.ts +6 -0
- package/dist/commands/agent/remote/alerts.d.ts.map +1 -0
- package/dist/commands/agent/remote/alerts.js +42 -0
- package/dist/commands/agent/remote/alerts.js.map +1 -0
- package/dist/commands/agent/remote/connections.d.ts +6 -0
- package/dist/commands/agent/remote/connections.d.ts.map +1 -0
- package/dist/commands/agent/remote/connections.js +46 -0
- package/dist/commands/agent/remote/connections.js.map +1 -0
- package/dist/commands/agent/remote/delete.d.ts +6 -0
- package/dist/commands/agent/remote/delete.d.ts.map +1 -0
- package/dist/commands/agent/remote/delete.js +34 -0
- package/dist/commands/agent/remote/delete.js.map +1 -0
- package/dist/commands/agent/remote/index.d.ts +20 -0
- package/dist/commands/agent/remote/index.d.ts.map +1 -0
- package/dist/commands/agent/remote/index.js +84 -0
- package/dist/commands/agent/remote/index.js.map +1 -0
- package/dist/commands/agent/remote/list.d.ts +6 -0
- package/dist/commands/agent/remote/list.d.ts.map +1 -0
- package/dist/commands/agent/remote/list.js +57 -0
- package/dist/commands/agent/remote/list.js.map +1 -0
- package/dist/commands/agent/remote/reprovision/cancel.d.ts +6 -0
- package/dist/commands/agent/remote/reprovision/cancel.d.ts.map +1 -0
- package/dist/commands/agent/remote/reprovision/cancel.js +35 -0
- package/dist/commands/agent/remote/reprovision/cancel.js.map +1 -0
- package/dist/commands/agent/remote/reprovision/create.d.ts +6 -0
- package/dist/commands/agent/remote/reprovision/create.d.ts.map +1 -0
- package/dist/commands/agent/remote/reprovision/create.js +54 -0
- package/dist/commands/agent/remote/reprovision/create.js.map +1 -0
- package/dist/commands/agent/remote/reprovision/index.d.ts +12 -0
- package/dist/commands/agent/remote/reprovision/index.d.ts.map +1 -0
- package/dist/commands/agent/remote/reprovision/index.js +21 -0
- package/dist/commands/agent/remote/reprovision/index.js.map +1 -0
- package/dist/commands/agent/remote/reprovision/status.d.ts +6 -0
- package/dist/commands/agent/remote/reprovision/status.d.ts.map +1 -0
- package/dist/commands/agent/remote/reprovision/status.js +60 -0
- package/dist/commands/agent/remote/reprovision/status.js.map +1 -0
- package/dist/commands/agent/remote/status.d.ts +6 -0
- package/dist/commands/agent/remote/status.d.ts.map +1 -0
- package/dist/commands/agent/remote/status.js +126 -0
- package/dist/commands/agent/remote/status.js.map +1 -0
- package/dist/commands/agent/token/create.d.ts +6 -0
- package/dist/commands/agent/token/create.d.ts.map +1 -0
- package/dist/commands/agent/token/create.js +67 -0
- package/dist/commands/agent/token/create.js.map +1 -0
- package/dist/commands/agent/token/index.d.ts +8 -0
- package/dist/commands/agent/token/index.d.ts.map +1 -0
- package/dist/commands/agent/token/index.js +13 -0
- package/dist/commands/agent/token/index.js.map +1 -0
- package/dist/commands/agent/token/list.d.ts +6 -0
- package/dist/commands/agent/token/list.d.ts.map +1 -0
- package/dist/commands/agent/token/list.js +63 -0
- package/dist/commands/agent/token/list.js.map +1 -0
- package/dist/commands/agent/token/revoke.d.ts +6 -0
- package/dist/commands/agent/token/revoke.d.ts.map +1 -0
- package/dist/commands/agent/token/revoke.js +37 -0
- package/dist/commands/agent/token/revoke.js.map +1 -0
- package/dist/commands/agent/types.d.ts +237 -0
- package/dist/commands/agent/types.d.ts.map +1 -0
- package/dist/commands/agent/types.js +3 -0
- package/dist/commands/agent/types.js.map +1 -0
- package/dist/commands/agent.d.ts +9 -2
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +8 -1201
- package/dist/commands/agent.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// Path: src/commands/agent/direct/update.ts
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import * as output from '../../../lib/output.js';
|
|
4
|
+
import { resolveHostPort, fetchAgentVersion, triggerAgentUpdate, confirmAction, waitForAgentRestart, } from '../helpers.js';
|
|
5
|
+
export function registerUpdateCommand(parentCmd) {
|
|
6
|
+
parentCmd
|
|
7
|
+
.command('update [hostPort]')
|
|
8
|
+
.description('Trigger agent self-update (format: host:port or host, or select from list)')
|
|
9
|
+
.option('-y, --yes', 'Skip confirmation prompt')
|
|
10
|
+
.option('--json', 'Output as JSON')
|
|
11
|
+
.action(async (hostPort, options) => {
|
|
12
|
+
const resolved = await resolveHostPort(hostPort);
|
|
13
|
+
if (!resolved) {
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const { host, port } = resolved;
|
|
17
|
+
// First check what version is available
|
|
18
|
+
const checkSpinner = ora(`Checking agent version at ${host}:${port}...`).start();
|
|
19
|
+
let versionInfo;
|
|
20
|
+
try {
|
|
21
|
+
versionInfo = await fetchAgentVersion(host, port);
|
|
22
|
+
checkSpinner.stop();
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
checkSpinner.fail(`Failed to check agent version at ${host}:${port}`);
|
|
26
|
+
output.error(err instanceof Error ? err.message : String(err));
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
if (!versionInfo.updateAvailable) {
|
|
30
|
+
if (options.json) {
|
|
31
|
+
output.json({ updated: false, message: 'Agent is already at latest version', current: versionInfo.current });
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
console.log(`\x1b[32m✓\x1b[0m Agent is already at latest version (v${versionInfo.current})`);
|
|
35
|
+
}
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (!versionInfo.autoUpdateEnabled) {
|
|
39
|
+
if (options.json) {
|
|
40
|
+
output.json({ updated: false, message: 'Auto-update is disabled on this agent', current: versionInfo.current });
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
console.log(`\x1b[33m⚠\x1b[0m Auto-update is disabled on this agent`);
|
|
44
|
+
console.log(' Enable with AUTO_UPDATE=true environment variable');
|
|
45
|
+
}
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// Show what will be updated
|
|
49
|
+
if (!options.json) {
|
|
50
|
+
console.log();
|
|
51
|
+
console.log('Agent update:');
|
|
52
|
+
console.log(` ${versionInfo.current} → \x1b[32m${versionInfo.latest}\x1b[0m`);
|
|
53
|
+
console.log();
|
|
54
|
+
}
|
|
55
|
+
// Confirm
|
|
56
|
+
if (!options.yes && !options.json) {
|
|
57
|
+
const confirmed = await confirmAction('Proceed with update? Agent will restart.');
|
|
58
|
+
if (!confirmed) {
|
|
59
|
+
console.log('Cancelled');
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Trigger update
|
|
64
|
+
const updateSpinner = ora('Updating agent...').start();
|
|
65
|
+
try {
|
|
66
|
+
const response = await triggerAgentUpdate(host, port);
|
|
67
|
+
updateSpinner.stop();
|
|
68
|
+
if (options.json) {
|
|
69
|
+
output.json(response);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (!response.success) {
|
|
73
|
+
console.log(`\x1b[31m✗\x1b[0m Update failed: ${response.message}`);
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
console.log(`\x1b[32m✓\x1b[0m ${response.message}`);
|
|
77
|
+
console.log(` ${response.previousVersion} → ${response.newVersion}`);
|
|
78
|
+
if (response.willRestart) {
|
|
79
|
+
console.log();
|
|
80
|
+
await waitForAgentRestart(host, port);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
updateSpinner.fail('Failed to update agent');
|
|
85
|
+
output.error(err instanceof Error ? err.message : String(err));
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/agent/direct/update.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAO5C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,qBAAqB,CAAC,SAAkB;IACtD,SAAS;SACN,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,4EAA4E,CAAC;SACzF,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,QAA4B,EAAE,OAA6B,EAAE,EAAE;QAC5E,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;QAEhC,wCAAwC;QACxC,MAAM,YAAY,GAAG,GAAG,CAAC,6BAA6B,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAEjF,IAAI,WAAW,CAAC;QAChB,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClD,YAAY,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,CAAC,IAAI,CAAC,oCAAoC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,oCAAoC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/G,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,yDAAyD,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;YAC/F,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;YACnC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,uCAAuC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAClH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;gBACtE,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YACrE,CAAC;YACD,OAAO;QACT,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,OAAO,cAAc,WAAW,CAAC,MAAM,SAAS,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,UAAU;QACV,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,0CAA0C,CAAC,CAAC;YAClF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACzB,OAAO;YACT,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,MAAM,aAAa,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtD,aAAa,CAAC,IAAI,EAAE,CAAC;YAErB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,mCAAmC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,eAAe,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAEtE,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../src/commands/agent/direct/version.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CA2C/D"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Path: src/commands/agent/direct/version.ts
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import * as output from '../../../lib/output.js';
|
|
4
|
+
import { resolveHostPort, fetchAgentVersion } from '../helpers.js';
|
|
5
|
+
export function registerVersionCommand(parentCmd) {
|
|
6
|
+
parentCmd
|
|
7
|
+
.command('version [hostPort]')
|
|
8
|
+
.description('Check agent version and available updates (format: host:port or host, or select from list)')
|
|
9
|
+
.option('--json', 'Output as JSON')
|
|
10
|
+
.action(async (hostPort, options) => {
|
|
11
|
+
const resolved = await resolveHostPort(hostPort);
|
|
12
|
+
if (!resolved) {
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
const { host, port } = resolved;
|
|
16
|
+
const spinner = ora(`Checking agent version at ${host}:${port}...`).start();
|
|
17
|
+
try {
|
|
18
|
+
const response = await fetchAgentVersion(host, port);
|
|
19
|
+
spinner.stop();
|
|
20
|
+
if (options.json) {
|
|
21
|
+
output.json(response);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
console.log();
|
|
25
|
+
console.log(`Agent Version: ${host}:${port}`);
|
|
26
|
+
console.log('═'.repeat(40));
|
|
27
|
+
console.log(` Current: v${response.current}`);
|
|
28
|
+
console.log(` Latest: v${response.latest}`);
|
|
29
|
+
console.log(` Auto-update: ${response.autoUpdateEnabled ? 'Enabled' : 'Disabled'}`);
|
|
30
|
+
console.log();
|
|
31
|
+
if (response.updateAvailable) {
|
|
32
|
+
console.log(`\x1b[33m↑ Update available: ${response.current} → ${response.latest}\x1b[0m`);
|
|
33
|
+
console.log(`Run: znvault agent update ${host}:${port}`);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
console.log('\x1b[32m✓\x1b[0m Agent is up to date');
|
|
37
|
+
}
|
|
38
|
+
console.log();
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
spinner.fail(`Failed to check agent version at ${host}:${port}`);
|
|
42
|
+
output.error(err instanceof Error ? err.message : String(err));
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/commands/agent/direct/version.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAO7C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEnE,MAAM,UAAU,sBAAsB,CAAC,SAAkB;IACvD,SAAS;SACN,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,4FAA4F,CAAC;SACzG,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,QAA4B,EAAE,OAA6B,EAAE,EAAE;QAC5E,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;QAChC,MAAM,OAAO,GAAG,GAAG,CAAC,6BAA6B,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,+BAA+B,QAAQ,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,SAAS,CAAC,CAAC;gBAC3F,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,oCAAoC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { RemoteAgent, AgentHealthResponse, PluginVersionsResponse, PluginUpdateResponse, AgentVersionResponse, AgentUpdateResponse } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Format relative time for display
|
|
4
|
+
*/
|
|
5
|
+
export declare function formatRelativeTime(dateStr: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Format connection state with color coding
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatConnectionState(state: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Format seconds to human-readable duration
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatSecondsToHuman(seconds: number): string;
|
|
14
|
+
/**
|
|
15
|
+
* Format key type for display
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatKeyType(apiKey: RemoteAgent['apiKey']): string;
|
|
18
|
+
/**
|
|
19
|
+
* Format uptime seconds to human-readable string
|
|
20
|
+
*/
|
|
21
|
+
export declare function formatUptime(seconds: number): string;
|
|
22
|
+
/**
|
|
23
|
+
* Parse host:port string (defaults to port 9100)
|
|
24
|
+
*/
|
|
25
|
+
export declare function parseHostPort(hostPort: string): {
|
|
26
|
+
host: string;
|
|
27
|
+
port: number;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Fetch agent health via direct HTTP
|
|
31
|
+
*/
|
|
32
|
+
export declare function fetchAgentHealth(host: string, port: number): Promise<AgentHealthResponse>;
|
|
33
|
+
/**
|
|
34
|
+
* Fetch plugin versions via direct HTTP
|
|
35
|
+
*/
|
|
36
|
+
export declare function fetchPluginVersions(host: string, port: number): Promise<PluginVersionsResponse>;
|
|
37
|
+
/**
|
|
38
|
+
* Trigger plugin update via direct HTTP
|
|
39
|
+
*/
|
|
40
|
+
export declare function triggerPluginUpdate(host: string, port: number): Promise<PluginUpdateResponse>;
|
|
41
|
+
/**
|
|
42
|
+
* Fetch agent version info via direct HTTP
|
|
43
|
+
*/
|
|
44
|
+
export declare function fetchAgentVersion(host: string, port: number): Promise<AgentVersionResponse>;
|
|
45
|
+
/**
|
|
46
|
+
* Trigger agent self-update via direct HTTP
|
|
47
|
+
*/
|
|
48
|
+
export declare function triggerAgentUpdate(host: string, port: number): Promise<AgentUpdateResponse>;
|
|
49
|
+
/**
|
|
50
|
+
* Fetch agents from vault and let user select one interactively
|
|
51
|
+
* Returns the selected agent's host:port string
|
|
52
|
+
*/
|
|
53
|
+
export declare function selectAgentInteractively(): Promise<{
|
|
54
|
+
host: string;
|
|
55
|
+
port: number;
|
|
56
|
+
} | null>;
|
|
57
|
+
/**
|
|
58
|
+
* Get host:port from argument or interactive selection
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveHostPort(hostPort?: string): Promise<{
|
|
61
|
+
host: string;
|
|
62
|
+
port: number;
|
|
63
|
+
} | null>;
|
|
64
|
+
/**
|
|
65
|
+
* Prompt for confirmation
|
|
66
|
+
*/
|
|
67
|
+
export declare function confirmAction(message: string): Promise<boolean>;
|
|
68
|
+
/**
|
|
69
|
+
* Wait for agent restart and verify it's back online
|
|
70
|
+
*/
|
|
71
|
+
export declare function waitForAgentRestart(host: string, port: number, waitSeconds?: number): Promise<void>;
|
|
72
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/helpers.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAY1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoB3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,MAAM,CASnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQpD;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAU9E;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAW/F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAYrG;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAcnG;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAYjG;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAcjG;AAMD;;;GAGG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAuG/F;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAKvG;AAMD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQrE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB7G"}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
// Path: src/commands/agent/helpers.ts
|
|
2
|
+
/**
|
|
3
|
+
* Helper functions for agent commands
|
|
4
|
+
*/
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
import inquirer from 'inquirer';
|
|
7
|
+
import * as mode from '../../lib/mode.js';
|
|
8
|
+
import * as output from '../../lib/output.js';
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Formatting Functions
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Format relative time for display
|
|
14
|
+
*/
|
|
15
|
+
export function formatRelativeTime(dateStr) {
|
|
16
|
+
const date = new Date(dateStr);
|
|
17
|
+
const now = new Date();
|
|
18
|
+
const diffMs = now.getTime() - date.getTime();
|
|
19
|
+
const diffMins = Math.floor(diffMs / 60000);
|
|
20
|
+
const diffHours = Math.floor(diffMins / 60);
|
|
21
|
+
const diffDays = Math.floor(diffHours / 24);
|
|
22
|
+
if (diffMins < 1)
|
|
23
|
+
return 'just now';
|
|
24
|
+
if (diffMins < 60)
|
|
25
|
+
return `${diffMins}m ago`;
|
|
26
|
+
if (diffHours < 24)
|
|
27
|
+
return `${diffHours}h ago`;
|
|
28
|
+
return `${diffDays}d ago`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Format connection state with color coding
|
|
32
|
+
*/
|
|
33
|
+
export function formatConnectionState(state) {
|
|
34
|
+
const green = '\x1b[32m';
|
|
35
|
+
const yellow = '\x1b[33m';
|
|
36
|
+
const red = '\x1b[31m';
|
|
37
|
+
const cyan = '\x1b[36m';
|
|
38
|
+
const reset = '\x1b[0m';
|
|
39
|
+
switch (state) {
|
|
40
|
+
case 'healthy':
|
|
41
|
+
return `${green}● healthy${reset}`;
|
|
42
|
+
case 'degraded':
|
|
43
|
+
return `${yellow}◐ degraded${reset}`;
|
|
44
|
+
case 'recovering':
|
|
45
|
+
return `${cyan}↻ recovering${reset}`;
|
|
46
|
+
case 'reprovisioning':
|
|
47
|
+
return `${cyan}⟳ reprovisioning${reset}`;
|
|
48
|
+
case 'unknown':
|
|
49
|
+
default:
|
|
50
|
+
return `${red}○ ${state || 'unknown'}${reset}`;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Format seconds to human-readable duration
|
|
55
|
+
*/
|
|
56
|
+
export function formatSecondsToHuman(seconds) {
|
|
57
|
+
if (seconds < 60)
|
|
58
|
+
return `${seconds}s`;
|
|
59
|
+
if (seconds < 3600)
|
|
60
|
+
return `${Math.floor(seconds / 60)}m`;
|
|
61
|
+
if (seconds < 86400)
|
|
62
|
+
return `${Math.floor(seconds / 3600)}h`;
|
|
63
|
+
return `${Math.floor(seconds / 86400)}d`;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Format key type for display
|
|
67
|
+
*/
|
|
68
|
+
export function formatKeyType(apiKey) {
|
|
69
|
+
if (!apiKey)
|
|
70
|
+
return '-';
|
|
71
|
+
if (!apiKey.isManaged)
|
|
72
|
+
return 'Static';
|
|
73
|
+
const rotationMode = apiKey.rotationMode?.replace('on-', '') ?? 'managed';
|
|
74
|
+
const interval = apiKey.rotationIntervalSeconds
|
|
75
|
+
? formatSecondsToHuman(apiKey.rotationIntervalSeconds)
|
|
76
|
+
: '';
|
|
77
|
+
return interval ? `${rotationMode}/${interval}` : rotationMode;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Format uptime seconds to human-readable string
|
|
81
|
+
*/
|
|
82
|
+
export function formatUptime(seconds) {
|
|
83
|
+
const days = Math.floor(seconds / 86400);
|
|
84
|
+
const hours = Math.floor((seconds % 86400) / 3600);
|
|
85
|
+
const mins = Math.floor((seconds % 3600) / 60);
|
|
86
|
+
if (days > 0)
|
|
87
|
+
return `${days}d ${hours}h`;
|
|
88
|
+
if (hours > 0)
|
|
89
|
+
return `${hours}h ${mins}m`;
|
|
90
|
+
return `${mins}m`;
|
|
91
|
+
}
|
|
92
|
+
// ============================================================================
|
|
93
|
+
// Host/Port Parsing
|
|
94
|
+
// ============================================================================
|
|
95
|
+
/**
|
|
96
|
+
* Parse host:port string (defaults to port 9100)
|
|
97
|
+
*/
|
|
98
|
+
export function parseHostPort(hostPort) {
|
|
99
|
+
if (hostPort.includes(':')) {
|
|
100
|
+
const [host, portStr] = hostPort.split(':');
|
|
101
|
+
const port = parseInt(portStr, 10);
|
|
102
|
+
if (isNaN(port) || port < 1 || port > 65535) {
|
|
103
|
+
throw new Error(`Invalid port: ${portStr}`);
|
|
104
|
+
}
|
|
105
|
+
return { host: host, port };
|
|
106
|
+
}
|
|
107
|
+
return { host: hostPort, port: 9100 };
|
|
108
|
+
}
|
|
109
|
+
// ============================================================================
|
|
110
|
+
// Direct HTTP Communication Functions
|
|
111
|
+
// ============================================================================
|
|
112
|
+
/**
|
|
113
|
+
* Fetch agent health via direct HTTP
|
|
114
|
+
*/
|
|
115
|
+
export async function fetchAgentHealth(host, port) {
|
|
116
|
+
const url = `http://${host}:${port}/health`;
|
|
117
|
+
const response = await fetch(url, {
|
|
118
|
+
signal: AbortSignal.timeout(10000),
|
|
119
|
+
});
|
|
120
|
+
if (!response.ok) {
|
|
121
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
122
|
+
}
|
|
123
|
+
return response.json();
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Fetch plugin versions via direct HTTP
|
|
127
|
+
*/
|
|
128
|
+
export async function fetchPluginVersions(host, port) {
|
|
129
|
+
const url = `http://${host}:${port}/plugins/versions`;
|
|
130
|
+
const response = await fetch(url, {
|
|
131
|
+
signal: AbortSignal.timeout(10000),
|
|
132
|
+
});
|
|
133
|
+
if (!response.ok) {
|
|
134
|
+
const text = await response.text();
|
|
135
|
+
throw new Error(`HTTP ${response.status}: ${text || response.statusText}`);
|
|
136
|
+
}
|
|
137
|
+
return response.json();
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Trigger plugin update via direct HTTP
|
|
141
|
+
*/
|
|
142
|
+
export async function triggerPluginUpdate(host, port) {
|
|
143
|
+
const url = `http://${host}:${port}/plugins/update`;
|
|
144
|
+
const response = await fetch(url, {
|
|
145
|
+
method: 'POST',
|
|
146
|
+
headers: { 'Content-Type': 'application/json' },
|
|
147
|
+
signal: AbortSignal.timeout(60000), // 1 minute for update
|
|
148
|
+
});
|
|
149
|
+
if (!response.ok) {
|
|
150
|
+
const text = await response.text();
|
|
151
|
+
throw new Error(`HTTP ${response.status}: ${text || response.statusText}`);
|
|
152
|
+
}
|
|
153
|
+
return response.json();
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Fetch agent version info via direct HTTP
|
|
157
|
+
*/
|
|
158
|
+
export async function fetchAgentVersion(host, port) {
|
|
159
|
+
const url = `http://${host}:${port}/agent/version`;
|
|
160
|
+
const response = await fetch(url, {
|
|
161
|
+
signal: AbortSignal.timeout(10000),
|
|
162
|
+
});
|
|
163
|
+
if (!response.ok) {
|
|
164
|
+
const text = await response.text();
|
|
165
|
+
throw new Error(`HTTP ${response.status}: ${text || response.statusText}`);
|
|
166
|
+
}
|
|
167
|
+
return response.json();
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Trigger agent self-update via direct HTTP
|
|
171
|
+
*/
|
|
172
|
+
export async function triggerAgentUpdate(host, port) {
|
|
173
|
+
const url = `http://${host}:${port}/agent/update`;
|
|
174
|
+
const response = await fetch(url, {
|
|
175
|
+
method: 'POST',
|
|
176
|
+
headers: { 'Content-Type': 'application/json' },
|
|
177
|
+
signal: AbortSignal.timeout(120000), // 2 minutes for agent update
|
|
178
|
+
});
|
|
179
|
+
if (!response.ok) {
|
|
180
|
+
const text = await response.text();
|
|
181
|
+
throw new Error(`HTTP ${response.status}: ${text || response.statusText}`);
|
|
182
|
+
}
|
|
183
|
+
return response.json();
|
|
184
|
+
}
|
|
185
|
+
// ============================================================================
|
|
186
|
+
// Interactive Selection
|
|
187
|
+
// ============================================================================
|
|
188
|
+
/**
|
|
189
|
+
* Fetch agents from vault and let user select one interactively
|
|
190
|
+
* Returns the selected agent's host:port string
|
|
191
|
+
*/
|
|
192
|
+
export async function selectAgentInteractively() {
|
|
193
|
+
// Check if we have an interactive terminal
|
|
194
|
+
if (!process.stdin.isTTY) {
|
|
195
|
+
output.error('Interactive selection requires a TTY. Specify host:port directly.');
|
|
196
|
+
console.log('Usage: znvault agent ping <host:port>');
|
|
197
|
+
console.log('Example: znvault agent ping 172.16.220.55:9100');
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
const spinner = ora('Fetching agents from vault...').start();
|
|
201
|
+
try {
|
|
202
|
+
const response = await mode.apiGet('/v1/agents?pageSize=100');
|
|
203
|
+
spinner.stop();
|
|
204
|
+
if (response.agents.length === 0) {
|
|
205
|
+
console.log('No agents registered with the vault');
|
|
206
|
+
console.log('Use: znvault agent ping <host:port>');
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
// Build list of agents with IP addresses
|
|
210
|
+
const agentList = [];
|
|
211
|
+
// Sort: online first, then by hostname
|
|
212
|
+
const sortedAgents = [...response.agents].sort((a, b) => {
|
|
213
|
+
if (a.status !== b.status)
|
|
214
|
+
return a.status === 'online' ? -1 : 1;
|
|
215
|
+
return a.hostname.localeCompare(b.hostname);
|
|
216
|
+
});
|
|
217
|
+
for (const a of sortedAgents) {
|
|
218
|
+
if (!a.lastIpAddress)
|
|
219
|
+
continue;
|
|
220
|
+
// Strip ::ffff: prefix from IPv6-mapped IPv4 addresses
|
|
221
|
+
const ip = a.lastIpAddress.replace(/^::ffff:/i, '');
|
|
222
|
+
agentList.push({
|
|
223
|
+
hostname: a.hostname,
|
|
224
|
+
ip,
|
|
225
|
+
status: a.status,
|
|
226
|
+
version: a.version ? `v${a.version}` : 'unknown',
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
if (agentList.length === 0) {
|
|
230
|
+
console.log('No agents with reachable IP addresses');
|
|
231
|
+
console.log('Use: znvault agent ping <host:port>');
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
// Display numbered list
|
|
235
|
+
console.log();
|
|
236
|
+
console.log('Available agents:');
|
|
237
|
+
agentList.forEach((a, i) => {
|
|
238
|
+
const statusIcon = a.status === 'online' ? '●' : '○';
|
|
239
|
+
console.log(` ${i + 1}) ${statusIcon} ${a.hostname} (${a.ip}) - ${a.version}`);
|
|
240
|
+
});
|
|
241
|
+
console.log(` 0) Enter IP manually`);
|
|
242
|
+
console.log();
|
|
243
|
+
// Prompt for selection
|
|
244
|
+
const { selection } = await inquirer.prompt([
|
|
245
|
+
{
|
|
246
|
+
type: 'input',
|
|
247
|
+
name: 'selection',
|
|
248
|
+
message: `Select agent (1-${agentList.length}, or 0 for manual):`,
|
|
249
|
+
validate: (input) => {
|
|
250
|
+
const num = parseInt(input.trim(), 10);
|
|
251
|
+
if (isNaN(num) || num < 0 || num > agentList.length) {
|
|
252
|
+
return `Enter a number between 0 and ${agentList.length}`;
|
|
253
|
+
}
|
|
254
|
+
return true;
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
]);
|
|
258
|
+
const selectedNum = parseInt(selection.trim(), 10);
|
|
259
|
+
// Handle manual entry
|
|
260
|
+
if (selectedNum === 0) {
|
|
261
|
+
const { manualHost } = await inquirer.prompt([
|
|
262
|
+
{
|
|
263
|
+
type: 'input',
|
|
264
|
+
name: 'manualHost',
|
|
265
|
+
message: 'Enter host:port (e.g., 192.168.1.100:9100):',
|
|
266
|
+
validate: (input) => {
|
|
267
|
+
if (!input.trim())
|
|
268
|
+
return 'Host is required';
|
|
269
|
+
return true;
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
]);
|
|
273
|
+
return parseHostPort(manualHost.trim());
|
|
274
|
+
}
|
|
275
|
+
const selected = agentList[selectedNum - 1];
|
|
276
|
+
return { host: selected.ip, port: 9100 };
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
spinner.stop();
|
|
280
|
+
// If not authenticated or can't reach vault, return null
|
|
281
|
+
output.error(`Failed to fetch agents: ${err instanceof Error ? err.message : String(err)}`);
|
|
282
|
+
return null;
|
|
283
|
+
}
|
|
284
|
+
finally {
|
|
285
|
+
await mode.closeLocalClient();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Get host:port from argument or interactive selection
|
|
290
|
+
*/
|
|
291
|
+
export async function resolveHostPort(hostPort) {
|
|
292
|
+
if (hostPort) {
|
|
293
|
+
return parseHostPort(hostPort);
|
|
294
|
+
}
|
|
295
|
+
return selectAgentInteractively();
|
|
296
|
+
}
|
|
297
|
+
// ============================================================================
|
|
298
|
+
// Confirmation Helpers
|
|
299
|
+
// ============================================================================
|
|
300
|
+
/**
|
|
301
|
+
* Prompt for confirmation
|
|
302
|
+
*/
|
|
303
|
+
export async function confirmAction(message) {
|
|
304
|
+
const readline = await import('readline');
|
|
305
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
306
|
+
const answer = await new Promise(resolve => {
|
|
307
|
+
rl.question(`${message} [y/N] `, resolve);
|
|
308
|
+
});
|
|
309
|
+
rl.close();
|
|
310
|
+
return answer.toLowerCase() === 'y';
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Wait for agent restart and verify it's back online
|
|
314
|
+
*/
|
|
315
|
+
export async function waitForAgentRestart(host, port, waitSeconds = 25) {
|
|
316
|
+
console.log('\x1b[33mAgent is restarting...\x1b[0m');
|
|
317
|
+
for (let i = waitSeconds; i > 0; i--) {
|
|
318
|
+
process.stdout.write(`\rWaiting for restart... ${i}s `);
|
|
319
|
+
await new Promise(r => setTimeout(r, 1000));
|
|
320
|
+
}
|
|
321
|
+
process.stdout.write('\r\x1b[K');
|
|
322
|
+
// Verify agent is back
|
|
323
|
+
try {
|
|
324
|
+
const health = await fetchAgentHealth(host, port);
|
|
325
|
+
console.log(`\x1b[32m✓\x1b[0m Agent back online (v${health.version})`);
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
console.log('\x1b[33m⚠\x1b[0m Agent not responding yet. It may still be restarting.');
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/agent/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent commands - main entry point
|
|
3
|
+
*
|
|
4
|
+
* This module provides the command registration function that combines
|
|
5
|
+
* all agent subcommands into a single command group.
|
|
6
|
+
*
|
|
7
|
+
* Command structure:
|
|
8
|
+
*
|
|
9
|
+
* agent
|
|
10
|
+
* ├── list (alias for remote list)
|
|
11
|
+
* ├── connections (alias for remote connections)
|
|
12
|
+
* ├── status <id> (alias for remote status)
|
|
13
|
+
* ├── alerts <id> (alias for remote alerts)
|
|
14
|
+
* ├── delete <id> (alias for remote delete)
|
|
15
|
+
* ├── reprovision
|
|
16
|
+
* │ ├── create <id>
|
|
17
|
+
* │ ├── status <id>
|
|
18
|
+
* │ └── cancel <id>
|
|
19
|
+
* ├── token
|
|
20
|
+
* │ ├── create <key>
|
|
21
|
+
* │ ├── list <key>
|
|
22
|
+
* │ └── revoke <id> -k <key>
|
|
23
|
+
* ├── ping [host:port]
|
|
24
|
+
* ├── plugins [host:port]
|
|
25
|
+
* ├── update-plugins [host:port]
|
|
26
|
+
* ├── version [host:port]
|
|
27
|
+
* ├── update [host:port]
|
|
28
|
+
* ├── update-all
|
|
29
|
+
* └── remote (backwards compat group)
|
|
30
|
+
* ├── list
|
|
31
|
+
* ├── connections
|
|
32
|
+
* ├── status <id>
|
|
33
|
+
* ├── alerts <id>
|
|
34
|
+
* ├── delete <id>
|
|
35
|
+
* ├── reprovision
|
|
36
|
+
* │ ├── create <id>
|
|
37
|
+
* │ ├── status <id>
|
|
38
|
+
* │ └── cancel <id>
|
|
39
|
+
* ├── reprovision-status <id> (deprecated alias)
|
|
40
|
+
* └── cancel-reprovision <id> (deprecated alias)
|
|
41
|
+
*/
|
|
42
|
+
import type { Command } from 'commander';
|
|
43
|
+
export declare function registerAgentCommands(program: Command): void;
|
|
44
|
+
export * from './types.js';
|
|
45
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0B5D;AAGD,cAAc,YAAY,CAAC"}
|