@girardmedia/bootspring 2.5.5 → 2.5.6

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/cli/index.js CHANGED
@@ -50484,6 +50484,23 @@ function generateDocTemplate(docType, projectName) {
50484
50484
  *Edit this file with your project details, then run \`bootspring seed status\` to verify.*
50485
50485
  `;
50486
50486
  }
50487
+ function generateTemplates(contextDir, preset, projectName, force) {
50488
+ const docs = PRESETS[preset] || PRESETS.startup;
50489
+ let generated = 0;
50490
+ let skipped = 0;
50491
+ for (const docType of docs) {
50492
+ const meta3 = CONTEXT_DOCS[docType];
50493
+ if (!meta3) continue;
50494
+ const filePath = path34.join(contextDir, meta3.name);
50495
+ if (fs32.existsSync(filePath) && !force) {
50496
+ skipped++;
50497
+ continue;
50498
+ }
50499
+ fs32.writeFileSync(filePath, generateDocTemplate(docType, projectName));
50500
+ generated++;
50501
+ }
50502
+ return { generated, skipped };
50503
+ }
50487
50504
  function detectStack(projectRoot) {
50488
50505
  let name = path34.basename(projectRoot);
50489
50506
  const stack = [];
@@ -50536,21 +50553,7 @@ function registerSeedCommand(program3) {
50536
50553
  if (!fs32.existsSync(readmePath) || opts.force) {
50537
50554
  fs32.writeFileSync(readmePath, generateContextReadme());
50538
50555
  }
50539
- const preset = opts.preset;
50540
- const docs = PRESETS[preset] || PRESETS.startup;
50541
- let generated = 0;
50542
- let skipped = 0;
50543
- for (const docType of docs) {
50544
- const meta3 = CONTEXT_DOCS[docType];
50545
- if (!meta3) continue;
50546
- const filePath = path34.join(contextDir, meta3.name);
50547
- if (fs32.existsSync(filePath) && !opts.force) {
50548
- skipped++;
50549
- continue;
50550
- }
50551
- fs32.writeFileSync(filePath, generateDocTemplate(docType, projectName));
50552
- generated++;
50553
- }
50556
+ const { generated, skipped } = generateTemplates(contextDir, opts.preset, projectName, !!opts.force);
50554
50557
  print.success(`Created ${CONTEXT_DIR}/`);
50555
50558
  if (generated > 0) print.success(`Generated ${generated} document template(s)`);
50556
50559
  if (skipped > 0) print.dim(`Skipped ${skipped} (already exist, use --force to overwrite)`);
@@ -50578,28 +50581,14 @@ function registerSeedCommand(program3) {
50578
50581
  if (!fs32.existsSync(readmePath)) {
50579
50582
  fs32.writeFileSync(readmePath, generateContextReadme());
50580
50583
  }
50581
- const preset = opts.preset;
50582
- const docs = PRESETS[preset] || PRESETS.startup;
50583
- let generated = 0;
50584
- let skipped = 0;
50585
- for (const docType of docs) {
50586
- const meta3 = CONTEXT_DOCS[docType];
50587
- if (!meta3) continue;
50588
- const filePath = path34.join(contextDir, meta3.name);
50589
- if (fs32.existsSync(filePath) && !opts.force) {
50590
- skipped++;
50591
- continue;
50592
- }
50593
- fs32.writeFileSync(filePath, generateDocTemplate(docType, projectName));
50594
- generated++;
50595
- }
50584
+ const { generated, skipped } = generateTemplates(contextDir, opts.preset, projectName, !!opts.force);
50596
50585
  if (generated > 0) print.success(` Generated: ${generated} template(s)`);
50597
50586
  if (skipped > 0) print.dim(` Skipped: ${skipped} (already exist, use --force to overwrite)`);
50598
50587
  console.log("");
50599
50588
  console.log(`${COLORS.bold}Step 3/3: Status${COLORS.reset}`);
50600
50589
  const status = getContextStatus();
50601
50590
  for (const doc of status.docs) {
50602
- console.log(` \u2713 ${doc}`);
50591
+ console.log(` ${COLORS.green}\u2713${COLORS.reset} ${doc}`);
50603
50592
  }
50604
50593
  console.log("");
50605
50594
  console.log(`${COLORS.bold}Next:${COLORS.reset}`);
@@ -50633,16 +50622,7 @@ ${COLORS.bold}Detected Features:${COLORS.reset}`);
50633
50622
  console.log(` ${features.join(", ")}`);
50634
50623
  }
50635
50624
  const contextDir = ensureContextDir();
50636
- const docs = PRESETS[opts.preset] || PRESETS.technical;
50637
- let generated = 0;
50638
- for (const docType of docs) {
50639
- const meta3 = CONTEXT_DOCS[docType];
50640
- if (!meta3) continue;
50641
- const filePath = path34.join(contextDir, meta3.name);
50642
- if (fs32.existsSync(filePath) && !opts.force) continue;
50643
- fs32.writeFileSync(filePath, generateDocTemplate(docType, projectName));
50644
- generated++;
50645
- }
50625
+ const { generated } = generateTemplates(contextDir, opts.preset, projectName, !!opts.force);
50646
50626
  console.log("");
50647
50627
  print.success(`Generated ${generated} template(s) in ${CONTEXT_DIR}/`);
50648
50628
  console.log("");
@@ -50693,21 +50673,10 @@ ${COLORS.bold}Detected Features:${COLORS.reset}`);
50693
50673
  projectName = pkg.name || projectName;
50694
50674
  } catch {
50695
50675
  }
50696
- const docs = PRESETS[opts.preset] || PRESETS.startup;
50697
- let generated = 0;
50698
- let skipped = 0;
50699
- for (const docType of docs) {
50700
- const meta3 = CONTEXT_DOCS[docType];
50701
- if (!meta3) continue;
50702
- const filePath = path34.join(contextDir, meta3.name);
50703
- if (fs32.existsSync(filePath) && !opts.force) {
50704
- skipped++;
50705
- print.dim(` Skipped: ${meta3.name} (exists)`);
50706
- continue;
50707
- }
50708
- fs32.writeFileSync(filePath, generateDocTemplate(docType, projectName));
50709
- print.success(` Generated: ${meta3.name}`);
50710
- generated++;
50676
+ const { generated, skipped } = generateTemplates(contextDir, opts.preset, projectName, !!opts.force);
50677
+ const status = getContextStatus();
50678
+ for (const doc of status.docs) {
50679
+ print.success(` ${doc}`);
50711
50680
  }
50712
50681
  console.log("");
50713
50682
  print.info(`${generated} generated, ${skipped} skipped in ${CONTEXT_DIR}/`);
@@ -50813,21 +50782,6 @@ ${COLORS.bold}Detected Features:${COLORS.reset}`);
50813
50782
  console.log(" bootspring build next # Get next task");
50814
50783
  console.log(" bootspring build status # Check progress");
50815
50784
  });
50816
- seed.command("scaffold").description("Generate project structure from SEED.md").option("--preset <preset>", "Use preset instead of SEED.md").option("--dry-run", "Show plan without creating files").action((opts) => {
50817
- print.header("Seed Scaffold");
50818
- const seedPath = path34.join(process.cwd(), "SEED.md");
50819
- if (!opts.preset && !fs32.existsSync(seedPath)) {
50820
- print.error("No SEED.md found");
50821
- print.info("Run `bootspring seed merge` first");
50822
- return;
50823
- }
50824
- if (opts.dryRun) {
50825
- print.info("[DRY RUN] No files will be created");
50826
- }
50827
- print.info("Scaffold runs through `bootspring build start`");
50828
- console.log("");
50829
- console.log(" bootspring build start # Initialize build from SEED.md");
50830
- });
50831
50785
  seed.action(() => {
50832
50786
  seed.outputHelp();
50833
50787
  console.log("");
@@ -54737,7 +54691,7 @@ function drawProgressBar(progress, width = 20) {
54737
54691
  }
54738
54692
  function getWorkflowStates(projectRoot) {
54739
54693
  const workflows = {};
54740
- const names = ["onboard", "analyze", "audit", "preseed", "seed", "deploy", "loop"];
54694
+ const names = ["onboard", "analyze", "audit", "seed", "context", "deploy", "loop", "preseed"];
54741
54695
  for (const name of names) {
54742
54696
  const stateFile = path46.join(projectRoot, ".bootspring", name, "workflow-state.json");
54743
54697
  if (fs44.existsSync(stateFile)) {
@@ -54800,7 +54754,7 @@ function getTodoStats(projectRoot) {
54800
54754
  }
54801
54755
  }
54802
54756
  function drawWorkflowPipeline(workflows) {
54803
- const pipelineOrder = ["onboard", "preseed", "seed", "analyze", "audit", "deploy"];
54757
+ const pipelineOrder = ["onboard", "seed", "analyze", "audit", "deploy"];
54804
54758
  console.log("\nWorkflow Pipeline\n");
54805
54759
  for (const name of pipelineOrder) {
54806
54760
  const workflow = workflows[name];
@@ -54903,12 +54857,10 @@ function registerVisualizeCommand(program3) {
54903
54857
  console.log(" onboard");
54904
54858
  console.log(" |");
54905
54859
  console.log(" v");
54906
- console.log(" preseed --> seed");
54907
- console.log(" | |");
54908
- console.log(" +----+-----+");
54909
- console.log(" |");
54910
- console.log(" v");
54911
- console.log(" analyze");
54860
+ console.log(" seed");
54861
+ console.log(" |");
54862
+ console.log(" v");
54863
+ console.log(" analyze");
54912
54864
  console.log(" |");
54913
54865
  console.log(" v");
54914
54866
  console.log(" audit");
@@ -60979,7 +60931,7 @@ init_cjs_shims();
60979
60931
  var fs80 = __toESM(require("fs"));
60980
60932
  var path81 = __toESM(require("path"));
60981
60933
  init_src();
60982
- function findPreseedDocs(projectRoot) {
60934
+ function findContextDocs(projectRoot) {
60983
60935
  let dir = path81.join(projectRoot, ".bootspring", "context");
60984
60936
  if (!fs80.existsSync(dir)) {
60985
60937
  dir = path81.join(projectRoot, ".bootspring", "preseed");
@@ -61004,7 +60956,7 @@ function findPreseedDocs(projectRoot) {
61004
60956
  return { found, missing, dir };
61005
60957
  }
61006
60958
  function validateDocCoherence(projectRoot) {
61007
- const { found, missing } = findPreseedDocs(projectRoot);
60959
+ const { found, missing } = findContextDocs(projectRoot);
61008
60960
  const issues = [];
61009
60961
  const totalExpected = found.length + missing.length;
61010
60962
  let score = totalExpected > 0 ? Math.round(found.length / totalExpected * 100) : 0;
@@ -61024,7 +60976,7 @@ function validateDocCoherence(projectRoot) {
61024
60976
  });
61025
60977
  score = Math.max(score - 10, 0);
61026
60978
  }
61027
- const { dir: docsDir } = findPreseedDocs(projectRoot);
60979
+ const { dir: docsDir } = findContextDocs(projectRoot);
61028
60980
  const docContents = {};
61029
60981
  for (const doc of found) {
61030
60982
  try {
package/dist/core.js CHANGED
@@ -21359,7 +21359,7 @@ var require_package = __commonJS({
21359
21359
  "../../../package.json"(exports2, module2) {
21360
21360
  module2.exports = {
21361
21361
  name: "bootspring-workspace",
21362
- version: "2.5.4",
21362
+ version: "2.5.5",
21363
21363
  private: true,
21364
21364
  description: "Workspace tooling for the Bootspring monorepo",
21365
21365
  keywords: [
@@ -51934,7 +51934,7 @@ var require_package = __commonJS({
51934
51934
  "../../../package.json"(exports2, module2) {
51935
51935
  module2.exports = {
51936
51936
  name: "bootspring-workspace",
51937
- version: "2.5.4",
51937
+ version: "2.5.5",
51938
51938
  private: true,
51939
51939
  description: "Workspace tooling for the Bootspring monorepo",
51940
51940
  keywords: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@girardmedia/bootspring",
3
- "version": "2.5.5",
3
+ "version": "2.5.6",
4
4
  "description": "Thin client for Bootspring cloud MCP, hosted agents, and paywalled workflow intelligence",
5
5
  "keywords": [
6
6
  "ai",