@stackbilt/cli 0.4.2 → 0.6.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.
Files changed (82) hide show
  1. package/README.md +17 -1
  2. package/dist/__tests__/adf-metrics.test.d.ts +2 -0
  3. package/dist/__tests__/adf-metrics.test.d.ts.map +1 -0
  4. package/dist/__tests__/adf-metrics.test.js +117 -0
  5. package/dist/__tests__/adf-metrics.test.js.map +1 -0
  6. package/dist/__tests__/git-helpers.test.d.ts +2 -0
  7. package/dist/__tests__/git-helpers.test.d.ts.map +1 -0
  8. package/dist/__tests__/git-helpers.test.js +136 -0
  9. package/dist/__tests__/git-helpers.test.js.map +1 -0
  10. package/dist/__tests__/telemetry.test.d.ts +2 -0
  11. package/dist/__tests__/telemetry.test.d.ts.map +1 -0
  12. package/dist/__tests__/telemetry.test.js +119 -0
  13. package/dist/__tests__/telemetry.test.js.map +1 -0
  14. package/dist/commands/adf-bundle.d.ts.map +1 -1
  15. package/dist/commands/adf-bundle.js +5 -15
  16. package/dist/commands/adf-bundle.js.map +1 -1
  17. package/dist/commands/adf-evidence.d.ts.map +1 -1
  18. package/dist/commands/adf-evidence.js +57 -50
  19. package/dist/commands/adf-evidence.js.map +1 -1
  20. package/dist/commands/adf-metrics.d.ts +8 -0
  21. package/dist/commands/adf-metrics.d.ts.map +1 -0
  22. package/dist/commands/adf-metrics.js +242 -0
  23. package/dist/commands/adf-metrics.js.map +1 -0
  24. package/dist/commands/adf-migrate.d.ts +17 -0
  25. package/dist/commands/adf-migrate.d.ts.map +1 -1
  26. package/dist/commands/adf-migrate.js +36 -14
  27. package/dist/commands/adf-migrate.js.map +1 -1
  28. package/dist/commands/adf-sync.d.ts.map +1 -1
  29. package/dist/commands/adf-sync.js +2 -8
  30. package/dist/commands/adf-sync.js.map +1 -1
  31. package/dist/commands/adf.d.ts +5 -0
  32. package/dist/commands/adf.d.ts.map +1 -1
  33. package/dist/commands/adf.js +118 -82
  34. package/dist/commands/adf.js.map +1 -1
  35. package/dist/commands/audit.d.ts.map +1 -1
  36. package/dist/commands/audit.js +19 -87
  37. package/dist/commands/audit.js.map +1 -1
  38. package/dist/commands/bootstrap.d.ts.map +1 -1
  39. package/dist/commands/bootstrap.js +160 -52
  40. package/dist/commands/bootstrap.js.map +1 -1
  41. package/dist/commands/doctor.d.ts.map +1 -1
  42. package/dist/commands/doctor.js +4 -15
  43. package/dist/commands/doctor.js.map +1 -1
  44. package/dist/commands/drift.d.ts.map +1 -1
  45. package/dist/commands/drift.js +2 -8
  46. package/dist/commands/drift.js.map +1 -1
  47. package/dist/commands/hook.d.ts.map +1 -1
  48. package/dist/commands/hook.js +4 -14
  49. package/dist/commands/hook.js.map +1 -1
  50. package/dist/commands/init.d.ts +1 -1
  51. package/dist/commands/init.d.ts.map +1 -1
  52. package/dist/commands/init.js +29 -9
  53. package/dist/commands/init.js.map +1 -1
  54. package/dist/commands/setup.d.ts.map +1 -1
  55. package/dist/commands/setup.js +34 -11
  56. package/dist/commands/setup.js.map +1 -1
  57. package/dist/commands/telemetry.d.ts +8 -0
  58. package/dist/commands/telemetry.d.ts.map +1 -0
  59. package/dist/commands/telemetry.js +184 -0
  60. package/dist/commands/telemetry.js.map +1 -0
  61. package/dist/commands/validate.d.ts.map +1 -1
  62. package/dist/commands/validate.js +11 -97
  63. package/dist/commands/validate.js.map +1 -1
  64. package/dist/commands/why.d.ts.map +1 -1
  65. package/dist/commands/why.js +7 -76
  66. package/dist/commands/why.js.map +1 -1
  67. package/dist/flags.d.ts +20 -0
  68. package/dist/flags.d.ts.map +1 -0
  69. package/dist/flags.js +76 -0
  70. package/dist/flags.js.map +1 -0
  71. package/dist/git-helpers.d.ts +36 -0
  72. package/dist/git-helpers.d.ts.map +1 -0
  73. package/dist/git-helpers.js +146 -0
  74. package/dist/git-helpers.js.map +1 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +94 -54
  77. package/dist/index.js.map +1 -1
  78. package/dist/telemetry.d.ts +29 -0
  79. package/dist/telemetry.d.ts.map +1 -0
  80. package/dist/telemetry.js +88 -0
  81. package/dist/telemetry.js.map +1 -0
  82. package/package.json +8 -8
