@stackbilt/cli 0.3.2 → 0.3.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.
@@ -0,0 +1,601 @@
1
+ "use strict";
2
+ /**
3
+ * charter bootstrap
4
+ *
5
+ * One-command repo onboarding: detect + setup + ADF init + install + doctor.
6
+ * Replaces the multi-step manual process with a single orchestrated flow.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.bootstrapCommand = bootstrapCommand;
43
+ const fs = __importStar(require("node:fs"));
44
+ const path = __importStar(require("node:path"));
45
+ const crypto = __importStar(require("node:crypto"));
46
+ const node_child_process_1 = require("node:child_process");
47
+ const index_1 = require("../index");
48
+ const init_1 = require("./init");
49
+ const setup_1 = require("./setup");
50
+ const adf_1 = require("./adf");
51
+ const config_1 = require("../config");
52
+ const adf_2 = require("@stackbilt/adf");
53
+ // ============================================================================
54
+ // Command Entry
55
+ // ============================================================================
56
+ async function bootstrapCommand(options, args) {
57
+ const ciTarget = getFlag(args, '--ci');
58
+ const presetFlag = getFlag(args, '--preset');
59
+ const skipInstall = args.includes('--skip-install');
60
+ const skipDoctor = args.includes('--skip-doctor');
61
+ const force = options.yes;
62
+ if (ciTarget && ciTarget !== 'github') {
63
+ throw new index_1.CLIError(`Unsupported CI target: ${ciTarget}. Supported: github`);
64
+ }
65
+ if (presetFlag && !isValidPreset(presetFlag)) {
66
+ throw new index_1.CLIError(`Invalid --preset value: ${presetFlag}. Use worker|frontend|backend|fullstack.`);
67
+ }
68
+ const result = {
69
+ status: 'success',
70
+ steps: [],
71
+ nextSteps: [],
72
+ };
73
+ let warnings = 0;
74
+ // ========================================================================
75
+ // Phase 1: Detect
76
+ // ========================================================================
77
+ const detectResult = runDetectPhase(options, presetFlag);
78
+ result.steps.push(detectResult.step);
79
+ if (detectResult.step.status === 'fail')
80
+ warnings++;
81
+ const selectedPreset = detectResult.selectedPreset;
82
+ const detection = detectResult.detection;
83
+ const contexts = detectResult.contexts;
84
+ const packageManager = detectResult.packageManager;
85
+ if (options.format === 'text') {
86
+ console.log('[1/5] Detecting stack...');
87
+ console.log(` Stack: ${selectedPreset} (${detection.confidence} confidence)`);
88
+ console.log(` Monorepo: ${detection.monorepo ? 'yes' : 'no'}${detection.monorepo && detection.signals.hasPnpm ? ' (pnpm workspace)' : ''}`);
89
+ if (detection.warnings.length > 0) {
90
+ for (const w of detection.warnings) {
91
+ console.log(` Warning: ${w}`);
92
+ }
93
+ }
94
+ console.log('');
95
+ }
96
+ // ========================================================================
97
+ // Phase 2: Setup
98
+ // ========================================================================
99
+ const setupResult = runSetupPhase(options, selectedPreset, detection, contexts, ciTarget, packageManager, force);
100
+ result.steps.push(setupResult.step);
101
+ if (setupResult.step.status === 'fail')
102
+ warnings++;
103
+ if (options.format === 'text') {
104
+ console.log('[2/5] Setting up governance...');
105
+ for (const f of (setupResult.step.details.created || [])) {
106
+ console.log(` Created ${f}`);
107
+ }
108
+ for (const f of (setupResult.step.details.updated || [])) {
109
+ console.log(` Updated ${f}`);
110
+ }
111
+ console.log('');
112
+ }
113
+ // ========================================================================
114
+ // Phase 3: ADF Init
115
+ // ========================================================================
116
+ const adfResult = runAdfInitPhase(options, force);
117
+ result.steps.push(adfResult.step);
118
+ if (adfResult.step.status === 'fail')
119
+ warnings++;
120
+ if (options.format === 'text') {
121
+ console.log('[3/5] Initializing ADF context...');
122
+ for (const f of (adfResult.step.details.files || [])) {
123
+ console.log(` Created ${f}`);
124
+ }
125
+ for (const f of (adfResult.step.details.pointers || [])) {
126
+ console.log(` Generated ${f}`);
127
+ }
128
+ console.log('');
129
+ }
130
+ // ========================================================================
131
+ // Phase 4: Install
132
+ // ========================================================================
133
+ const installResult = runInstallPhase(options, skipInstall);
134
+ result.steps.push(installResult.step);
135
+ if (installResult.step.status === 'fail')
136
+ warnings++;
137
+ if (options.format === 'text') {
138
+ console.log('[4/5] Installing dependencies...');
139
+ if (skipInstall) {
140
+ console.log(' Skipped (--skip-install)');
141
+ }
142
+ else {
143
+ console.log(` Detected: ${installResult.step.details.packageManager}`);
144
+ console.log(` Running: ${installResult.step.details.command}`);
145
+ if (installResult.step.status === 'pass') {
146
+ console.log(' Done');
147
+ }
148
+ else {
149
+ console.log(` Failed: ${installResult.step.details.error}`);
150
+ console.log(' (non-fatal: run install manually)');
151
+ }
152
+ }
153
+ console.log('');
154
+ }
155
+ // ========================================================================
156
+ // Phase 5: Doctor
157
+ // ========================================================================
158
+ const doctorResult = runDoctorPhase(options, skipDoctor);
159
+ result.steps.push(doctorResult.step);
160
+ if (doctorResult.step.status === 'fail')
161
+ warnings++;
162
+ if (options.format === 'text') {
163
+ console.log('[5/5] Running health check...');
164
+ if (skipDoctor) {
165
+ console.log(' Skipped (--skip-doctor)');
166
+ }
167
+ else {
168
+ const checks = doctorResult.step.details.checks || [];
169
+ for (const check of checks) {
170
+ const icon = check.status === 'PASS' ? '[ok]' : '[warn]';
171
+ console.log(` ${icon} ${check.name}`);
172
+ }
173
+ }
174
+ console.log('');
175
+ }
176
+ // ========================================================================
177
+ // Summary
178
+ // ========================================================================
179
+ const failCount = result.steps.filter(s => s.status === 'fail').length;
180
+ result.status = failCount === 0 ? 'success' : failCount < result.steps.length ? 'partial' : 'failure';
181
+ // Build next steps
182
+ result.nextSteps.push({
183
+ cmd: 'Review .charter/patterns/ and customize for your stack',
184
+ required: false,
185
+ reason: 'Customize blessed stack patterns',
186
+ });
187
+ result.nextSteps.push({
188
+ cmd: 'Add project-specific rules to .ai/core.adf',
189
+ required: false,
190
+ reason: 'Add project-specific ADF rules',
191
+ });
192
+ result.nextSteps.push({
193
+ cmd: 'git add .charter .ai CLAUDE.md .cursorrules agents.md && git commit -m "chore: bootstrap charter governance"',
194
+ required: false,
195
+ reason: 'Commit governance baseline',
196
+ });
197
+ if (options.format === 'json') {
198
+ console.log(JSON.stringify(result, null, 2));
199
+ }
200
+ else {
201
+ console.log(`Bootstrap complete. ${warnings} warning${warnings === 1 ? '' : 's'}.`);
202
+ console.log('');
203
+ console.log('Next steps:');
204
+ result.nextSteps.forEach((step, i) => {
205
+ console.log(` ${i + 1}. ${step.cmd}`);
206
+ });
207
+ }
208
+ return index_1.EXIT_CODE.SUCCESS;
209
+ }
210
+ // ============================================================================
211
+ // Phase 1: Detect
212
+ // ============================================================================
213
+ function runDetectPhase(_options, presetFlag) {
214
+ const warnings = [];
215
+ try {
216
+ const contexts = (0, setup_1.loadPackageContexts)();
217
+ const detection = (0, setup_1.detectStack)(contexts);
218
+ const packageManager = (0, setup_1.detectPackageManager)(contexts);
219
+ const selectedPreset = isValidPreset(presetFlag) ? presetFlag : detection.suggestedPreset;
220
+ warnings.push(...detection.warnings);
221
+ return {
222
+ step: {
223
+ name: 'detect',
224
+ status: 'pass',
225
+ details: {
226
+ stack: selectedPreset,
227
+ confidence: detection.confidence,
228
+ monorepo: detection.monorepo,
229
+ runtime: detection.runtime,
230
+ frameworks: detection.frameworks,
231
+ },
232
+ warnings,
233
+ },
234
+ selectedPreset,
235
+ detection,
236
+ contexts,
237
+ packageManager,
238
+ };
239
+ }
240
+ catch (err) {
241
+ const msg = err instanceof Error ? err.message : String(err);
242
+ warnings.push(`Detection failed: ${msg}`);
243
+ const emptyContexts = loadPackageContextsSafe();
244
+ return {
245
+ step: {
246
+ name: 'detect',
247
+ status: 'fail',
248
+ details: { error: msg },
249
+ warnings,
250
+ },
251
+ selectedPreset: isValidPreset(presetFlag) ? presetFlag : 'fullstack',
252
+ detection: {
253
+ runtime: [],
254
+ frameworks: [],
255
+ state: [],
256
+ sources: [],
257
+ agentStandards: [],
258
+ monorepo: false,
259
+ signals: {
260
+ hasFrontend: false,
261
+ hasBackend: false,
262
+ hasWorker: false,
263
+ hasCloudflare: false,
264
+ hasHono: false,
265
+ hasReact: false,
266
+ hasVite: false,
267
+ hasPnpm: false,
268
+ },
269
+ mixedStack: false,
270
+ confidence: 'LOW',
271
+ suggestedPreset: 'fullstack',
272
+ warnings: [],
273
+ },
274
+ contexts: emptyContexts,
275
+ packageManager: 'npm',
276
+ };
277
+ }
278
+ }
279
+ function loadPackageContextsSafe() {
280
+ try {
281
+ return (0, setup_1.loadPackageContexts)();
282
+ }
283
+ catch {
284
+ return [];
285
+ }
286
+ }
287
+ // ============================================================================
288
+ // Phase 2: Setup
289
+ // ============================================================================
290
+ function runSetupPhase(options, selectedPreset, detection, contexts, ciTarget, packageManager, force) {
291
+ const warnings = [];
292
+ const created = [];
293
+ const updated = [];
294
+ try {
295
+ // Initialize .charter/ directory
296
+ const initResult = (0, init_1.initializeCharter)(options.configPath, force, {
297
+ preset: selectedPreset,
298
+ projectName: (0, setup_1.inferProjectName)(contexts),
299
+ features: {
300
+ cloudflare: detection.signals.hasCloudflare,
301
+ hono: detection.signals.hasHono,
302
+ react: detection.signals.hasReact,
303
+ vite: detection.signals.hasVite,
304
+ },
305
+ });
306
+ if (initResult.created) {
307
+ for (const f of initResult.files) {
308
+ created.push(path.join(options.configPath, f));
309
+ }
310
+ }
311
+ // Generate CI workflow if requested
312
+ if (ciTarget === 'github') {
313
+ const workflowPath = path.join('.github', 'workflows', 'charter-governance.yml');
314
+ const workflowWrite = (0, setup_1.applyManagedFile)(workflowPath, (0, setup_1.getGithubWorkflow)(packageManager), true);
315
+ if (workflowWrite.created) {
316
+ created.push(workflowPath);
317
+ }
318
+ else if (workflowWrite.updated) {
319
+ updated.push(workflowPath);
320
+ }
321
+ }
322
+ // Sync package.json scripts + devDependency
323
+ const manifestApplied = (0, setup_1.syncPackageManifest)(selectedPreset, true, true);
324
+ if (manifestApplied.legacy.scripts.updated) {
325
+ updated.push('package.json (scripts)');
326
+ }
327
+ if (manifestApplied.legacy.dependencies.updated) {
328
+ updated.push('package.json (devDependencies)');
329
+ }
330
+ return {
331
+ step: {
332
+ name: 'setup',
333
+ status: 'pass',
334
+ details: { created, updated },
335
+ warnings,
336
+ },
337
+ };
338
+ }
339
+ catch (err) {
340
+ const msg = err instanceof Error ? err.message : String(err);
341
+ warnings.push(`Setup failed: ${msg}`);
342
+ return {
343
+ step: {
344
+ name: 'setup',
345
+ status: 'fail',
346
+ details: { created, updated, error: msg },
347
+ warnings,
348
+ },
349
+ };
350
+ }
351
+ }
352
+ // ============================================================================
353
+ // Phase 3: ADF Init
354
+ // ============================================================================
355
+ function runAdfInitPhase(options, force) {
356
+ const warnings = [];
357
+ const files = [];
358
+ const pointers = [];
359
+ try {
360
+ const aiDir = '.ai';
361
+ const manifestPath = path.join(aiDir, 'manifest.adf');
362
+ // Create .ai/ scaffolds
363
+ const alreadyExists = fs.existsSync(manifestPath);
364
+ if (!alreadyExists || force) {
365
+ fs.mkdirSync(aiDir, { recursive: true });
366
+ fs.writeFileSync(path.join(aiDir, 'manifest.adf'), adf_1.MANIFEST_SCAFFOLD);
367
+ fs.writeFileSync(path.join(aiDir, 'core.adf'), adf_1.CORE_SCAFFOLD);
368
+ fs.writeFileSync(path.join(aiDir, 'state.adf'), adf_1.STATE_SCAFFOLD);
369
+ files.push('.ai/manifest.adf', '.ai/core.adf', '.ai/state.adf');
370
+ // Write .adf.lock
371
+ const lockData = {};
372
+ for (const mod of ['core.adf', 'state.adf']) {
373
+ const content = fs.readFileSync(path.join(aiDir, mod), 'utf-8');
374
+ lockData[mod] = hashContent(content);
375
+ }
376
+ fs.writeFileSync(path.join(aiDir, '.adf.lock'), JSON.stringify(lockData, null, 2) + '\n');
377
+ files.push('.ai/.adf.lock');
378
+ }
379
+ else {
380
+ warnings.push('.ai/ already exists; skipping scaffold (use --yes to overwrite)');
381
+ }
382
+ // Generate thin pointer files
383
+ const pointerFiles = [
384
+ { name: 'CLAUDE.md', content: adf_1.POINTER_CLAUDE_MD, label: 'CLAUDE.md (thin pointer)' },
385
+ { name: '.cursorrules', content: adf_1.POINTER_CURSORRULES, label: '.cursorrules (thin pointer)' },
386
+ { name: 'agents.md', content: adf_1.POINTER_AGENTS_MD, label: 'agents.md (thin pointer)' },
387
+ ];
388
+ for (const pf of pointerFiles) {
389
+ const pointerPath = path.resolve(pf.name);
390
+ const exists = fs.existsSync(pointerPath);
391
+ if (!exists || force) {
392
+ fs.writeFileSync(pointerPath, pf.content);
393
+ pointers.push(pf.label);
394
+ }
395
+ else {
396
+ warnings.push(`${pf.name} already exists; skipping (use --yes to overwrite)`);
397
+ }
398
+ }
399
+ return {
400
+ step: {
401
+ name: 'adf-init',
402
+ status: 'pass',
403
+ details: { files, pointers },
404
+ warnings,
405
+ },
406
+ };
407
+ }
408
+ catch (err) {
409
+ const msg = err instanceof Error ? err.message : String(err);
410
+ warnings.push(`ADF init failed: ${msg}`);
411
+ return {
412
+ step: {
413
+ name: 'adf-init',
414
+ status: 'fail',
415
+ details: { files, pointers, error: msg },
416
+ warnings,
417
+ },
418
+ };
419
+ }
420
+ }
421
+ // ============================================================================
422
+ // Phase 4: Install
423
+ // ============================================================================
424
+ function runInstallPhase(_options, skipInstall) {
425
+ const warnings = [];
426
+ if (skipInstall) {
427
+ return {
428
+ step: {
429
+ name: 'install',
430
+ status: 'skip',
431
+ details: { skipped: true, reason: '--skip-install' },
432
+ warnings,
433
+ },
434
+ };
435
+ }
436
+ // Detect package manager from lockfiles
437
+ const pm = detectPackageManagerFromLockfiles();
438
+ const command = `${pm} install`;
439
+ try {
440
+ (0, node_child_process_1.execSync)(command, {
441
+ stdio: 'pipe',
442
+ env: { ...process.env, CI: 'true' },
443
+ timeout: 120_000,
444
+ });
445
+ return {
446
+ step: {
447
+ name: 'install',
448
+ status: 'pass',
449
+ details: { packageManager: pm, command },
450
+ warnings,
451
+ },
452
+ };
453
+ }
454
+ catch (err) {
455
+ const msg = err instanceof Error ? err.message : String(err);
456
+ warnings.push(`Install failed: ${msg}`);
457
+ return {
458
+ step: {
459
+ name: 'install',
460
+ status: 'fail',
461
+ details: { packageManager: pm, command, error: msg },
462
+ warnings,
463
+ },
464
+ };
465
+ }
466
+ }
467
+ function detectPackageManagerFromLockfiles() {
468
+ if (fs.existsSync(path.resolve('pnpm-lock.yaml')))
469
+ return 'pnpm';
470
+ if (fs.existsSync(path.resolve('yarn.lock')))
471
+ return 'yarn';
472
+ if (fs.existsSync(path.resolve('package-lock.json')))
473
+ return 'npm';
474
+ return 'npm';
475
+ }
476
+ // ============================================================================
477
+ // Phase 5: Doctor
478
+ // ============================================================================
479
+ function runDoctorPhase(options, skipDoctor) {
480
+ const warnings = [];
481
+ if (skipDoctor) {
482
+ return {
483
+ step: {
484
+ name: 'doctor',
485
+ status: 'skip',
486
+ details: { skipped: true, reason: '--skip-doctor' },
487
+ warnings,
488
+ },
489
+ };
490
+ }
491
+ const checks = [];
492
+ try {
493
+ // Git repository check
494
+ let inGitRepo = false;
495
+ try {
496
+ (0, node_child_process_1.execSync)('git rev-parse --is-inside-work-tree', { stdio: 'ignore' });
497
+ inGitRepo = true;
498
+ }
499
+ catch {
500
+ // not in a git repo
501
+ }
502
+ checks.push({
503
+ name: 'Git repository',
504
+ status: inGitRepo ? 'PASS' : 'WARN',
505
+ details: inGitRepo ? 'Repository detected.' : 'Not inside a git repository.',
506
+ });
507
+ // config.json check
508
+ const configFile = path.join(options.configPath, 'config.json');
509
+ const hasConfig = fs.existsSync(configFile);
510
+ checks.push({
511
+ name: 'config.json',
512
+ status: hasConfig ? 'PASS' : 'WARN',
513
+ details: hasConfig ? `${configFile} exists.` : `${configFile} not found.`,
514
+ });
515
+ // Patterns check
516
+ const patterns = (0, config_1.loadPatterns)(options.configPath);
517
+ checks.push({
518
+ name: 'Patterns loaded',
519
+ status: patterns.length > 0 ? 'PASS' : 'WARN',
520
+ details: patterns.length > 0
521
+ ? `${patterns.length} pattern(s) loaded.`
522
+ : 'No patterns found.',
523
+ });
524
+ // ADF manifest check
525
+ const manifestPath = path.join('.ai', 'manifest.adf');
526
+ const hasManifest = fs.existsSync(manifestPath);
527
+ checks.push({
528
+ name: 'ADF manifest',
529
+ status: hasManifest ? 'PASS' : 'WARN',
530
+ details: hasManifest ? `${manifestPath} exists.` : `${manifestPath} not found.`,
531
+ });
532
+ // ADF sync lock check
533
+ if (hasManifest) {
534
+ try {
535
+ const manifestContent = fs.readFileSync(manifestPath, 'utf-8');
536
+ const manifestDoc = (0, adf_2.parseAdf)(manifestContent);
537
+ const manifest = (0, adf_2.parseManifest)(manifestDoc);
538
+ if (manifest.sync.length > 0) {
539
+ const lockFile = path.join('.ai', '.adf.lock');
540
+ const hasLock = fs.existsSync(lockFile);
541
+ checks.push({
542
+ name: 'ADF sync lock',
543
+ status: hasLock ? 'PASS' : 'WARN',
544
+ details: hasLock ? `${lockFile} exists.` : `${lockFile} not found.`,
545
+ });
546
+ }
547
+ }
548
+ catch {
549
+ // Manifest parse failed — just check for lock file presence
550
+ const lockFile = path.join('.ai', '.adf.lock');
551
+ const hasLock = fs.existsSync(lockFile);
552
+ checks.push({
553
+ name: 'ADF sync lock',
554
+ status: hasLock ? 'PASS' : 'WARN',
555
+ details: hasLock ? `${lockFile} exists.` : `${lockFile} not found.`,
556
+ });
557
+ }
558
+ }
559
+ const hasWarn = checks.some(c => c.status === 'WARN');
560
+ if (hasWarn) {
561
+ warnings.push('Some health checks returned warnings.');
562
+ }
563
+ return {
564
+ step: {
565
+ name: 'doctor',
566
+ status: hasWarn ? 'fail' : 'pass',
567
+ details: { checks },
568
+ warnings,
569
+ },
570
+ };
571
+ }
572
+ catch (err) {
573
+ const msg = err instanceof Error ? err.message : String(err);
574
+ warnings.push(`Doctor failed: ${msg}`);
575
+ return {
576
+ step: {
577
+ name: 'doctor',
578
+ status: 'fail',
579
+ details: { checks, error: msg },
580
+ warnings,
581
+ },
582
+ };
583
+ }
584
+ }
585
+ // ============================================================================
586
+ // Helpers
587
+ // ============================================================================
588
+ function getFlag(args, flag) {
589
+ const idx = args.indexOf(flag);
590
+ if (idx !== -1 && idx + 1 < args.length) {
591
+ return args[idx + 1];
592
+ }
593
+ return undefined;
594
+ }
595
+ function isValidPreset(value) {
596
+ return value === 'worker' || value === 'frontend' || value === 'backend' || value === 'fullstack';
597
+ }
598
+ function hashContent(content) {
599
+ return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);
600
+ }
601
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"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"}