@zincapp/znvault-cli 2.29.0 → 2.29.2

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 (269) hide show
  1. package/dist/commands/agent/direct/update-all.d.ts.map +1 -1
  2. package/dist/commands/agent/direct/update-all.js +13 -8
  3. package/dist/commands/agent/direct/update-all.js.map +1 -1
  4. package/dist/commands/agent/helpers.d.ts +3 -6
  5. package/dist/commands/agent/helpers.d.ts.map +1 -1
  6. package/dist/commands/agent/helpers.js +13 -21
  7. package/dist/commands/agent/helpers.js.map +1 -1
  8. package/dist/commands/apikey/helpers.d.ts +1 -2
  9. package/dist/commands/apikey/helpers.d.ts.map +1 -1
  10. package/dist/commands/apikey/helpers.js +2 -12
  11. package/dist/commands/apikey/helpers.js.map +1 -1
  12. package/dist/commands/backup/helpers.d.ts +1 -3
  13. package/dist/commands/backup/helpers.d.ts.map +1 -1
  14. package/dist/commands/backup/helpers.js +2 -23
  15. package/dist/commands/backup/helpers.js.map +1 -1
  16. package/dist/commands/device.d.ts.map +1 -1
  17. package/dist/commands/device.js +10 -6
  18. package/dist/commands/device.js.map +1 -1
  19. package/dist/commands/dynamic-secrets/helpers.d.ts +3 -2
  20. package/dist/commands/dynamic-secrets/helpers.d.ts.map +1 -1
  21. package/dist/commands/dynamic-secrets/helpers.js +6 -15
  22. package/dist/commands/dynamic-secrets/helpers.js.map +1 -1
  23. package/dist/commands/kms/crud.d.ts +6 -0
  24. package/dist/commands/kms/crud.d.ts.map +1 -0
  25. package/dist/commands/kms/crud.js +226 -0
  26. package/dist/commands/kms/crud.js.map +1 -0
  27. package/dist/commands/kms/crypto.d.ts +6 -0
  28. package/dist/commands/kms/crypto.d.ts.map +1 -0
  29. package/dist/commands/kms/crypto.js +190 -0
  30. package/dist/commands/kms/crypto.js.map +1 -0
  31. package/dist/commands/kms/helpers.d.ts +10 -0
  32. package/dist/commands/kms/helpers.d.ts.map +1 -0
  33. package/dist/commands/kms/helpers.js +44 -0
  34. package/dist/commands/kms/helpers.js.map +1 -0
  35. package/dist/commands/kms/index.d.ts +13 -0
  36. package/dist/commands/kms/index.d.ts.map +1 -0
  37. package/dist/commands/kms/index.js +18 -0
  38. package/dist/commands/kms/index.js.map +1 -0
  39. package/dist/commands/kms/lifecycle.d.ts +6 -0
  40. package/dist/commands/kms/lifecycle.d.ts.map +1 -0
  41. package/dist/commands/kms/lifecycle.js +124 -0
  42. package/dist/commands/kms/lifecycle.js.map +1 -0
  43. package/dist/commands/kms/types.d.ts +102 -0
  44. package/dist/commands/kms/types.d.ts.map +1 -0
  45. package/dist/commands/kms/types.js +3 -0
  46. package/dist/commands/kms/types.js.map +1 -0
  47. package/dist/commands/plugin/enable-disable.d.ts +6 -0
  48. package/dist/commands/plugin/enable-disable.d.ts.map +1 -0
  49. package/dist/commands/plugin/enable-disable.js +64 -0
  50. package/dist/commands/plugin/enable-disable.js.map +1 -0
  51. package/dist/commands/plugin/helpers.d.ts +63 -0
  52. package/dist/commands/plugin/helpers.d.ts.map +1 -0
  53. package/dist/commands/plugin/helpers.js +204 -0
  54. package/dist/commands/plugin/helpers.js.map +1 -0
  55. package/dist/commands/plugin/index.d.ts +10 -0
  56. package/dist/commands/plugin/index.d.ts.map +1 -0
  57. package/dist/commands/plugin/index.js +24 -0
  58. package/dist/commands/plugin/index.js.map +1 -0
  59. package/dist/commands/plugin/info.d.ts +6 -0
  60. package/dist/commands/plugin/info.d.ts.map +1 -0
  61. package/dist/commands/plugin/info.js +108 -0
  62. package/dist/commands/plugin/info.js.map +1 -0
  63. package/dist/commands/plugin/install.d.ts +6 -0
  64. package/dist/commands/plugin/install.d.ts.map +1 -0
  65. package/dist/commands/plugin/install.js +96 -0
  66. package/dist/commands/plugin/install.js.map +1 -0
  67. package/dist/commands/plugin/list.d.ts +6 -0
  68. package/dist/commands/plugin/list.d.ts.map +1 -0
  69. package/dist/commands/plugin/list.js +60 -0
  70. package/dist/commands/plugin/list.js.map +1 -0
  71. package/dist/commands/plugin/types.d.ts +37 -0
  72. package/dist/commands/plugin/types.d.ts.map +1 -0
  73. package/dist/commands/plugin/types.js +7 -0
  74. package/dist/commands/plugin/types.js.map +1 -0
  75. package/dist/commands/plugin/uninstall.d.ts +6 -0
  76. package/dist/commands/plugin/uninstall.d.ts.map +1 -0
  77. package/dist/commands/plugin/uninstall.js +50 -0
  78. package/dist/commands/plugin/uninstall.js.map +1 -0
  79. package/dist/commands/plugin/update.d.ts +6 -0
  80. package/dist/commands/plugin/update.d.ts.map +1 -0
  81. package/dist/commands/plugin/update.js +84 -0
  82. package/dist/commands/plugin/update.js.map +1 -0
  83. package/dist/commands/policy/attachments.d.ts.map +1 -1
  84. package/dist/commands/policy/attachments.js +14 -20
  85. package/dist/commands/policy/attachments.js.map +1 -1
  86. package/dist/commands/policy/crud.d.ts.map +1 -1
  87. package/dist/commands/policy/crud.js +13 -23
  88. package/dist/commands/policy/crud.js.map +1 -1
  89. package/dist/commands/policy/io.d.ts.map +1 -1
  90. package/dist/commands/policy/io.js +4 -5
  91. package/dist/commands/policy/io.js.map +1 -1
  92. package/dist/commands/policy/list.d.ts.map +1 -1
  93. package/dist/commands/policy/list.js +7 -8
  94. package/dist/commands/policy/list.js.map +1 -1
  95. package/dist/commands/quarantine.d.ts.map +1 -1
  96. package/dist/commands/quarantine.js +1 -9
  97. package/dist/commands/quarantine.js.map +1 -1
  98. package/dist/commands/role.d.ts.map +1 -1
  99. package/dist/commands/role.js +4 -10
  100. package/dist/commands/role.js.map +1 -1
  101. package/dist/commands/secret/helpers.d.ts +1 -2
  102. package/dist/commands/secret/helpers.d.ts.map +1 -1
  103. package/dist/commands/secret/helpers.js +2 -14
  104. package/dist/commands/secret/helpers.js.map +1 -1
  105. package/dist/commands/secret/list.d.ts.map +1 -1
  106. package/dist/commands/secret/list.js +3 -4
  107. package/dist/commands/secret/list.js.map +1 -1
  108. package/dist/commands/ssh/bookmark.d.ts +11 -0
  109. package/dist/commands/ssh/bookmark.d.ts.map +1 -0
  110. package/dist/commands/ssh/bookmark.js +210 -0
  111. package/dist/commands/ssh/bookmark.js.map +1 -0
  112. package/dist/commands/ssh/ca.d.ts +6 -0
  113. package/dist/commands/ssh/ca.d.ts.map +1 -0
  114. package/dist/commands/ssh/ca.js +162 -0
  115. package/dist/commands/ssh/ca.js.map +1 -0
  116. package/dist/commands/ssh/cert.d.ts +6 -0
  117. package/dist/commands/ssh/cert.d.ts.map +1 -0
  118. package/dist/commands/ssh/cert.js +303 -0
  119. package/dist/commands/ssh/cert.js.map +1 -0
  120. package/dist/commands/ssh/config.d.ts +6 -0
  121. package/dist/commands/ssh/config.d.ts.map +1 -0
  122. package/dist/commands/ssh/config.js +95 -0
  123. package/dist/commands/ssh/config.js.map +1 -0
  124. package/dist/commands/ssh/connect.d.ts +6 -0
  125. package/dist/commands/ssh/connect.d.ts.map +1 -0
  126. package/dist/commands/ssh/connect.js +219 -0
  127. package/dist/commands/ssh/connect.js.map +1 -0
  128. package/dist/commands/ssh/exec.d.ts +6 -0
  129. package/dist/commands/ssh/exec.d.ts.map +1 -0
  130. package/dist/commands/ssh/exec.js +218 -0
  131. package/dist/commands/ssh/exec.js.map +1 -0
  132. package/dist/commands/ssh/helpers.d.ts +46 -0
  133. package/dist/commands/ssh/helpers.d.ts.map +1 -0
  134. package/dist/commands/ssh/helpers.js +175 -0
  135. package/dist/commands/ssh/helpers.js.map +1 -0
  136. package/dist/commands/ssh/hosts.d.ts +6 -0
  137. package/dist/commands/ssh/hosts.d.ts.map +1 -0
  138. package/dist/commands/ssh/hosts.js +101 -0
  139. package/dist/commands/ssh/hosts.js.map +1 -0
  140. package/dist/commands/ssh/index.d.ts +20 -0
  141. package/dist/commands/ssh/index.d.ts.map +1 -0
  142. package/dist/commands/ssh/index.js +34 -0
  143. package/dist/commands/ssh/index.js.map +1 -0
  144. package/dist/commands/ssh/mapping.d.ts +6 -0
  145. package/dist/commands/ssh/mapping.d.ts.map +1 -0
  146. package/dist/commands/ssh/mapping.js +130 -0
  147. package/dist/commands/ssh/mapping.js.map +1 -0
  148. package/dist/commands/ssh/scp.d.ts +6 -0
  149. package/dist/commands/ssh/scp.d.ts.map +1 -0
  150. package/dist/commands/ssh/scp.js +219 -0
  151. package/dist/commands/ssh/scp.js.map +1 -0
  152. package/dist/commands/ssh/server-group.d.ts +6 -0
  153. package/dist/commands/ssh/server-group.d.ts.map +1 -0
  154. package/dist/commands/ssh/server-group.js +249 -0
  155. package/dist/commands/ssh/server-group.js.map +1 -0
  156. package/dist/commands/ssh/types.d.ts +150 -0
  157. package/dist/commands/ssh/types.d.ts.map +1 -0
  158. package/dist/commands/ssh/types.js +3 -0
  159. package/dist/commands/ssh/types.js.map +1 -0
  160. package/dist/commands/ssh-ca/helpers.d.ts +1 -8
  161. package/dist/commands/ssh-ca/helpers.d.ts.map +1 -1
  162. package/dist/commands/ssh-ca/helpers.js +2 -23
  163. package/dist/commands/ssh-ca/helpers.js.map +1 -1
  164. package/dist/commands/ssh-ca/index.js +1 -1
  165. package/dist/commands/ssh-ca/index.js.map +1 -1
  166. package/dist/commands/ssh-ca/types.d.ts +1 -1
  167. package/dist/commands/sso/crud.d.ts +6 -0
  168. package/dist/commands/sso/crud.d.ts.map +1 -0
  169. package/dist/commands/sso/crud.js +360 -0
  170. package/dist/commands/sso/crud.js.map +1 -0
  171. package/dist/commands/sso/helpers.d.ts +9 -0
  172. package/dist/commands/sso/helpers.d.ts.map +1 -0
  173. package/dist/commands/sso/helpers.js +13 -0
  174. package/dist/commands/sso/helpers.js.map +1 -0
  175. package/dist/commands/sso/index.d.ts +13 -0
  176. package/dist/commands/sso/index.d.ts.map +1 -0
  177. package/dist/commands/sso/index.js +16 -0
  178. package/dist/commands/sso/index.js.map +1 -0
  179. package/dist/commands/sso/types.d.ts +119 -0
  180. package/dist/commands/sso/types.d.ts.map +1 -0
  181. package/dist/commands/sso/types.js +3 -0
  182. package/dist/commands/sso/types.js.map +1 -0
  183. package/dist/commands/sso/users.d.ts +6 -0
  184. package/dist/commands/sso/users.d.ts.map +1 -0
  185. package/dist/commands/sso/users.js +128 -0
  186. package/dist/commands/sso/users.js.map +1 -0
  187. package/dist/commands/unseal.d.ts.map +1 -1
  188. package/dist/commands/unseal.js +10 -20
  189. package/dist/commands/unseal.js.map +1 -1
  190. package/dist/index.js +4 -4
  191. package/dist/index.js.map +1 -1
  192. package/dist/lib/cli-update.d.ts.map +1 -1
  193. package/dist/lib/cli-update.js +18 -14
  194. package/dist/lib/cli-update.js.map +1 -1
  195. package/dist/lib/client/http.d.ts +3 -1
  196. package/dist/lib/client/http.d.ts.map +1 -1
  197. package/dist/lib/client/http.js +41 -8
  198. package/dist/lib/client/http.js.map +1 -1
  199. package/dist/lib/config/autounseal.d.ts +4 -0
  200. package/dist/lib/config/autounseal.d.ts.map +1 -1
  201. package/dist/lib/config/autounseal.js +102 -6
  202. package/dist/lib/config/autounseal.js.map +1 -1
  203. package/dist/lib/config/credentials.d.ts.map +1 -1
  204. package/dist/lib/config/credentials.js +3 -2
  205. package/dist/lib/config/credentials.js.map +1 -1
  206. package/dist/lib/config/index.d.ts +2 -1
  207. package/dist/lib/config/index.d.ts.map +1 -1
  208. package/dist/lib/config/index.js +3 -1
  209. package/dist/lib/config/index.js.map +1 -1
  210. package/dist/lib/config/keychain.d.ts +27 -0
  211. package/dist/lib/config/keychain.d.ts.map +1 -0
  212. package/dist/lib/config/keychain.js +194 -0
  213. package/dist/lib/config/keychain.js.map +1 -0
  214. package/dist/lib/config/types.d.ts +12 -0
  215. package/dist/lib/config/types.d.ts.map +1 -1
  216. package/dist/lib/config/types.js +3 -2
  217. package/dist/lib/config/types.js.map +1 -1
  218. package/dist/lib/constants.d.ts +24 -0
  219. package/dist/lib/constants.d.ts.map +1 -1
  220. package/dist/lib/constants.js +34 -1
  221. package/dist/lib/constants.js.map +1 -1
  222. package/dist/lib/db/health.d.ts.map +1 -1
  223. package/dist/lib/db/health.js +14 -7
  224. package/dist/lib/db/health.js.map +1 -1
  225. package/dist/lib/debug.d.ts +17 -0
  226. package/dist/lib/debug.d.ts.map +1 -0
  227. package/dist/lib/debug.js +50 -0
  228. package/dist/lib/debug.js.map +1 -0
  229. package/dist/lib/format-helpers.d.ts +43 -0
  230. package/dist/lib/format-helpers.d.ts.map +1 -1
  231. package/dist/lib/format-helpers.js +85 -0
  232. package/dist/lib/format-helpers.js.map +1 -1
  233. package/dist/lib/local.d.ts.map +1 -1
  234. package/dist/lib/local.js +12 -8
  235. package/dist/lib/local.js.map +1 -1
  236. package/dist/lib/mode.d.ts.map +1 -1
  237. package/dist/lib/mode.js +2 -1
  238. package/dist/lib/mode.js.map +1 -1
  239. package/dist/lib/output.d.ts +10 -0
  240. package/dist/lib/output.d.ts.map +1 -1
  241. package/dist/lib/output.js +21 -0
  242. package/dist/lib/output.js.map +1 -1
  243. package/dist/services/auto-update-daemon.d.ts.map +1 -1
  244. package/dist/services/auto-update-daemon.js +10 -6
  245. package/dist/services/auto-update-daemon.js.map +1 -1
  246. package/dist/services/update-checker.d.ts.map +1 -1
  247. package/dist/services/update-checker.js +2 -1
  248. package/dist/services/update-checker.js.map +1 -1
  249. package/dist/services/update-installer.d.ts +8 -0
  250. package/dist/services/update-installer.d.ts.map +1 -1
  251. package/dist/services/update-installer.js +47 -18
  252. package/dist/services/update-installer.js.map +1 -1
  253. package/package.json +4 -4
  254. package/dist/commands/kms.d.ts +0 -3
  255. package/dist/commands/kms.d.ts.map +0 -1
  256. package/dist/commands/kms.js +0 -555
  257. package/dist/commands/kms.js.map +0 -1
  258. package/dist/commands/plugin.d.ts +0 -8
  259. package/dist/commands/plugin.d.ts.map +0 -1
  260. package/dist/commands/plugin.js +0 -637
  261. package/dist/commands/plugin.js.map +0 -1
  262. package/dist/commands/ssh.d.ts +0 -3
  263. package/dist/commands/ssh.d.ts.map +0 -1
  264. package/dist/commands/ssh.js +0 -814
  265. package/dist/commands/ssh.js.map +0 -1
  266. package/dist/commands/sso.d.ts +0 -3
  267. package/dist/commands/sso.d.ts.map +0 -1
  268. package/dist/commands/sso.js +0 -486
  269. package/dist/commands/sso.js.map +0 -1
