@zincapp/znvault-cli 2.12.1 → 2.13.1

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.
@@ -2,49 +2,201 @@
2
2
  /**
3
3
  * Self-Update Command
4
4
  *
5
- * Handles CLI self-update functionality.
5
+ * Handles CLI self-update functionality and plugin updates.
6
6
  */
7
+ import { execSync, spawn } from 'node:child_process';
8
+ import { existsSync, readFileSync } from 'node:fs';
9
+ import { join, dirname } from 'node:path';
7
10
  import ora from 'ora';
8
11
  import chalk from 'chalk';
9
12
  import * as output from '../lib/output.js';
10
13
  import { checkForUpdate, performUpdate, getCurrentVersion, clearUpdateCache, } from '../lib/cli-update.js';
14
+ import { getPlugins, getConfigPath } from '../lib/config.js';
15
+ /**
16
+ * Get the plugins directory path
17
+ */
18
+ function getPluginsDir() {
19
+ const configPath = getConfigPath();
20
+ return join(dirname(configPath), 'plugins');
21
+ }
22
+ /**
23
+ * Get installed package version from plugins directory
24
+ */
25
+ function getInstalledVersion(packageName, pluginsDir) {
26
+ try {
27
+ const packageJsonPath = join(pluginsDir, 'node_modules', packageName, 'package.json');
28
+ if (existsSync(packageJsonPath)) {
29
+ const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
30
+ return pkg.version ?? null;
31
+ }
32
+ }
33
+ catch {
34
+ // Ignore
35
+ }
36
+ return null;
37
+ }
38
+ /**
39
+ * Get latest package version from npm
40
+ */
41
+ function getLatestVersion(packageName) {
42
+ try {
43
+ return execSync(`npm view ${packageName} version`, { stdio: 'pipe' }).toString().trim();
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
49
+ /**
50
+ * Get short name from full package name
51
+ */
52
+ function getShortName(packageName) {
53
+ const prefix = '@zincapp/znvault-plugin-';
54
+ if (packageName.startsWith(prefix)) {
55
+ return packageName.slice(prefix.length);
56
+ }
57
+ return packageName;
58
+ }
59
+ /**
60
+ * Compare two semver versions
61
+ * Returns: 1 if a > b, -1 if a < b, 0 if equal
62
+ */
63
+ function compareVersions(a, b) {
64
+ const partsA = a.replace(/^v/, '').split('.').map(Number);
65
+ const partsB = b.replace(/^v/, '').split('.').map(Number);
66
+ for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {
67
+ const numA = partsA[i] ?? 0;
68
+ const numB = partsB[i] ?? 0;
69
+ if (numA > numB)
70
+ return 1;
71
+ if (numA < numB)
72
+ return -1;
73
+ }
74
+ return 0;
75
+ }
76
+ /**
77
+ * Check for plugin updates
78
+ */
79
+ function checkPluginUpdates() {
80
+ const plugins = getPlugins();
81
+ const pluginsDir = getPluginsDir();
82
+ const updates = [];
83
+ for (const plugin of plugins) {
84
+ if (!plugin.package || plugin.enabled === false)
85
+ continue;
86
+ const currentVersion = getInstalledVersion(plugin.package, pluginsDir);
87
+ if (!currentVersion)
88
+ continue;
89
+ const latestVersion = getLatestVersion(plugin.package);
90
+ if (!latestVersion)
91
+ continue;
92
+ // Only show update if latest version is actually newer
93
+ if (compareVersions(latestVersion, currentVersion) > 0) {
94
+ updates.push({
95
+ name: getShortName(plugin.package),
96
+ package: plugin.package,
97
+ currentVersion,
98
+ latestVersion,
99
+ });
100
+ }
101
+ }
102
+ return updates;
103
+ }
104
+ /**
105
+ * Run npm update in plugins directory
106
+ */
107
+ function updatePlugins(packages, pluginsDir) {
108
+ return new Promise((resolve) => {
109
+ const npm = spawn('npm', ['update', ...packages], {
110
+ cwd: pluginsDir,
111
+ stdio: ['ignore', 'pipe', 'pipe'],
112
+ });
113
+ let stdout = '';
114
+ let stderr = '';
115
+ npm.stdout.on('data', (data) => {
116
+ stdout += data.toString();
117
+ });
118
+ npm.stderr.on('data', (data) => {
119
+ stderr += data.toString();
120
+ });
121
+ npm.on('close', (code) => {
122
+ resolve({
123
+ success: code === 0,
124
+ output: stdout + stderr,
125
+ });
126
+ });
127
+ npm.on('error', (err) => {
128
+ resolve({
129
+ success: false,
130
+ output: err.message,
131
+ });
132
+ });
133
+ });
134
+ }
11
135
  export function registerSelfUpdateCommands(program) {
12
136
  program
13
137
  .command('self-update')
14
- .description('Update znvault CLI to the latest version')
138
+ .description('Update znvault CLI and plugins to the latest versions')
15
139
  .option('-c, --check', 'Only check for updates, do not install')
16
140
  .option('-f, --force', 'Force update even if already on latest version')
17
141
  .option('-y, --yes', 'Skip confirmation prompt')
142
+ .option('--skip-plugins', 'Skip plugin updates')
18
143
  .action(async (options) => {
19
144
  const spinner = ora('Checking for updates...').start();
20
145
  try {
21
- const result = await checkForUpdate(true); // Force fresh check
146
+ // Check CLI updates
147
+ const cliResult = await checkForUpdate(true);
148
+ // Check plugin updates
149
+ spinner.text = 'Checking plugins...';
150
+ const pluginUpdates = options.skipPlugins ? [] : checkPluginUpdates();
22
151
  spinner.stop();
152
+ // Display CLI update info
23
153
  console.log();
24
- console.log(chalk.bold('ZN-Vault CLI Update Check'));
154
+ console.log(chalk.bold('ZnVault CLI Update Check'));
25
155
  console.log();
26
- console.log(` Current version: ${chalk.cyan(result.currentVersion)}`);
27
- console.log(` Latest version: ${result.latestVersion ? chalk.green(result.latestVersion) : chalk.gray('unknown')}`);
156
+ console.log(` Current version: ${chalk.cyan(cliResult.currentVersion)}`);
157
+ console.log(` Latest version: ${cliResult.latestVersion ? chalk.green(cliResult.latestVersion) : chalk.gray('unknown')}`);
158
+ // Display plugin update info
159
+ if (!options.skipPlugins) {
160
+ console.log();
161
+ console.log(chalk.bold('Plugin Updates'));
162
+ console.log();
163
+ if (pluginUpdates.length === 0) {
164
+ console.log(chalk.dim(' All plugins are up to date.'));
165
+ }
166
+ else {
167
+ for (const plugin of pluginUpdates) {
168
+ console.log(` ${chalk.cyan(plugin.name)}: ${plugin.currentVersion} → ${chalk.green(plugin.latestVersion)}`);
169
+ }
170
+ }
171
+ }
28
172
  console.log();
29
- if (!result.latestVersion) {
173
+ if (!cliResult.latestVersion) {
30
174
  output.warn('Could not check npm registry. Check your network connection.');
31
175
  return;
32
176
  }
33
- if (!result.updateAvailable && !options.force) {
34
- console.log(chalk.green('✓ You are running the latest version!'));
177
+ const hasCliUpdate = cliResult.updateAvailable || options.force;
178
+ const hasPluginUpdates = pluginUpdates.length > 0;
179
+ if (!hasCliUpdate && !hasPluginUpdates) {
180
+ console.log(chalk.green('✓ Everything is up to date!'));
35
181
  return;
36
182
  }
37
183
  if (options.check) {
38
- if (result.updateAvailable) {
39
- console.log(chalk.yellow('✨ Update available!'));
184
+ if (hasCliUpdate || hasPluginUpdates) {
185
+ console.log(chalk.yellow('✨ Updates available!'));
40
186
  console.log();
41
187
  console.log(` Run ${chalk.cyan('znvault self-update')} to update.`);
42
188
  }
43
189
  return;
44
190
  }
191
+ // Build confirmation message
192
+ const updateItems = [];
193
+ if (hasCliUpdate)
194
+ updateItems.push('CLI');
195
+ if (hasPluginUpdates)
196
+ updateItems.push(`${pluginUpdates.length} plugin(s)`);
45
197
  // Confirm update
46
198
  if (!options.yes && !options.force) {
47
- console.log(chalk.yellow('An update is available.'));
199
+ console.log(chalk.yellow(`Updates available: ${updateItems.join(' and ')}`));
48
200
  console.log();
49
201
  const { confirm } = await import('inquirer').then(m => m.default.prompt([
50
202
  {
@@ -59,24 +211,46 @@ export function registerSelfUpdateCommands(program) {
59
211
  return;
60
212
  }
61
213
  }
62
- // Perform update
63
- const updateSpinner = ora('Installing update...').start();
64
- const updateResult = await performUpdate({ silent: false, global: true });
65
- if (updateResult.success) {
66
- updateSpinner.succeed('Update installed successfully!');
67
- console.log();
68
- console.log(chalk.green('✓ znvault CLI has been updated.'));
69
- console.log();
70
- console.log(chalk.dim('Run "znvault --version" to verify the new version.'));
71
- // Clear cache so next run doesn't show update notification
72
- clearUpdateCache();
214
+ // Perform CLI update
215
+ if (hasCliUpdate) {
216
+ const updateSpinner = ora('Updating CLI...').start();
217
+ const updateResult = await performUpdate({ silent: false, global: true });
218
+ if (updateResult.success) {
219
+ updateSpinner.succeed('CLI updated successfully!');
220
+ clearUpdateCache();
221
+ }
222
+ else {
223
+ updateSpinner.fail('CLI update failed');
224
+ output.error(updateResult.error ?? 'Unknown error');
225
+ console.log();
226
+ console.log('Try running manually:');
227
+ console.log(chalk.cyan(' npm install -g @zincapp/znvault-cli'));
228
+ }
73
229
  }
74
- else {
75
- updateSpinner.fail('Update failed');
76
- output.error(updateResult.error ?? 'Unknown error');
77
- console.log();
78
- console.log('Try running manually:');
79
- console.log(chalk.cyan(' npm install -g @zincapp/znvault-cli'));
230
+ // Perform plugin updates
231
+ if (hasPluginUpdates) {
232
+ const pluginSpinner = ora('Updating plugins...').start();
233
+ const pluginsDir = getPluginsDir();
234
+ const packagesToUpdate = pluginUpdates.map(p => p.package);
235
+ const pluginResult = await updatePlugins(packagesToUpdate, pluginsDir);
236
+ if (pluginResult.success) {
237
+ pluginSpinner.succeed('Plugins updated successfully!');
238
+ console.log();
239
+ for (const plugin of pluginUpdates) {
240
+ console.log(` ${chalk.green('✓')} ${chalk.cyan(plugin.name)}: ${plugin.currentVersion} → ${plugin.latestVersion}`);
241
+ }
242
+ }
243
+ else {
244
+ pluginSpinner.fail('Plugin update failed');
245
+ output.error(pluginResult.output);
246
+ }
247
+ }
248
+ console.log();
249
+ if (hasCliUpdate) {
250
+ console.log(chalk.dim('Run "znvault --version" to verify the new CLI version.'));
251
+ }
252
+ if (hasPluginUpdates) {
253
+ console.log(chalk.dim('Run "znvault plugin list" to verify plugin versions.'));
80
254
  }
81
255
  }
82
256
  catch (err) {
@@ -95,14 +269,20 @@ export function registerSelfUpdateCommands(program) {
95
269
  const spinner = ora('Checking for updates...').start();
96
270
  try {
97
271
  const result = await checkForUpdate(true);
272
+ const pluginUpdates = checkPluginUpdates();
98
273
  spinner.stop();
99
274
  if (result.updateAvailable && result.latestVersion) {
100
275
  console.log();
101
- console.log(chalk.yellow(`Update available: ${result.latestVersion}`));
102
- console.log(chalk.dim('Run "znvault self-update" to update.'));
276
+ console.log(chalk.yellow(`CLI update available: ${result.latestVersion}`));
103
277
  }
104
278
  else if (result.latestVersion) {
105
- console.log(chalk.green('(latest)'));
279
+ console.log(chalk.green(' (latest)'));
280
+ }
281
+ if (pluginUpdates.length > 0) {
282
+ console.log(chalk.yellow(`${pluginUpdates.length} plugin update(s) available`));
283
+ }
284
+ if (result.updateAvailable || pluginUpdates.length > 0) {
285
+ console.log(chalk.dim('Run "znvault self-update" to update.'));
106
286
  }
107
287
  }
108
288
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"unseal.d.ts","sourceRoot":"","sources":["../../src/commands/unseal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2F7D"}
1
+ {"version":3,"file":"unseal.d.ts","sourceRoot":"","sources":["../../src/commands/unseal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAwJzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2G7D"}
@@ -1,9 +1,108 @@
1
1
  // Path: znvault-cli/src/commands/unseal.ts
2
2
  import ora from 'ora';
3
+ import os from 'node:os';
4
+ import { execSync } from 'node:child_process';
5
+ import { existsSync } from 'node:fs';
6
+ import { join, dirname } from 'node:path';
7
+ import { fileURLToPath } from 'node:url';
3
8
  import { client } from '../lib/client.js';
4
9
  import { promptInput } from '../lib/prompts.js';
5
10
  import * as output from '../lib/output.js';
6
11
  import * as visual from '../lib/visual.js';
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = dirname(__filename);
14
+ /**
15
+ * Get path to the Secure Enclave helper binary
16
+ */
17
+ function getSecureEnclaveHelperPath() {
18
+ const possiblePaths = [
19
+ // Development: relative to CLI dist
20
+ join(__dirname, '..', '..', 'secure-enclave', '.build', 'release', 'znvault-secure-enclave'),
21
+ // Installed: same directory as CLI
22
+ join(__dirname, '..', 'bin', 'znvault-secure-enclave'),
23
+ // System-wide
24
+ '/usr/local/bin/znvault-secure-enclave',
25
+ // Homebrew
26
+ '/opt/homebrew/bin/znvault-secure-enclave',
27
+ ];
28
+ for (const path of possiblePaths) {
29
+ if (existsSync(path)) {
30
+ return path;
31
+ }
32
+ }
33
+ return null;
34
+ }
35
+ // Track whether we're using software keys
36
+ let useSoftwareKey = false;
37
+ /**
38
+ * Check if a software key exists
39
+ */
40
+ function detectKeyType() {
41
+ const helperPath = getSecureEnclaveHelperPath();
42
+ if (!helperPath)
43
+ return 'none';
44
+ // Try software key first (more likely if Secure Enclave isn't properly signed)
45
+ try {
46
+ const env = { ...process.env, ZNVAULT_USE_SOFTWARE_KEYS: '1' };
47
+ const result = execSync(`"${helperPath}" check`, {
48
+ encoding: 'utf-8',
49
+ stdio: ['pipe', 'pipe', 'pipe'],
50
+ env,
51
+ });
52
+ const parsed = JSON.parse(result.trim());
53
+ if (parsed.exists)
54
+ return 'software';
55
+ }
56
+ catch {
57
+ // Ignore
58
+ }
59
+ // Try Secure Enclave
60
+ try {
61
+ const result = execSync(`"${helperPath}" check`, {
62
+ encoding: 'utf-8',
63
+ stdio: ['pipe', 'pipe', 'pipe'],
64
+ });
65
+ const parsed = JSON.parse(result.trim());
66
+ if (parsed.exists)
67
+ return 'secure_enclave';
68
+ }
69
+ catch {
70
+ // Ignore
71
+ }
72
+ return 'none';
73
+ }
74
+ /**
75
+ * Execute Secure Enclave helper command
76
+ */
77
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
78
+ function execSecureEnclaveHelper(args) {
79
+ const helperPath = getSecureEnclaveHelperPath();
80
+ if (!helperPath) {
81
+ throw new Error('Secure Enclave helper not found. Please build it first:\n' +
82
+ ' cd znvault-cli/secure-enclave && swift build -c release');
83
+ }
84
+ try {
85
+ const env = useSoftwareKey ? { ...process.env, ZNVAULT_USE_SOFTWARE_KEYS: '1' } : process.env;
86
+ const result = execSync(`"${helperPath}" ${args.map(a => `"${a}"`).join(' ')}`, {
87
+ encoding: 'utf-8',
88
+ env,
89
+ stdio: ['pipe', 'pipe', 'pipe'],
90
+ });
91
+ return JSON.parse(result.trim());
92
+ }
93
+ catch (err) {
94
+ const error = err;
95
+ if (error.stdout) {
96
+ try {
97
+ return JSON.parse(error.stdout.trim());
98
+ }
99
+ catch {
100
+ // Fall through
101
+ }
102
+ }
103
+ throw new Error(error.stderr ?? error.message ?? 'Unknown error');
104
+ }
105
+ }
7
106
  export function registerUnsealCommands(program) {
8
107
  const unsealCmd = program
9
108
  .command('unseal')
@@ -15,11 +114,28 @@ export function registerUnsealCommands(program) {
15
114
  .option('--json', 'Output as JSON')
16
115
  .action(async (options) => {
17
116
  try {
18
- if (options.device) {
117
+ if (options.otp) {
118
+ // User explicitly requested OTP
119
+ await unsealWithOTP(options);
120
+ }
121
+ else if (options.device) {
122
+ // User explicitly requested device
19
123
  await unsealWithDevice(options);
20
124
  }
21
125
  else {
22
- // Default to OTP (device unseal requires browser/WebAuthn)
126
+ // Auto-detect: try device first on macOS if enrolled
127
+ if (os.platform() === 'darwin') {
128
+ const keyType = detectKeyType();
129
+ if (keyType !== 'none') {
130
+ const method = keyType === 'software' ? 'device key' : 'Touch ID';
131
+ output.info(`Device key detected. Using ${method} for unseal.`);
132
+ output.info('(Use --otp to force OTP unseal instead)');
133
+ console.log();
134
+ await unsealWithDevice(options);
135
+ return;
136
+ }
137
+ }
138
+ // Fallback to OTP
23
139
  await unsealWithOTP(options);
24
140
  }
25
141
  }
@@ -49,10 +165,10 @@ export function registerUnsealCommands(program) {
49
165
  },
50
166
  };
51
167
  if (status.unsealed) {
52
- statusData['Method'] = { value: status.method ?? 'unknown' };
53
- statusData['Scope'] = { value: status.scope };
54
- statusData['Expires'] = { value: status.unsealedUntil ?? 'unknown' };
55
- statusData['Remaining'] = {
168
+ statusData.Method = { value: status.method ?? 'unknown' };
169
+ statusData.Scope = { value: status.scope };
170
+ statusData.Expires = { value: status.unsealedUntil ?? 'unknown' };
171
+ statusData.Remaining = {
56
172
  value: formatDuration(status.remainingSeconds),
57
173
  status: status.remainingSeconds < 60 ? 'warning' : 'info'
58
174
  };
@@ -118,15 +234,82 @@ async function unsealWithOTP(options) {
118
234
  }
119
235
  }
120
236
  async function unsealWithDevice(options) {
121
- output.warn('Device unseal requires a browser with WebAuthn support.');
122
- output.info('Use the dashboard to unseal with a registered device.');
123
- if (options.json) {
124
- output.json({
125
- error: 'Device unseal not supported in CLI',
126
- hint: 'Use the dashboard or --otp flag'
237
+ // Check platform
238
+ if (os.platform() !== 'darwin') {
239
+ output.error('Device unseal via Secure Enclave is only available on macOS.');
240
+ output.info('On other platforms, use --otp or the dashboard for WebAuthn.');
241
+ process.exit(1);
242
+ }
243
+ // Check if Secure Enclave helper exists
244
+ const helperPath = getSecureEnclaveHelperPath();
245
+ if (!helperPath) {
246
+ output.error('Secure Enclave helper not found.');
247
+ output.info('Please build it first:');
248
+ console.log(' cd znvault-cli/secure-enclave && swift build -c release');
249
+ process.exit(1);
250
+ }
251
+ // Detect key type (software or Secure Enclave)
252
+ const checkSpinner = ora('Checking for enrolled device...').start();
253
+ const keyType = detectKeyType();
254
+ if (keyType === 'none') {
255
+ checkSpinner.fail('No device key found');
256
+ output.info('This device is not enrolled. Use "znvault device enroll" first.');
257
+ process.exit(1);
258
+ }
259
+ useSoftwareKey = keyType === 'software';
260
+ checkSpinner.succeed(`Device key found (${keyType === 'software' ? 'software' : 'Secure Enclave'})`);
261
+ // Get challenge from server
262
+ const challengeSpinner = ora('Getting challenge from server...').start();
263
+ let challenge;
264
+ try {
265
+ const result = await client.post('/v1/auth/unseal/challenge', {});
266
+ challenge = result.challenge;
267
+ challengeSpinner.succeed('Challenge received');
268
+ }
269
+ catch (err) {
270
+ challengeSpinner.fail('Failed to get challenge');
271
+ throw err;
272
+ }
273
+ // Sign challenge with Secure Enclave (Touch ID required)
274
+ console.log();
275
+ output.info('Touch ID required to sign challenge...');
276
+ console.log();
277
+ const signSpinner = ora('Signing challenge with Secure Enclave...').start();
278
+ let signature;
279
+ try {
280
+ const signResult = execSecureEnclaveHelper(['sign', challenge]);
281
+ if (!signResult.success || !signResult.signature) {
282
+ throw new Error(signResult.error ?? 'Failed to sign challenge');
283
+ }
284
+ signature = signResult.signature;
285
+ signSpinner.succeed('Challenge signed');
286
+ }
287
+ catch (err) {
288
+ signSpinner.fail('Failed to sign challenge');
289
+ output.error(err instanceof Error ? err.message : String(err));
290
+ process.exit(1);
291
+ }
292
+ // Verify signature with server
293
+ const verifySpinner = ora('Verifying signature...').start();
294
+ try {
295
+ const result = await client.post('/v1/auth/unseal/verify', {
296
+ challenge,
297
+ signature,
127
298
  });
299
+ verifySpinner.succeed('Vault unsealed');
300
+ if (options.json) {
301
+ output.json(result);
302
+ return;
303
+ }
304
+ console.log();
305
+ output.success(`Crypto access granted for ${formatDuration(result.remainingSeconds)}`);
306
+ output.info('Method: Secure Enclave');
307
+ console.log();
308
+ }
309
+ catch (err) {
310
+ verifySpinner.fail('Signature verification failed');
311
+ throw err;
128
312
  }
129
- process.exit(1);
130
313
  }
131
314
  function formatDuration(seconds) {
132
315
  if (seconds < 60) {
@@ -1 +1 @@
1
- {"version":3,"file":"unseal.js","sourceRoot":"","sources":["../../src/commands/unseal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unseal.js","sourceRoot":"","sources":["../../src/commands/unseal.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -40,7 +40,7 @@ import { createCLIPluginLoader } from './plugins/loader.js';
40
40
  const program = new Command();
41
41
  program
42
42
  .name('znvault')
43
- .description('ZN-Vault Administration CLI')
43
+ .description('ZnVault Administration CLI')
44
44
  .version(getVersion())
45
45
  .option('--url <url>', 'Vault server URL')
46
46
  .option('--insecure', 'Skip TLS certificate verification')