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.
- package/dist/commands/add.js +202 -169
- package/dist/commands/add.js.map +1 -1
- package/dist/core/recipes.d.ts.map +1 -1
- package/dist/core/recipes.js +16 -8
- package/dist/core/recipes.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/add.ts +226 -192
- package/src/core/recipes.ts +15 -7
package/dist/commands/add.js
CHANGED
|
@@ -376,164 +376,197 @@ async function installFeature(feature, options, paths) {
|
|
|
376
376
|
process.exit(1);
|
|
377
377
|
}
|
|
378
378
|
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
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 (
|
|
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 (
|
|
536
|
-
const packages =
|
|
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 (
|
|
562
|
-
const packages =
|
|
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 (
|
|
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 (
|
|
607
|
-
await applyEnvConfiguration(paths,
|
|
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 (
|
|
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
|
|
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 ${
|
|
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 (
|
|
665
|
-
const additions = await ensureEnvVarsForGroups(
|
|
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
|
-
|
|
709
|
+
installedEnvAttention = await reportEnvStatus(installedEnvGroups, options);
|
|
677
710
|
}
|
|
678
711
|
// Post-install message
|
|
679
|
-
if (
|
|
712
|
+
if (installedManifest?.postInstall?.message && !options.dryRun) {
|
|
680
713
|
log.plain('');
|
|
681
|
-
log.info(
|
|
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 (
|
|
687
|
-
needsAttention.push(...
|
|
719
|
+
if (installedEnvGroups.length > 0 && installedEnvAttention.length > 0) {
|
|
720
|
+
needsAttention.push(...installedEnvAttention);
|
|
688
721
|
}
|
|
689
722
|
// Check manual steps
|
|
690
|
-
if (
|
|
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
|
|
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 ${
|
|
755
|
+
log.info(`💡 Run 'vf checklist ${installedManifest?.name ?? feature}' for detailed instructions`);
|
|
723
756
|
log.plain('');
|
|
724
757
|
}
|
|
725
758
|
else {
|
package/dist/commands/add.js.map
CHANGED
|
@@ -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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAa,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAA6B,MAAM,gBAAgB,CAAC;AAClF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAmDpC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,uDAAuD,CAAC;KACpE,QAAQ,CAAC,WAAW,EAAE,4EAA4E,CAAC;KACnG,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;KAC9D,MAAM,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACvD,MAAM,CAAC,SAAS,EAAE,yCAAyC,CAAC;KAC5D,MAAM,CAAC,OAAO,EAAE,4CAA4C,CAAC;KAC7D,MAAM,CAAC,uBAAuB,EAAE,+CAA+C,CAAC;KAChF,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACjB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACd,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtB,GAAG,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC5D,GAAG,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAChE,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC3D,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC3D,GAAG,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAC1D,CAAC,CAAC;KACD,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,OAAO,EAAE,EAAE;IACrD,IAAI,CAAC;QACH,gDAAgD;QAChD,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QAEzB,2CAA2C;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC5G,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAEtG,gCAAgC;YAChC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;YAEnC,aAAa;YACb,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAEvC,0BAA0B;YAC1B,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/C,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC;gBAC1B,WAAW,EAAE,UAAU,cAAc,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;aAC3D,CAAC,CAAC,CAAC;YAEJ,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC,6BAA6B,EAAE,eAAe,CAAC,CAAC;YAEjG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,KAAK,CAAC,WAAW,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,kCAAkC;YAClC,MAAM,OAAO,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxC,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE;gBAC5B,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC,CAAC;YAEJ,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAClD,UAAU,cAAc,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,UAAU,EAClE,aAAa,CACd,CAAC;YAEF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,+BAA+B;YAC/B,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;gBACzC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACd,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1B,MAAM,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;YAED,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,sCAAsC;QACtC,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACnG,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QAEnC,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAc,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,MAAM,cAAc,CAAC,OAAc,CAAC,EAAE,CAAC,CAAC;YAE9C,8BAA8B;YAC9B,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAc,CAAC,CAAC;YACrD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxC,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE;gBAC5B,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC,CAAC;YAEJ,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAClD,UAAU,cAAc,CAAC,OAAc,CAAC,CAAC,WAAW,EAAE,UAAU,EAChE,aAAa,CACd,CAAC;YAEF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,+BAA+B;YAC/B,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;gBACzC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACd,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1B,MAAM,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;YAED,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,yBAAyB;QACzB,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,CAAC,wBAAwB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,OAAY,EAAE,KAAU;IACnE,IAAI,CAAC;QACH,IAAI,MAAM,GAAG,OAAO,CAAC,MAAsC,CAAC;QAE5D,0CAA0C;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,QAAQ,CAAC;gBAClB,GAAG,CAAC,IAAI,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBACvD,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAQD,SAAS,YAAY,CAAC,GAAsC,EAAE,GAAW;YACvE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;gBACjB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;YAE3C,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,IAAI,wBAAwB,CAAC;gBAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;gBAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAE1C,IAAI,QAAQ,EAAE,CAAC;oBACb,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE;wBACvB,IAAI,EAAE,YAAY;wBAClB,YAAY;wBACZ,IAAI,EAAE,CAAC,MAAM,CAAC;qBACf,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9B,CAAC;QAED,KAAK,UAAU,sBAAsB,CACnC,SAAqB,EACrB,OAAY;YAEZ,MAAM,OAAO,GAAqD,EAAE,CAAC;YAErE,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAiB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACnD,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE;oBAC3C,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS;iBACtE,CAAC,CAAC,CAAC;gBAEJ,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAE9E,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC;wBACX,YAAY,EAAE,KAAK,CAAC,YAAY;wBAChC,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,UAAU,eAAe,CAAC,SAAqB,EAAE,OAAY;YAChE,MAAM,SAAS,GAAa,EAAE,CAAC;YAE/B,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAsB,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAE9B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBAChC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;oBACvD,IAAI,MAAM,EAAE,CAAC;wBACX,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC5B,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,qCAAqC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;oBACtE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAEd,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;wBACvB,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;wBAC7B,GAAG,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;wBACvC,GAAG,CAAC,KAAK,CAAC,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;wBAC5C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;4BAChB,GAAG,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC1C,CAAC;wBACD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACd,SAAS,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC/D,CAAC,CAAC,CAAC;oBAEH,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC/C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC;gBAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,GAAG,CAAC,OAAO,CAAC,yBAAyB,KAAK,CAAC,YAAY,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACpF,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,KAAK,UAAU,qBAAqB,CAAC,KAAkC,EAAE,SAAoB,EAAE,OAAY;YACzG,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE5D,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YAElD,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACxH,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,2BAA2B,MAAM,GAAG,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CACtC,OAAO,EACP,uBAAuB,EACvB,qBAAqB,EACrB,SAAS,CAAC,MAAM,CAAC,MAAM,EACvB,OAAO,CACR,CAAC;gBACF,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,2CAA2C,MAAM,GAAG,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CACtC,OAAO,EACP,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,CAAC,MAAM,CAAC,GAAG,EACpB,OAAO,CACR,CAAC;gBACF,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,oCAAoC,MAAM,GAAG,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CACtC,OAAO,EACP,2BAA2B,EAC3B,yBAAyB,EACzB,SAAS,CAAC,SAAS,CAAC,MAAM,EAC1B,OAAO,CACR,CAAC;gBACF,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,mCAAmC,MAAM,GAAG,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CACtC,OAAO,EACP,wBAAwB,EACxB,sBAAsB,EACtB,SAAS,CAAC,SAAS,CAAC,GAAG,EACvB,OAAO,CACR,CAAC;gBACF,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,oCAAoC,MAAM,GAAG,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QAEK,iBAAiB;QACjB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5D,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvC,aAAa;QACb,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,6BAA6B,MAAM,EAAE,CAAC,CAAC;YAC1D,MAAM,eAAe,GAAG,MAAM,WAAW,CACvC,gDAAgD,EAChD,KAAK,CACN,CAAC;YACF,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;gBAChE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,iEAAiE;YACjE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACtC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,6BAA6B,MAAM,EAAE,CAAC,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACrC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAChD,CAAC;QAED,eAAe;QACf,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,YAAY,OAAO,QAAQ,MAAM,KAAK,EACtC,KAAK,IAAI,EAAE;YACT,OAAO,MAAM,WAAW,CAAC;gBACvB,KAAK;gBACL,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;aACxD,CAAC,CAAC;QACL,CAAC,EACD;YACE,WAAW,EAAE,kBAAkB;SAChC,CACF,CAAC;QAEF,IAAI,OAAO,GAAkB,IAAI,CAAC;QAClC,IAAI,UAAU,GAAkB,IAAI,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,4CAA4C;YAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,eAAe,CAAC;YAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAExD,IAAI,QAAQ,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,0BAA0B,KAAK,kCAAkC,CAAC,CAAC;gBAC5E,OAAO,GAAG,QAAQ,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAEd,+BAA+B;gBAC/B,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACtF,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;oBAC9C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBACrC,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;oBACvC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;oBACzB,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;oBACzB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACzB,GAAG,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;oBACpE,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACjC,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;oBAC3D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;gBACtD,CAAC;qBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpG,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;oBACpC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;oBAC5E,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACzB,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;oBAClC,GAAG,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;oBACnF,GAAG,CAAC,KAAK,CAAC,yBAAyB,GAAG,OAAO,CAAC,CAAC;oBAC/C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,IAAI,OAAO,EAAE,CAAC;wBACZ,GAAG,CAAC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;wBACjC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClE,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;oBAC7B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;oBAClD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAC1B,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;oBAC1C,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBACnC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBACnC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,IAAI,OAAO,EAAE,CAAC;wBACZ,GAAG,CAAC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;wBACjC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChE,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACjC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,gBAAgB,OAAO,4CAA4C,MAAM,EAAE,CAAC,CAAC;oBACtF,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;oBACvC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACvB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,gBAAgB;oBAChB,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;oBACxB,IAAI,OAAO,EAAE,CAAC;wBACZ,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACd,GAAG,CAAC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;oBACnC,CAAC;oBACD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;gBACrE,CAAC;gBAED,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,IAAI,iBAAiB,GAAoF,IAAI,CAAC;QAC9G,IAAI,kBAAkB,GAAe,EAAE,CAAC;QACxC,IAAI,qBAAqB,GAAa,EAAE,CAAC;QACzC,IAAI,oBAAoB,GAAa,EAAE,CAAC;QACxC,IAAI,oBAAoB,GAAG,KAAK,CAAC;QACjC,IAAI,gBAAoC,CAAC;QACzC,IAAI,iBAAqC,CAAC;QAE1C,mFAAmF;QACnF,aAAa,EAAE,OAAO,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,4CAA4C;gBAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,sCAAsC,EACtC,KAAK,IAAI,EAAE;wBACT,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO;4BAC1B,CAAC,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;4BAC3C,CAAC,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,SAAU,CAAC,CAAC;wBAE3C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;wBACrD,MAAM,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBAE/B,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;oBAC3C,CAAC,EACD;wBACE,WAAW,EAAE,qBAAqB;qBACnC,CACF,CAAC;oBACF,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;oBACzB,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,8CAA8C;oBAC9C,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;oBACtD,MAAM,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBAC5C,CAAC;gBAED,uDAAuD;gBACvD,MAAM,YAAY,GAAG,KAAK,EAAE,GAAW,EAA0B,EAAE;oBACjE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACrD,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CACxC,CAAC;oBACF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;wBACnC,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;4BAAE,OAAO,IAAI,CAAC;wBAChE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;4BACxB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;4BACvC,IAAI,KAAK;gCAAE,OAAO,KAAK,CAAC;wBAC1B,CAAC;oBACH,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC;gBAEF,IAAI,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;gBACnD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;oBAClC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;oBAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;oBAC5D,CAAC;oBACD,YAAY,GAAG,KAAK,CAAC;gBACvB,CAAC;gBAED,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;gBAC5D,MAAM,QAAQ,GAA2E,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACrH,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpD,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBAC5C,IAAI,EAAE,IAAI,CAAC,MAAM;wBACjB,EAAE,EAAE,IAAI,CAAC,WAAW;qBACrB,CAAC,CAAC,CAAC;gBACN,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACjE,CAAC;gBACD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC/B,MAAM,IAAI,KAAK,CACb,oCAAoC,MAAM,SAAS,QAAQ,CAAC,MAAM,EAAE,CACrE,CAAC;gBACJ,CAAC;gBAED,GAAG,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;gBAChE,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxD,IAAI,YAAY,GAAa,EAAE,CAAC;gBAEhC,2CAA2C;gBAC3C,MAAM,WAAW,GAAa,EAAE,CAAC;gBACjC,MAAM,YAAY,GAAa,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAa,EAAE,CAAC;gBAEhC,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACrC,MAAM,OAAO,GAAG,gBAAgB,CAC9B,WAAW,EACX,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,EACnC,eAAe,QAAQ,CAAC,IAAI,EAAE,CAC/B,CAAC;oBACF,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,QAAQ,EACR,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,EAC9B,eAAe,QAAQ,CAAC,EAAE,EAAE,CAC7B,CAAC;oBAEF,GAAG,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;oBACtD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE;wBAC/C,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG;qBAC/D,CAAC,CAAC;oBAEH,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;oBACvC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBACrC,CAAC;gBAED,yCAAyC;gBACzC,IAAI,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,MAAM,+BAA+B,CAAC,CAAC;oBAClE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACnC,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;wBACpD,GAAG,CAAC,KAAK,CAAC,OAAO,YAAY,EAAE,CAAC,CAAC;oBACnC,CAAC,CAAC,CAAC;oBACH,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5B,GAAG,CAAC,KAAK,CAAC,aAAa,YAAY,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;oBACzD,CAAC;oBACD,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;oBAChE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC;gBAED,qBAAqB;gBACrB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,GAAG,CAAC,IAAI,CAAC,aAAa,UAAU,CAAC,MAAM,uCAAuC,CAAC,CAAC;gBAClF,CAAC;gBAED,4BAA4B;gBAC5B,IAAI,QAAQ,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBAC1C,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;oBAC7E,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;wBAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;4BACnG,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;4BAC5C,MAAM,WAAW,GAAG,wBAAwB,QAAQ,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;4BAC7E,MAAM,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC7D,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,kBAAkB;gBAClB,IAAI,WAAW,GAAG,KAAK,CAAC;gBACxB,IAAI,OAA2B,CAAC;gBAChC,IAAI,QAA4B,CAAC;gBACjC,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;oBACjB,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;oBACtC,MAAM,OAAO,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;oBAC7E,MAAM,QAAQ,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,CAAC;oBAC9E,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC5B,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;oBAE9B,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;oBAChF,IAAI,WAAW,EAAE,CAAC;wBAChB,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;oBACvC,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC;gBAED,gCAAgC;gBAChC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBACpB,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBACrC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;oBAE3F,MAAM,WAAW,GAAgB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;wBACvF,IAAI;wBACJ,IAAI;qBACL,CAAC,CAAC,CAAC;oBAEJ,MAAM,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE;wBAChC,OAAO,EAAE,QAAQ,CAAC,IAAI;wBACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,KAAK,EAAE,WAAW;wBAClB,WAAW,EAAE,WAAW;wBACxB,OAAO;wBACP,QAAQ;wBACR,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;wBACd,QAAQ,EAAE;4BACR,OAAO,EAAE,QAAQ,CAAC,OAAO;4BACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;4BACjC,GAAG,EAAE,QAAQ,CAAC,GAAG;yBAClB;qBACF,CAAC,CAAC;gBACL,CAAC;gBAED,kDAAkD;gBAClD,iBAAiB,GAAG,QAAQ,CAAC;gBAC7B,kBAAkB,GAAG,SAAS,CAAC;gBAC/B,qBAAqB,GAAG,YAAY,CAAC;gBACrC,oBAAoB,GAAG,WAAW,CAAC;gBACnC,oBAAoB,GAAG,WAAW,CAAC;gBACnC,gBAAgB,GAAG,OAAO,CAAC;gBAC3B,iBAAiB,GAAG,QAAQ,CAAC;gBAE7B,GAAG,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,0BAA0B,CAAC,CAAC;gBACxD,GAAG,CAAC,IAAI,CAAC,gBAAgB,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/C,MAAM,aAAa,CAAC;YACtB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,iBAAiB,IAAI,WAAW,EAAE,CAAC;oBACtC,iBAAiB,GAAG,IAAI,CAAC;oBACzB,OAAO,GAAG,WAAW,CAAC;oBACtB,UAAU,GAAG,IAAI,CAAC;oBAClB,GAAG,CAAC,IAAI,CAAC,wBAAwB,GAAG,CAAC,OAAO,oCAAoC,CAAC,CAAC;oBAClF,SAAS,aAAa,CAAC;gBACzB,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC3E,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACxD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAEd,IAAI,iBAAiB,CAAC,MAAM,KAAK,QAAQ,IAAI,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBACjF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC;gBAErD,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBAClC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACrB,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAEd,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,WAAW,CACpD,sDAAsD,EACtD,IAAI,CACL,CAAC;gBAEF,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,WAAW,CACf,kCAAkC,EAClC,KAAK,IAAI,EAAE;wBACT,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;wBACnD,QAAQ,CAAC,oBAAoB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;4BACjD,GAAG,EAAE,KAAK,CAAC,GAAG;4BACd,KAAK,EAAE,SAAS;yBACjB,CAAC,CAAC;oBACL,CAAC,EACD;wBACE,WAAW,EAAE,sBAAsB;qBACpC,CACF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBACnC,GAAG,CAAC,KAAK,CAAC,sBAAsB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACtD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;gBAClE,CAAC;YAEH,CAAC;iBAAM,IAAI,iBAAiB,CAAC,MAAM,KAAK,KAAK,IAAI,iBAAiB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;gBACpF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC;gBAEpD,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBAClC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACrB,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAEd,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,WAAW,CACpD,sDAAsD,EACtD,IAAI,CACL,CAAC;gBAEF,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;oBACnE,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;oBAE7D,MAAM,WAAW,CACf,4BAA4B,UAAU,KAAK,EAC3C,KAAK,IAAI,EAAE;wBACT,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;wBACnD,MAAM,UAAU,GAAG,UAAU,KAAK,KAAK;4BACrC,CAAC,CAAC,eAAe,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;4BACrC,CAAC,CAAC,GAAG,UAAU,QAAQ,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9C,QAAQ,CAAC,UAAU,EAAE;4BACnB,GAAG,EAAE,KAAK,CAAC,GAAG;4BACd,KAAK,EAAE,SAAS;yBACjB,CAAC,CAAC;oBACL,CAAC,EACD;wBACE,WAAW,EAAE,sBAAsB;qBACpC,CACF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBACnC,GAAG,CAAC,KAAK,CAAC,cAAc,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC9C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAClB,GAAG,CAAC,KAAK,CAAC,cAAc,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC9C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAClB,GAAG,CAAC,KAAK,CAAC,iBAAiB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YAED,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;QAED,sCAAsC;QACtC,IAAI,iBAAiB,EAAE,IAAI,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/D,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC3D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,MAAM,WAAW,CACf,iCAAiC,EACjC,KAAK,IAAI,EAAE;gBACT,OAAO,MAAM,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACrE,CAAC,EACD;gBACE,WAAW,EAAE,oBAAoB;aAClC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,iBAAiB,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC;YAC1C,MAAM,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnF,CAAC;QAED,yCAAyC;QACzC,IAAI,iBAAiB,EAAE,WAAW,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACtD,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACnE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YAEtC,0CAA0C;YAC1C,MAAM,YAAY,GAAyC,EAAE,CAAC;YAC9D,MAAM,cAAc,GAAa,EAAE,CAAC;YAEpC,KAAK,MAAM,IAAI,IAAI,iBAAiB,CAAC,WAAW,EAAE,CAAC;gBACjD,IAAI,WAAW,GAAG,KAAK,CAAC;gBAExB,6CAA6C;gBAC7C,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC5C,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC3B,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;wBAChD,0DAA0D;wBAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;wBAChE,MAAM,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;wBAClE,IAAI,qBAAqB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;4BACnD,WAAW,GAAG,IAAI,CAAC;4BACnB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAClC,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACrC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACd,GAAG,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBAC9D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAEd,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACnC,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC9C,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;oBACnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACd,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBACjC,CAAC;oBACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACd,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBACvC,CAAC;oBACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACjB,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBACtC,CAAC;oBACD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;gBAEH,GAAG,CAAC,IAAI,CAAC,wBAAwB,iBAAiB,CAAC,IAAI,4BAA4B,CAAC,CAAC;gBACrF,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;YAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,GAAG,CAAC,OAAO,CAAC,yBAAyB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAED,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;YAE5E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,IAAI,CAAC,4CAA4C,MAAM,GAAG,CAAC,CAAC;gBAChE,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE;oBAC5C,GAAG,CAAC,KAAK,CAAC,OAAO,YAAY,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxD,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;gBACnE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;YAED,qBAAqB,GAAG,MAAM,eAAe,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC7E,CAAC;QAED,uBAAuB;QACvB,IAAI,iBAAiB,EAAE,WAAW,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;QAED,6CAA6C;QAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,cAAc,GAAa,EAAE,CAAC;YAEpC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtE,cAAc,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;YAChD,CAAC;YAED,qBAAqB;YACrB,IAAI,iBAAiB,EAAE,WAAW,EAAE,CAAC;gBACnC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBACnE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;gBAEtC,KAAK,MAAM,IAAI,IAAI,iBAAiB,CAAC,WAAW,EAAE,CAAC;oBACjD,IAAI,WAAW,GAAG,KAAK,CAAC;oBAExB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC5C,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC3B,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;4BAChD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;4BAChE,MAAM,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;4BAClE,IAAI,qBAAqB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gCACnD,WAAW,GAAG,IAAI,CAAC;4BACrB,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,eAAe;YACf,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACd,GAAG,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;gBACxE,GAAG,CAAC,IAAI,CAAC,sBAAsB,cAAc,CAAC,MAAM,8BAA8B,CAAC,CAAC;gBACpF,GAAG,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;gBACxE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACd,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACrC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,wBAAwB,iBAAiB,EAAE,IAAI,IAAI,OAAO,6BAA6B,CAAC,CAAC;gBAClG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACd,GAAG,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;gBAC3D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -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;
|
|
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"}
|
package/dist/core/recipes.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
package/dist/core/recipes.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/commands/add.ts
CHANGED
|
@@ -536,197 +536,231 @@ async function applyEnvConfiguration(paths: ReturnType<typeof getPaths>, envConf
|
|
|
536
536
|
}
|
|
537
537
|
}
|
|
538
538
|
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
{
|
|
554
|
-
|
|
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
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
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
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
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
|
-
|
|
610
|
-
|
|
611
|
-
|
|
622
|
+
log.info(`Installing ${manifest.name} v${manifest.version}...`);
|
|
623
|
+
const envGroups = groupEnvVars(manifest.env, paths.cwd);
|
|
624
|
+
let envAttention: string[] = [];
|
|
612
625
|
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
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
|
-
|
|
658
|
-
|
|
659
|
-
|
|
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
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
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
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
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
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
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
|
-
|
|
720
|
-
|
|
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 (
|
|
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 (
|
|
729
|
-
const packages =
|
|
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 (
|
|
764
|
-
const packages =
|
|
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 (
|
|
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 (
|
|
826
|
-
await applyEnvConfiguration(paths,
|
|
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 (
|
|
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
|
|
869
|
+
const pendingSteps: typeof installedManifest.manualSteps = [];
|
|
836
870
|
const completedSteps: string[] = [];
|
|
837
871
|
|
|
838
|
-
for (const step of
|
|
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 ${
|
|
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 (
|
|
894
|
-
const additions = await ensureEnvVarsForGroups(
|
|
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
|
-
|
|
941
|
+
installedEnvAttention = await reportEnvStatus(installedEnvGroups, options);
|
|
908
942
|
}
|
|
909
943
|
|
|
910
944
|
// Post-install message
|
|
911
|
-
if (
|
|
945
|
+
if (installedManifest?.postInstall?.message && !options.dryRun) {
|
|
912
946
|
log.plain('');
|
|
913
|
-
log.info(
|
|
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 (
|
|
921
|
-
needsAttention.push(...
|
|
954
|
+
if (installedEnvGroups.length > 0 && installedEnvAttention.length > 0) {
|
|
955
|
+
needsAttention.push(...installedEnvAttention);
|
|
922
956
|
}
|
|
923
957
|
|
|
924
958
|
// Check manual steps
|
|
925
|
-
if (
|
|
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
|
|
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 ${
|
|
995
|
+
log.info(`💡 Run 'vf checklist ${installedManifest?.name ?? feature}' for detailed instructions`);
|
|
962
996
|
log.plain('');
|
|
963
997
|
} else {
|
|
964
998
|
log.plain('');
|
package/src/core/recipes.ts
CHANGED
|
@@ -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
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
/**
|