vesper-wizard 2.3.6 → 2.3.7
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 +1 -1
- package/package.json +1 -1
- package/wizard.js +27 -10
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ That's it. The wizard handles everything:
|
|
|
14
14
|
2. Initializes a local credentials vault in unified-key mode (no external API keys required)
|
|
15
15
|
3. Installs `@vespermcp/mcp-server` and auto-configures MCP for all detected agents (Claude, Cursor, VS Code, Codex, Gemini CLI)
|
|
16
16
|
4. Verifies the installation
|
|
17
|
-
5.
|
|
17
|
+
5. Prints a sign-in URL for manual browser login (no forced auto-open)
|
|
18
18
|
|
|
19
19
|
## What you get
|
|
20
20
|
|
package/package.json
CHANGED
package/wizard.js
CHANGED
|
@@ -182,6 +182,10 @@ function openBrowser(url) {
|
|
|
182
182
|
} catch { /* browser open is best-effort */ }
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
+
function isInteractiveTerminal() {
|
|
186
|
+
return Boolean(process.stdin && process.stdin.isTTY && process.stdout && process.stdout.isTTY);
|
|
187
|
+
}
|
|
188
|
+
|
|
185
189
|
function askYesNo(question) {
|
|
186
190
|
return new Promise((resolve) => {
|
|
187
191
|
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
@@ -309,12 +313,13 @@ async function deviceAuthFlow() {
|
|
|
309
313
|
console.log(` │ │`);
|
|
310
314
|
console.log(` └───────────────────────────────────────────────┘\n`);
|
|
311
315
|
|
|
312
|
-
|
|
316
|
+
const shouldAutoOpenBrowser = process.env.VESPER_WIZARD_AUTO_OPEN === '1';
|
|
317
|
+
if (shouldAutoOpenBrowser && !hasCompletedOnboarding()) {
|
|
313
318
|
openBrowser(loginUrl);
|
|
314
319
|
markOnboardingCompleted();
|
|
315
|
-
console.log(` ${dim('Browser opened automatically (
|
|
320
|
+
console.log(` ${dim('Browser opened automatically (enabled via VESPER_WIZARD_AUTO_OPEN=1).')}`);
|
|
316
321
|
} else {
|
|
317
|
-
console.log(` ${dim('Browser auto-open
|
|
322
|
+
console.log(` ${dim('Browser auto-open disabled. Open the URL manually to continue.')}`);
|
|
318
323
|
}
|
|
319
324
|
console.log(` ${dim('Waiting for you to sign in...')}\n`);
|
|
320
325
|
|
|
@@ -469,6 +474,13 @@ async function checkServerHealth() {
|
|
|
469
474
|
|
|
470
475
|
// ── Main Wizard ──────────────────────────────────────────────
|
|
471
476
|
async function main() {
|
|
477
|
+
if (!isInteractiveTerminal()) {
|
|
478
|
+
console.error(red('vesper-wizard is interactive and cannot run in MCP stdio mode.'));
|
|
479
|
+
console.error(dim('Use this command for MCP server runtime instead:'));
|
|
480
|
+
console.error(cyan('npx -y -p @vespermcp/mcp-server@latest vespermcp'));
|
|
481
|
+
process.exit(2);
|
|
482
|
+
}
|
|
483
|
+
|
|
472
484
|
printBanner();
|
|
473
485
|
|
|
474
486
|
console.log(` ${green('→')} Setting up Vesper on ${bold(os.hostname())}\n`);
|
|
@@ -519,17 +531,22 @@ async function main() {
|
|
|
519
531
|
console.log(` ${green('✓')}`);
|
|
520
532
|
console.log(` ${dim('Mode:')} ${dim(vaultData.auth_mode === 'cloud' ? 'cloud (linked to Vesper account)' : 'single local Vesper key (no external keys required)')}`);
|
|
521
533
|
|
|
522
|
-
// ─── Step 4:
|
|
523
|
-
console.log(`\n ${dim('[')}${cyan('4/6')}${dim(']')}
|
|
534
|
+
// ─── Step 4: Verify @vespermcp/mcp-server command ───────────
|
|
535
|
+
console.log(`\n ${dim('[')}${cyan('4/6')}${dim(']')} Verifying Vesper MCP server command...`);
|
|
524
536
|
try {
|
|
525
537
|
const npmCmd = IS_WIN ? 'npx.cmd' : 'npx';
|
|
526
|
-
spawnSync(npmCmd, ['-y', '@vespermcp/mcp-server@latest', '
|
|
527
|
-
stdio: '
|
|
528
|
-
timeout:
|
|
538
|
+
const verify = spawnSync(npmCmd, ['-y', '-p', '@vespermcp/mcp-server@latest', 'vespermcp', '--version'], {
|
|
539
|
+
stdio: 'pipe',
|
|
540
|
+
timeout: 30000,
|
|
541
|
+
encoding: 'utf8',
|
|
529
542
|
});
|
|
530
|
-
|
|
543
|
+
if (verify.status === 0) {
|
|
544
|
+
console.log(` ${green('✓')} @vespermcp/mcp-server command is available`);
|
|
545
|
+
} else {
|
|
546
|
+
console.log(` ${yellow('⚠')} Could not verify vespermcp binary. MCP clients will still install it on first run.`);
|
|
547
|
+
}
|
|
531
548
|
} catch {
|
|
532
|
-
console.log(` ${yellow('⚠')} Could not
|
|
549
|
+
console.log(` ${yellow('⚠')} Could not verify vespermcp binary. MCP clients will still install it on first run.`);
|
|
533
550
|
}
|
|
534
551
|
|
|
535
552
|
// ─── Step 5: Auto-configure all detected IDEs ──────────────
|