@@ -40,16 +40,25 @@ var __importStar = (this && this.__importStar) || (function () {
40
40
  })();
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.auditCommand = auditCommand;
43
- const node_child_process_1 = require("node:child_process");
44
43
  const fs = __importStar(require("node:fs"));
45
44
  const path = __importStar(require("node:path"));
46
45
  const index_1 = require("../index");
47
46
  const config_1 = require("../config");
48
47
  const git_1 = require("@stackbilt/git");
49
48
  const git_2 = require("@stackbilt/git");
49
+ const git_helpers_1 = require("../git-helpers");
50
50
  async function auditCommand(options, args = []) {
51
51
  const config = (0, config_1.loadConfig)(options.configPath);
52
52
  const patterns = (0, config_1.loadPatterns)(options.configPath);
53
+ if (!(0, git_helpers_1.hasCommits)()) {
54
+ if (options.format === 'json') {
55
+ console.log(JSON.stringify({ status: 'PASS', summary: 'No commits to audit.' }, null, 2));
56
+ }
57
+ else {
58
+ console.log(' No commits to audit.');
59
+ }
60
+ return index_1.EXIT_CODE.SUCCESS;
61
+ }
53
62
  const range = getCommitRange(args);
54
63
  const commitLoad = getCommits(range);
55
64
  if (commitLoad.error) {
@@ -205,10 +214,10 @@ function printReport(report) {
205
214
  }
206
215
  function getCommits(range) {
207
216
  try {
208
- const metadataLog = runGit(['log', range, '--format=%H%x1f%an%x1f%aI%x1f%B%x1e']);
209
- const filesLog = runGit(['log', range, '--name-only', '--format=%H']);
210
- const filesBySha = parseChangedFilesByCommit(filesLog);
211
- const commits = parseCommitMetadata(metadataLog).map((commit) => ({
217
+ const metadataLog = (0, git_helpers_1.runGit)(['log', range, '--format=%H%x1f%an%x1f%aI%x1f%B%x1e']);
218
+ const filesLog = (0, git_helpers_1.runGit)(['log', range, '--name-only', '--format=%H']);
219
+ const filesBySha = (0, git_helpers_1.parseChangedFilesByCommit)(filesLog);
220
+ const commits = (0, git_helpers_1.parseCommitMetadata)(metadataLog).map((commit) => ({
212
221
  ...commit,
213
222
  files_changed: filesBySha.get(commit.sha) || [],
214
223
  }));
@@ -217,65 +226,24 @@ function getCommits(range) {
217
226
  catch (error) {
218
227
  return {
219
228
  commits: [],
220
- error: getGitErrorMessage(error),
229
+ error: (0, git_helpers_1.getGitErrorMessage)(error),
221
230
  };
222
231
  }
223
232
  }
224
- function parseCommitMetadata(logOutput) {
225
- const commits = [];
226
- for (const rawRecord of logOutput.split('\x1e')) {
227
- const record = rawRecord.trim();
228
- if (!record)
229
- continue;
230
- const [sha = '', author = '', timestamp = '', ...messageParts] = record.split('\x1f');
231
- if (!sha)
232
- continue;
233
- commits.push({
234
- sha: sha.trim(),
235
- author: author.trim(),
236
- timestamp: timestamp.trim(),
237
- message: messageParts.join('\x1f').replace(/\r\n/g, '\n').replace(/\n+$/, ''),
238
- });
239
- }
240
- return commits;
241
- }
242
- function parseChangedFilesByCommit(logOutput) {
243
- const filesBySha = new Map();
244
- let currentSha = '';
245
- for (const rawLine of logOutput.split(/\r?\n/)) {
246
- const line = rawLine.trim();
247
- if (!line)
248
- continue;
249
- if (/^[a-f0-9]{40}$/i.test(line)) {
250
- currentSha = line;
251
- if (!filesBySha.has(currentSha)) {
252
- filesBySha.set(currentSha, []);
253
- }
254
- continue;
255
- }
256
- if (!currentSha)
257
- continue;
258
- const files = filesBySha.get(currentSha);
259
- if (!files || files.includes(line))
260
- continue;
261
- files.push(line);
262
- }
263
- return filesBySha;
264
- }
265
233
  function getCommitRange(args) {
266
234
  const rangeIdx = args.indexOf('--range');
267
235
  if (rangeIdx !== -1 && rangeIdx + 1 < args.length) {
268
236
  return args[rangeIdx + 1];
269
237
  }
270
- const recentRange = getRecentCommitRange();
238
+ const recentRange = (0, git_helpers_1.getRecentCommitRange)();
271
239
  try {
272
- const currentBranch = runGit(['rev-parse', 'HEAD']).trim();
240
+ const currentBranch = (0, git_helpers_1.runGit)(['rev-parse', 'HEAD']).trim();
273
241
  let baseBranch = '';
274
242
  try {
275
- baseBranch = runGit(['rev-parse', '--verify', 'main']).trim();
243
+ baseBranch = (0, git_helpers_1.runGit)(['rev-parse', '--verify', 'main']).trim();
276
244
  }
277
245
  catch {
278
- baseBranch = runGit(['rev-parse', '--verify', 'master']).trim();
246
+ baseBranch = (0, git_helpers_1.runGit)(['rev-parse', '--verify', 'master']).trim();
279
247
  }
280
248
  if (!baseBranch || baseBranch === currentBranch) {
281
249
  return recentRange;
@@ -286,42 +254,6 @@ function getCommitRange(args) {
286
254
  return recentRange;
287
255
  }
288
256
  }
289
- function getRecentCommitRange() {
290
- try {
291
- const count = Number.parseInt(runGit(['rev-list', '--count', 'HEAD']).trim(), 10);
292
- if (!Number.isFinite(count) || count <= 1) {
293
- return 'HEAD';
294
- }
295
- const span = Math.min(5, count - 1);
296
- return `HEAD~${span}..HEAD`;
297
- }
298
- catch {
299
- return 'HEAD';
300
- }
301
- }
302
- function runGit(args) {
303
- return (0, node_child_process_1.execFileSync)('git', args, {
304
- encoding: 'utf-8',
305
- maxBuffer: 10 * 1024 * 1024,
306
- stdio: ['ignore', 'pipe', 'pipe'],
307
- });
308
- }
309
- function getGitErrorMessage(error) {
310
- const fallback = 'Unknown git error.';
311
- if (!(error instanceof Error))
312
- return fallback;
313
- const execError = error;
314
- if (execError.stderr) {
315
- const stderr = execError.stderr.toString().trim();
316
- if (stderr.length > 0) {
317
- return stderr;
318
- }
319
- }
320
- if (execError.message) {
321
- return execError.message.trim();
322
- }
323
- return fallback;
324
- }
325
257
  function getRecommendations(inputs) {
326
258
  const recommendations = [];
327
259
  const missingCoverage = Math.max(0, 67 - inputs.coveragePercent);
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA+C3C,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmK3F"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAyD3C,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA8L3F"}
@@ -45,17 +45,21 @@ const path = __importStar(require("node:path"));
45
45
  const crypto = __importStar(require("node:crypto"));
46
46
  const node_child_process_1 = require("node:child_process");
47
47
  const index_1 = require("../index");
48
+ const flags_1 = require("../flags");
49
+ const git_helpers_1 = require("../git-helpers");
50
+ const adf_1 = require("./adf");
48
51
  const init_1 = require("./init");
49
52
  const setup_1 = require("./setup");
50
- const adf_1 = require("./adf");
53
+ const adf_2 = require("./adf");
51
54
  const config_1 = require("../config");
52
- const adf_2 = require("@stackbilt/adf");
55
+ const adf_3 = require("@stackbilt/adf");
56
+ const adf_migrate_1 = require("./adf-migrate");
53
57
  // ============================================================================
54
58
  // Command Entry
55
59
  // ============================================================================
56
60
  async function bootstrapCommand(options, args) {
57
- const ciTarget = getFlag(args, '--ci');
58
- const presetFlag = getFlag(args, '--preset');
61
+ const ciTarget = (0, flags_1.getFlag)(args, '--ci');
62
+ const presetFlag = (0, flags_1.getFlag)(args, '--preset');
59
63
  const skipInstall = args.includes('--skip-install');
60
64
  const skipDoctor = args.includes('--skip-doctor');
61
65
  const force = options.yes;
@@ -63,7 +67,7 @@ async function bootstrapCommand(options, args) {
63
67
  throw new index_1.CLIError(`Unsupported CI target: ${ciTarget}. Supported: github`);
64
68
  }
65
69
  if (presetFlag && !isValidPreset(presetFlag)) {
66
- throw new index_1.CLIError(`Invalid --preset value: ${presetFlag}. Use worker|frontend|backend|fullstack.`);
70
+ throw new index_1.CLIError(`Invalid --preset value: ${presetFlag}. Use worker|frontend|backend|fullstack|docs.`);
67
71
  }
68
72
  const result = {
69
73
  status: 'success',
@@ -83,7 +87,7 @@ async function bootstrapCommand(options, args) {
83
87
  const contexts = detectResult.contexts;
84
88
  const packageManager = detectResult.packageManager;
85
89
  if (options.format === 'text') {
86
- console.log('[1/5] Detecting stack...');
90
+ console.log('[1/6] Detecting stack...');
87
91
  console.log(` Stack: ${selectedPreset} (${detection.confidence} confidence)`);
88
92
  console.log(` Monorepo: ${detection.monorepo ? 'yes' : 'no'}${detection.monorepo && detection.signals.hasPnpm ? ' (pnpm workspace)' : ''}`);
89
93
  if (detection.warnings.length > 0) {
@@ -101,7 +105,7 @@ async function bootstrapCommand(options, args) {
101
105
  if (setupResult.step.status === 'fail')
102
106
  warnings++;
103
107
  if (options.format === 'text') {
104
- console.log('[2/5] Setting up governance...');
108
+ console.log('[2/6] Setting up governance...');
105
109
  for (const f of (setupResult.step.details.created || [])) {
106
110
  console.log(` Created ${f}`);
107
111
  }
@@ -113,12 +117,12 @@ async function bootstrapCommand(options, args) {
113
117
  // ========================================================================
114
118
  // Phase 3: ADF Init
115
119
  // ========================================================================
116
- const adfResult = runAdfInitPhase(options, force);
120
+ const adfResult = runAdfInitPhase(options, force, selectedPreset);
117
121
  result.steps.push(adfResult.step);
118
122
  if (adfResult.step.status === 'fail')
119
123
  warnings++;
120
124
  if (options.format === 'text') {
121
- console.log('[3/5] Initializing ADF context...');
125
+ console.log('[3/6] Initializing ADF context...');
122
126
  for (const f of (adfResult.step.details.files || [])) {
123
127
  console.log(` Created ${f}`);
124
128
  }
@@ -128,14 +132,37 @@ async function bootstrapCommand(options, args) {
128
132
  console.log('');
129
133
  }
130
134
  // ========================================================================
131
- // Phase 4: Install
135
+ // Phase 4: Migrate Agent Configs
136
+ // ========================================================================
137
+ const migrateResult = runMigratePhase(options, force);
138
+ result.steps.push(migrateResult.step);
139
+ if (migrateResult.step.status === 'fail')
140
+ warnings++;
141
+ if (options.format === 'text') {
142
+ console.log('[4/6] Migrating agent configs...');
143
+ if (migrateResult.step.status === 'skip') {
144
+ console.log(' Skipped (no migratable files)');
145
+ }
146
+ else if (migrateResult.step.details.dryRun) {
147
+ for (const w of migrateResult.step.warnings) {
148
+ console.log(` ${w}`);
149
+ }
150
+ }
151
+ else {
152
+ const migrated = migrateResult.step.details.migrated;
153
+ console.log(` Migrated ${migrated} file(s)`);
154
+ }
155
+ console.log('');
156
+ }
157
+ // ========================================================================
158
+ // Phase 5: Install
132
159
  // ========================================================================
133
160
  const installResult = runInstallPhase(options, skipInstall);
134
161
  result.steps.push(installResult.step);
135
162
  if (installResult.step.status === 'fail')
136
163
  warnings++;
137
164
  if (options.format === 'text') {
138
- console.log('[4/5] Installing dependencies...');
165
+ console.log('[5/6] Installing dependencies...');
139
166
  if (skipInstall) {
140
167
  console.log(' Skipped (--skip-install)');
141
168
  }
@@ -147,20 +174,25 @@ async function bootstrapCommand(options, args) {
147
174
  }
148
175
  else {
149
176
  console.log(` Failed: ${installResult.step.details.error}`);
150
- console.log(' (non-fatal: run install manually)');
177
+ for (const w of installResult.step.warnings) {
178
+ if (w.startsWith('Hint:') || w.startsWith('Retry')) {
179
+ console.log(` ${w}`);
180
+ }
181
+ }
182
+ console.log(' (non-fatal)');
151
183
  }
152
184
  }
153
185
  console.log('');
154
186
  }
155
187
  // ========================================================================
156
- // Phase 5: Doctor
188
+ // Phase 6: Doctor
157
189
  // ========================================================================
158
190
  const doctorResult = runDoctorPhase(options, skipDoctor);
159
191
  result.steps.push(doctorResult.step);
160
192
  if (doctorResult.step.status === 'fail')
161
193
  warnings++;
162
194
  if (options.format === 'text') {
163
- console.log('[5/5] Running health check...');
195
+ console.log('[6/6] Running health check...');
164
196
  if (skipDoctor) {
165
197
  console.log(' Skipped (--skip-doctor)');
166
198
  }
@@ -352,7 +384,22 @@ function runSetupPhase(options, selectedPreset, detection, contexts, ciTarget, p
352
384
  // ============================================================================
353
385
  // Phase 3: ADF Init
354
386
  // ============================================================================
355
- function runAdfInitPhase(options, force) {
387
+ function writeAdfScaffolds(aiDir, preset) {
388
+ const isDocsPreset = preset === 'docs';
389
+ fs.mkdirSync(aiDir, { recursive: true });
390
+ fs.writeFileSync(path.join(aiDir, 'manifest.adf'), isDocsPreset ? adf_2.MANIFEST_DOCS_SCAFFOLD : adf_2.MANIFEST_SCAFFOLD);
391
+ fs.writeFileSync(path.join(aiDir, 'core.adf'), adf_2.CORE_SCAFFOLD);
392
+ fs.writeFileSync(path.join(aiDir, 'state.adf'), adf_2.STATE_SCAFFOLD);
393
+ if (isDocsPreset) {
394
+ fs.writeFileSync(path.join(aiDir, 'decisions.adf'), adf_2.DECISIONS_SCAFFOLD);
395
+ fs.writeFileSync(path.join(aiDir, 'planning.adf'), adf_2.PLANNING_SCAFFOLD);
396
+ return ['.ai/manifest.adf', '.ai/core.adf', '.ai/state.adf', '.ai/decisions.adf', '.ai/planning.adf'];
397
+ }
398
+ fs.writeFileSync(path.join(aiDir, 'frontend.adf'), adf_2.FRONTEND_SCAFFOLD);
399
+ fs.writeFileSync(path.join(aiDir, 'backend.adf'), adf_2.BACKEND_SCAFFOLD);
400
+ return ['.ai/manifest.adf', '.ai/core.adf', '.ai/state.adf', '.ai/frontend.adf', '.ai/backend.adf'];
401
+ }
402
+ function runAdfInitPhase(options, force, preset) {
356
403
  const warnings = [];
357
404
  const files = [];
358
405
  const pointers = [];
@@ -363,12 +410,8 @@ function runAdfInitPhase(options, force) {
363
410
  const alreadyExists = fs.existsSync(manifestPath);
364
411
  const hasCustomContent = alreadyExists && hasCustomAdfContent(aiDir);
365
412
  if (!alreadyExists) {
366
- // Greenfield: write scaffolds
367
- fs.mkdirSync(aiDir, { recursive: true });
368
- fs.writeFileSync(path.join(aiDir, 'manifest.adf'), adf_1.MANIFEST_SCAFFOLD);
369
- fs.writeFileSync(path.join(aiDir, 'core.adf'), adf_1.CORE_SCAFFOLD);
370
- fs.writeFileSync(path.join(aiDir, 'state.adf'), adf_1.STATE_SCAFFOLD);
371
- files.push('.ai/manifest.adf', '.ai/core.adf', '.ai/state.adf');
413
+ // Greenfield: write scaffolds (preset-aware on-demand modules)
414
+ files.push(...writeAdfScaffolds(aiDir, preset));
372
415
  // Write .adf.lock
373
416
  const lockData = {};
374
417
  for (const mod of ['core.adf', 'state.adf']) {
@@ -384,12 +427,8 @@ function runAdfInitPhase(options, force) {
384
427
  warnings.push("Run 'charter adf migrate' to consolidate agent configs into ADF");
385
428
  }
386
429
  else if (force) {
387
- // Force overwrite
388
- fs.mkdirSync(aiDir, { recursive: true });
389
- fs.writeFileSync(path.join(aiDir, 'manifest.adf'), adf_1.MANIFEST_SCAFFOLD);
390
- fs.writeFileSync(path.join(aiDir, 'core.adf'), adf_1.CORE_SCAFFOLD);
391
- fs.writeFileSync(path.join(aiDir, 'state.adf'), adf_1.STATE_SCAFFOLD);
392
- files.push('.ai/manifest.adf', '.ai/core.adf', '.ai/state.adf');
430
+ // Force overwrite (preset-aware on-demand modules)
431
+ files.push(...writeAdfScaffolds(aiDir, preset));
393
432
  const lockData = {};
394
433
  for (const mod of ['core.adf', 'state.adf']) {
395
434
  const content = fs.readFileSync(path.join(aiDir, mod), 'utf-8');
@@ -403,9 +442,9 @@ function runAdfInitPhase(options, force) {
403
442
  }
404
443
  // Generate thin pointer files
405
444
  const pointerFiles = [
406
- { name: 'CLAUDE.md', content: adf_1.POINTER_CLAUDE_MD, label: 'CLAUDE.md (thin pointer)' },
407
- { name: '.cursorrules', content: adf_1.POINTER_CURSORRULES, label: '.cursorrules (thin pointer)' },
408
- { name: 'agents.md', content: adf_1.POINTER_AGENTS_MD, label: 'agents.md (thin pointer)' },
445
+ { name: 'CLAUDE.md', content: adf_2.POINTER_CLAUDE_MD, label: 'CLAUDE.md (thin pointer)' },
446
+ { name: '.cursorrules', content: adf_2.POINTER_CURSORRULES, label: '.cursorrules (thin pointer)' },
447
+ { name: 'agents.md', content: adf_2.POINTER_AGENTS_MD, label: 'agents.md (thin pointer)' },
409
448
  ];
410
449
  for (const pf of pointerFiles) {
411
450
  const pointerPath = path.resolve(pf.name);
@@ -449,7 +488,85 @@ function runAdfInitPhase(options, force) {
449
488
  }
450
489
  }
451
490
  // ============================================================================
452
- // Phase 4: Install
491
+ // Phase 4: Migrate Agent Configs
492
+ // ============================================================================
493
+ const AGENT_CONFIG_FILES = [
494
+ 'CLAUDE.md', '.cursorrules', 'agents.md',
495
+ 'GEMINI.md', 'copilot-instructions.md',
496
+ ];
497
+ function runMigratePhase(options, force) {
498
+ const warnings = [];
499
+ const aiDir = '.ai';
500
+ try {
501
+ // Find agent config files that aren't already thin pointers
502
+ const sources = AGENT_CONFIG_FILES.filter(f => {
503
+ const fullPath = path.resolve(f);
504
+ if (!fs.existsSync(fullPath))
505
+ return false;
506
+ const content = fs.readFileSync(fullPath, 'utf-8');
507
+ return !adf_1.POINTER_MARKERS.some(marker => content.includes(marker));
508
+ });
509
+ if (sources.length === 0) {
510
+ return {
511
+ step: {
512
+ name: 'migrate',
513
+ status: 'skip',
514
+ details: { skipped: true, reason: 'No migratable agent config files found' },
515
+ warnings,
516
+ },
517
+ };
518
+ }
519
+ if (!force) {
520
+ warnings.push(`Found ${sources.length} agent config file(s) with migratable content: ${sources.join(', ')}`);
521
+ warnings.push("Run with --yes to auto-migrate, or run 'charter adf migrate' separately");
522
+ return {
523
+ step: {
524
+ name: 'migrate',
525
+ status: 'pass',
526
+ details: { dryRun: true, sources, migrated: 0 },
527
+ warnings,
528
+ },
529
+ };
530
+ }
531
+ // Auto-migrate with --yes
532
+ const results = [];
533
+ for (const source of sources) {
534
+ const result = (0, adf_migrate_1.migrateSource)(source, aiDir, 'dedupe', false, false, options);
535
+ results.push(result);
536
+ }
537
+ const migrated = results.filter(r => !r.skipped).length;
538
+ return {
539
+ step: {
540
+ name: 'migrate',
541
+ status: 'pass',
542
+ details: {
543
+ sources,
544
+ migrated,
545
+ results: results.map(r => ({
546
+ source: r.source,
547
+ skipped: r.skipped,
548
+ itemsMigrated: r.plan?.migrateItems.length ?? 0,
549
+ })),
550
+ },
551
+ warnings,
552
+ },
553
+ };
554
+ }
555
+ catch (err) {
556
+ const msg = err instanceof Error ? err.message : String(err);
557
+ warnings.push(`Migration failed: ${msg}`);
558
+ return {
559
+ step: {
560
+ name: 'migrate',
561
+ status: 'fail',
562
+ details: { error: msg },
563
+ warnings,
564
+ },
565
+ };
566
+ }
567
+ }
568
+ // ============================================================================
569
+ // Phase 5: Install
453
570
  // ============================================================================
454
571
  function runInstallPhase(_options, skipInstall) {
455
572
  const warnings = [];
@@ -483,7 +600,12 @@ function runInstallPhase(_options, skipInstall) {
483
600
  }
484
601
  catch (err) {
485
602
  const msg = err instanceof Error ? err.message : String(err);
603
+ const isPermError = msg.includes('EPERM') || msg.includes('EACCES') || msg.includes('permission denied');
486
604
  warnings.push(`Install failed: ${msg}`);
605
+ if (isPermError) {
606
+ warnings.push(`Hint: permission error detected. Retry outside the sandbox or with elevated privileges: ${command}`);
607
+ }
608
+ warnings.push(`Retry manually: ${command}`);
487
609
  return {
488
610
  step: {
489
611
  name: 'install',
@@ -504,7 +626,7 @@ function detectPackageManagerFromLockfiles() {
504
626
  return 'npm';
505
627
  }
506
628
  // ============================================================================
507
- // Phase 5: Doctor
629
+ // Phase 6: Doctor
508
630
  // ============================================================================
509
631
  function runDoctorPhase(options, skipDoctor) {
510
632
  const warnings = [];
@@ -521,14 +643,7 @@ function runDoctorPhase(options, skipDoctor) {
521
643
  const checks = [];
522
644
  try {
523
645
  // Git repository check
524
- let inGitRepo = false;
525
- try {
526
- (0, node_child_process_1.execSync)('git rev-parse --is-inside-work-tree', { stdio: 'ignore' });
527
- inGitRepo = true;
528
- }
529
- catch {
530
- // not in a git repo
531
- }
646
+ const inGitRepo = (0, git_helpers_1.isGitRepo)();
532
647
  checks.push({
533
648
  name: 'Git repository',
534
649
  status: inGitRepo ? 'PASS' : 'WARN',
@@ -563,8 +678,8 @@ function runDoctorPhase(options, skipDoctor) {
563
678
  if (hasManifest) {
564
679
  try {
565
680
  const manifestContent = fs.readFileSync(manifestPath, 'utf-8');
566
- const manifestDoc = (0, adf_2.parseAdf)(manifestContent);
567
- const manifest = (0, adf_2.parseManifest)(manifestDoc);
681
+ const manifestDoc = (0, adf_3.parseAdf)(manifestContent);
682
+ const manifest = (0, adf_3.parseManifest)(manifestDoc);
568
683
  if (manifest.sync.length > 0) {
569
684
  const lockFile = path.join('.ai', '.adf.lock');
570
685
  const hasLock = fs.existsSync(lockFile);
@@ -615,15 +730,8 @@ function runDoctorPhase(options, skipDoctor) {
615
730
  // ============================================================================
616
731
  // Helpers
617
732
  // ============================================================================
618
- function getFlag(args, flag) {
619
- const idx = args.indexOf(flag);
620
- if (idx !== -1 && idx + 1 < args.length) {
621
- return args[idx + 1];
622
- }
623
- return undefined;
624
- }
625
733
  function isValidPreset(value) {
626
- return value === 'worker' || value === 'frontend' || value === 'backend' || value === 'fullstack';
734
+ return value === 'worker' || value === 'frontend' || value === 'backend' || value === 'fullstack' || value === 'docs';
627
735
  }
628
736
  function hashContent(content) {
629
737
  return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);
@@ -639,7 +747,7 @@ function hasCustomAdfContent(aiDir) {
639
747
  const content = fs.readFileSync(coreAdfPath, 'utf-8');
640
748
  // Check if the file has been modified from default scaffold
641
749
  // A custom file will have different content than the CORE_SCAFFOLD
642
- return content.trim() !== adf_1.CORE_SCAFFOLD.trim();
750
+ return content.trim() !== adf_2.CORE_SCAFFOLD.trim();
643
751
  }
644
752
  catch {
645
753
  return false;
@@ -651,7 +759,7 @@ function hasCustomAdfContent(aiDir) {
651
759
  function isAlreadyThinPointer(filePath) {
652
760
  try {
653
761
  const content = fs.readFileSync(filePath, 'utf-8');
654
- return content.includes('Do not duplicate ADF rules here');
762
+ return adf_1.POINTER_MARKERS.some(marker => content.includes(marker));
655
763
  }
656
764
  catch {
657
765
  return false;