@girardmedia/bootspring 2.2.1 → 2.3.1

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 CHANGED
@@ -3,7 +3,7 @@
3
3
  > Development scaffolding with intelligence
4
4
 
5
5
  [![npm version](https://badge.fury.io/js/@girardmedia%2Fbootspring.svg)](https://www.npmjs.com/package/@girardmedia/bootspring)
6
- [![CI](https://github.com/bootspring/bootspring/actions/workflows/ci.yml/badge.svg)](https://github.com/bootspring/bootspring/actions/workflows/ci.yml)
6
+ [![CI](https://github.com/Girard-Media/bootspring/actions/workflows/ci.yml/badge.svg)](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/bootspring/bootspring)
407
+ [Website](https://bootspring.com) · [Documentation](https://bootspring.com/docs) · [GitHub](https://github.com/Girard-Media/bootspring)
package/bin/bootspring.js CHANGED
@@ -1,15 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- /** Bootspring CLI bridge. Stable runtime by default, monorepo preview via --v2. */
3
+ /**
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.
7
+ */
4
8
 
5
9
  const path = require('path');
6
10
  const fs = require('fs');
7
11
  const { spawn } = require('child_process');
8
12
 
9
13
  const VERSION = require('../package.json').version;
10
- const STABLE_CLI_DIST = path.join(__dirname, '../dist/index.js');
11
- const MONOREPO_CLI_DIST = path.join(__dirname, '../monorepo/apps/cli/dist/index.js');
12
- const USE_V2 = process.env.BOOTSPRING_V2 === 'true' || process.argv.includes('--v2');
14
+ const CLI_DIST = path.join(__dirname, '../dist/cli/index.cjs');
13
15
 
14
16
  const C = {
15
17
  reset: '\x1b[0m',
@@ -21,66 +23,6 @@ const C = {
21
23
  red: '\x1b[31m'
22
24
  };
23
25
 
24
- const LOGO = `${C.cyan}${C.bold}⚡ Bootspring${C.reset} ${C.dim}v${VERSION}${C.reset}${USE_V2 ? ` ${C.green}(v2-beta)${C.reset}` : ''}`;
25
-
26
- const COMMANDS = {
27
- auth: 'auth',
28
- init: 'init',
29
- project: 'project',
30
- switch: { module: 'switchCmd' },
31
- health: 'health',
32
- mcp: 'mcp',
33
- dashboard: 'dashboard',
34
- context: 'context',
35
- build: 'build',
36
- deploy: 'deploy',
37
- loop: 'loop',
38
- quality: 'quality',
39
- security: 'security',
40
- doctor: 'doctor',
41
- update: 'update',
42
- plan: 'plan',
43
- prd: 'prd',
44
- preseed: 'preseed',
45
- 'preseed-start': { module: 'preseedStart', method: 'start' },
46
- 'preseed-from-codebase': { module: 'preseed', prepend: ['from-codebase'] },
47
- seed: 'seed',
48
- manager: 'manager',
49
- agent: 'agent',
50
- skill: 'skill',
51
- todo: 'todo',
52
- billing: 'billing',
53
- plugin: 'plugin',
54
- analyze: 'analyze',
55
- audit: 'audit',
56
- monitor: 'monitor',
57
- metrics: 'metrics',
58
- validate: 'validate',
59
- visualize: 'visualize',
60
- generate: 'generate',
61
- content: 'content',
62
- docs: 'docs',
63
- learn: 'learn',
64
- memory: 'memory',
65
- suggest: 'suggest',
66
- orchestrator: 'orchestrator',
67
- watch: 'watch',
68
- business: 'business',
69
- fundraise: 'fundraise',
70
- legal: 'legal',
71
- org: 'org',
72
- workspace: 'workspace',
73
- 'cloud-sync': { module: 'cloudSync' },
74
- github: { module: 'githubCmd' },
75
- onboard: 'onboard',
76
- checkpoint: 'checkpoint',
77
- setup: 'setup',
78
- log: 'log',
79
- mvp: 'mvp',
80
- task: 'task',
81
- telemetry: 'telemetry'
82
- };
83
-
84
26
  const HELP_GROUPS = {
85
27
  'Core': ['auth', 'init', 'project', 'switch', 'health', 'mcp', 'dashboard', 'context'],
86
28
  'Build & Deploy': ['build', 'deploy', 'loop', 'quality', 'security', 'doctor', 'update'],
@@ -95,7 +37,7 @@ const HELP_GROUPS = {
95
37
  };
96
38
 
97
39
  function showHelp() {
98
- console.log(LOGO);
40
+ console.log(`${C.cyan}${C.bold}⚡ Bootspring${C.reset} ${C.dim}v${VERSION}${C.reset}`);
99
41
  console.log(`${C.dim}Development scaffolding with intelligence${C.reset}\n`);
100
42
  console.log(`${C.bold}Usage:${C.reset} bootspring <command> [options]\n`);
101
43
 
@@ -104,62 +46,19 @@ function showHelp() {
104
46
  }
105
47
 
106
48
  console.log(`\n${C.dim}Run "bootspring <command> --help" for command details${C.reset}`);
107
- console.log(`${C.dim}Use --v2 to try the monorepo preview CLI${C.reset}`);
108
- console.log(`${C.dim}The preview CLI is not the production MCP/server path${C.reset}`);
109
49
  console.log(`${C.dim}Docs: https://bootspring.com/docs${C.reset}\n`);
110
50
  }
111
51
 
112
- function loadStableCli() {
113
- if (!fs.existsSync(STABLE_CLI_DIST)) {
114
- console.error(`${C.red}Error: stable CLI build not found at ${STABLE_CLI_DIST}${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}`);
115
55
  console.error(`${C.dim}Please run 'npm run build' first.${C.reset}`);
116
56
  process.exit(1);
117
57
  }
118
58
 
119
- return require(STABLE_CLI_DIST);
120
- }
121
-
122
- async function runStable(command, args) {
123
- const config = COMMANDS[command];
124
- if (!config) {
125
- return false;
126
- }
127
-
128
- const stableCli = loadStableCli();
129
- const route = typeof config === 'string'
130
- ? { module: config, method: 'run', prepend: [] }
131
- : { method: 'run', prepend: [], ...config };
132
- const cliModule = stableCli.cli && stableCli.cli[route.module];
133
- const handler = cliModule && cliModule[route.method];
134
- const normalizedArgs = args[0] === '--help' || args[0] === '-h'
135
- ? ['help', ...args.slice(1)]
136
- : args;
137
-
138
- if (typeof handler !== 'function') {
139
- console.error(`${C.red}Error: missing stable CLI handler for ${command}${C.reset}`);
140
- process.exit(1);
141
- }
142
-
143
- const result = await Promise.resolve(handler([...(route.prepend || []), ...normalizedArgs]));
144
- if (typeof result === 'number' && Number.isFinite(result)) {
145
- process.exit(result);
146
- }
147
-
148
- return true;
149
- }
150
-
151
- async function runV2(args) {
152
- if (!fs.existsSync(MONOREPO_CLI_DIST)) {
153
- console.error(`${C.red}Error: v2 CLI build not found at ${MONOREPO_CLI_DIST}${C.reset}`);
154
- console.error(`${C.dim}Please run 'cd monorepo && pnpm build' first.${C.reset}`);
155
- process.exit(1);
156
- }
157
-
158
- console.error(`${C.yellow}Warning: using preview v2 CLI. Stable npm CLI remains the supported production path.${C.reset}`);
159
- const cleanArgs = args.filter(arg => arg !== '--v2');
160
- const child = spawn('node', [MONOREPO_CLI_DIST, ...cleanArgs], {
59
+ const child = spawn('node', [CLI_DIST, ...args], {
161
60
  stdio: 'inherit',
162
- env: { ...process.env, BOOTSPRING_V2_BRIDGE: 'true' }
61
+ env: { ...process.env, BOOTSPRING_BRIDGE: 'true' }
163
62
  });
164
63
 
165
64
  child.on('exit', (code) => {
@@ -168,24 +67,20 @@ async function runV2(args) {
168
67
  }
169
68
 
170
69
  async function main() {
171
- const rawArgs = process.argv.slice(2);
172
- const args = rawArgs.filter(arg => arg !== '--v2');
70
+ const args = process.argv.slice(2);
173
71
  const command = args[0];
174
72
 
175
73
  if (!command || command === '--help' || command === '-h' || command === 'help') {
176
- if (command === 'help' && args[1]) {
177
- const handled = await runStable(args[1], ['--help']);
178
- if (handled) return;
179
- }
180
74
  showHelp();
181
75
  return;
182
76
  }
183
77
 
184
78
  if (command === '--version' || command === '-v') {
185
- console.log(`Bootspring v${VERSION} (Bridge)`);
79
+ console.log(`Bootspring v${VERSION}`);
186
80
  return;
187
81
  }
188
82
 
83
+ // Self-update check (best-effort from thin-client core)
189
84
  try {
190
85
  const { selfUpdate } = require(path.resolve(__dirname, '../dist/core'));
191
86
  selfUpdate.ensureLatestVersion(args);
@@ -193,18 +88,8 @@ async function main() {
193
88
  // Best-effort; do not block CLI on update failures.
194
89
  }
195
90
 
196
- if (USE_V2) {
197
- await runV2(args);
198
- return;
199
- }
200
-
201
- if (await runStable(command, args.slice(1))) {
202
- return;
203
- }
204
-
205
- console.log(`${C.red}Unknown command: ${command}${C.reset}`);
206
- showHelp();
207
- process.exit(1);
91
+ // Route everything through the v2 monorepo CLI
92
+ runCli(args);
208
93
  }
209
94
 
210
95
  main().catch((error) => {
@@ -1,25 +1,35 @@
1
1
  ---
2
2
  name: build
3
- description: Bootspring build management
3
+ description: Bootspring build task management (NOT npm run build)
4
4
  ---
5
5
 
6
- # /build - Bootspring Build
6
+ # /build - Bootspring Build Task System
7
7
 
8
- Manage the Bootspring build loop and task execution.
8
+ Manage the Bootspring build loop and task execution. This is the **task queue system**, NOT npm build.
9
9
 
10
10
  ## Instructions
11
11
 
12
- When user invokes `/build`, use the `bootspring_seed` MCP tool with build actions:
12
+ When user invokes `/build` or says "build next", "build loop", "build done", use the `bootspring_build` MCP tool:
13
13
 
14
14
  ## Actions
15
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"
16
+ - `/build` or `/build status` → `bootspring_build` with action: "status"
17
+ - `/build next` → `bootspring_build` with action: "next"
18
+ - `/build done` → `bootspring_build` with action: "done"
19
+ - `/build loop` → `bootspring_build` with action: "advance" (autonomous loop)
20
+ - `/build skip` → `bootspring_build` with action: "skip"
21
+ - `/build list` → `bootspring_build` with action: "list"
22
+ - `/build current` → `bootspring_build` with action: "current"
23
+
24
+ ## Important
25
+
26
+ - "build" in Bootspring context means **task execution**, not `npm run build`
27
+ - "build next" means get the **next pending task**, not build a Next.js app
28
+ - "build loop" means **autonomous task loop**, not a cron job
29
+ - Only use `npm run build` if the user explicitly asks to compile/bundle the project
20
30
 
21
31
  ## Workflow
22
32
 
23
- 1. `/build next` - Get next task
24
- 2. Implement the task
25
- 3. `/build done` - Mark complete
33
+ 1. `/build next` - Get next pending task from the queue
34
+ 2. Read the task details and implement it in the codebase
35
+ 3. `/build done` - Mark task complete and auto-advance to next