@girardmedia/bootspring 2.5.0 → 2.5.2
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/README.md +9 -403
- package/bin/bootspring.js +1 -96
- package/dist/cli/index.js +65134 -0
- package/dist/cli-launcher.js +92 -0
- package/dist/core/index.d.ts +2110 -5582
- package/dist/core/index.js +2 -0
- package/dist/core.js +21123 -5413
- package/dist/mcp/index.d.ts +357 -1
- package/dist/mcp/index.js +2 -0
- package/dist/mcp-server.js +51948 -1976
- package/package.json +27 -63
- package/scripts/postinstall.cjs +144 -0
- package/LICENSE +0 -29
- package/dist/cli/index.cjs +0 -20776
- package/generators/api-docs.js +0 -827
- package/generators/decisions.js +0 -655
- package/generators/generate.js +0 -595
- package/generators/health.js +0 -942
- package/generators/index.ts +0 -82
- package/generators/presets/full.js +0 -28
- package/generators/presets/index.js +0 -12
- package/generators/presets/minimal.js +0 -29
- package/generators/presets/standard.js +0 -28
- package/generators/questionnaire.js +0 -414
- package/generators/sections/advanced.js +0 -136
- package/generators/sections/ai.js +0 -106
- package/generators/sections/auth.js +0 -89
- package/generators/sections/backend.js +0 -146
- package/generators/sections/business.js +0 -118
- package/generators/sections/content.js +0 -300
- package/generators/sections/deployment.js +0 -139
- package/generators/sections/features.js +0 -122
- package/generators/sections/frontend.js +0 -118
- package/generators/sections/identity.js +0 -76
- package/generators/sections/index.js +0 -40
- package/generators/sections/instructions.js +0 -146
- package/generators/sections/payments.js +0 -104
- package/generators/sections/plugins.js +0 -142
- package/generators/sections/pre-build.js +0 -130
- package/generators/sections/security.js +0 -127
- package/generators/sections/technical.js +0 -171
- package/generators/sections/testing.js +0 -125
- package/generators/sections/workflow.js +0 -104
- package/generators/sprint.js +0 -675
- package/generators/templates/agents.template.js +0 -199
- package/generators/templates/assistant-context.template.js +0 -83
- package/generators/templates/build-planning.template.js +0 -708
- package/generators/templates/claude.template.js +0 -379
- package/generators/templates/content.template.js +0 -819
- package/generators/templates/index.js +0 -16
- package/generators/templates/planning.template.js +0 -515
- package/generators/templates/seed.template.js +0 -109
- package/generators/visual-doc-generator.js +0 -910
- package/scripts/postinstall.js +0 -197
- /package/{claude-commands → assets/claude-commands}/agent.md +0 -0
- /package/{claude-commands → assets/claude-commands}/bs.md +0 -0
- /package/{claude-commands → assets/claude-commands}/build.md +0 -0
- /package/{claude-commands → assets/claude-commands}/skill.md +0 -0
- /package/{claude-commands → assets/claude-commands}/todo.md +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@girardmedia/bootspring",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.2",
|
|
4
4
|
"description": "Thin client for Bootspring cloud MCP, hosted agents, and paywalled workflow intelligence",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"url": "https://github.com/Girard-Media/bootspring/issues"
|
|
25
25
|
},
|
|
26
26
|
"bin": {
|
|
27
|
-
"bootspring": "bin/bootspring.js"
|
|
27
|
+
"bootspring": "./bin/bootspring.js"
|
|
28
28
|
},
|
|
29
29
|
"main": "./dist/core.js",
|
|
30
30
|
"types": "./dist/core/index.d.ts",
|
|
@@ -40,64 +40,26 @@
|
|
|
40
40
|
},
|
|
41
41
|
"files": [
|
|
42
42
|
"bin/bootspring.js",
|
|
43
|
-
"dist/cli/index.
|
|
43
|
+
"dist/cli/index.js",
|
|
44
|
+
"dist/cli-launcher.js",
|
|
44
45
|
"dist/core.js",
|
|
45
46
|
"dist/mcp-server.js",
|
|
47
|
+
"dist/core/index.js",
|
|
46
48
|
"dist/core/index.d.ts",
|
|
49
|
+
"dist/mcp/index.js",
|
|
47
50
|
"dist/mcp/index.d.ts",
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"scripts/postinstall.js"
|
|
51
|
+
"assets/claude-commands/",
|
|
52
|
+
"scripts/postinstall.cjs"
|
|
51
53
|
],
|
|
52
54
|
"scripts": {
|
|
53
|
-
"
|
|
55
|
+
"build": "tsup && node ./scripts/sync-publish-artifacts.cjs",
|
|
56
|
+
"dev": "tsup --watch",
|
|
57
|
+
"lint": "eslint src/",
|
|
58
|
+
"typecheck": "tsc --noEmit",
|
|
59
|
+
"postinstall": "node scripts/postinstall.cjs",
|
|
54
60
|
"start": "node bin/bootspring.js",
|
|
55
|
-
"dashboard": "node bin/bootspring.js dashboard",
|
|
56
61
|
"mcp": "node dist/mcp-server.js",
|
|
57
|
-
"
|
|
58
|
-
"verify:version-sync": "node scripts/sync-version-metadata.js --check",
|
|
59
|
-
"release:prepare": "npm run version:sync && npm run build && npm test && npm run lint --if-present && npm run verify:package && npm run verify:mcp-contract && npm run verify:release-gates",
|
|
60
|
-
"pretest": "npm run build",
|
|
61
|
-
"test": "vitest run",
|
|
62
|
-
"test:launch-smoke": "vitest run __tests__/unit/cli-first-run-smoke.test.js __tests__/unit/health-fresh-start.test.ts __tests__/unit/session-project-scope.test.ts __tests__/unit/auth-cli-mixed-states.test.ts __tests__/unit/api-client-project-auth-fallback.test.js __tests__/unit/cli-help-surface.test.js __tests__/unit/cli-command-manifest.test.js",
|
|
63
|
-
"test:seed-ingestion": "vitest run __tests__/unit/seed-ingestion-regression.test.js",
|
|
64
|
-
"test:watch": "vitest",
|
|
65
|
-
"test:coverage": "vitest run --coverage",
|
|
66
|
-
"lint": "eslint .",
|
|
67
|
-
"lint:fix": "eslint . --fix",
|
|
68
|
-
"typecheck": "tsc --noEmit",
|
|
69
|
-
"typecheck:active": "tsc --noEmit -p tsconfig.active.json",
|
|
70
|
-
"build": "npm run version:sync && tsup && npm run build:cli",
|
|
71
|
-
"build:cli": "cd monorepo && pnpm build --filter @bootspring/cli && cd .. && mkdir -p dist/cli && cp monorepo/apps/cli/dist/index.cjs dist/cli/index.cjs",
|
|
72
|
-
"build:watch": "tsup --watch",
|
|
73
|
-
"dev": "tsx watch src/index.ts",
|
|
74
|
-
"verify:lint-budget": "node scripts/check-lint-budgets.js",
|
|
75
|
-
"verify:release-gates": "node scripts/release-gate-check.js",
|
|
76
|
-
"verify:shared-contracts": "node scripts/verify-shared-contracts.js",
|
|
77
|
-
"verify:thin-client-contract": "node scripts/verify-thin-client-contract.js",
|
|
78
|
-
"build:mcp-contract": "node scripts/export-mcp-contract.js",
|
|
79
|
-
"verify:mcp-contract": "node scripts/export-mcp-contract.js --check",
|
|
80
|
-
"planning:sync": "node scripts/sync-planning-state.js",
|
|
81
|
-
"planning:sync:check": "node scripts/sync-planning-state.js --check",
|
|
82
|
-
"planning:realign": "node scripts/sync-planning-state.js --sync-runtime",
|
|
83
|
-
"verify:package": "node scripts/check-package-boundaries.js",
|
|
84
|
-
"db:sync": "node shared/db/sync.js",
|
|
85
|
-
"db:sync:check": "node shared/db/sync.js --check",
|
|
86
|
-
"prepublishOnly": "npm run verify:version-sync && npm run build && npm test && npm run lint --if-present && npm run verify:package && npm run verify:mcp-contract"
|
|
87
|
-
},
|
|
88
|
-
"devDependencies": {
|
|
89
|
-
"@eslint/js": "^9.39.2",
|
|
90
|
-
"@swc/core": "^1.15.13",
|
|
91
|
-
"@types/node": "^25.3.1",
|
|
92
|
-
"@typescript-eslint/eslint-plugin": "^8.57.0",
|
|
93
|
-
"@typescript-eslint/parser": "^8.57.0",
|
|
94
|
-
"@vitest/coverage-v8": "^4.0.18",
|
|
95
|
-
"eslint": "^9.39.2",
|
|
96
|
-
"globals": "^17.3.0",
|
|
97
|
-
"tsup": "^8.5.1",
|
|
98
|
-
"tsx": "^4.21.0",
|
|
99
|
-
"typescript": "^5.9.3",
|
|
100
|
-
"vitest": "^4.0.18"
|
|
62
|
+
"pack:dry-run": "npm pack --dry-run --json"
|
|
101
63
|
},
|
|
102
64
|
"dependencies": {
|
|
103
65
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
@@ -106,16 +68,18 @@
|
|
|
106
68
|
"yaml": "^2.8.0",
|
|
107
69
|
"zod": "^4.3.6"
|
|
108
70
|
},
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
"
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
"
|
|
117
|
-
"
|
|
118
|
-
"@
|
|
119
|
-
"
|
|
71
|
+
"devDependencies": {
|
|
72
|
+
"@bootspring/agents": "workspace:*",
|
|
73
|
+
"@bootspring/analyzers": "workspace:*",
|
|
74
|
+
"@bootspring/config": "workspace:*",
|
|
75
|
+
"@bootspring/core": "workspace:*",
|
|
76
|
+
"@bootspring/intelligence": "workspace:*",
|
|
77
|
+
"@bootspring/mcp": "workspace:*",
|
|
78
|
+
"@bootspring/shared": "workspace:*",
|
|
79
|
+
"@bootspring/skills": "workspace:*",
|
|
80
|
+
"@bootspring/types": "workspace:*",
|
|
81
|
+
"commander": "^12.0.0",
|
|
82
|
+
"tsup": "^8.0.0",
|
|
83
|
+
"typescript": "^5.0.0"
|
|
120
84
|
}
|
|
121
85
|
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const os = require('os');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
|
|
7
|
+
const c = {
|
|
8
|
+
reset: '\x1b[0m',
|
|
9
|
+
green: '\x1b[32m',
|
|
10
|
+
cyan: '\x1b[36m',
|
|
11
|
+
dim: '\x1b[2m'
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
function resolveCommandsSource() {
|
|
15
|
+
const fromEnv = process.env.BOOTSPRING_COMMANDS_SOURCE;
|
|
16
|
+
const candidates = [
|
|
17
|
+
fromEnv,
|
|
18
|
+
path.join(__dirname, '..', 'assets', 'claude-commands')
|
|
19
|
+
].filter(Boolean);
|
|
20
|
+
|
|
21
|
+
for (const candidate of candidates) {
|
|
22
|
+
if (fs.existsSync(candidate)) {
|
|
23
|
+
return candidate;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return candidates[0];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const COMMANDS_SOURCE = resolveCommandsSource();
|
|
31
|
+
|
|
32
|
+
const BOOTSPRING_SKILL_CONTENT = `# Bootspring MCP Operating Skill
|
|
33
|
+
|
|
34
|
+
Use Bootspring MCP tools as the primary workflow for any project with Bootspring configured.
|
|
35
|
+
These tools work via MCP protocol with any assistant: Claude Code, Codex, Gemini CLI, or others.
|
|
36
|
+
|
|
37
|
+
## MCP Tool Reference — When to Use Each
|
|
38
|
+
|
|
39
|
+
| Tool | When to Use |
|
|
40
|
+
|------|-------------|
|
|
41
|
+
| \`bootspring_assist\` | Parse user intent, get suggested next actions, or clarify ambiguous requests |
|
|
42
|
+
| \`bootspring_context\` | **Always call first** — read project docs, tech stack, and conventions before coding |
|
|
43
|
+
| \`bootspring_plan\` | Break a feature or change into a structured execution plan |
|
|
44
|
+
| \`bootspring_orchestrator\` | Run multi-step workflows that combine planning, building, and quality checks |
|
|
45
|
+
| \`bootspring_quality\` | Run linting, type checks, and tests before committing — replaces manual lint scripts |
|
|
46
|
+
| \`bootspring_skill\` | Search implementation patterns |
|
|
47
|
+
| \`bootspring_agent\` | Invoke a specialist agent |
|
|
48
|
+
| \`bootspring_build\` | Advance the build loop and track progress |
|
|
49
|
+
| \`bootspring_todo\` | Add, list, complete, or clear project todos |
|
|
50
|
+
| \`bootspring_seed\` | Scaffold new features, modules, or boilerplate |
|
|
51
|
+
`;
|
|
52
|
+
|
|
53
|
+
const TARGETS = [
|
|
54
|
+
{
|
|
55
|
+
name: 'Claude Code',
|
|
56
|
+
commandsPath: path.join(os.homedir(), '.claude', 'commands'),
|
|
57
|
+
skillsPath: path.join(os.homedir(), '.claude', 'skills')
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Codex',
|
|
61
|
+
commandsPath: path.join(os.homedir(), '.codex', 'commands'),
|
|
62
|
+
skillsPath: path.join(os.homedir(), '.codex', 'skills')
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'Gemini CLI',
|
|
66
|
+
commandsPath: path.join(os.homedir(), '.gemini', 'commands'),
|
|
67
|
+
skillsPath: path.join(os.homedir(), '.gemini', 'skills')
|
|
68
|
+
}
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
function installCommands(targetDir) {
|
|
72
|
+
try {
|
|
73
|
+
if (!fs.existsSync(targetDir)) {
|
|
74
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const files = fs.readdirSync(COMMANDS_SOURCE).filter((file) => file.endsWith('.md'));
|
|
78
|
+
let installed = 0;
|
|
79
|
+
|
|
80
|
+
for (const file of files) {
|
|
81
|
+
const sourcePath = path.join(COMMANDS_SOURCE, file);
|
|
82
|
+
const targetPath = path.join(targetDir, file);
|
|
83
|
+
if (!fs.existsSync(targetPath)) {
|
|
84
|
+
fs.copyFileSync(sourcePath, targetPath);
|
|
85
|
+
installed += 1;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return installed;
|
|
90
|
+
} catch {
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function installBootspringSkill(skillsDir) {
|
|
96
|
+
try {
|
|
97
|
+
const skillDir = path.join(skillsDir, 'bootspring');
|
|
98
|
+
const skillPath = path.join(skillDir, 'SKILL.md');
|
|
99
|
+
|
|
100
|
+
if (!fs.existsSync(skillDir)) {
|
|
101
|
+
fs.mkdirSync(skillDir, { recursive: true });
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
fs.writeFileSync(skillPath, BOOTSPRING_SKILL_CONTENT, 'utf8');
|
|
105
|
+
return 1;
|
|
106
|
+
} catch {
|
|
107
|
+
return 0;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function main() {
|
|
112
|
+
if (process.env.CI || process.env.BOOTSPRING_SKIP_POSTINSTALL) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
let totalCommandsInstalled = 0;
|
|
117
|
+
let totalSkillsInstalled = 0;
|
|
118
|
+
const installedTo = [];
|
|
119
|
+
|
|
120
|
+
for (const target of TARGETS) {
|
|
121
|
+
const commandCount = installCommands(target.commandsPath);
|
|
122
|
+
const skillCount = installBootspringSkill(target.skillsPath);
|
|
123
|
+
|
|
124
|
+
if (commandCount > 0 || skillCount > 0) {
|
|
125
|
+
totalCommandsInstalled += commandCount;
|
|
126
|
+
totalSkillsInstalled += skillCount;
|
|
127
|
+
installedTo.push(target.name);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (totalCommandsInstalled > 0 || totalSkillsInstalled > 0) {
|
|
132
|
+
console.log(`
|
|
133
|
+
${c.cyan}⚡ Bootspring${c.reset} assistant integrations installed!
|
|
134
|
+
|
|
135
|
+
${c.dim}Installed:${c.reset}
|
|
136
|
+
${c.green}${totalCommandsInstalled}${c.reset} slash command templates
|
|
137
|
+
${c.green}${totalSkillsInstalled}${c.reset} Bootspring base skills
|
|
138
|
+
|
|
139
|
+
${c.dim}Installed to: ${installedTo.join(', ')}${c.reset}
|
|
140
|
+
`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
main();
|
package/LICENSE
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
Bootspring Proprietary License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Bootspring (Girard Media LLC)
|
|
4
|
-
|
|
5
|
-
All rights reserved.
|
|
6
|
-
|
|
7
|
-
This software and associated documentation files (the "Software") are proprietary
|
|
8
|
-
and confidential. The Software is licensed, not sold.
|
|
9
|
-
|
|
10
|
-
PERMITTED USE:
|
|
11
|
-
- You may use the Software for your own development projects
|
|
12
|
-
- You may install and run the Software via npm for personal or commercial use
|
|
13
|
-
- You may use the outputs generated by the Software in your projects
|
|
14
|
-
|
|
15
|
-
RESTRICTIONS:
|
|
16
|
-
- You may NOT redistribute, sublicense, or resell the Software
|
|
17
|
-
- You may NOT modify, decompile, reverse engineer, or create derivative works
|
|
18
|
-
- You may NOT remove or alter any proprietary notices or labels
|
|
19
|
-
- You may NOT use the Software to create competing products or services
|
|
20
|
-
|
|
21
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
22
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
23
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
24
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
25
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
26
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
27
|
-
SOFTWARE.
|
|
28
|
-
|
|
29
|
-
For licensing inquiries: hello@bootspring.com
|