@atlashub/smartstack-cli 3.16.0 → 3.18.0

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 (26) hide show
  1. package/dist/index.js +74 -42
  2. package/dist/index.js.map +1 -1
  3. package/dist/mcp-entry.mjs +752 -53
  4. package/dist/mcp-entry.mjs.map +1 -1
  5. package/package.json +1 -1
  6. package/templates/agents/gitflow/finish.md +21 -3
  7. package/templates/agents/gitflow/start.md +14 -4
  8. package/templates/skills/application/templates-backend.md +12 -1
  9. package/templates/skills/business-analyse/SKILL.md +4 -4
  10. package/templates/skills/business-analyse/html/ba-interactive.html +11 -5
  11. package/templates/skills/business-analyse/html/src/scripts/05-render-specs.js +11 -5
  12. package/templates/skills/business-analyse/references/deploy-data-build.md +25 -9
  13. package/templates/skills/business-analyse/references/validation-checklist.md +29 -2
  14. package/templates/skills/business-analyse/steps/step-00-init.md +23 -5
  15. package/templates/skills/business-analyse/steps/step-03a2-analysis.md +21 -3
  16. package/templates/skills/business-analyse/steps/step-03b-ui.md +31 -1
  17. package/templates/skills/business-analyse/steps/step-03d-validate.md +41 -4
  18. package/templates/skills/business-analyse/steps/step-05b-deploy.md +9 -7
  19. package/templates/skills/business-analyse/steps/step-05c-ralph-readiness.md +222 -40
  20. package/templates/skills/ralph-loop/SKILL.md +41 -1
  21. package/templates/skills/ralph-loop/references/category-rules.md +106 -1
  22. package/templates/skills/ralph-loop/references/compact-loop.md +85 -24
  23. package/templates/skills/ralph-loop/references/core-seed-data.md +48 -0
  24. package/templates/skills/ralph-loop/steps/step-00-init.md +30 -54
  25. package/templates/skills/ralph-loop/steps/step-01-task.md +102 -1
  26. package/templates/skills/ralph-loop/steps/step-04-check.md +87 -40
package/dist/index.js CHANGED
@@ -124858,7 +124858,8 @@ async function findAllProjects(projectDir) {
124858
124858
  projects.push({
124859
124859
  csprojPath,
124860
124860
  relPath: csprojPath.replace(projectDir, "").replace(/^[/\\]/, ""),
124861
- currentVersion
124861
+ currentVersion,
124862
+ csprojContent: content
124862
124863
  });
124863
124864
  }
124864
124865
  }
@@ -125066,7 +125067,7 @@ async function syncClaudeSettings(projectDir, dryRun) {
125066
125067
  }
125067
125068
  return added;
125068
125069
  }
