@girardmedia/bootspring 2.2.0 → 2.3.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.
- package/README.md +2 -2
- package/bin/bootspring.js +35 -96
- package/claude-commands/agent.md +34 -0
- package/claude-commands/bs.md +31 -0
- package/claude-commands/build.md +25 -0
- package/claude-commands/skill.md +31 -0
- package/claude-commands/todo.md +25 -0
- package/dist/cli/index.cjs +17808 -0
- package/dist/core/index.d.ts +5814 -0
- package/dist/core.js +5780 -0
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp-server.js +2299 -0
- package/generators/api-docs.js +2 -2
- package/generators/decisions.js +3 -3
- package/generators/health.js +16 -16
- package/generators/sprint.js +2 -2
- package/package.json +27 -59
- package/core/api-client.d.ts +0 -69
- package/core/api-client.js +0 -1482
- package/core/auth.d.ts +0 -98
- package/core/auth.js +0 -737
- package/core/build-orchestrator.js +0 -508
- package/core/build-state.js +0 -612
- package/core/config.d.ts +0 -106
- package/core/config.js +0 -1328
- package/core/context-loader.js +0 -580
- package/core/context.d.ts +0 -61
- package/core/context.js +0 -327
- package/core/entitlements.d.ts +0 -70
- package/core/entitlements.js +0 -322
- package/core/index.d.ts +0 -53
- package/core/index.js +0 -62
- package/core/mcp-config.js +0 -115
- package/core/policies.d.ts +0 -43
- package/core/policies.js +0 -113
- package/core/policy-matrix.js +0 -303
- package/core/project-activity.js +0 -175
- package/core/redaction.d.ts +0 -5
- package/core/redaction.js +0 -63
- package/core/self-update.js +0 -259
- package/core/session.js +0 -353
- package/core/task-extractor.js +0 -1098
- package/core/telemetry.d.ts +0 -55
- package/core/telemetry.js +0 -617
- package/core/tier-enforcement.js +0 -928
- package/core/utils.d.ts +0 -90
- package/core/utils.js +0 -455
- package/core/validation.js +0 -572
- package/mcp/server.d.ts +0 -57
- package/mcp/server.js +0 -264
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Development scaffolding with intelligence
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@girardmedia/bootspring)
|
|
6
|
-
[](https://github.com/Girard-Media/bootspring/actions/workflows/ci.yml)
|
|
7
7
|
|
|
8
8
|
Bootspring is an AI-powered development platform that provides intelligent context, specialized agents, and workflow automation for any MCP-compatible AI assistant.
|
|
9
9
|
|
|
@@ -404,4 +404,4 @@ MIT License - see [LICENSE](LICENSE) for details.
|
|
|
404
404
|
|
|
405
405
|
**Bootspring** - Bootstrap your development. Spring into production.
|
|
406
406
|
|
|
407
|
-
[Website](https://bootspring.com) · [Documentation](https://bootspring.com/docs) · [GitHub](https://github.com/
|
|
407
|
+
[Website](https://bootspring.com) · [Documentation](https://bootspring.com/docs) · [GitHub](https://github.com/Girard-Media/bootspring)
|
package/bin/bootspring.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Bootspring CLI
|
|
5
|
-
* Routes commands
|
|
4
|
+
* Bootspring CLI bridge.
|
|
5
|
+
* Routes all commands through the v2 monorepo CLI (thin client).
|
|
6
|
+
* dist/core.js provides self-update only. No IP ships in this package.
|
|
6
7
|
*/
|
|
7
8
|
|
|
8
9
|
const path = require('path');
|
|
9
10
|
const fs = require('fs');
|
|
11
|
+
const { spawn } = require('child_process');
|
|
10
12
|
|
|
11
13
|
const VERSION = require('../package.json').version;
|
|
12
|
-
const
|
|
13
|
-
const USE_V2 = process.env.BOOTSPRING_V2 === 'true' || process.argv.includes('--v2');
|
|
14
|
+
const CLI_DIST = path.join(__dirname, '../dist/cli/index.cjs');
|
|
14
15
|
|
|
15
16
|
const C = {
|
|
16
17
|
reset: '\x1b[0m',
|
|
@@ -22,57 +23,25 @@ const C = {
|
|
|
22
23
|
red: '\x1b[31m'
|
|
23
24
|
};
|
|
24
25
|
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
'
|
|
33
|
-
|
|
34
|
-
'
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
// Planning & PRD
|
|
38
|
-
'plan', 'prd', 'preseed', 'preseed-start', 'preseed-from-codebase',
|
|
39
|
-
// Analysis & Monitoring
|
|
40
|
-
'analyze', 'audit', 'monitor', 'metrics', 'visualize',
|
|
41
|
-
// Documentation & Content
|
|
42
|
-
'generate', 'dashboard', 'content', 'docs', 'seed',
|
|
43
|
-
// Intelligence
|
|
44
|
-
'learn', 'memory', 'suggest', 'orchestrator', 'validate', 'watch',
|
|
45
|
-
// Business & Legal
|
|
46
|
-
'business', 'fundraise', 'legal', 'org',
|
|
47
|
-
// Infrastructure
|
|
48
|
-
'workspace', 'cloud-sync', 'github', 'onboard', 'checkpoint',
|
|
49
|
-
// Misc
|
|
50
|
-
'log', 'mvp', 'plugin', 'task', 'telemetry', 'update'
|
|
51
|
-
];
|
|
26
|
+
const HELP_GROUPS = {
|
|
27
|
+
'Core': ['auth', 'init', 'project', 'switch', 'health', 'mcp', 'dashboard', 'context'],
|
|
28
|
+
'Build & Deploy': ['build', 'deploy', 'loop', 'quality', 'security', 'doctor', 'update'],
|
|
29
|
+
'Planning': ['plan', 'prd', 'preseed', 'preseed-start', 'preseed-from-codebase', 'seed', 'manager'],
|
|
30
|
+
'Agents & Skills': ['agent', 'skill', 'todo', 'billing', 'plugin'],
|
|
31
|
+
'Analysis': ['analyze', 'audit', 'monitor', 'metrics', 'validate', 'visualize'],
|
|
32
|
+
'Docs & Content': ['generate', 'content', 'docs'],
|
|
33
|
+
'Intelligence': ['learn', 'memory', 'suggest', 'orchestrator', 'watch'],
|
|
34
|
+
'Business': ['business', 'fundraise', 'legal', 'org'],
|
|
35
|
+
'Infrastructure': ['workspace', 'cloud-sync', 'github', 'onboard', 'checkpoint', 'setup'],
|
|
36
|
+
'Tools': ['log', 'mvp', 'task', 'telemetry']
|
|
37
|
+
};
|
|
52
38
|
|
|
53
|
-
/**
|
|
54
|
-
* Legacy v1 commands (kept for backward compat, prefer v2)
|
|
55
|
-
*/
|
|
56
|
-
const V1_COMMANDS = {};
|
|
57
39
|
function showHelp() {
|
|
58
|
-
console.log(
|
|
40
|
+
console.log(`${C.cyan}${C.bold}⚡ Bootspring${C.reset} ${C.dim}v${VERSION}${C.reset}`);
|
|
59
41
|
console.log(`${C.dim}Development scaffolding with intelligence${C.reset}\n`);
|
|
60
42
|
console.log(`${C.bold}Usage:${C.reset} bootspring <command> [options]\n`);
|
|
61
43
|
|
|
62
|
-
const
|
|
63
|
-
'Core': ['auth', 'init', 'project', 'switch', 'health', 'mcp', 'dashboard'],
|
|
64
|
-
'Build & Deploy': ['build', 'deploy', 'loop', 'quality', 'security', 'doctor', 'update'],
|
|
65
|
-
'Planning': ['plan', 'prd', 'preseed', 'preseed-start', 'preseed-from-codebase', 'seed'],
|
|
66
|
-
'Agents & Skills': ['agent', 'skill', 'todo', 'billing'],
|
|
67
|
-
'Analysis': ['analyze', 'audit', 'monitor', 'metrics', 'validate', 'visualize'],
|
|
68
|
-
'Docs & Content': ['generate', 'content', 'docs'],
|
|
69
|
-
'Intelligence': ['learn', 'memory', 'suggest', 'orchestrator', 'watch'],
|
|
70
|
-
'Business': ['business', 'fundraise', 'legal', 'org'],
|
|
71
|
-
'Infrastructure': ['workspace', 'cloud-sync', 'github', 'onboard', 'checkpoint'],
|
|
72
|
-
'Tools': ['log', 'mvp', 'plugin', 'task', 'telemetry']
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
for (const [group, cmds] of Object.entries(groups)) {
|
|
44
|
+
for (const [group, cmds] of Object.entries(HELP_GROUPS)) {
|
|
76
45
|
console.log(`${C.bold}${group}:${C.reset} ${cmds.map(c => `${C.green}${c}${C.reset}`).join(', ')}`);
|
|
77
46
|
}
|
|
78
47
|
|
|
@@ -80,31 +49,16 @@ function showHelp() {
|
|
|
80
49
|
console.log(`${C.dim}Docs: https://bootspring.com/docs${C.reset}\n`);
|
|
81
50
|
}
|
|
82
51
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
const handler = require(path.resolve(__dirname, config.handler));
|
|
90
|
-
await handler.run(args);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
async function runV2(args) {
|
|
94
|
-
if (!fs.existsSync(MONOREPO_CLI_DIST)) {
|
|
95
|
-
console.error(`${C.red}Error: v2 CLI build not found at ${MONOREPO_CLI_DIST}${C.reset}`);
|
|
96
|
-
console.error(`${C.dim}Please run 'cd monorepo && pnpm build' first.${C.reset}`);
|
|
52
|
+
function runCli(args) {
|
|
53
|
+
if (!fs.existsSync(CLI_DIST)) {
|
|
54
|
+
console.error(`${C.red}Error: CLI build not found at ${CLI_DIST}${C.reset}`);
|
|
55
|
+
console.error(`${C.dim}Please run 'npm run build' first.${C.reset}`);
|
|
97
56
|
process.exit(1);
|
|
98
57
|
}
|
|
99
58
|
|
|
100
|
-
|
|
101
|
-
const cleanArgs = args.filter(arg => arg !== '--v2');
|
|
102
|
-
|
|
103
|
-
// Use dynamic import for ESM v2 CLI
|
|
104
|
-
const { spawn } = require('child_process');
|
|
105
|
-
const child = spawn('node', [MONOREPO_CLI_DIST, ...cleanArgs], {
|
|
59
|
+
const child = spawn('node', [CLI_DIST, ...args], {
|
|
106
60
|
stdio: 'inherit',
|
|
107
|
-
env: { ...process.env,
|
|
61
|
+
env: { ...process.env, BOOTSPRING_BRIDGE: 'true' }
|
|
108
62
|
});
|
|
109
63
|
|
|
110
64
|
child.on('exit', (code) => {
|
|
@@ -122,38 +76,23 @@ async function main() {
|
|
|
122
76
|
}
|
|
123
77
|
|
|
124
78
|
if (command === '--version' || command === '-v') {
|
|
125
|
-
console.log(`Bootspring v${VERSION}
|
|
79
|
+
console.log(`Bootspring v${VERSION}`);
|
|
126
80
|
return;
|
|
127
81
|
}
|
|
128
82
|
|
|
129
|
-
//
|
|
83
|
+
// Self-update check (best-effort from thin-client core)
|
|
130
84
|
try {
|
|
131
|
-
const selfUpdate = require(path.resolve(__dirname, '../core
|
|
85
|
+
const { selfUpdate } = require(path.resolve(__dirname, '../dist/core'));
|
|
132
86
|
selfUpdate.ensureLatestVersion(args);
|
|
133
87
|
} catch {
|
|
134
|
-
// Best-effort;
|
|
88
|
+
// Best-effort; do not block CLI on update failures.
|
|
135
89
|
}
|
|
136
90
|
|
|
137
|
-
// Route
|
|
138
|
-
|
|
139
|
-
await runV2(args);
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// Fallback to v1 for unmigrated commands
|
|
144
|
-
if (V1_COMMANDS[command]) {
|
|
145
|
-
try {
|
|
146
|
-
await runV1(command, args.slice(1));
|
|
147
|
-
} catch (error) {
|
|
148
|
-
console.error(`\n${C.red}Legacy Error: ${error.message}${C.reset}\n`);
|
|
149
|
-
process.exit(1);
|
|
150
|
-
}
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
console.log(`${C.red}Unknown command: ${command}${C.reset}`);
|
|
155
|
-
showHelp();
|
|
156
|
-
process.exit(1);
|
|
91
|
+
// Route everything through the v2 monorepo CLI
|
|
92
|
+
runCli(args);
|
|
157
93
|
}
|
|
158
94
|
|
|
159
|
-
main()
|
|
95
|
+
main().catch((error) => {
|
|
96
|
+
console.error(`\n${C.red}Error: ${error.message}${C.reset}\n`);
|
|
97
|
+
process.exit(1);
|
|
98
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent
|
|
3
|
+
description: Invoke Bootspring specialized AI agents
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /agent - Bootspring Agents
|
|
7
|
+
|
|
8
|
+
Invoke specialized AI agents for focused tasks.
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
When user invokes `/agent`, use the `bootspring_agent` MCP tool:
|
|
13
|
+
|
|
14
|
+
```json
|
|
15
|
+
{
|
|
16
|
+
"action": "invoke",
|
|
17
|
+
"name": "<agent-name>"
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Actions
|
|
22
|
+
|
|
23
|
+
- `/agent <name>` → `bootspring_agent` with action: "invoke", name: "<name>"
|
|
24
|
+
- `/agent list` → `bootspring_agent` with action: "list"
|
|
25
|
+
- `/agent show <name>` → `bootspring_agent` with action: "show", name: "<name>"
|
|
26
|
+
|
|
27
|
+
## Available Agents
|
|
28
|
+
|
|
29
|
+
- `security` - Security audit
|
|
30
|
+
- `performance` - Performance review
|
|
31
|
+
- `api` - API design review
|
|
32
|
+
- `database` - Database review
|
|
33
|
+
- `testing` - Test analysis
|
|
34
|
+
- `code-reviewer` - Code review
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bs
|
|
3
|
+
description: Bootspring quick commands (universal shorthand)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /bs - Bootspring Quick Commands
|
|
7
|
+
|
|
8
|
+
Universal shorthand for Bootspring operations. Works with any AI CLI.
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
Parse the subcommand and use the appropriate bootspring MCP tool or CLI command.
|
|
13
|
+
|
|
14
|
+
## Commands
|
|
15
|
+
|
|
16
|
+
| Command | MCP Tool | CLI Fallback |
|
|
17
|
+
|---------|----------|--------------|
|
|
18
|
+
| `/bs skill <q>` | `bootspring_skill` action:search | `bootspring skill search <q>` |
|
|
19
|
+
| `/bs agent <n>` | `bootspring_agent` action:invoke | `bootspring agent invoke <n>` |
|
|
20
|
+
| `/bs todo` | `bootspring_todo` action:list | `bootspring todo list` |
|
|
21
|
+
| `/bs todo add "<t>"` | `bootspring_todo` action:add | `bootspring todo add "<t>"` |
|
|
22
|
+
| `/bs build` | `bootspring_seed` action:build-status | `bootspring build status` |
|
|
23
|
+
| `/bs health` | `bootspring_context` action:health | `bootspring health` |
|
|
24
|
+
| `/bs help` | - | `bootspring help` |
|
|
25
|
+
|
|
26
|
+
## Examples
|
|
27
|
+
|
|
28
|
+
- `/bs skill auth` - Search auth patterns
|
|
29
|
+
- `/bs agent security` - Run security agent
|
|
30
|
+
- `/bs todo add "Fix bug"` - Add todo
|
|
31
|
+
- `/bs build` - Check build status
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build
|
|
3
|
+
description: Bootspring build management
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /build - Bootspring Build
|
|
7
|
+
|
|
8
|
+
Manage the Bootspring build loop and task execution.
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
When user invokes `/build`, use the `bootspring_seed` MCP tool with build actions:
|
|
13
|
+
|
|
14
|
+
## Actions
|
|
15
|
+
|
|
16
|
+
- `/build` → `bootspring_seed` with action: "build-status"
|
|
17
|
+
- `/build status` → `bootspring_seed` with action: "build-status"
|
|
18
|
+
- `/build next` → `bootspring_seed` with action: "build-next"
|
|
19
|
+
- `/build done` → `bootspring_seed` with action: "build-done"
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
1. `/build next` - Get next task
|
|
24
|
+
2. Implement the task
|
|
25
|
+
3. `/build done` - Mark complete
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill
|
|
3
|
+
description: Search and view Bootspring code patterns
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /skill - Bootspring Skills
|
|
7
|
+
|
|
8
|
+
Search and view code patterns from the Bootspring library.
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
When user invokes `/skill`, use the `bootspring_skill` MCP tool:
|
|
13
|
+
|
|
14
|
+
```json
|
|
15
|
+
{
|
|
16
|
+
"action": "search",
|
|
17
|
+
"query": "<user's query>"
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Actions
|
|
22
|
+
|
|
23
|
+
- `/skill <query>` → `bootspring_skill` with action: "search", query: "<query>"
|
|
24
|
+
- `/skill show <name>` → `bootspring_skill` with action: "show", name: "<name>"
|
|
25
|
+
- `/skill list` → `bootspring_skill` with action: "list"
|
|
26
|
+
|
|
27
|
+
## Examples
|
|
28
|
+
|
|
29
|
+
- `/skill auth` → Search for authentication patterns
|
|
30
|
+
- `/skill show auth/clerk` → Show the Clerk auth pattern
|
|
31
|
+
- `/skill list` → List all available patterns
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: todo
|
|
3
|
+
description: Manage Bootspring project todos
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /todo - Bootspring Todos
|
|
7
|
+
|
|
8
|
+
Manage project todos tracked by Bootspring.
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
When user invokes `/todo`, use the `bootspring_todo` MCP tool:
|
|
13
|
+
|
|
14
|
+
## Actions
|
|
15
|
+
|
|
16
|
+
- `/todo` → `bootspring_todo` with action: "list"
|
|
17
|
+
- `/todo add "<task>"` → `bootspring_todo` with action: "add", text: "<task>"
|
|
18
|
+
- `/todo done <id>` → `bootspring_todo` with action: "done", id: "<id>"
|
|
19
|
+
- `/todo clear` → `bootspring_todo` with action: "clear"
|
|
20
|
+
|
|
21
|
+
## Examples
|
|
22
|
+
|
|
23
|
+
- `/todo` - List all todos
|
|
24
|
+
- `/todo add "Fix login bug"` - Add new todo
|
|
25
|
+
- `/todo done 1` - Complete todo #1
|