@@ -0,0 +1,124 @@
1
+ // Path: src/commands/kms/lifecycle.ts
2
+ import ora from 'ora';
3
+ import Table from 'cli-table3';
4
+ import { client } from '../../lib/client.js';
5
+ import * as output from '../../lib/output.js';
6
+ import { formatDate } from './helpers.js';
7
+ // ============================================================================
8
+ // Command Implementations
9
+ // ============================================================================
10
+ async function rotateKey(keyId, options) {
11
+ const spinner = ora('Rotating key...').start();
12
+ try {
13
+ const result = await client.post(`/v1/kms/keys/${keyId}/rotate`, {});
14
+ spinner.stop();
15
+ if (options.json) {
16
+ output.json(result);
17
+ return;
18
+ }
19
+ output.success('Key rotated successfully!');
20
+ console.log(` Key ID: ${result.keyId}`);
21
+ console.log(` New Version: ${result.newVersionId}`);
22
+ }
23
+ catch (error) {
24
+ spinner.fail('Failed to rotate key');
25
+ output.error(error.message);
26
+ process.exit(1);
27
+ }
28
+ }
29
+ async function enableKey(keyId, options) {
30
+ const spinner = ora('Enabling key...').start();
31
+ try {
32
+ const result = await client.post(`/v1/kms/keys/${keyId}/enable`, {});
33
+ spinner.stop();
34
+ if (options.json) {
35
+ output.json({ success: true, ...result });
36
+ return;
37
+ }
38
+ output.success(`Key ${keyId} enabled`);
39
+ }
40
+ catch (error) {
41
+ spinner.fail('Failed to enable key');
42
+ output.error(error.message);
43
+ process.exit(1);
44
+ }
45
+ }
46
+ async function disableKey(keyId, options) {
47
+ const spinner = ora('Disabling key...').start();
48
+ try {
49
+ const result = await client.post(`/v1/kms/keys/${keyId}/disable`, {});
50
+ spinner.stop();
51
+ if (options.json) {
52
+ output.json({ success: true, ...result });
53
+ return;
54
+ }
55
+ output.success(`Key ${keyId} disabled`);
56
+ }
57
+ catch (error) {
58
+ spinner.fail('Failed to disable key');
59
+ output.error(error.message);
60
+ process.exit(1);
61
+ }
62
+ }
63
+ async function listVersions(keyId, options) {
64
+ const spinner = ora('Fetching key versions...').start();
65
+ try {
66
+ const versions = await client.get(`/v1/kms/keys/${keyId}/versions`);
67
+ spinner.stop();
68
+ if (options.json) {
69
+ output.json(versions);
70
+ return;
71
+ }
72
+ if (versions.length === 0) {
73
+ output.info('No versions found');
74
+ return;
75
+ }
76
+ const table = new Table({
77
+ head: ['Version ID', 'Created', 'Current'],
78
+ colWidths: [40, 26, 10],
79
+ });
80
+ for (const v of versions) {
81
+ table.push([
82
+ v.versionId,
83
+ formatDate(v.createdAt),
84
+ v.isCurrentVersion ? 'Yes' : '-',
85
+ ]);
86
+ }
87
+ console.log(table.toString());
88
+ }
89
+ catch (error) {
90
+ spinner.fail('Failed to fetch versions');
91
+ output.error(error.message);
92
+ process.exit(1);
93
+ }
94
+ }
95
+ // ============================================================================
96
+ // Command Registration
97
+ // ============================================================================
98
+ export function registerLifecycleCommands(parent) {
99
+ // Rotate key
100
+ parent
101
+ .command('rotate <keyId>')
102
+ .description('Rotate a KMS key (create new version)')
103
+ .option('--json', 'Output as JSON')
104
+ .action(rotateKey);
105
+ // Enable key
106
+ parent
107
+ .command('enable <keyId>')
108
+ .description('Enable a disabled key')
109
+ .option('--json', 'Output as JSON')
110
+ .action(enableKey);
111
+ // Disable key
112
+ parent
113
+ .command('disable <keyId>')
114
+ .description('Disable a key')
115
+ .option('--json', 'Output as JSON')
116
+ .action(disableKey);
117
+ // List versions
118
+ parent
119
+ .command('versions <keyId>')
120
+ .description('List key versions')
121
+ .option('--json', 'Output as JSON')
122
+ .action(listVersions);
123
+ }
124
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/commands/kms/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * KMS command types and interfaces
3
+ */
4
+ export interface KMSKey {
5
+ keyId: string;
6
+ alias?: string;
7
+ arn?: string;
8
+ keyState: string;
9
+ keyUsage: string;
10
+ keySpec: string;
11
+ description?: string;
12
+ tenant?: string;
13
+ createdDate: string;
14
+ deletionDate?: string;
15
+ currentVersionId?: string;
16
+ rotationEnabled?: boolean;
17
+ tags?: Record<string, string>;
18
+ }
19
+ export interface KMSKeyItem {
20
+ keyId: string;
21
+ alias?: string;
22
+ keyState: string;
23
+ createdDate: string;
24
+ }
25
+ export interface ListKeysResponse {
26
+ items: KMSKeyItem[];
27
+ pagination: {
28
+ total: number;
29
+ limit: number;
30
+ offset: number;
31
+ hasMore: boolean;
32
+ };
33
+ }
34
+ export interface EncryptResponse {
35
+ keyId: string;
36
+ ciphertext: string;
37
+ encryptionContext: Record<string, string>;
38
+ }
39
+ export interface DecryptResponse {
40
+ keyId: string;
41
+ plaintext: string;
42
+ encryptionContext: Record<string, string>;
43
+ }
44
+ export interface GenerateDataKeyResponse {
45
+ keyId: string;
46
+ plaintext?: string;
47
+ ciphertext: string;
48
+ }
49
+ export interface KeyVersion {
50
+ versionId: string;
51
+ createdAt: string;
52
+ isCurrentVersion: boolean;
53
+ }
54
+ export interface ListOptions {
55
+ tenant?: string;
56
+ state?: string;
57
+ json?: boolean;
58
+ }
59
+ export interface GetOptions {
60
+ json?: boolean;
61
+ }
62
+ export interface CreateOptions {
63
+ tenant?: string;
64
+ alias?: string;
65
+ description?: string;
66
+ usage?: string;
67
+ spec?: string;
68
+ tags?: string;
69
+ json?: boolean;
70
+ }
71
+ export interface EncryptOptions {
72
+ context?: string;
73
+ file?: string;
74
+ output?: string;
75
+ json?: boolean;
76
+ }
77
+ export interface DecryptOptions {
78
+ context?: string;
79
+ output?: string;
80
+ json?: boolean;
81
+ }
82
+ export interface RotateOptions {
83
+ json?: boolean;
84
+ }
85
+ export interface DeleteOptions {
86
+ days?: string;
87
+ force?: boolean;
88
+ json?: boolean;
89
+ }
90
+ export interface EnableDisableOptions {
91
+ json?: boolean;
92
+ }
93
+ export interface GenerateDataKeyOptions {
94
+ spec?: string;
95
+ context?: string;
96
+ output?: string;
97
+ json?: boolean;
98
+ }
99
+ export interface VersionsOptions {
100
+ json?: boolean;
101
+ }
102
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/kms/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // Path: src/commands/kms/types.ts
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/kms/types.ts"],"names":[],"mappings":"AAAA,kCAAkC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Plugin enable/disable commands
3
+ */
4
+ import type { Command } from 'commander';
5
+ export declare function registerEnableDisableCommands(parent: Command): void;
6
+ //# sourceMappingURL=enable-disable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable-disable.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/enable-disable.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAgEnE"}
@@ -0,0 +1,64 @@
1
+ // Path: src/commands/plugin/enable-disable.ts
2
+ import chalk from 'chalk';
3
+ import * as output from '../../lib/output.js';
4
+ import { getPlugins, setPluginEnabled } from '../../lib/config.js';
5
+ import { getShortName, findPlugin } from './helpers.js';
6
+ export function registerEnableDisableCommands(parent) {
7
+ // Enable command
8
+ parent
9
+ .command('enable <name>')
10
+ .description('Enable a disabled plugin')
11
+ .option('--json', 'Output as JSON')
12
+ .action((name, options) => {
13
+ const plugins = getPlugins();
14
+ const found = findPlugin(plugins, name);
15
+ if (!found) {
16
+ output.error(`Plugin not found: ${name}`);
17
+ console.log('Use "znvault plugin list" to see installed plugins.');
18
+ process.exit(1);
19
+ }
20
+ if (found.enabled !== false) {
21
+ if (options.json) {
22
+ output.json({ success: true, name: getShortName(found.package ?? name), alreadyEnabled: true });
23
+ return;
24
+ }
25
+ console.log(`Plugin ${chalk.cyan(getShortName(found.package ?? name))} is already enabled.`);
26
+ return;
27
+ }
28
+ setPluginEnabled(found.package ?? found.path ?? '', true);
29
+ if (options.json) {
30
+ output.json({ success: true, name: getShortName(found.package ?? name) });
31
+ return;
32
+ }
33
+ output.success(`Enabled plugin: ${getShortName(found.package ?? name)}`);
34
+ });
35
+ // Disable command
36
+ parent
37
+ .command('disable <name>')
38
+ .description('Disable a plugin without uninstalling')
39
+ .option('--json', 'Output as JSON')
40
+ .action((name, options) => {
41
+ const plugins = getPlugins();
42
+ const found = findPlugin(plugins, name);
43
+ if (!found) {
44
+ output.error(`Plugin not found: ${name}`);
45
+ console.log('Use "znvault plugin list" to see installed plugins.');
46
+ process.exit(1);
47
+ }
48
+ if (found.enabled === false) {
49
+ if (options.json) {
50
+ output.json({ success: true, name: getShortName(found.package ?? name), alreadyDisabled: true });
51
+ return;
52
+ }
53
+ console.log(`Plugin ${chalk.cyan(getShortName(found.package ?? name))} is already disabled.`);
54
+ return;
55
+ }
56
+ setPluginEnabled(found.package ?? found.path ?? '', false);
57
+ if (options.json) {
58
+ output.json({ success: true, name: getShortName(found.package ?? name) });
59
+ return;
60
+ }
61
+ output.success(`Disabled plugin: ${getShortName(found.package ?? name)}`);
62
+ });
63
+ }
64
+ //# sourceMappingURL=enable-disable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable-disable.js","sourceRoot":"","sources":["../../../src/commands/plugin/enable-disable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Get the plugins directory path (alongside config.json)
3
+ */
4
+ export declare function getPluginsDir(): string;
5
+ /**
6
+ * Ensure plugins directory exists with package.json
7
+ */
8
+ export declare function ensurePluginsDir(): string;
9
+ /**
10
+ * Resolve plugin name to full package name
11
+ * - "payara" -> "@zincapp/znvault-plugin-payara"
12
+ * - "@zincapp/znvault-plugin-payara" -> "@zincapp/znvault-plugin-payara"
13
+ * - "@other/plugin" -> "@other/plugin"
14
+ */
15
+ export declare function resolvePluginName(name: string): string;
16
+ /**
17
+ * Get short name from full package name
18
+ */
19
+ export declare function getShortName(packageName: string): string;
20
+ /**
21
+ * Validate npm package name to prevent command injection
22
+ * Valid: alphanumeric, hyphens, underscores, dots, @ for scopes, / for scoped packages
23
+ */
24
+ export declare function isValidPackageName(name: string): boolean;
25
+ /**
26
+ * Check if a package exists on npm
27
+ */
28
+ export declare function packageExists(packageName: string): Promise<boolean>;
29
+ /**
30
+ * Get package version from npm
31
+ */
32
+ export declare function getPackageVersion(packageName: string): string | null;
33
+ /**
34
+ * Get installed package version
35
+ */
36
+ export declare function getInstalledVersion(packageName: string, pluginsDir: string): string | null;
37
+ /**
38
+ * Run npm command in plugins directory
39
+ */
40
+ export declare function runNpm(args: string[], pluginsDir: string): Promise<{
41
+ success: boolean;
42
+ output: string;
43
+ }>;
44
+ /**
45
+ * Validate that a package is a valid znvault CLI plugin
46
+ */
47
+ export declare function validatePlugin(packageName: string, pluginsDir: string): Promise<{
48
+ valid: boolean;
49
+ error?: string;
50
+ }>;
51
+ /**
52
+ * Find a plugin by name in the plugins list
53
+ */
54
+ export declare function findPlugin(plugins: Array<{
55
+ package?: string;
56
+ path?: string;
57
+ enabled?: boolean;
58
+ }>, name: string): {
59
+ package?: string;
60
+ path?: string;
61
+ enabled?: boolean;
62
+ } | undefined;
63
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/helpers.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAmBzC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAKxD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMxD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW1F;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAgCxG;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA2CzH;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,KAAK,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,EACtE,IAAI,EAAE,MAAM,GACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAOpE"}
@@ -0,0 +1,204 @@
1
+ // Path: src/commands/plugin/helpers.ts
2
+ /**
3
+ * Plugin command helper functions
4
+ */
5
+ import { execFileSync, spawn } from 'node:child_process';
6
+ import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
7
+ import { join, dirname } from 'node:path';
8
+ import { getConfigPath } from '../../lib/config.js';
9
+ import { ZINCAPP_PREFIX } from './types.js';
10
+ import { createDebugLogger } from '../../lib/debug.js';
11
+ const log = createDebugLogger('plugin-helpers');
12
+ /**
13
+ * Get the plugins directory path (alongside config.json)
14
+ */
15
+ export function getPluginsDir() {
16
+ const configPath = getConfigPath();
17
+ return join(dirname(configPath), 'plugins');
18
+ }
19
+ /**
20
+ * Ensure plugins directory exists with package.json
21
+ */
22
+ export function ensurePluginsDir() {
23
+ const pluginsDir = getPluginsDir();
24
+ if (!existsSync(pluginsDir)) {
25
+ mkdirSync(pluginsDir, { recursive: true });
26
+ }
27
+ const packageJsonPath = join(pluginsDir, 'package.json');
28
+ if (!existsSync(packageJsonPath)) {
29
+ writeFileSync(packageJsonPath, JSON.stringify({
30
+ name: 'znvault-plugins',
31
+ version: '1.0.0',
32
+ private: true,
33
+ description: 'ZNVault CLI plugins',
34
+ type: 'module',
35
+ }, null, 2));
36
+ }
37
+ return pluginsDir;
38
+ }
39
+ /**
40
+ * Resolve plugin name to full package name
41
+ * - "payara" -> "@zincapp/znvault-plugin-payara"
42
+ * - "@zincapp/znvault-plugin-payara" -> "@zincapp/znvault-plugin-payara"
43
+ * - "@other/plugin" -> "@other/plugin"
44
+ */
45
+ export function resolvePluginName(name) {
46
+ // Already a scoped or full package name
47
+ if (name.startsWith('@') || name.includes('/')) {
48
+ return name;
49
+ }
50
+ // Check if it's a simple name, prepend ZincApp prefix
51
+ return `${ZINCAPP_PREFIX}${name}`;
52
+ }
53
+ /**
54
+ * Get short name from full package name
55
+ */
56
+ export function getShortName(packageName) {
57
+ if (packageName.startsWith(ZINCAPP_PREFIX)) {
58
+ return packageName.slice(ZINCAPP_PREFIX.length);
59
+ }
60
+ return packageName;
61
+ }
62
+ /**
63
+ * Validate npm package name to prevent command injection
64
+ * Valid: alphanumeric, hyphens, underscores, dots, @ for scopes, / for scoped packages
65
+ */
66
+ export function isValidPackageName(name) {
67
+ // npm package name pattern: optional @scope/ followed by package name
68
+ // Scoped: @scope/package-name
69
+ // Unscoped: package-name
70
+ const npmPackagePattern = /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/i;
71
+ return npmPackagePattern.test(name) && name.length <= 214;
72
+ }
73
+ /**
74
+ * Check if a package exists on npm
75
+ */
76
+ export async function packageExists(packageName) {
77
+ if (!isValidPackageName(packageName)) {
78
+ return false;
79
+ }
80
+ try {
81
+ // Use execFileSync with args array to avoid shell injection
82
+ execFileSync('npm', ['view', packageName, 'version'], { stdio: 'pipe' });
83
+ return true;
84
+ }
85
+ catch (err) {
86
+ log.silenced('packageExists', err);
87
+ return false;
88
+ }
89
+ }
90
+ /**
91
+ * Get package version from npm
92
+ */
93
+ export function getPackageVersion(packageName) {
94
+ if (!isValidPackageName(packageName)) {
95
+ return null;
96
+ }
97
+ try {
98
+ // Use execFileSync with args array to avoid shell injection
99
+ const result = execFileSync('npm', ['view', packageName, 'version'], { stdio: 'pipe' });
100
+ return result.toString().trim();
101
+ }
102
+ catch (err) {
103
+ log.silenced('getPackageVersion', err);
104
+ return null;
105
+ }
106
+ }
107
+ /**
108
+ * Get installed package version
109
+ */
110
+ export function getInstalledVersion(packageName, pluginsDir) {
111
+ try {
112
+ const packageJsonPath = join(pluginsDir, 'node_modules', packageName, 'package.json');
113
+ if (existsSync(packageJsonPath)) {
114
+ const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
115
+ return pkg.version ?? null;
116
+ }
117
+ }
118
+ catch (err) {
119
+ log.silenced('getInstalledVersion', err);
120
+ }
121
+ return null;
122
+ }
123
+ /**
124
+ * Run npm command in plugins directory
125
+ */
126
+ export function runNpm(args, pluginsDir) {
127
+ return new Promise((resolve) => {
128
+ const npm = spawn('npm', args, {
129
+ cwd: pluginsDir,
130
+ stdio: ['ignore', 'pipe', 'pipe'],
131
+ });
132
+ let stdout = '';
133
+ let stderr = '';
134
+ npm.stdout.on('data', (data) => {
135
+ stdout += data.toString();
136
+ });
137
+ npm.stderr.on('data', (data) => {
138
+ stderr += data.toString();
139
+ });
140
+ npm.on('close', (code) => {
141
+ resolve({
142
+ success: code === 0,
143
+ output: stdout + stderr,
144
+ });
145
+ });
146
+ npm.on('error', (err) => {
147
+ resolve({
148
+ success: false,
149
+ output: err.message,
150
+ });
151
+ });
152
+ });
153
+ }
154
+ /**
155
+ * Validate that a package is a valid znvault CLI plugin
156
+ */
157
+ export async function validatePlugin(packageName, pluginsDir) {
158
+ try {
159
+ const packageJsonPath = join(pluginsDir, 'node_modules', packageName, 'package.json');
160
+ if (!existsSync(packageJsonPath)) {
161
+ return { valid: false, error: 'Package not found after installation' };
162
+ }
163
+ const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
164
+ // Check for CLI plugin export
165
+ const hasCliExport = pkg.exports?.['./cli'] || pkg.main;
166
+ if (!hasCliExport) {
167
+ return { valid: false, error: 'Package does not export a CLI plugin' };
168
+ }
169
+ // Try to dynamically import and validate
170
+ try {
171
+ const modulePath = join(pluginsDir, 'node_modules', packageName);
172
+ const cliExport = pkg.exports?.['./cli'];
173
+ const cliPath = typeof cliExport === 'object' ? cliExport?.import : cliExport;
174
+ const resolvedCliPath = cliPath ?? './dist/cli.js';
175
+ const fullPath = join(modulePath, resolvedCliPath);
176
+ // Check if the CLI module exists
177
+ if (!existsSync(fullPath.replace(/\.js$/, '.js')) && !existsSync(fullPath)) {
178
+ // Try without ./cli export - main export might have createPayaraCLIPlugin
179
+ const mainExport = pkg.exports?.['.'];
180
+ const mainPath = join(modulePath, (typeof mainExport === 'object' ? mainExport?.import : mainExport) ?? pkg.main ?? 'dist/index.js');
181
+ if (!existsSync(mainPath)) {
182
+ return { valid: false, error: 'CLI module not found' };
183
+ }
184
+ }
185
+ return { valid: true };
186
+ }
187
+ catch (err) {
188
+ return { valid: false, error: `Failed to validate plugin: ${String(err)}` };
189
+ }
190
+ }
191
+ catch (err) {
192
+ return { valid: false, error: `Validation error: ${String(err)}` };
193
+ }
194
+ }
195
+ /**
196
+ * Find a plugin by name in the plugins list
197
+ */
198
+ export function findPlugin(plugins, name) {
199
+ const packageName = resolvePluginName(name);
200
+ return plugins.find(p => p.package === packageName ||
201
+ p.package === name ||
202
+ getShortName(p.package ?? '') === name);
203
+ }
204
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/plugin/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Plugin Management Commands
3
+ *
4
+ * Commands for installing, uninstalling, and managing CLI plugins.
5
+ */
6
+ import type { Command } from 'commander';
7
+ export declare function registerPluginCommands(program: Command): void;
8
+ export * from './types.js';
9
+ export { getPluginsDir, ensurePluginsDir, resolvePluginName, getShortName, isValidPackageName, packageExists, getPackageVersion, getInstalledVersion, runNpm, validatePlugin, findPlugin, } from './helpers.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/index.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAY7D;AAGD,cAAc,YAAY,CAAC;AAG3B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,MAAM,EACN,cAAc,EACd,UAAU,GACX,MAAM,cAAc,CAAC"}
@@ -0,0 +1,24 @@
1
+ // Path: src/commands/plugin/index.ts
2
+ import { registerInstallCommand } from './install.js';
3
+ import { registerUninstallCommand } from './uninstall.js';
4
+ import { registerListCommand } from './list.js';
5
+ import { registerUpdateCommand } from './update.js';
6
+ import { registerEnableDisableCommands } from './enable-disable.js';
7
+ import { registerInfoCommand } from './info.js';
8
+ export function registerPluginCommands(program) {
9
+ const plugin = program
10
+ .command('plugin')
11
+ .description('Manage CLI plugins');
12
+ // Register all sub-commands
13
+ registerInstallCommand(plugin);
14
+ registerUninstallCommand(plugin);
15
+ registerListCommand(plugin);
16
+ registerUpdateCommand(plugin);
17
+ registerEnableDisableCommands(plugin);
18
+ registerInfoCommand(plugin);
19
+ }
20
+ // Re-export types for external use
21
+ export * from './types.js';
22
+ // Re-export helpers for potential reuse
23
+ export { getPluginsDir, ensurePluginsDir, resolvePluginName, getShortName, isValidPackageName, packageExists, getPackageVersion, getInstalledVersion, runNpm, validatePlugin, findPlugin, } from './helpers.js';
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/plugin/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AASrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAErC,4BAA4B;IAC5B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,mCAAmC;AACnC,cAAc,YAAY,CAAC;AAE3B,wCAAwC;AACxC,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,MAAM,EACN,cAAc,EACd,UAAU,GACX,MAAM,cAAc,CAAC"}