125069
- var upgradeCommand = new Command("upgrade").description("Upgrade SmartStack packages to the latest version").option("--preview", "Upgrade to latest preview/prerelease version").option("--dry-run", "Show what would be upgraded without actually upgrading").action(async (options) => {
125070
+ var upgradeCommand = new Command("upgrade").description("Upgrade SmartStack packages to the latest version").option("--preview", "Upgrade to latest preview/prerelease version").option("--dry-run", "Show what would be upgraded without actually upgrading").option("--all-packages", "Also upgrade all other NuGet packages (slow, disabled by default)").action(async (options) => {
125070
125071
  logger.header("SmartStack Package Upgrade");
125071
125072
  const dryRun = options.dryRun || false;
125072
125073
  const result = {
@@ -125078,6 +125079,7 @@ var upgradeCommand = new Command("upgrade").description("Upgrade SmartStack pack
125078
125079
  otherPkgFailed: 0,
125079
125080
  npmUpgraded: false,
125080
125081
  npmSkipped: false,
125082
+ npmOtherUpdated: false,
125081
125083
  configSynced: 0,
125082
125084
  claudeSettingsSynced: 0,
125083
125085
  ralphInitialized: false,
@@ -125144,17 +125146,23 @@ var upgradeCommand = new Command("upgrade").description("Upgrade SmartStack pack
125144
125146
  if (projectsToUpgrade.length === 0) {
125145
125147
  logger.success(`All ${smartStackProjects.length} SmartStack project(s) already at ${source_default.cyan(nugetVersion)}`);
125146
125148
  } else {
125149
+ const useNoRestore = projectsToUpgrade.length > 1;
125147
125150
  logger.info(`Upgrading SmartStack in ${projectsToUpgrade.length} project(s)...`);
125148
125151
  for (const project of projectsToUpgrade) {
125149
125152
  logger.info(`Upgrading ${source_default.cyan(project.relPath)}...`);
125150
125153
  try {
125151
- execCommand2(`dotnet add "${project.csprojPath}" package SmartStack --version ${nugetVersion}`, void 0, dryRun);
125154
+ const noRestoreFlag = useNoRestore ? " --no-restore" : "";
125155
+ execCommand2(`dotnet add "${project.csprojPath}" package SmartStack --version ${nugetVersion}${noRestoreFlag}`, void 0, dryRun);
125152
125156
  result.nugetUpgraded++;
125153
125157
  } catch (error) {
125154
125158
  result.nugetFailed++;
125155
125159
  logger.error(`Failed to upgrade ${project.relPath}: ${error instanceof Error ? error.message : error}`);
125156
125160
  }
125157
125161
  }
125162
+ if (useNoRestore && result.nugetUpgraded > 0 && !dryRun) {
125163
+ logger.info("Restoring NuGet packages...");
125164
+ tryExecCommand("dotnet restore", projectDir);
125165
+ }
125158
125166
  if (result.nugetUpgraded > 0) {
125159
125167
  logger.success(`${result.nugetUpgraded} project(s) upgraded to ${source_default.cyan(nugetVersion)}`);
125160
125168
  }
@@ -125164,48 +125172,57 @@ var upgradeCommand = new Command("upgrade").description("Upgrade SmartStack pack
125164
125172
  }
125165
125173
  console.log();
125166
125174
  }
125167
- logger.info("Checking other NuGet packages...");
125168
- for (const project of allProjects) {
125169
- const content = await import_fs_extra7.default.readFile(project.csprojPath, "utf-8");
125170
- const allPackages = readAllPackageReferences(content);
125171
- const otherPackages = allPackages.filter((p) => p.name !== "SmartStack");
125172
- if (otherPackages.length === 0) continue;
125173
- logger.info(` ${source_default.cyan(project.relPath)}:`);
125174
- for (const pkg2 of otherPackages) {
125175
- try {
125176
- const output = dryRun ? `[DRY RUN] dotnet add "${project.csprojPath}" package ${pkg2.name}` : (0, import_child_process6.execSync)(
125177
- `dotnet add "${project.csprojPath}" package ${pkg2.name}`,
125178
- { shell: true, encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] }
125179
- );
125180
- if (dryRun) {
125181
- logger.info(` [DRY RUN] ${pkg2.name} ${source_default.yellow(pkg2.currentVersion)} \u2192 latest`);
125182
- result.otherPkgUpdated++;
125183
- continue;
125184
- }
125185
- const newContent = await import_fs_extra7.default.readFile(project.csprojPath, "utf-8");
125186
- const newVersion = readPackageVersion(newContent, pkg2.name);
125187
- if (newVersion && newVersion !== pkg2.currentVersion) {
125188
- logger.success(` ${source_default.green("\u2713")} ${pkg2.name} ${source_default.yellow(pkg2.currentVersion)} \u2192 ${source_default.cyan(newVersion)}`);
125189
- result.otherPkgUpdated++;
125190
- } else {
125191
- result.otherPkgSkipped++;
125175
+ if (options.allPackages) {
125176
+ logger.info("Checking other NuGet packages...");
125177
+ for (const project of allProjects) {
125178
+ const content = result.nugetUpgraded > 0 && project.currentVersion !== null ? await import_fs_extra7.default.readFile(project.csprojPath, "utf-8") : project.csprojContent;
125179
+ const allPackages = readAllPackageReferences(content);
125180
+ const otherPackages = allPackages.filter((p) => p.name !== "SmartStack");
125181
+ if (otherPackages.length === 0) continue;
125182
+ logger.info(` ${source_default.cyan(project.relPath)}:`);
125183
+ for (const pkg2 of otherPackages) {
125184
+ try {
125185
+ const output = dryRun ? `[DRY RUN] dotnet add "${project.csprojPath}" package ${pkg2.name}` : (0, import_child_process6.execSync)(
125186
+ `dotnet add "${project.csprojPath}" package ${pkg2.name} --no-restore`,
125187
+ { shell: true, encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] }
125188
+ );
125189
+ if (dryRun) {
125190
+ logger.info(` [DRY RUN] ${pkg2.name} ${source_default.yellow(pkg2.currentVersion)} \u2192 latest`);
125191
+ result.otherPkgUpdated++;
125192
+ continue;
125193
+ }
125194
+ const newContent = await import_fs_extra7.default.readFile(project.csprojPath, "utf-8");
125195
+ const newVersion = readPackageVersion(newContent, pkg2.name);
125196
+ if (newVersion && newVersion !== pkg2.currentVersion) {
125197
+ logger.success(` ${source_default.green("\u2713")} ${pkg2.name} ${source_default.yellow(pkg2.currentVersion)} \u2192 ${source_default.cyan(newVersion)}`);
125198
+ result.otherPkgUpdated++;
125199
+ } else {
125200
+ result.otherPkgSkipped++;
125201
+ }
125202
+ } catch (error) {
125203
+ result.otherPkgFailed++;
125204
+ logger.error(` ${source_default.red("\u2717")} ${pkg2.name}: ${error instanceof Error ? error.message : error}`);
125192
125205
  }
125193
- } catch (error) {
125194
- result.otherPkgFailed++;
125195
- logger.error(` ${source_default.red("\u2717")} ${pkg2.name}: ${error instanceof Error ? error.message : error}`);
125206
+ }
125207
+ if (!dryRun && (result.otherPkgUpdated > 0 || result.otherPkgFailed > 0)) {
125208
+ logger.info(` Restoring ${source_default.cyan(project.relPath)}...`);
125209
+ tryExecCommand(`dotnet restore "${project.csprojPath}"`, void 0);
125196
125210
  }
125197
125211
  }
125212
+ if (result.otherPkgUpdated > 0) {
125213
+ logger.success(`${result.otherPkgUpdated} package(s) updated`);
125214
+ }
125215
+ if (result.otherPkgSkipped > 0) {
125216
+ logger.info(`${result.otherPkgSkipped} package(s) already at latest`);
125217
+ }
125218
+ if (result.otherPkgFailed > 0) {
125219
+ logger.error(`${result.otherPkgFailed} package(s) failed to update`);
125220
+ }
125221
+ console.log();
125222
+ } else {
125223
+ logger.info(`Other NuGet packages: ${source_default.gray("skipped")} (use ${source_default.cyan("--all-packages")} to upgrade all)`);
125224
+ console.log();
125198
125225
  }
125199
- if (result.otherPkgUpdated > 0) {
125200
- logger.success(`${result.otherPkgUpdated} package(s) updated`);
125201
- }
125202
- if (result.otherPkgSkipped > 0) {
125203
- logger.info(`${result.otherPkgSkipped} package(s) already at latest`);
125204
- }
125205
- if (result.otherPkgFailed > 0) {
125206
- logger.error(`${result.otherPkgFailed} package(s) failed to update`);
125207
- }
125208
- console.log();
125209
125226
  }
125210
125227
  const frontendDir = await findFrontendDirectory(projectDir);
125211
125228
  if (!frontendDir) {
@@ -125238,6 +125255,18 @@ var upgradeCommand = new Command("upgrade").description("Upgrade SmartStack pack
125238
125255
  } else {
125239
125256
  logger.warning("Could not fetch npm version, skipping frontend upgrade.");
125240
125257
  }
125258
+ if (options.allPackages) {
125259
+ logger.info("Updating other npm packages...");
125260
+ const npmUpdateSuccess = tryExecCommand("npm update", frontendDir, dryRun);
125261
+ if (npmUpdateSuccess) {
125262
+ logger.success("npm packages updated");
125263
+ result.npmOtherUpdated = true;
125264
+ } else {
125265
+ logger.error("Failed to update npm packages");
125266
+ }
125267
+ } else {
125268
+ logger.info(`Other npm packages: ${source_default.gray("skipped")} (use ${source_default.cyan("--all-packages")} to upgrade all)`);
125269
+ }
125241
125270
  console.log();
125242
125271
  }
125243
125272
  logger.info("Checking for code migrations...");
@@ -125332,7 +125361,7 @@ var upgradeCommand = new Command("upgrade").description("Upgrade SmartStack pack
125332
125361
  logger.success(`Updated config version to ${source_default.cyan(nugetVersion)}`);
125333
125362
  console.log();
125334
125363
  }
125335
- const totalChanged = result.nugetUpgraded + result.otherPkgUpdated + (result.npmUpgraded ? 1 : 0) + migrationSummary.totalApplied + result.configSynced + result.claudeSettingsSynced + (result.ralphInitialized ? 1 : 0);
125364
+ const totalChanged = result.nugetUpgraded + result.otherPkgUpdated + (result.npmUpgraded ? 1 : 0) + (result.npmOtherUpdated ? 1 : 0) + migrationSummary.totalApplied + result.configSynced + result.claudeSettingsSynced + (result.ralphInitialized ? 1 : 0);
125336
125365
  const allUpToDate = totalChanged === 0 && result.nugetFailed === 0 && result.otherPkgFailed === 0;
125337
125366
  const hasProgramIssues = result.programCsIssues.length > 0;
125338
125367
  if (allUpToDate && !hasProgramIssues) {
@@ -125381,6 +125410,9 @@ var upgradeCommand = new Command("upgrade").description("Upgrade SmartStack pack
125381
125410
  if (result.npmSkipped) {
125382
125411
  lines.push(` ${source_default.gray("\u2013")} npm: already up to date`);
125383
125412
  }
125413
+ if (result.npmOtherUpdated) {
125414
+ lines.push(` ${source_default.green("\u2713")} npm: other packages updated`);
125415
+ }
125384
125416
  if (migrationSummary.totalApplied > 0) {
125385
125417
  lines.push(` ${source_default.green("\u2713")} Code migrations: ${migrationSummary.totalApplied} applied`);
125386
125418
  }