@girardmedia/bootspring 2.5.2 → 2.5.3
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 +80 -43
- package/dist/core/index.d.ts +1 -1
- package/dist/core.js +3 -3
- package/dist/mcp-server.js +2 -2
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -3378,7 +3378,7 @@ var init_release = __esm({
|
|
|
3378
3378
|
"../../packages/shared/src/release.ts"() {
|
|
3379
3379
|
"use strict";
|
|
3380
3380
|
init_cjs_shims();
|
|
3381
|
-
BOOTSPRING_VERSION = "2.5.
|
|
3381
|
+
BOOTSPRING_VERSION = "2.5.3";
|
|
3382
3382
|
BOOTSPRING_PACKAGE_NAME = "@girardmedia/bootspring";
|
|
3383
3383
|
}
|
|
3384
3384
|
});
|
|
@@ -51538,29 +51538,6 @@ var SEED_FOLDERS = [
|
|
|
51538
51538
|
".bootspring/config"
|
|
51539
51539
|
];
|
|
51540
51540
|
var VALID_PRESETS = ["minimal", "standard", "full", "startup", "api"];
|
|
51541
|
-
function isExistingCodebase(projectRoot) {
|
|
51542
|
-
const indicators = [
|
|
51543
|
-
"package.json",
|
|
51544
|
-
"Cargo.toml",
|
|
51545
|
-
"go.mod",
|
|
51546
|
-
"requirements.txt",
|
|
51547
|
-
"pyproject.toml",
|
|
51548
|
-
"Gemfile",
|
|
51549
|
-
"pom.xml",
|
|
51550
|
-
"build.gradle",
|
|
51551
|
-
"composer.json",
|
|
51552
|
-
".git"
|
|
51553
|
-
];
|
|
51554
|
-
const srcDirs = ["src", "lib", "app", "pages", "components"];
|
|
51555
|
-
for (const indicator of indicators) {
|
|
51556
|
-
if (fs33.existsSync(path35.join(projectRoot, indicator))) return true;
|
|
51557
|
-
}
|
|
51558
|
-
for (const dir of srcDirs) {
|
|
51559
|
-
const dirPath = path35.join(projectRoot, dir);
|
|
51560
|
-
if (fs33.existsSync(dirPath) && fs33.statSync(dirPath).isDirectory()) return true;
|
|
51561
|
-
}
|
|
51562
|
-
return false;
|
|
51563
|
-
}
|
|
51564
51541
|
function createSeedFolders(projectRoot) {
|
|
51565
51542
|
let dirsCreated = 0;
|
|
51566
51543
|
for (const folder of SEED_FOLDERS) {
|
|
@@ -51655,8 +51632,16 @@ function registerSeedCommand(program3) {
|
|
|
51655
51632
|
return;
|
|
51656
51633
|
}
|
|
51657
51634
|
print.info(`Preset: ${opts.preset}`);
|
|
51658
|
-
|
|
51659
|
-
print.
|
|
51635
|
+
console.log("");
|
|
51636
|
+
print.info("To generate preseed documents and then create SEED.md, run:");
|
|
51637
|
+
console.log("");
|
|
51638
|
+
console.log(" bootspring preseed go # Complete workflow (setup + detect + generate)");
|
|
51639
|
+
console.log(" bootspring preseed merge # Combine preseed docs into SEED.md");
|
|
51640
|
+
console.log("");
|
|
51641
|
+
print.dim("Or run each step individually:");
|
|
51642
|
+
console.log(" bootspring preseed init # Create preseed folder structure");
|
|
51643
|
+
console.log(" bootspring preseed generate # Generate preseed document templates");
|
|
51644
|
+
console.log(" bootspring preseed merge # Merge into SEED.md");
|
|
51660
51645
|
});
|
|
51661
51646
|
seed.command("generate").description("Ingest input files and generate documents").action(() => {
|
|
51662
51647
|
print.header("Seed Generate");
|
|
@@ -51689,7 +51674,18 @@ function registerSeedCommand(program3) {
|
|
|
51689
51674
|
console.log(` ${cat}: ${count > 0 ? `${count} files` : "none"}`);
|
|
51690
51675
|
}
|
|
51691
51676
|
console.log("");
|
|
51692
|
-
|
|
51677
|
+
const totalFiles = Object.values(counts).reduce((a, b) => a + b, 0);
|
|
51678
|
+
if (totalFiles === 0) {
|
|
51679
|
+
print.info("No input files found. You can:");
|
|
51680
|
+
console.log(" 1. Drop files into .bootspring/inputs/ subfolders");
|
|
51681
|
+
console.log(" 2. Or use the preseed workflow instead:");
|
|
51682
|
+
console.log("");
|
|
51683
|
+
console.log(" bootspring preseed go # Complete preseed workflow");
|
|
51684
|
+
} else {
|
|
51685
|
+
print.success(`Found ${totalFiles} input file(s)`);
|
|
51686
|
+
print.info("Next: bootspring preseed generate # Generate preseed documents");
|
|
51687
|
+
print.info("Then: bootspring seed synthesize # Merge into SEED.md");
|
|
51688
|
+
}
|
|
51693
51689
|
});
|
|
51694
51690
|
seed.command("scaffold").description("Generate project structure from SEED.md").option("--preset <preset>", "Use preset instead of SEED.md").option("--from-config", "Use bootspring.config.js instead of SEED.md").option("--dry-run", "Show plan without creating files").option("--yes", "Skip confirmation prompt").action((opts) => {
|
|
51695
51691
|
print.header("Seed Scaffold");
|
|
@@ -51730,9 +51726,11 @@ function registerSeedCommand(program3) {
|
|
|
51730
51726
|
} else {
|
|
51731
51727
|
print.dim("bootspring.config.js not found");
|
|
51732
51728
|
}
|
|
51733
|
-
console.log("\
|
|
51734
|
-
console.log(" bootspring
|
|
51735
|
-
console.log("
|
|
51729
|
+
console.log("\nComplete Workflow:");
|
|
51730
|
+
console.log(" bootspring preseed go # Step 1: Generate preseed documents");
|
|
51731
|
+
console.log(" (edit .md files) # Step 2: Fill in your project details");
|
|
51732
|
+
console.log(" bootspring seed synthesize # Step 3: Merge into SEED.md");
|
|
51733
|
+
console.log(" bootspring build start # Step 4: Start building");
|
|
51736
51734
|
});
|
|
51737
51735
|
seed.command("export").description("Export seed config as JSON/YAML").option("--format <format>", "Output format: json, yaml", "json").option("--output <file>", "Write to file instead of stdout").action((opts) => {
|
|
51738
51736
|
print.header("Seed Export");
|
|
@@ -51764,8 +51762,13 @@ function registerSeedCommand(program3) {
|
|
|
51764
51762
|
const seedPath = path35.join(projectRoot, "SEED.md");
|
|
51765
51763
|
if (!fs33.existsSync(preseedDir)) {
|
|
51766
51764
|
print.error("No preseed documents found");
|
|
51767
|
-
|
|
51768
|
-
print.info(
|
|
51765
|
+
console.log("");
|
|
51766
|
+
print.info("Run the complete preseed workflow first:");
|
|
51767
|
+
console.log("");
|
|
51768
|
+
console.log(" bootspring preseed go # Complete workflow (setup + detect + generate)");
|
|
51769
|
+
console.log(" bootspring seed synthesize # Then re-run this command");
|
|
51770
|
+
console.log("");
|
|
51771
|
+
print.dim("Or for existing codebases: bootspring preseed from-codebase");
|
|
51769
51772
|
return;
|
|
51770
51773
|
}
|
|
51771
51774
|
const validDocs = [
|
|
@@ -51780,20 +51783,28 @@ function registerSeedCommand(program3) {
|
|
|
51780
51783
|
];
|
|
51781
51784
|
const preseedFiles = fs33.readdirSync(preseedDir).filter((f) => validDocs.includes(f));
|
|
51782
51785
|
if (preseedFiles.length === 0) {
|
|
51783
|
-
print.error("No preseed documents found");
|
|
51784
|
-
print.info('Run "bootspring preseed
|
|
51786
|
+
print.error("No preseed documents found in .bootspring/preseed/");
|
|
51787
|
+
print.info('Run "bootspring preseed go" to generate them');
|
|
51785
51788
|
return;
|
|
51786
51789
|
}
|
|
51787
|
-
console.log(`Found ${preseedFiles.length} preseed documents:`);
|
|
51788
|
-
for (const file2 of preseedFiles) {
|
|
51789
|
-
print.success(file2);
|
|
51790
|
-
}
|
|
51791
51790
|
if (fs33.existsSync(seedPath) && !opts.force) {
|
|
51792
51791
|
print.warning("SEED.md already exists");
|
|
51793
51792
|
print.info("Use --force to overwrite");
|
|
51794
51793
|
return;
|
|
51795
51794
|
}
|
|
51796
|
-
|
|
51795
|
+
console.log(`Found ${preseedFiles.length} preseed documents:`);
|
|
51796
|
+
const sections = [];
|
|
51797
|
+
for (const file2 of preseedFiles) {
|
|
51798
|
+
const content = fs33.readFileSync(path35.join(preseedDir, file2), "utf-8");
|
|
51799
|
+
sections.push(content);
|
|
51800
|
+
print.success(` ${file2}`);
|
|
51801
|
+
}
|
|
51802
|
+
const merged = sections.join("\n\n---\n\n");
|
|
51803
|
+
fs33.writeFileSync(seedPath, merged);
|
|
51804
|
+
console.log("");
|
|
51805
|
+
print.success(`Created SEED.md (${preseedFiles.length} documents merged)`);
|
|
51806
|
+
console.log("");
|
|
51807
|
+
print.info("Next: bootspring build start # Transition to build phase");
|
|
51797
51808
|
});
|
|
51798
51809
|
seed.command("update").description("Re-run questionnaire, update SEED.md").option("--preset <preset>", "Questionnaire preset").action((opts) => {
|
|
51799
51810
|
print.header("Seed Update");
|
|
@@ -51806,12 +51817,38 @@ function registerSeedCommand(program3) {
|
|
|
51806
51817
|
}
|
|
51807
51818
|
print.info("Update runs through the full CLI for interactive questionnaire");
|
|
51808
51819
|
});
|
|
51809
|
-
seed.command("build").description("Build from seed docs").option("--loop", "Start continuous build loop").option("--iterations <n>", "Max iterations for loop", "50").action((
|
|
51820
|
+
seed.command("build").description("Build from seed docs").option("--loop", "Start continuous build loop").option("--iterations <n>", "Max iterations for loop", "50").action(() => {
|
|
51810
51821
|
print.header("Seed Build");
|
|
51811
|
-
|
|
51812
|
-
|
|
51822
|
+
const projectRoot = process.cwd();
|
|
51823
|
+
const seedPath = path35.join(projectRoot, "SEED.md");
|
|
51824
|
+
const preseedDir = path35.join(projectRoot, ".bootspring", "preseed");
|
|
51825
|
+
const hasPreseedDocs = fs33.existsSync(preseedDir) && fs33.readdirSync(preseedDir).filter((f) => f.endsWith(".md")).length > 0;
|
|
51826
|
+
if (!fs33.existsSync(seedPath) && !hasPreseedDocs) {
|
|
51827
|
+
print.error("No SEED.md or preseed documents found");
|
|
51828
|
+
console.log("");
|
|
51829
|
+
print.info("Complete workflow to get here:");
|
|
51830
|
+
console.log("");
|
|
51831
|
+
console.log(" Step 1: bootspring preseed go # Generate preseed documents");
|
|
51832
|
+
console.log(" Step 2: (edit the generated .md files in .bootspring/preseed/)");
|
|
51833
|
+
console.log(" Step 3: bootspring seed synthesize # Merge into SEED.md");
|
|
51834
|
+
console.log(" Step 4: bootspring build start # Start building");
|
|
51835
|
+
return;
|
|
51813
51836
|
}
|
|
51814
|
-
|
|
51837
|
+
if (hasPreseedDocs && !fs33.existsSync(seedPath)) {
|
|
51838
|
+
print.info(`Found ${fs33.readdirSync(preseedDir).filter((f) => f.endsWith(".md")).length} preseed documents but no SEED.md`);
|
|
51839
|
+
console.log("");
|
|
51840
|
+
print.info("Next steps:");
|
|
51841
|
+
console.log(" 1. bootspring seed synthesize # Merge preseed docs into SEED.md");
|
|
51842
|
+
console.log(" 2. bootspring build start # Start building");
|
|
51843
|
+
return;
|
|
51844
|
+
}
|
|
51845
|
+
print.success("SEED.md found");
|
|
51846
|
+
console.log("");
|
|
51847
|
+
print.info("To start building, run:");
|
|
51848
|
+
console.log("");
|
|
51849
|
+
console.log(" bootspring build start # Initialize build from seed documents");
|
|
51850
|
+
console.log(" bootspring build next # Get the next task");
|
|
51851
|
+
console.log(" bootspring build status # Check progress");
|
|
51815
51852
|
});
|
|
51816
51853
|
seed.action(() => {
|
|
51817
51854
|
seed.outputHelp();
|
package/dist/core/index.d.ts
CHANGED
|
@@ -390,7 +390,7 @@ interface InstallContext {
|
|
|
390
390
|
scriptPath: string;
|
|
391
391
|
}
|
|
392
392
|
declare const PACKAGE_NAME = "@girardmedia/bootspring";
|
|
393
|
-
declare const CURRENT_VERSION = "2.5.
|
|
393
|
+
declare const CURRENT_VERSION = "2.5.3";
|
|
394
394
|
declare const DEFAULT_INTERVAL_MS: number;
|
|
395
395
|
declare const STATE_PATH: string;
|
|
396
396
|
declare function compareVersions(a: string, b: string): number;
|
package/dist/core.js
CHANGED
|
@@ -372,7 +372,7 @@ var init_release = __esm({
|
|
|
372
372
|
"../../packages/shared/src/release.ts"() {
|
|
373
373
|
"use strict";
|
|
374
374
|
init_cjs_shims();
|
|
375
|
-
BOOTSPRING_VERSION = "2.5.
|
|
375
|
+
BOOTSPRING_VERSION = "2.5.3";
|
|
376
376
|
BOOTSPRING_PACKAGE_NAME = "@girardmedia/bootspring";
|
|
377
377
|
}
|
|
378
378
|
});
|
|
@@ -21311,7 +21311,7 @@ ${COLORS2.dim}Run "bootspring mcp" for server options${COLORS2.reset}
|
|
|
21311
21311
|
console.log(`${COLORS2.dim}Run "bootspring mcp" for setup instructions.${COLORS2.reset}
|
|
21312
21312
|
`);
|
|
21313
21313
|
}
|
|
21314
|
-
var BOOTSPRING_VERSION2 = "2.5.
|
|
21314
|
+
var BOOTSPRING_VERSION2 = "2.5.3";
|
|
21315
21315
|
var BOOTSPRING_PACKAGE_NAME2 = "@girardmedia/bootspring";
|
|
21316
21316
|
var REDACTED2 = "[REDACTED]";
|
|
21317
21317
|
var SENSITIVE_KEY_PATTERN2 = /(?:^|[_-])(api[_-]?key|token|refresh[_-]?token|authorization|x[_-]?api[_-]?key|project[_-]?id)$/i;
|
|
@@ -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.
|
|
21362
|
+
version: "2.5.3",
|
|
21363
21363
|
private: true,
|
|
21364
21364
|
description: "Workspace tooling for the Bootspring monorepo",
|
|
21365
21365
|
keywords: [
|
package/dist/mcp-server.js
CHANGED
|
@@ -31351,7 +31351,7 @@ var init_release = __esm({
|
|
|
31351
31351
|
"../../packages/shared/src/release.ts"() {
|
|
31352
31352
|
"use strict";
|
|
31353
31353
|
init_cjs_shims();
|
|
31354
|
-
BOOTSPRING_VERSION = "2.5.
|
|
31354
|
+
BOOTSPRING_VERSION = "2.5.3";
|
|
31355
31355
|
BOOTSPRING_PACKAGE_NAME = "@girardmedia/bootspring";
|
|
31356
31356
|
}
|
|
31357
31357
|
});
|
|
@@ -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.
|
|
51937
|
+
version: "2.5.3",
|
|
51938
51938
|
private: true,
|
|
51939
51939
|
description: "Workspace tooling for the Bootspring monorepo",
|
|
51940
51940
|
keywords: [
|