@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.
Files changed (101) hide show
  1. package/dist/commands/agent/direct/index.d.ts +8 -0
  2. package/dist/commands/agent/direct/index.d.ts.map +1 -0
  3. package/dist/commands/agent/direct/index.js +16 -0
  4. package/dist/commands/agent/direct/index.js.map +1 -0
  5. package/dist/commands/agent/direct/ping.d.ts +6 -0
  6. package/dist/commands/agent/direct/ping.d.ts.map +1 -0
  7. package/dist/commands/agent/direct/ping.js +52 -0
  8. package/dist/commands/agent/direct/ping.js.map +1 -0
  9. package/dist/commands/agent/direct/plugins.d.ts +6 -0
  10. package/dist/commands/agent/direct/plugins.d.ts.map +1 -0
  11. package/dist/commands/agent/direct/plugins.js +56 -0
  12. package/dist/commands/agent/direct/plugins.js.map +1 -0
  13. package/dist/commands/agent/direct/update-all.d.ts +6 -0
  14. package/dist/commands/agent/direct/update-all.d.ts.map +1 -0
  15. package/dist/commands/agent/direct/update-all.js +233 -0
  16. package/dist/commands/agent/direct/update-all.js.map +1 -0
  17. package/dist/commands/agent/direct/update-plugins.d.ts +6 -0
  18. package/dist/commands/agent/direct/update-plugins.d.ts.map +1 -0
  19. package/dist/commands/agent/direct/update-plugins.js +91 -0
  20. package/dist/commands/agent/direct/update-plugins.js.map +1 -0
  21. package/dist/commands/agent/direct/update.d.ts +6 -0
  22. package/dist/commands/agent/direct/update.d.ts.map +1 -0
  23. package/dist/commands/agent/direct/update.js +90 -0
  24. package/dist/commands/agent/direct/update.js.map +1 -0
  25. package/dist/commands/agent/direct/version.d.ts +6 -0
  26. package/dist/commands/agent/direct/version.d.ts.map +1 -0
  27. package/dist/commands/agent/direct/version.js +47 -0
  28. package/dist/commands/agent/direct/version.js.map +1 -0
  29. package/dist/commands/agent/helpers.d.ts +72 -0
  30. package/dist/commands/agent/helpers.d.ts.map +1 -0
  31. package/dist/commands/agent/helpers.js +331 -0
  32. package/dist/commands/agent/helpers.js.map +1 -0
  33. package/dist/commands/agent/index.d.ts +45 -0
  34. package/dist/commands/agent/index.d.ts.map +1 -0
  35. package/dist/commands/agent/index.js +30 -0
  36. package/dist/commands/agent/index.js.map +1 -0
  37. package/dist/commands/agent/remote/alerts.d.ts +6 -0
  38. package/dist/commands/agent/remote/alerts.d.ts.map +1 -0
  39. package/dist/commands/agent/remote/alerts.js +42 -0
  40. package/dist/commands/agent/remote/alerts.js.map +1 -0
  41. package/dist/commands/agent/remote/connections.d.ts +6 -0
  42. package/dist/commands/agent/remote/connections.d.ts.map +1 -0
  43. package/dist/commands/agent/remote/connections.js +46 -0
  44. package/dist/commands/agent/remote/connections.js.map +1 -0
  45. package/dist/commands/agent/remote/delete.d.ts +6 -0
  46. package/dist/commands/agent/remote/delete.d.ts.map +1 -0
  47. package/dist/commands/agent/remote/delete.js +34 -0
  48. package/dist/commands/agent/remote/delete.js.map +1 -0
  49. package/dist/commands/agent/remote/index.d.ts +20 -0
  50. package/dist/commands/agent/remote/index.d.ts.map +1 -0
  51. package/dist/commands/agent/remote/index.js +84 -0
  52. package/dist/commands/agent/remote/index.js.map +1 -0
  53. package/dist/commands/agent/remote/list.d.ts +6 -0
  54. package/dist/commands/agent/remote/list.d.ts.map +1 -0
  55. package/dist/commands/agent/remote/list.js +57 -0
  56. package/dist/commands/agent/remote/list.js.map +1 -0
  57. package/dist/commands/agent/remote/reprovision/cancel.d.ts +6 -0
  58. package/dist/commands/agent/remote/reprovision/cancel.d.ts.map +1 -0
  59. package/dist/commands/agent/remote/reprovision/cancel.js +35 -0
  60. package/dist/commands/agent/remote/reprovision/cancel.js.map +1 -0
  61. package/dist/commands/agent/remote/reprovision/create.d.ts +6 -0
  62. package/dist/commands/agent/remote/reprovision/create.d.ts.map +1 -0
  63. package/dist/commands/agent/remote/reprovision/create.js +54 -0
  64. package/dist/commands/agent/remote/reprovision/create.js.map +1 -0
  65. package/dist/commands/agent/remote/reprovision/index.d.ts +12 -0
  66. package/dist/commands/agent/remote/reprovision/index.d.ts.map +1 -0
  67. package/dist/commands/agent/remote/reprovision/index.js +21 -0
  68. package/dist/commands/agent/remote/reprovision/index.js.map +1 -0
  69. package/dist/commands/agent/remote/reprovision/status.d.ts +6 -0
  70. package/dist/commands/agent/remote/reprovision/status.d.ts.map +1 -0
  71. package/dist/commands/agent/remote/reprovision/status.js +60 -0
  72. package/dist/commands/agent/remote/reprovision/status.js.map +1 -0
  73. package/dist/commands/agent/remote/status.d.ts +6 -0
  74. package/dist/commands/agent/remote/status.d.ts.map +1 -0
  75. package/dist/commands/agent/remote/status.js +126 -0
  76. package/dist/commands/agent/remote/status.js.map +1 -0
  77. package/dist/commands/agent/token/create.d.ts +6 -0
  78. package/dist/commands/agent/token/create.d.ts.map +1 -0
  79. package/dist/commands/agent/token/create.js +67 -0
  80. package/dist/commands/agent/token/create.js.map +1 -0
  81. package/dist/commands/agent/token/index.d.ts +8 -0
  82. package/dist/commands/agent/token/index.d.ts.map +1 -0
  83. package/dist/commands/agent/token/index.js +13 -0
  84. package/dist/commands/agent/token/index.js.map +1 -0
  85. package/dist/commands/agent/token/list.d.ts +6 -0
  86. package/dist/commands/agent/token/list.d.ts.map +1 -0
  87. package/dist/commands/agent/token/list.js +63 -0
  88. package/dist/commands/agent/token/list.js.map +1 -0
  89. package/dist/commands/agent/token/revoke.d.ts +6 -0
  90. package/dist/commands/agent/token/revoke.d.ts.map +1 -0
  91. package/dist/commands/agent/token/revoke.js +37 -0
  92. package/dist/commands/agent/token/revoke.js.map +1 -0
  93. package/dist/commands/agent/types.d.ts +237 -0
  94. package/dist/commands/agent/types.d.ts.map +1 -0
  95. package/dist/commands/agent/types.js +3 -0
  96. package/dist/commands/agent/types.js.map +1 -0
  97. package/dist/commands/agent.d.ts +9 -2
  98. package/dist/commands/agent.d.ts.map +1 -1
  99. package/dist/commands/agent.js +8 -1201
  100. package/dist/commands/agent.js.map +1 -1
  101. 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":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Agent version command - check agent version and available updates
3
+ */
4
+ import type { Command } from 'commander';
5
+ export declare function registerVersionCommand(parentCmd: Command): void;
6
+ //# sourceMappingURL=version.d.ts.map
@@ -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"}