vibefast-cli 0.7.6 → 0.7.9

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.
@@ -376,164 +376,197 @@ async function installFeature(feature, options, paths) {
376
376
  process.exit(1);
377
377
  }
378
378
  }
379
- // Download and extract (or use bundled zip)
380
- if (!zipPath) {
381
- const result = await withSpinner('Downloading and extracting recipe...', async () => {
382
- const zip = response.zipData
383
- ? await downloadZip(response.zipData, true)
384
- : await downloadZip(response.signedUrl);
385
- const dir = join(tmpdir(), 'vibefast', randomUUID());
386
- await extractZipSafe(zip, dir);
387
- return { zipPath: zip, extractDir: dir };
388
- }, {
389
- successText: '✓ Recipe downloaded',
390
- });
391
- zipPath = result.zipPath;
392
- extractDir = result.extractDir;
393
- }
394
- else {
395
- // Bundled zip path - extract to temp location
396
- extractDir = join(tmpdir(), 'vibefast', randomUUID());
397
- await extractZipSafe(zipPath, extractDir);
398
- }
399
- // Locate manifest (some archives may nest recipe.json)
400
- const findManifest = async (dir) => {
401
- const entries = await import('fs/promises').then((m) => m.readdir(dir, { withFileTypes: true }));
402
- for (const entry of entries) {
403
- const full = join(dir, entry.name);
404
- if (entry.isFile() && entry.name === 'recipe.json')
405
- return full;
406
- if (entry.isDirectory()) {
407
- const found = await findManifest(full);
408
- if (found)
409
- return found;
410
- }
411
- }
412
- return null;
413
- };
414
- let manifestPath = join(extractDir, 'recipe.json');
415
- if (!(await exists(manifestPath))) {
416
- const found = await findManifest(extractDir);
417
- if (!found) {
418
- throw new Error(`recipe.json not found in ${extractDir}`);
419
- }
420
- manifestPath = found;
421
- }
422
- const manifestContent = await readFileContent(manifestPath);
423
- const manifest = JSON.parse(manifestContent);
424
- if (!manifest.copy && Array.isArray(manifest.files)) {
425
- manifest.copy = manifest.files.map((file) => ({
426
- from: file.source,
427
- to: file.destination,
428
- }));
429
- }
430
- if (!Array.isArray(manifest.copy)) {
431
- throw new Error('recipe.json is missing a valid "copy" array');
432
- }
433
- const extractRoot = resolve(manifestPath, '..');
434
- const repoRoot = resolve(paths.cwd);
435
- if (manifest.target !== target) {
436
- throw new Error(`Recipe target mismatch: expected ${target}, got ${manifest.target}`);
437
- }
438
- log.info(`Installing ${manifest.name} v${manifest.version}...`);
439
- const envGroups = groupEnvVars(manifest.env, paths.cwd);
440
- let envAttention = [];
441
- // Copy files with interactive confirmation
442
- const copiedFiles = [];
443
- const allConflicts = [];
444
- const allSkipped = [];
445
- for (const copySpec of manifest.copy) {
446
- const srcPath = ensureWithinBase(extractRoot, resolve(extractRoot, copySpec.from), `Recipe file ${copySpec.from}`);
447
- const destPath = ensureWithinBase(repoRoot, resolve(repoRoot, copySpec.to), `Destination ${copySpec.to}`);
448
- log.info(`Copying ${copySpec.from} → ${copySpec.to}`);
449
- const result = await copyTree(srcPath, destPath, {
450
- dryRun: options.dryRun,
451
- force: options.force,
452
- interactive: !options.force && !options.dryRun && !options.yes,
453
- });
454
- copiedFiles.push(...result.files);
455
- allConflicts.push(...result.conflicts);
456
- allSkipped.push(...result.skipped);
457
- }
458
- // Show conflict warnings in dry-run mode
459
- if (options.dryRun && allConflicts.length > 0) {
460
- log.plain('');
461
- log.warn(`⚠ ${allConflicts.length} file(s) will be overwritten:`);
462
- allConflicts.slice(0, 5).forEach(f => {
463
- const relativePath = f.replace(paths.cwd + '/', '');
464
- log.plain(` • ${relativePath}`);
465
- });
466
- if (allConflicts.length > 5) {
467
- log.plain(` ... and ${allConflicts.length - 5} more`);
468
- }
469
- log.warn('⚠ Make sure you have committed your changes to Git!');
470
- log.plain('');
471
- }
472
- // Show skipped files
473
- if (allSkipped.length > 0) {
474
- log.info(`ℹ Skipped ${allSkipped.length} file(s) (you chose not to overwrite)`);
475
- }
476
- // Add watermark if provided
477
- if (response.watermark && !options.dryRun) {
478
- const { writeFileContent, readFileContent } = await import('../core/fsx.js');
479
- for (const file of copiedFiles) {
480
- if (file.endsWith('.ts') || file.endsWith('.tsx') || file.endsWith('.js') || file.endsWith('.jsx')) {
481
- const content = await readFileContent(file);
482
- const watermarked = `// vibefast license: ${response.watermark}\n${content}`;
483
- await writeFileContent(file, watermarked, { force: true });
379
+ const fallbackZip = await getBundledRecipeZipPath(feature);
380
+ let attemptedFallback = false;
381
+ let installedManifest = null;
382
+ let installedEnvGroups = [];
383
+ let installedEnvAttention = [];
384
+ let installedCopiedFiles = [];
385
+ let installedNavInserted = false;
386
+ let installedNavHref;
387
+ let installedNavLabel;
388
+ // Everything below runs inside a retry loop so we can fall back to bundled recipes
389
+ retry_install: while (true) {
390
+ try {
391
+ // Download and extract (or use bundled zip)
392
+ if (!zipPath) {
393
+ const result = await withSpinner('Downloading and extracting recipe...', async () => {
394
+ const zip = response.zipData
395
+ ? await downloadZip(response.zipData, true)
396
+ : await downloadZip(response.signedUrl);
397
+ const dir = join(tmpdir(), 'vibefast', randomUUID());
398
+ await extractZipSafe(zip, dir);
399
+ return { zipPath: zip, extractDir: dir };
400
+ }, {
401
+ successText: '✓ Recipe downloaded',
402
+ });
403
+ zipPath = result.zipPath;
404
+ extractDir = result.extractDir;
484
405
  }
406
+ else {
407
+ // Bundled zip path - extract to temp location
408
+ extractDir = join(tmpdir(), 'vibefast', randomUUID());
409
+ await extractZipSafe(zipPath, extractDir);
410
+ }
411
+ // Locate manifest (some archives may nest recipe.json)
412
+ const findManifest = async (dir) => {
413
+ const entries = await import('fs/promises').then((m) => m.readdir(dir, { withFileTypes: true }));
414
+ for (const entry of entries) {
415
+ const full = join(dir, entry.name);
416
+ if (entry.isFile() && entry.name === 'recipe.json')
417
+ return full;
418
+ if (entry.isDirectory()) {
419
+ const found = await findManifest(full);
420
+ if (found)
421
+ return found;
422
+ }
423
+ }
424
+ return null;
425
+ };
426
+ let manifestPath = join(extractDir, 'recipe.json');
427
+ if (!(await exists(manifestPath))) {
428
+ const found = await findManifest(extractDir);
429
+ if (!found) {
430
+ throw new Error(`recipe.json not found in ${extractDir}`);
431
+ }
432
+ manifestPath = found;
433
+ }
434
+ const manifestContent = await readFileContent(manifestPath);
435
+ const manifest = JSON.parse(manifestContent);
436
+ if (!manifest.copy && Array.isArray(manifest.files)) {
437
+ manifest.copy = manifest.files.map((file) => ({
438
+ from: file.source,
439
+ to: file.destination,
440
+ }));
441
+ }
442
+ if (!Array.isArray(manifest.copy)) {
443
+ throw new Error('recipe.json is missing a valid "copy" array');
444
+ }
445
+ const extractRoot = resolve(manifestPath, '..');
446
+ const repoRoot = resolve(paths.cwd);
447
+ if (manifest.target !== target) {
448
+ throw new Error(`Recipe target mismatch: expected ${target}, got ${manifest.target}`);
449
+ }
450
+ log.info(`Installing ${manifest.name} v${manifest.version}...`);
451
+ const envGroups = groupEnvVars(manifest.env, paths.cwd);
452
+ let envAttention = [];
453
+ // Copy files with interactive confirmation
454
+ const copiedFiles = [];
455
+ const allConflicts = [];
456
+ const allSkipped = [];
457
+ for (const copySpec of manifest.copy) {
458
+ const srcPath = ensureWithinBase(extractRoot, resolve(extractRoot, copySpec.from), `Recipe file ${copySpec.from}`);
459
+ const destPath = ensureWithinBase(repoRoot, resolve(repoRoot, copySpec.to), `Destination ${copySpec.to}`);
460
+ log.info(`Copying ${copySpec.from} → ${copySpec.to}`);
461
+ const result = await copyTree(srcPath, destPath, {
462
+ dryRun: options.dryRun,
463
+ force: options.force,
464
+ interactive: !options.force && !options.dryRun && !options.yes,
465
+ });
466
+ copiedFiles.push(...result.files);
467
+ allConflicts.push(...result.conflicts);
468
+ allSkipped.push(...result.skipped);
469
+ }
470
+ // Show conflict warnings in dry-run mode
471
+ if (options.dryRun && allConflicts.length > 0) {
472
+ log.plain('');
473
+ log.warn(`⚠ ${allConflicts.length} file(s) will be overwritten:`);
474
+ allConflicts.slice(0, 5).forEach(f => {
475
+ const relativePath = f.replace(paths.cwd + '/', '');
476
+ log.plain(` • ${relativePath}`);
477
+ });
478
+ if (allConflicts.length > 5) {
479
+ log.plain(` ... and ${allConflicts.length - 5} more`);
480
+ }
481
+ log.warn('⚠ Make sure you have committed your changes to Git!');
482
+ log.plain('');
483
+ }
484
+ // Show skipped files
485
+ if (allSkipped.length > 0) {
486
+ log.info(`ℹ Skipped ${allSkipped.length} file(s) (you chose not to overwrite)`);
487
+ }
488
+ // Add watermark if provided
489
+ if (response.watermark && !options.dryRun) {
490
+ const { writeFileContent, readFileContent } = await import('../core/fsx.js');
491
+ for (const file of copiedFiles) {
492
+ if (file.endsWith('.ts') || file.endsWith('.tsx') || file.endsWith('.js') || file.endsWith('.jsx')) {
493
+ const content = await readFileContent(file);
494
+ const watermarked = `// vibefast license: ${response.watermark}\n${content}`;
495
+ await writeFileContent(file, watermarked, { force: true });
496
+ }
497
+ }
498
+ }
499
+ // Insert nav link
500
+ let navInserted = false;
501
+ let navHref;
502
+ let navLabel;
503
+ if (manifest.nav) {
504
+ log.info('Adding navigation link...');
505
+ const navFile = target === 'native' ? paths.nativeNavFile : paths.webNavFile;
506
+ const insertFn = target === 'native' ? insertNavLinkNative : insertNavLinkWeb;
507
+ navHref = manifest.nav.href;
508
+ navLabel = manifest.nav.label;
509
+ navInserted = await insertFn(navFile, manifest.nav, { dryRun: options.dryRun });
510
+ if (navInserted) {
511
+ log.success('Navigation link added');
512
+ }
513
+ else {
514
+ log.info('Navigation link already exists');
515
+ }
516
+ }
517
+ // Hash files and update journal
518
+ if (!options.dryRun) {
519
+ log.info('Computing file hashes...');
520
+ const fileHashes = await hashFiles(copiedFiles, { showProgress: copiedFiles.length > 20 });
521
+ const fileEntries = Array.from(fileHashes.entries()).map(([path, hash]) => ({
522
+ path,
523
+ hash,
524
+ }));
525
+ await addEntry(paths.journalFile, {
526
+ feature: manifest.name,
527
+ target: manifest.target,
528
+ files: fileEntries,
529
+ insertedNav: navInserted,
530
+ navHref,
531
+ navLabel,
532
+ ts: Date.now(),
533
+ manifest: {
534
+ version: manifest.version,
535
+ manualSteps: manifest.manualSteps,
536
+ env: manifest.env,
537
+ },
538
+ });
539
+ }
540
+ // capture results for post steps outside the loop
541
+ installedManifest = manifest;
542
+ installedEnvGroups = envGroups;
543
+ installedEnvAttention = envAttention;
544
+ installedCopiedFiles = copiedFiles;
545
+ installedNavInserted = navInserted;
546
+ installedNavHref = navHref;
547
+ installedNavLabel = navLabel;
548
+ log.success(`${manifest.name} installed successfully!`);
549
+ log.info(`Files added: ${copiedFiles.length}`);
550
+ break retry_install;
551
+ }
552
+ catch (err) {
553
+ if (!attemptedFallback && fallbackZip) {
554
+ attemptedFallback = true;
555
+ zipPath = fallbackZip;
556
+ extractDir = null;
557
+ log.warn(`⚠ Encountered error "${err.message}". Retrying with bundled recipe...`);
558
+ continue retry_install;
559
+ }
560
+ throw err;
485
561
  }
486
562
  }
487
- // Insert nav link
488
- let navInserted = false;
489
- let navHref;
490
- let navLabel;
491
- if (manifest.nav) {
492
- log.info('Adding navigation link...');
493
- const navFile = target === 'native' ? paths.nativeNavFile : paths.webNavFile;
494
- const insertFn = target === 'native' ? insertNavLinkNative : insertNavLinkWeb;
495
- navHref = manifest.nav.href;
496
- navLabel = manifest.nav.label;
497
- navInserted = await insertFn(navFile, manifest.nav, { dryRun: options.dryRun });
498
- if (navInserted) {
499
- log.success('Navigation link added');
500
- }
501
- else {
502
- log.info('Navigation link already exists');
503
- }
504
- }
505
- // Hash files and update journal
506
- if (!options.dryRun) {
507
- log.info('Computing file hashes...');
508
- const fileHashes = await hashFiles(copiedFiles, { showProgress: copiedFiles.length > 20 });
509
- const fileEntries = Array.from(fileHashes.entries()).map(([path, hash]) => ({
510
- path,
511
- hash,
512
- }));
513
- await addEntry(paths.journalFile, {
514
- feature: manifest.name,
515
- target: manifest.target,
516
- files: fileEntries,
517
- insertedNav: navInserted,
518
- navHref,
519
- navLabel,
520
- ts: Date.now(),
521
- manifest: {
522
- version: manifest.version,
523
- manualSteps: manifest.manualSteps,
524
- env: manifest.env,
525
- },
526
- });
527
- }
528
- log.success(`${manifest.name} installed successfully!`);
529
- log.info(`Files added: ${copiedFiles.length}`);
530
563
  // Auto-install dependencies
531
- if (manifest.dependencies && !options.dryRun) {
564
+ if (installedManifest && installedManifest.dependencies && !options.dryRun) {
532
565
  log.plain('');
533
566
  log.warn('⚠ This feature requires additional packages');
534
567
  log.plain('');
535
- if (manifest.target === 'native' && manifest.dependencies.expo) {
536
- const packages = manifest.dependencies.expo;
568
+ if (installedManifest.target === 'native' && installedManifest.dependencies.expo) {
569
+ const packages = installedManifest.dependencies.expo;
537
570
  log.info('📦 Required packages:');
538
571
  packages.forEach(pkg => {
539
572
  log.plain(` • ${pkg}`);
@@ -558,8 +591,8 @@ async function installFeature(feature, options, paths) {
558
591
  log.info('💡 Expo will automatically pick compatible versions');
559
592
  }
560
593
  }
561
- else if (manifest.target === 'web' && manifest.dependencies.npm) {
562
- const packages = manifest.dependencies.npm;
594
+ else if (installedManifest.target === 'web' && installedManifest.dependencies.npm) {
595
+ const packages = installedManifest.dependencies.npm;
563
596
  log.info('📦 Required packages:');
564
597
  packages.forEach(pkg => {
565
598
  log.plain(` • ${pkg}`);
@@ -594,7 +627,7 @@ async function installFeature(feature, options, paths) {
594
627
  log.plain('');
595
628
  }
596
629
  // Auto-setup Vosk model for wake-word
597
- if (manifest.name === 'wake-word' && !options.dryRun) {
630
+ if (installedManifest?.name === 'wake-word' && !options.dryRun) {
598
631
  const { setupVoskModel } = await import('../core/vosk.js');
599
632
  log.plain('');
600
633
  await withSpinner('Setting up Vosk speech model...', async () => {
@@ -603,17 +636,17 @@ async function installFeature(feature, options, paths) {
603
636
  successText: '✓ Vosk model ready',
604
637
  });
605
638
  }
606
- if (manifest.configuration?.env) {
607
- await applyEnvConfiguration(paths, manifest.configuration.env, options);
639
+ if (installedManifest?.configuration?.env) {
640
+ await applyEnvConfiguration(paths, installedManifest.configuration.env, options);
608
641
  }
609
642
  // Show manual steps with smart detection
610
- if (manifest.manualSteps && !options.dryRun) {
643
+ if (installedManifest?.manualSteps && !options.dryRun) {
611
644
  const { readFileContent, exists } = await import('../core/fsx.js');
612
645
  const { join } = await import('path');
613
646
  // Check which steps might already be done
614
647
  const pendingSteps = [];
615
648
  const completedSteps = [];
616
- for (const step of manifest.manualSteps) {
649
+ for (const step of installedManifest.manualSteps) {
617
650
  let alreadyDone = false;
618
651
  // Check if file modification is already done
619
652
  if (step.file && step.content) {
@@ -653,7 +686,7 @@ async function installFeature(feature, options, paths) {
653
686
  }
654
687
  log.plain('');
655
688
  });
656
- log.info(`💡 Run 'vf checklist ${manifest.name}' to see these steps again`);
689
+ log.info(`💡 Run 'vf checklist ${installedManifest.name}' to see these steps again`);
657
690
  log.plain('');
658
691
  }
659
692
  if (completedSteps.length > 0) {
@@ -661,8 +694,8 @@ async function installFeature(feature, options, paths) {
661
694
  log.plain('');
662
695
  }
663
696
  }
664
- if (envGroups.length > 0) {
665
- const additions = await ensureEnvVarsForGroups(envGroups, options);
697
+ if (installedEnvGroups.length > 0) {
698
+ const additions = await ensureEnvVarsForGroups(installedEnvGroups, options);
666
699
  if (additions.length > 0) {
667
700
  log.plain('');
668
701
  const suffix = options.dryRun ? ' (dry run)' : '';
@@ -673,24 +706,24 @@ async function installFeature(feature, options, paths) {
673
706
  log.info('Update those files with your real API keys or secrets.');
674
707
  log.plain('');
675
708
  }
676
- envAttention = await reportEnvStatus(envGroups, options);
709
+ installedEnvAttention = await reportEnvStatus(installedEnvGroups, options);
677
710
  }
678
711
  // Post-install message
679
- if (manifest.postInstall?.message && !options.dryRun) {
712
+ if (installedManifest?.postInstall?.message && !options.dryRun) {
680
713
  log.plain('');
681
- log.info(manifest.postInstall.message);
714
+ log.info(installedManifest.postInstall.message);
682
715
  }
683
716
  // Final summary of what needs user attention
684
717
  if (!options.dryRun) {
685
718
  const needsAttention = [];
686
- if (envGroups.length > 0 && envAttention.length > 0) {
687
- needsAttention.push(...envAttention);
719
+ if (installedEnvGroups.length > 0 && installedEnvAttention.length > 0) {
720
+ needsAttention.push(...installedEnvAttention);
688
721
  }
689
722
  // Check manual steps
690
- if (manifest.manualSteps) {
723
+ if (installedManifest?.manualSteps) {
691
724
  const { readFileContent, exists } = await import('../core/fsx.js');
692
725
  const { join } = await import('path');
693
- for (const step of manifest.manualSteps) {
726
+ for (const step of installedManifest.manualSteps) {
694
727
  let alreadyDone = false;
695
728
  if (step.file && step.content) {
696
729
  const filePath = join(paths.cwd, step.file);
@@ -719,7 +752,7 @@ async function installFeature(feature, options, paths) {
719
752
  log.plain(` ${index + 1}. ${item}`);
720
753
  });
721
754
  log.plain('');
722
- log.info(`💡 Run 'vf checklist ${manifest.name}' for detailed instructions`);
755
+ log.info(`💡 Run 'vf checklist ${installedManifest?.name ?? feature}' for detailed instructions`);
723
756
  log.plain('');
724
757
  }
725
758
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAcD,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQrF;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,UAAU,EAoI/B,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,EAAE,CAE3E;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,cAAc,EAAE,CAIhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAS/D"}
1
+ {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAeD,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAerF;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,UAAU,EAoI/B,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,EAAE,CAE3E;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,cAAc,EAAE,CAIhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAS/D"}
@@ -10,16 +10,24 @@ import { access } from 'fs/promises';
10
10
  import { constants as fsConstants } from 'fs';
11
11
  const __filename = fileURLToPath(import.meta.url);
12
12
  const __dirname = resolve(__filename, '..');
13
- const PACKAGE_ROOT = resolve(__dirname, '..');
13
+ // When compiled, this file lives in dist/core. Published package keeps recipes at root.
14
+ // We probe a few candidate roots to find the bundled zips.
14
15
  export async function getBundledRecipeZipPath(feature) {
15
- const candidate = join(PACKAGE_ROOT, 'recipes', `${feature}@latest.zip`);
16
- try {
17
- await access(candidate, fsConstants.F_OK);
18
- return candidate;
19
- }
20
- catch {
21
- return null;
16
+ const roots = [
17
+ resolve(__dirname, '..', '..'), // package root when running from dist/core
18
+ resolve(__dirname, '..'), // fallback if location differs
19
+ ];
20
+ for (const root of roots) {
21
+ const candidate = join(root, 'recipes', `${feature}@latest.zip`);
22
+ try {
23
+ await access(candidate, fsConstants.F_OK);
24
+ return candidate;
25
+ }
26
+ catch {
27
+ continue;
28
+ }
22
29
  }
30
+ return null;
23
31
  }
24
32
  /**
25
33
  * All available recipes organized by category
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,IAAI,CAAC;AAE9C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAe;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,GAAG,OAAO,aAAa,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAiB;IACnC,WAAW;IACX;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0CAA0C;QACvD,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,2BAA2B;QACxC,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0CAA0C;QACvD,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,8CAA8C;QAC3D,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oDAAoD;QACjE,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,uCAAuC;QACpD,IAAI,EAAE,KAAK;KACZ;IACD;QACE,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,KAAK;KACZ;IAED,cAAc;IACd;QACE,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,yCAAyC;QACtD,IAAI,EAAE,KAAK;KACZ;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,KAAK;KACZ;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,GAAG;KACV;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,GAAG;KACV;IACD;QACE,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,wBAAwB;QACrC,IAAI,EAAE,KAAK;KACZ;IAED,eAAe;IACf;QACE,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,KAAK;KACZ;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAwB;IAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAwB;IACrD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC;QACpB,KAAK,aAAa;YAChB,OAAO,aAAa,CAAC;QACvB,KAAK,aAAa;YAChB,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibefast-cli",
3
- "version": "0.7.6",
3
+ "version": "0.7.9",
4
4
  "description": "CLI for installing VibeFast features into your monorepo",
5
5
  "type": "module",
6
6
  "bin": {
@@ -536,197 +536,231 @@ async function applyEnvConfiguration(paths: ReturnType<typeof getPaths>, envConf
536
536
  }
537
537
  }
538
538
 
539
- // Download and extract (or use bundled zip)
540
- if (!zipPath) {
541
- const result = await withSpinner(
542
- 'Downloading and extracting recipe...',
543
- async () => {
544
- const zip = response.zipData
545
- ? await downloadZip(response.zipData, true)
546
- : await downloadZip(response.signedUrl!);
547
-
548
- const dir = join(tmpdir(), 'vibefast', randomUUID());
549
- await extractZipSafe(zip, dir);
550
-
551
- return { zipPath: zip, extractDir: dir };
552
- },
553
- {
554
- successText: '✓ Recipe downloaded',
539
+ const fallbackZip = await getBundledRecipeZipPath(feature);
540
+ let attemptedFallback = false;
541
+ let installedManifest: (RecipeManifest & { files?: { source: string; destination: string }[] }) | null = null;
542
+ let installedEnvGroups: EnvGroup[] = [];
543
+ let installedEnvAttention: string[] = [];
544
+ let installedCopiedFiles: string[] = [];
545
+ let installedNavInserted = false;
546
+ let installedNavHref: string | undefined;
547
+ let installedNavLabel: string | undefined;
548
+
549
+ // Everything below runs inside a retry loop so we can fall back to bundled recipes
550
+ retry_install: while (true) {
551
+ try {
552
+ // Download and extract (or use bundled zip)
553
+ if (!zipPath) {
554
+ const result = await withSpinner(
555
+ 'Downloading and extracting recipe...',
556
+ async () => {
557
+ const zip = response.zipData
558
+ ? await downloadZip(response.zipData, true)
559
+ : await downloadZip(response.signedUrl!);
560
+
561
+ const dir = join(tmpdir(), 'vibefast', randomUUID());
562
+ await extractZipSafe(zip, dir);
563
+
564
+ return { zipPath: zip, extractDir: dir };
565
+ },
566
+ {
567
+ successText: '✓ Recipe downloaded',
568
+ }
569
+ );
570
+ zipPath = result.zipPath;
571
+ extractDir = result.extractDir;
572
+ } else {
573
+ // Bundled zip path - extract to temp location
574
+ extractDir = join(tmpdir(), 'vibefast', randomUUID());
575
+ await extractZipSafe(zipPath, extractDir);
555
576
  }
556
- );
557
- zipPath = result.zipPath;
558
- extractDir = result.extractDir;
559
- } else {
560
- // Bundled zip path - extract to temp location
561
- extractDir = join(tmpdir(), 'vibefast', randomUUID());
562
- await extractZipSafe(zipPath, extractDir);
563
- }
564
577
 
565
- // Locate manifest (some archives may nest recipe.json)
566
- const findManifest = async (dir: string): Promise<string | null> => {
567
- const entries = await import('fs/promises').then((m) =>
568
- m.readdir(dir, { withFileTypes: true }),
569
- );
570
- for (const entry of entries) {
571
- const full = join(dir, entry.name);
572
- if (entry.isFile() && entry.name === 'recipe.json') return full;
573
- if (entry.isDirectory()) {
574
- const found = await findManifest(full);
575
- if (found) return found;
578
+ // Locate manifest (some archives may nest recipe.json)
579
+ const findManifest = async (dir: string): Promise<string | null> => {
580
+ const entries = await import('fs/promises').then((m) =>
581
+ m.readdir(dir, { withFileTypes: true }),
582
+ );
583
+ for (const entry of entries) {
584
+ const full = join(dir, entry.name);
585
+ if (entry.isFile() && entry.name === 'recipe.json') return full;
586
+ if (entry.isDirectory()) {
587
+ const found = await findManifest(full);
588
+ if (found) return found;
589
+ }
590
+ }
591
+ return null;
592
+ };
593
+
594
+ let manifestPath = join(extractDir, 'recipe.json');
595
+ if (!(await exists(manifestPath))) {
596
+ const found = await findManifest(extractDir);
597
+ if (!found) {
598
+ throw new Error(`recipe.json not found in ${extractDir}`);
599
+ }
600
+ manifestPath = found;
576
601
  }
577
- }
578
- return null;
579
- };
580
-
581
- let manifestPath = join(extractDir, 'recipe.json');
582
- if (!(await exists(manifestPath))) {
583
- const found = await findManifest(extractDir);
584
- if (!found) {
585
- throw new Error(`recipe.json not found in ${extractDir}`);
586
- }
587
- manifestPath = found;
588
- }
589
602
 
590
- const manifestContent = await readFileContent(manifestPath);
591
- const manifest: RecipeManifest & { files?: { source: string; destination: string }[] } = JSON.parse(manifestContent);
592
- if (!manifest.copy && Array.isArray(manifest.files)) {
593
- manifest.copy = manifest.files.map((file) => ({
594
- from: file.source,
595
- to: file.destination,
596
- }));
597
- }
598
- if (!Array.isArray(manifest.copy)) {
599
- throw new Error('recipe.json is missing a valid "copy" array');
600
- }
601
- const extractRoot = resolve(manifestPath, '..');
602
- const repoRoot = resolve(paths.cwd);
603
- if (manifest.target !== target) {
604
- throw new Error(
605
- `Recipe target mismatch: expected ${target}, got ${manifest.target}`
606
- );
607
- }
603
+ const manifestContent = await readFileContent(manifestPath);
604
+ const manifest: RecipeManifest & { files?: { source: string; destination: string }[] } = JSON.parse(manifestContent);
605
+ if (!manifest.copy && Array.isArray(manifest.files)) {
606
+ manifest.copy = manifest.files.map((file) => ({
607
+ from: file.source,
608
+ to: file.destination,
609
+ }));
610
+ }
611
+ if (!Array.isArray(manifest.copy)) {
612
+ throw new Error('recipe.json is missing a valid "copy" array');
613
+ }
614
+ const extractRoot = resolve(manifestPath, '..');
615
+ const repoRoot = resolve(paths.cwd);
616
+ if (manifest.target !== target) {
617
+ throw new Error(
618
+ `Recipe target mismatch: expected ${target}, got ${manifest.target}`
619
+ );
620
+ }
608
621
 
609
- log.info(`Installing ${manifest.name} v${manifest.version}...`);
610
- const envGroups = groupEnvVars(manifest.env, paths.cwd);
611
- let envAttention: string[] = [];
622
+ log.info(`Installing ${manifest.name} v${manifest.version}...`);
623
+ const envGroups = groupEnvVars(manifest.env, paths.cwd);
624
+ let envAttention: string[] = [];
612
625
 
613
- // Copy files with interactive confirmation
614
- const copiedFiles: string[] = [];
615
- const allConflicts: string[] = [];
616
- const allSkipped: string[] = [];
617
-
618
- for (const copySpec of manifest.copy) {
619
- const srcPath = ensureWithinBase(
620
- extractRoot,
621
- resolve(extractRoot, copySpec.from),
622
- `Recipe file ${copySpec.from}`
623
- );
624
- const destPath = ensureWithinBase(
625
- repoRoot,
626
- resolve(repoRoot, copySpec.to),
627
- `Destination ${copySpec.to}`
628
- );
629
-
630
- log.info(`Copying ${copySpec.from} → ${copySpec.to}`);
631
- const result = await copyTree(srcPath, destPath, {
632
- dryRun: options.dryRun,
633
- force: options.force,
634
- interactive: !options.force && !options.dryRun && !options.yes,
635
- });
636
-
637
- copiedFiles.push(...result.files);
638
- allConflicts.push(...result.conflicts);
639
- allSkipped.push(...result.skipped);
640
- }
641
-
642
- // Show conflict warnings in dry-run mode
643
- if (options.dryRun && allConflicts.length > 0) {
644
- log.plain('');
645
- log.warn(`⚠ ${allConflicts.length} file(s) will be overwritten:`);
646
- allConflicts.slice(0, 5).forEach(f => {
647
- const relativePath = f.replace(paths.cwd + '/', '');
648
- log.plain(` • ${relativePath}`);
649
- });
650
- if (allConflicts.length > 5) {
651
- log.plain(` ... and ${allConflicts.length - 5} more`);
652
- }
653
- log.warn('⚠ Make sure you have committed your changes to Git!');
654
- log.plain('');
655
- }
626
+ // Copy files with interactive confirmation
627
+ const copiedFiles: string[] = [];
628
+ const allConflicts: string[] = [];
629
+ const allSkipped: string[] = [];
630
+
631
+ for (const copySpec of manifest.copy) {
632
+ const srcPath = ensureWithinBase(
633
+ extractRoot,
634
+ resolve(extractRoot, copySpec.from),
635
+ `Recipe file ${copySpec.from}`
636
+ );
637
+ const destPath = ensureWithinBase(
638
+ repoRoot,
639
+ resolve(repoRoot, copySpec.to),
640
+ `Destination ${copySpec.to}`
641
+ );
642
+
643
+ log.info(`Copying ${copySpec.from} → ${copySpec.to}`);
644
+ const result = await copyTree(srcPath, destPath, {
645
+ dryRun: options.dryRun,
646
+ force: options.force,
647
+ interactive: !options.force && !options.dryRun && !options.yes,
648
+ });
649
+
650
+ copiedFiles.push(...result.files);
651
+ allConflicts.push(...result.conflicts);
652
+ allSkipped.push(...result.skipped);
653
+ }
656
654
 
657
- // Show skipped files
658
- if (allSkipped.length > 0) {
659
- log.info(`ℹ Skipped ${allSkipped.length} file(s) (you chose not to overwrite)`);
660
- }
655
+ // Show conflict warnings in dry-run mode
656
+ if (options.dryRun && allConflicts.length > 0) {
657
+ log.plain('');
658
+ log.warn(`⚠ ${allConflicts.length} file(s) will be overwritten:`);
659
+ allConflicts.slice(0, 5).forEach(f => {
660
+ const relativePath = f.replace(paths.cwd + '/', '');
661
+ log.plain(` • ${relativePath}`);
662
+ });
663
+ if (allConflicts.length > 5) {
664
+ log.plain(` ... and ${allConflicts.length - 5} more`);
665
+ }
666
+ log.warn('⚠ Make sure you have committed your changes to Git!');
667
+ log.plain('');
668
+ }
669
+
670
+ // Show skipped files
671
+ if (allSkipped.length > 0) {
672
+ log.info(`ℹ Skipped ${allSkipped.length} file(s) (you chose not to overwrite)`);
673
+ }
661
674
 
662
- // Add watermark if provided
663
- if (response.watermark && !options.dryRun) {
664
- const { writeFileContent, readFileContent } = await import('../core/fsx.js');
665
- for (const file of copiedFiles) {
666
- if (file.endsWith('.ts') || file.endsWith('.tsx') || file.endsWith('.js') || file.endsWith('.jsx')) {
667
- const content = await readFileContent(file);
668
- const watermarked = `// vibefast license: ${response.watermark}\n${content}`;
669
- await writeFileContent(file, watermarked, { force: true });
675
+ // Add watermark if provided
676
+ if (response.watermark && !options.dryRun) {
677
+ const { writeFileContent, readFileContent } = await import('../core/fsx.js');
678
+ for (const file of copiedFiles) {
679
+ if (file.endsWith('.ts') || file.endsWith('.tsx') || file.endsWith('.js') || file.endsWith('.jsx')) {
680
+ const content = await readFileContent(file);
681
+ const watermarked = `// vibefast license: ${response.watermark}\n${content}`;
682
+ await writeFileContent(file, watermarked, { force: true });
683
+ }
684
+ }
670
685
  }
671
- }
672
- }
673
686
 
674
- // Insert nav link
675
- let navInserted = false;
676
- let navHref: string | undefined;
677
- let navLabel: string | undefined;
678
- if (manifest.nav) {
679
- log.info('Adding navigation link...');
680
- const navFile = target === 'native' ? paths.nativeNavFile : paths.webNavFile;
681
- const insertFn = target === 'native' ? insertNavLinkNative : insertNavLinkWeb;
682
- navHref = manifest.nav.href;
683
- navLabel = manifest.nav.label;
684
-
685
- navInserted = await insertFn(navFile, manifest.nav, { dryRun: options.dryRun });
686
- if (navInserted) {
687
- log.success('Navigation link added');
688
- } else {
689
- log.info('Navigation link already exists');
690
- }
691
- }
687
+ // Insert nav link
688
+ let navInserted = false;
689
+ let navHref: string | undefined;
690
+ let navLabel: string | undefined;
691
+ if (manifest.nav) {
692
+ log.info('Adding navigation link...');
693
+ const navFile = target === 'native' ? paths.nativeNavFile : paths.webNavFile;
694
+ const insertFn = target === 'native' ? insertNavLinkNative : insertNavLinkWeb;
695
+ navHref = manifest.nav.href;
696
+ navLabel = manifest.nav.label;
697
+
698
+ navInserted = await insertFn(navFile, manifest.nav, { dryRun: options.dryRun });
699
+ if (navInserted) {
700
+ log.success('Navigation link added');
701
+ } else {
702
+ log.info('Navigation link already exists');
703
+ }
704
+ }
692
705
 
693
- // Hash files and update journal
694
- if (!options.dryRun) {
695
- log.info('Computing file hashes...');
696
- const fileHashes = await hashFiles(copiedFiles, { showProgress: copiedFiles.length > 20 });
697
-
698
- const fileEntries: FileEntry[] = Array.from(fileHashes.entries()).map(([path, hash]) => ({
699
- path,
700
- hash,
701
- }));
702
-
703
- await addEntry(paths.journalFile, {
704
- feature: manifest.name,
705
- target: manifest.target,
706
- files: fileEntries,
707
- insertedNav: navInserted,
708
- navHref,
709
- navLabel,
710
- ts: Date.now(),
711
- manifest: {
712
- version: manifest.version,
713
- manualSteps: manifest.manualSteps,
714
- env: manifest.env,
715
- },
716
- });
717
- }
706
+ // Hash files and update journal
707
+ if (!options.dryRun) {
708
+ log.info('Computing file hashes...');
709
+ const fileHashes = await hashFiles(copiedFiles, { showProgress: copiedFiles.length > 20 });
710
+
711
+ const fileEntries: FileEntry[] = Array.from(fileHashes.entries()).map(([path, hash]) => ({
712
+ path,
713
+ hash,
714
+ }));
715
+
716
+ await addEntry(paths.journalFile, {
717
+ feature: manifest.name,
718
+ target: manifest.target,
719
+ files: fileEntries,
720
+ insertedNav: navInserted,
721
+ navHref,
722
+ navLabel,
723
+ ts: Date.now(),
724
+ manifest: {
725
+ version: manifest.version,
726
+ manualSteps: manifest.manualSteps,
727
+ env: manifest.env,
728
+ },
729
+ });
730
+ }
718
731
 
719
- log.success(`${manifest.name} installed successfully!`);
720
- log.info(`Files added: ${copiedFiles.length}`);
732
+ // capture results for post steps outside the loop
733
+ installedManifest = manifest;
734
+ installedEnvGroups = envGroups;
735
+ installedEnvAttention = envAttention;
736
+ installedCopiedFiles = copiedFiles;
737
+ installedNavInserted = navInserted;
738
+ installedNavHref = navHref;
739
+ installedNavLabel = navLabel;
740
+
741
+ log.success(`${manifest.name} installed successfully!`);
742
+ log.info(`Files added: ${copiedFiles.length}`);
743
+ break retry_install;
744
+ } catch (err: any) {
745
+ if (!attemptedFallback && fallbackZip) {
746
+ attemptedFallback = true;
747
+ zipPath = fallbackZip;
748
+ extractDir = null;
749
+ log.warn(`⚠ Encountered error "${err.message}". Retrying with bundled recipe...`);
750
+ continue retry_install;
751
+ }
752
+ throw err;
753
+ }
754
+ }
721
755
 
722
756
  // Auto-install dependencies
723
- if (manifest.dependencies && !options.dryRun) {
757
+ if (installedManifest && installedManifest.dependencies && !options.dryRun) {
724
758
  log.plain('');
725
759
  log.warn('⚠ This feature requires additional packages');
726
760
  log.plain('');
727
761
 
728
- if (manifest.target === 'native' && manifest.dependencies.expo) {
729
- const packages = manifest.dependencies.expo;
762
+ if (installedManifest.target === 'native' && installedManifest.dependencies.expo) {
763
+ const packages = installedManifest.dependencies.expo;
730
764
 
731
765
  log.info('📦 Required packages:');
732
766
  packages.forEach(pkg => {
@@ -760,8 +794,8 @@ async function applyEnvConfiguration(paths: ReturnType<typeof getPaths>, envConf
760
794
  log.info('💡 Expo will automatically pick compatible versions');
761
795
  }
762
796
 
763
- } else if (manifest.target === 'web' && manifest.dependencies.npm) {
764
- const packages = manifest.dependencies.npm;
797
+ } else if (installedManifest.target === 'web' && installedManifest.dependencies.npm) {
798
+ const packages = installedManifest.dependencies.npm;
765
799
 
766
800
  log.info('📦 Required packages:');
767
801
  packages.forEach(pkg => {
@@ -808,7 +842,7 @@ async function applyEnvConfiguration(paths: ReturnType<typeof getPaths>, envConf
808
842
  }
809
843
 
810
844
  // Auto-setup Vosk model for wake-word
811
- if (manifest.name === 'wake-word' && !options.dryRun) {
845
+ if (installedManifest?.name === 'wake-word' && !options.dryRun) {
812
846
  const { setupVoskModel } = await import('../core/vosk.js');
813
847
  log.plain('');
814
848
  await withSpinner(
@@ -822,20 +856,20 @@ async function applyEnvConfiguration(paths: ReturnType<typeof getPaths>, envConf
822
856
  );
823
857
  }
824
858
 
825
- if (manifest.configuration?.env) {
826
- await applyEnvConfiguration(paths, manifest.configuration.env, options);
859
+ if (installedManifest?.configuration?.env) {
860
+ await applyEnvConfiguration(paths, installedManifest.configuration.env, options);
827
861
  }
828
862
 
829
863
  // Show manual steps with smart detection
830
- if (manifest.manualSteps && !options.dryRun) {
864
+ if (installedManifest?.manualSteps && !options.dryRun) {
831
865
  const { readFileContent, exists } = await import('../core/fsx.js');
832
866
  const { join } = await import('path');
833
867
 
834
868
  // Check which steps might already be done
835
- const pendingSteps: typeof manifest.manualSteps = [];
869
+ const pendingSteps: typeof installedManifest.manualSteps = [];
836
870
  const completedSteps: string[] = [];
837
871
 
838
- for (const step of manifest.manualSteps) {
872
+ for (const step of installedManifest.manualSteps) {
839
873
  let alreadyDone = false;
840
874
 
841
875
  // Check if file modification is already done
@@ -880,7 +914,7 @@ async function applyEnvConfiguration(paths: ReturnType<typeof getPaths>, envConf
880
914
  log.plain('');
881
915
  });
882
916
 
883
- log.info(`💡 Run 'vf checklist ${manifest.name}' to see these steps again`);
917
+ log.info(`💡 Run 'vf checklist ${installedManifest.name}' to see these steps again`);
884
918
  log.plain('');
885
919
  }
886
920
 
@@ -890,8 +924,8 @@ async function applyEnvConfiguration(paths: ReturnType<typeof getPaths>, envConf
890
924
  }
891
925
  }
892
926
 
893
- if (envGroups.length > 0) {
894
- const additions = await ensureEnvVarsForGroups(envGroups, options);
927
+ if (installedEnvGroups.length > 0) {
928
+ const additions = await ensureEnvVarsForGroups(installedEnvGroups, options);
895
929
 
896
930
  if (additions.length > 0) {
897
931
  log.plain('');
@@ -904,29 +938,29 @@ async function applyEnvConfiguration(paths: ReturnType<typeof getPaths>, envConf
904
938
  log.plain('');
905
939
  }
906
940
 
907
- envAttention = await reportEnvStatus(envGroups, options);
941
+ installedEnvAttention = await reportEnvStatus(installedEnvGroups, options);
908
942
  }
909
943
 
910
944
  // Post-install message
911
- if (manifest.postInstall?.message && !options.dryRun) {
945
+ if (installedManifest?.postInstall?.message && !options.dryRun) {
912
946
  log.plain('');
913
- log.info(manifest.postInstall.message);
947
+ log.info(installedManifest.postInstall.message);
914
948
  }
915
949
 
916
950
  // Final summary of what needs user attention
917
951
  if (!options.dryRun) {
918
952
  const needsAttention: string[] = [];
919
953
 
920
- if (envGroups.length > 0 && envAttention.length > 0) {
921
- needsAttention.push(...envAttention);
954
+ if (installedEnvGroups.length > 0 && installedEnvAttention.length > 0) {
955
+ needsAttention.push(...installedEnvAttention);
922
956
  }
923
957
 
924
958
  // Check manual steps
925
- if (manifest.manualSteps) {
959
+ if (installedManifest?.manualSteps) {
926
960
  const { readFileContent, exists } = await import('../core/fsx.js');
927
961
  const { join } = await import('path');
928
962
 
929
- for (const step of manifest.manualSteps) {
963
+ for (const step of installedManifest.manualSteps) {
930
964
  let alreadyDone = false;
931
965
 
932
966
  if (step.file && step.content) {
@@ -958,7 +992,7 @@ async function applyEnvConfiguration(paths: ReturnType<typeof getPaths>, envConf
958
992
  log.plain(` ${index + 1}. ${item}`);
959
993
  });
960
994
  log.plain('');
961
- log.info(`💡 Run 'vf checklist ${manifest.name}' for detailed instructions`);
995
+ log.info(`💡 Run 'vf checklist ${installedManifest?.name ?? feature}' for detailed instructions`);
962
996
  log.plain('');
963
997
  } else {
964
998
  log.plain('');
@@ -21,16 +21,24 @@ import { constants as fsConstants } from 'fs';
21
21
 
22
22
  const __filename = fileURLToPath(import.meta.url);
23
23
  const __dirname = resolve(__filename, '..');
24
- const PACKAGE_ROOT = resolve(__dirname, '..');
25
24
 
25
+ // When compiled, this file lives in dist/core. Published package keeps recipes at root.
26
+ // We probe a few candidate roots to find the bundled zips.
26
27
  export async function getBundledRecipeZipPath(feature: string): Promise<string | null> {
27
- const candidate = join(PACKAGE_ROOT, 'recipes', `${feature}@latest.zip`);
28
- try {
29
- await access(candidate, fsConstants.F_OK);
30
- return candidate;
31
- } catch {
32
- return null;
28
+ const roots = [
29
+ resolve(__dirname, '..', '..'), // package root when running from dist/core
30
+ resolve(__dirname, '..'), // fallback if location differs
31
+ ];
32
+ for (const root of roots) {
33
+ const candidate = join(root, 'recipes', `${feature}@latest.zip`);
34
+ try {
35
+ await access(candidate, fsConstants.F_OK);
36
+ return candidate;
37
+ } catch {
38
+ continue;
39
+ }
33
40
  }
41
+ return null;
34
42
  }
35
43
 
36
44
  /**