@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.
- package/README.md +2 -2
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +268 -2
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/device.d.ts.map +1 -1
- package/dist/commands/device.js +255 -13
- package/dist/commands/device.js.map +1 -1
- package/dist/commands/notification.js +1 -1
- package/dist/commands/notification.js.map +1 -1
- package/dist/commands/self-update.d.ts +1 -1
- package/dist/commands/self-update.d.ts.map +1 -1
- package/dist/commands/self-update.js +212 -32
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/unseal.d.ts.map +1 -1
- package/dist/commands/unseal.js +196 -13
- package/dist/commands/unseal.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/visual.js +1 -1
- package/dist/lib/visual.js.map +1 -1
- package/dist/tui/ProfileManager.js +1 -1
- package/dist/tui/ProfileManager.js.map +1 -1
- package/package.json +2 -2
|
@@ -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
|
|
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
|
-
|
|
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('
|
|
154
|
+
console.log(chalk.bold('ZnVault CLI Update Check'));
|
|
25
155
|
console.log();
|
|
26
|
-
console.log(` Current version: ${chalk.cyan(
|
|
27
|
-
console.log(` Latest version: ${
|
|
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 (!
|
|
173
|
+
if (!cliResult.latestVersion) {
|
|
30
174
|
output.warn('Could not check npm registry. Check your network connection.');
|
|
31
175
|
return;
|
|
32
176
|
}
|
|
33
|
-
|
|
34
|
-
|
|
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 (
|
|
39
|
-
console.log(chalk.yellow('✨
|
|
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(
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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(`
|
|
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":"AAAA,gDAAgD;AAChD;;;;GAIG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;
|
|
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;
|
|
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"}
|
package/dist/commands/unseal.js
CHANGED
|
@@ -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.
|
|
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
|
-
//
|
|
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
|
|
53
|
-
statusData
|
|
54
|
-
statusData
|
|
55
|
-
statusData
|
|
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
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
output.
|
|
125
|
-
|
|
126
|
-
|
|
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('
|
|
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')
|