@nextsparkjs/cli 0.1.0-beta.87 → 0.1.0-beta.88

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.
Files changed (2) hide show
  1. package/dist/cli.js +26 -19
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -3116,6 +3116,7 @@ async function generateProject(config2) {
3116
3116
  await copyProjectFiles();
3117
3117
  await updateGlobalsCss(config2);
3118
3118
  await copyStarterTheme(config2);
3119
+ await fs8.ensureDir(path7.join(process.cwd(), "contents", "plugins"));
3119
3120
  await copyContentFeatures(config2);
3120
3121
  await updateThemeConfig(config2);
3121
3122
  await updateDevConfig(config2);
@@ -3589,8 +3590,8 @@ async function runWizard(options = { mode: "interactive" }) {
3589
3590
  const devCmd = isMonorepo ? "pnpm dev" : "pnpm dev";
3590
3591
  console.log(chalk11.yellow(` Registries will be built automatically when you run "${devCmd}"`));
3591
3592
  }
3592
- await promptAIWorkflowSetup(config2);
3593
- showNextSteps(config2, selectedTheme);
3593
+ const aiChoice = await promptAIWorkflowSetup(config2);
3594
+ showNextSteps(config2, selectedTheme, aiChoice);
3594
3595
  } catch (error) {
3595
3596
  if (error instanceof Error) {
3596
3597
  if (error.message.includes("User force closed")) {
@@ -3697,8 +3698,9 @@ function formatDevTool(tool) {
3697
3698
  };
3698
3699
  return mapping[tool] || tool;
3699
3700
  }
3700
- function showNextSteps(config2, referenceTheme = null) {
3701
+ function showNextSteps(config2, referenceTheme = null, aiChoice = "skip") {
3701
3702
  const isMonorepo = config2.projectType === "web-mobile";
3703
+ const aiSetupDone = aiChoice === "claude";
3702
3704
  console.log("");
3703
3705
  console.log(chalk11.cyan(" " + "=".repeat(60)));
3704
3706
  console.log(chalk11.bold.green(" \u2728 NextSpark project ready!"));
@@ -3707,12 +3709,12 @@ function showNextSteps(config2, referenceTheme = null) {
3707
3709
  console.log(chalk11.bold.white(" Next steps:"));
3708
3710
  console.log("");
3709
3711
  const envPath = isMonorepo ? "web/.env" : ".env";
3710
- console.log(chalk11.white(" 1. Configure your .env file:"));
3711
- console.log(chalk11.gray(` Edit these values in ${envPath}:`));
3712
+ console.log(chalk11.white(" 1. Configure your environment:"));
3713
+ console.log(chalk11.gray(` Edit ${envPath} with your credentials:`));
3712
3714
  console.log("");
3713
3715
  console.log(chalk11.yellow(" DATABASE_URL"));
3714
3716
  console.log(chalk11.gray(" PostgreSQL connection string"));
3715
- console.log(chalk11.dim(" Example: postgresql://user:pass@localhost:5432/mydb"));
3717
+ console.log(chalk11.gray(` Recommended: ${chalk11.cyan("https://supabase.com")} | ${chalk11.cyan("https://neon.com")}`));
3716
3718
  console.log("");
3717
3719
  console.log(chalk11.yellow(" BETTER_AUTH_SECRET"));
3718
3720
  console.log(chalk11.gray(" Generate with:"));
@@ -3724,11 +3726,23 @@ function showNextSteps(config2, referenceTheme = null) {
3724
3726
  console.log(chalk11.white(" 3. Start the development server:"));
3725
3727
  console.log(chalk11.cyan(" pnpm dev"));
3726
3728
  console.log("");
3729
+ let nextStep = 4;
3727
3730
  if (isMonorepo) {
3728
- console.log(chalk11.white(" 4. (Optional) Start the mobile app:"));
3731
+ console.log(chalk11.white(` ${nextStep}. (Optional) Start the mobile app:`));
3729
3732
  console.log(chalk11.cyan(" pnpm dev:mobile"));
3730
3733
  console.log(chalk11.gray(" Or: cd mobile && pnpm start"));
3731
3734
  console.log("");
3735
+ nextStep++;
3736
+ }
3737
+ if (aiSetupDone) {
3738
+ console.log(chalk11.white(` ${nextStep}. Start building with AI:`));
3739
+ console.log(chalk11.gray(" Open Claude Code in your project and run:"));
3740
+ console.log(chalk11.cyan(" /how-to:start"));
3741
+ console.log("");
3742
+ } else {
3743
+ console.log(chalk11.white(` ${nextStep}. (Optional) Setup AI workflows:`));
3744
+ console.log(chalk11.cyan(" nextspark setup:ai"));
3745
+ console.log("");
3732
3746
  }
3733
3747
  console.log(chalk11.gray(" " + "-".repeat(60)));
3734
3748
  if (isMonorepo) {
@@ -3744,18 +3758,10 @@ function showNextSteps(config2, referenceTheme = null) {
3744
3758
  const refPath = isMonorepo ? `web/contents/themes/${referenceTheme}/` : `contents/themes/${referenceTheme}/`;
3745
3759
  console.log(chalk11.gray(` Reference: ${chalk11.white(refPath)}`));
3746
3760
  }
3747
- console.log("");
3748
- console.log(chalk11.white(` ${isMonorepo ? "5" : "4"}. (Optional) Setup AI workflows:`));
3749
- console.log(chalk11.cyan(" nextspark setup:ai"));
3750
- console.log("");
3751
- console.log(chalk11.gray(" Docs: https://nextspark.dev/docs"));
3761
+ console.log(chalk11.gray(` Docs: ${chalk11.cyan("https://nextspark.dev/docs")}`));
3752
3762
  console.log("");
3753
3763
  }
3754
3764
  async function promptAIWorkflowSetup(config2) {
3755
- console.log("");
3756
- console.log(chalk11.cyan(" " + "=".repeat(60)));
3757
- console.log(chalk11.bold.white(" AI Workflow Setup (Optional)"));
3758
- console.log(chalk11.cyan(" " + "=".repeat(60)));
3759
3765
  console.log("");
3760
3766
  const choice = await select6({
3761
3767
  message: "Setup AI-assisted development workflows?",
@@ -3767,12 +3773,11 @@ async function promptAIWorkflowSetup(config2) {
3767
3773
  ]
3768
3774
  });
3769
3775
  if (choice === "skip") {
3770
- showInfo('Skipped AI workflow setup. Run "nextspark setup:ai" later to set up.');
3771
- return;
3776
+ return "skip";
3772
3777
  }
3773
3778
  if (choice === "cursor" || choice === "antigravity") {
3774
3779
  showInfo(`${choice} support is coming soon. For now, use Claude Code.`);
3775
- return;
3780
+ return "skip";
3776
3781
  }
3777
3782
  const projectRoot = process.cwd();
3778
3783
  const isMonorepo = isMonorepoProject(config2);
@@ -3796,7 +3801,9 @@ async function promptAIWorkflowSetup(config2) {
3796
3801
  }
3797
3802
  } catch (error) {
3798
3803
  showError('Failed to install AI workflow package. Run "nextspark setup:ai" later.');
3804
+ return "skip";
3799
3805
  }
3806
+ return choice;
3800
3807
  }
3801
3808
  function findLocalCoreTarball() {
3802
3809
  const cwd = process.cwd();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextsparkjs/cli",
3
- "version": "0.1.0-beta.87",
3
+ "version": "0.1.0-beta.88",
4
4
  "description": "NextSpark CLI - Complete development toolkit",
5
5
  "type": "module",
6
6
  "bin": {