vesper-wizard 2.3.2 → 2.3.3
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/package.json +1 -1
- package/wizard.js +9 -33
package/package.json
CHANGED
package/wizard.js
CHANGED
|
@@ -221,14 +221,10 @@ async function chooseAuthMode(existingKey, existingAuthMode) {
|
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
const choices = [];
|
|
224
|
-
if (hasExistingKey) {
|
|
225
|
-
choices.push({ value: 'keep', label: 'Keep current key as-is' });
|
|
226
|
-
}
|
|
227
|
-
choices.push({ value: 'manual', label: 'Provide Vesper API key manually' });
|
|
228
224
|
choices.push({ value: 'browser', label: 'Sign in through the browser' });
|
|
229
|
-
choices.push({ value: '
|
|
225
|
+
choices.push({ value: 'manual', label: 'Provide Vesper API key manually' });
|
|
230
226
|
|
|
231
|
-
return await askChoice(`${cyan('→')} How do you want to authenticate Vesper?`, choices,
|
|
227
|
+
return await askChoice(`${cyan('→')} How do you want to authenticate Vesper?`, choices, 'browser');
|
|
232
228
|
}
|
|
233
229
|
|
|
234
230
|
async function deviceAuthFlow() {
|
|
@@ -240,7 +236,7 @@ async function deviceAuthFlow() {
|
|
|
240
236
|
console.log(` ${red('✗')} ${red('Could not reach any Vesper auth endpoint.')}`);
|
|
241
237
|
console.log(` ${dim('Tried:')} ${dim((VESPER_API_URL ? [VESPER_API_URL] : DEFAULT_VESPER_API_CANDIDATES).join(', '))}`);
|
|
242
238
|
console.log(` ${dim('If your landing app is running locally, start it on http://localhost:3000 or set VESPER_API_URL.')}`);
|
|
243
|
-
console.log(` ${dim('Falling back to
|
|
239
|
+
console.log(` ${dim('Falling back to manual key entry.\n')}`);
|
|
244
240
|
return null;
|
|
245
241
|
}
|
|
246
242
|
|
|
@@ -249,7 +245,7 @@ async function deviceAuthFlow() {
|
|
|
249
245
|
console.log(` ${dim('Endpoint:')} ${dim(resolvedApiBaseUrl.baseUrl)}`);
|
|
250
246
|
console.log(` ${dim('Reason:')} ${dim(resolvedApiBaseUrl.message || 'Apply Supabase migrations first.')}`);
|
|
251
247
|
console.log(` ${dim('Run the SQL in supabase/migrations/001_device_auth.sql and 002_rate_limits.sql, then retry.')}`);
|
|
252
|
-
console.log(` ${dim('Falling back to
|
|
248
|
+
console.log(` ${dim('Falling back to manual key entry.\n')}`);
|
|
253
249
|
return null;
|
|
254
250
|
}
|
|
255
251
|
|
|
@@ -263,7 +259,7 @@ async function deviceAuthFlow() {
|
|
|
263
259
|
} catch (err) {
|
|
264
260
|
console.log(` ${red('✗')}`);
|
|
265
261
|
console.log(` ${red('Could not reach Vesper API at')} ${dim(resolvedApiBaseUrl.baseUrl)}`);
|
|
266
|
-
console.log(` ${dim('Falling back to
|
|
262
|
+
console.log(` ${dim('Falling back to manual key entry.\n')}`);
|
|
267
263
|
return null;
|
|
268
264
|
}
|
|
269
265
|
|
|
@@ -463,9 +459,7 @@ async function main() {
|
|
|
463
459
|
|
|
464
460
|
const authChoice = await chooseAuthMode(localKey, authMode);
|
|
465
461
|
|
|
466
|
-
if (authChoice === '
|
|
467
|
-
console.log(` ${green('✓')} Keeping current key`);
|
|
468
|
-
} else if (authChoice === 'manual') {
|
|
462
|
+
if (authChoice === 'manual') {
|
|
469
463
|
localKey = await promptForManualApiKey();
|
|
470
464
|
authMode = 'cloud';
|
|
471
465
|
console.log(` ${green('✓')} Cloud API key saved from manual input`);
|
|
@@ -475,28 +469,10 @@ async function main() {
|
|
|
475
469
|
localKey = cloudKey;
|
|
476
470
|
authMode = 'cloud';
|
|
477
471
|
} else {
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
], 'manual');
|
|
482
|
-
|
|
483
|
-
if (fallbackChoice === 'manual') {
|
|
484
|
-
localKey = await promptForManualApiKey();
|
|
485
|
-
authMode = 'cloud';
|
|
486
|
-
} else {
|
|
487
|
-
if (!localKey || isCloudApiKey(localKey)) {
|
|
488
|
-
localKey = generateLocalKey();
|
|
489
|
-
}
|
|
490
|
-
authMode = 'local_unified';
|
|
491
|
-
console.log(`\n ${yellow('⚠')} Using local-only key. Run the wizard again anytime to link an account.`);
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
} else {
|
|
495
|
-
if (!localKey || isCloudApiKey(localKey)) {
|
|
496
|
-
localKey = generateLocalKey();
|
|
472
|
+
console.log(`\n ${yellow('!')} Browser sign-in did not complete. Falling back to manual key entry.`);
|
|
473
|
+
localKey = await promptForManualApiKey();
|
|
474
|
+
authMode = 'cloud';
|
|
497
475
|
}
|
|
498
|
-
authMode = 'local_unified';
|
|
499
|
-
console.log(` ${green('✓')} Local-only key ready`);
|
|
500
476
|
}
|
|
501
477
|
|
|
502
478
|
const configData = { ...existing, api_key: localKey, auth_mode: authMode };
|