@stackbilt/cli 0.4.1 → 0.5.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 (84) hide show
  1. package/README.md +25 -5
  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__/setup.test.d.ts +2 -0
  11. package/dist/__tests__/setup.test.d.ts.map +1 -0
  12. package/dist/__tests__/setup.test.js +74 -0
  13. package/dist/__tests__/setup.test.js.map +1 -0
  14. package/dist/__tests__/telemetry.test.d.ts +2 -0
  15. package/dist/__tests__/telemetry.test.d.ts.map +1 -0
  16. package/dist/__tests__/telemetry.test.js +119 -0
  17. package/dist/__tests__/telemetry.test.js.map +1 -0
  18. package/dist/commands/adf-bundle.d.ts.map +1 -1
  19. package/dist/commands/adf-bundle.js +37 -17
  20. package/dist/commands/adf-bundle.js.map +1 -1
  21. package/dist/commands/adf-evidence.d.ts.map +1 -1
  22. package/dist/commands/adf-evidence.js +57 -19
  23. package/dist/commands/adf-evidence.js.map +1 -1
  24. package/dist/commands/adf-metrics.d.ts +8 -0
  25. package/dist/commands/adf-metrics.d.ts.map +1 -0
  26. package/dist/commands/adf-metrics.js +242 -0
  27. package/dist/commands/adf-metrics.js.map +1 -0
  28. package/dist/commands/adf-migrate.js +16 -13
  29. package/dist/commands/adf-migrate.js.map +1 -1
  30. package/dist/commands/adf-sync.d.ts.map +1 -1
  31. package/dist/commands/adf-sync.js +22 -12
  32. package/dist/commands/adf-sync.js.map +1 -1
  33. package/dist/commands/adf.d.ts +4 -0
  34. package/dist/commands/adf.d.ts.map +1 -1
  35. package/dist/commands/adf.js +232 -83
  36. package/dist/commands/adf.js.map +1 -1
  37. package/dist/commands/audit.d.ts.map +1 -1
  38. package/dist/commands/audit.js +19 -87
  39. package/dist/commands/audit.js.map +1 -1
  40. package/dist/commands/bootstrap.d.ts.map +1 -1
  41. package/dist/commands/bootstrap.js +32 -33
  42. package/dist/commands/bootstrap.js.map +1 -1
  43. package/dist/commands/doctor.d.ts +1 -1
  44. package/dist/commands/doctor.d.ts.map +1 -1
  45. package/dist/commands/doctor.js +66 -41
  46. package/dist/commands/doctor.js.map +1 -1
  47. package/dist/commands/drift.d.ts.map +1 -1
  48. package/dist/commands/drift.js +2 -8
  49. package/dist/commands/drift.js.map +1 -1
  50. package/dist/commands/hook.d.ts.map +1 -1
  51. package/dist/commands/hook.js +23 -21
  52. package/dist/commands/hook.js.map +1 -1
  53. package/dist/commands/init.d.ts.map +1 -1
  54. package/dist/commands/init.js +2 -8
  55. package/dist/commands/init.js.map +1 -1
  56. package/dist/commands/setup.d.ts.map +1 -1
  57. package/dist/commands/setup.js +38 -9
  58. package/dist/commands/setup.js.map +1 -1
  59. package/dist/commands/telemetry.d.ts +8 -0
  60. package/dist/commands/telemetry.d.ts.map +1 -0
  61. package/dist/commands/telemetry.js +184 -0
  62. package/dist/commands/telemetry.js.map +1 -0
  63. package/dist/commands/validate.d.ts.map +1 -1
  64. package/dist/commands/validate.js +11 -97
  65. package/dist/commands/validate.js.map +1 -1
  66. package/dist/commands/why.d.ts.map +1 -1
  67. package/dist/commands/why.js +7 -76
  68. package/dist/commands/why.js.map +1 -1
  69. package/dist/flags.d.ts +20 -0
  70. package/dist/flags.d.ts.map +1 -0
  71. package/dist/flags.js +76 -0
  72. package/dist/flags.js.map +1 -0
  73. package/dist/git-helpers.d.ts +36 -0
  74. package/dist/git-helpers.d.ts.map +1 -0
  75. package/dist/git-helpers.js +146 -0
  76. package/dist/git-helpers.js.map +1 -0
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +95 -55
  79. package/dist/index.js.map +1 -1
  80. package/dist/telemetry.d.ts +29 -0
  81. package/dist/telemetry.d.ts.map +1 -0
  82. package/dist/telemetry.js +88 -0
  83. package/dist/telemetry.js.map +1 -0
  84. package/package.json +8 -8
@@ -38,58 +38,70 @@ var __importStar = (this && this.__importStar) || (function () {
38
38
  };
39
39
  })();
40
40
  Object.defineProperty(exports, "__esModule", { value: true });
41
- exports.POINTER_AGENTS_MD = exports.POINTER_CURSORRULES = exports.POINTER_CLAUDE_MD = exports.STATE_SCAFFOLD = exports.CORE_SCAFFOLD = exports.MANIFEST_SCAFFOLD = void 0;
41
+ exports.POINTER_AGENTS_MD = exports.POINTER_CURSORRULES = exports.POINTER_CLAUDE_MD = exports.POINTER_MARKERS = exports.BACKEND_SCAFFOLD = exports.FRONTEND_SCAFFOLD = exports.STATE_SCAFFOLD = exports.CORE_SCAFFOLD = exports.MANIFEST_SCAFFOLD = void 0;
42
42
  exports.adfCommand = adfCommand;
43
43
  const fs = __importStar(require("node:fs"));
44
44
  const path = __importStar(require("node:path"));
45
45
  const adf_1 = require("@stackbilt/adf");
46
46
  const index_1 = require("../index");
47
+ const flags_1 = require("../flags");
47
48
  const adf_migrate_1 = require("./adf-migrate");
48
49
  const adf_bundle_1 = require("./adf-bundle");
49
50
  const adf_sync_1 = require("./adf-sync");
50
51
  const adf_evidence_1 = require("./adf-evidence");
52
+ const adf_metrics_1 = require("./adf-metrics");
51
53
  // ============================================================================
52
54
  // Scaffold Content
53
55
  // ============================================================================
54
- exports.MANIFEST_SCAFFOLD = `ADF: 0.1
55
- \u{1F3AF} ROLE: Repo context router
56
-
57
- \u{1F4E6} DEFAULT_LOAD:
58
- - core.adf
59
- - state.adf
60
-
61
- \u{1F4C2} ON_DEMAND:
62
- - frontend.adf (Triggers on: React, CSS, UI)
63
- - backend.adf (Triggers on: API, Node, DB)
64
-
65
- \u{1F4D0} RULES:
66
- - Prefer smallest relevant module set.
67
- - Never assume unseen modules were loaded.
56
+ exports.MANIFEST_SCAFFOLD = `ADF: 0.1
57
+ \u{1F3AF} ROLE: Repo context router
58
+
59
+ \u{1F4E6} DEFAULT_LOAD:
60
+ - core.adf
61
+ - state.adf
62
+
63
+ \u{1F4C2} ON_DEMAND:
64
+ - frontend.adf (Triggers on: React, CSS, UI)
65
+ - backend.adf (Triggers on: API, Node, DB)
66
+
67
+ \u{1F4D0} RULES:
68
+ - Prefer smallest relevant module set.
69
+ - Never assume unseen modules were loaded.
68
70
  `;
69
- exports.CORE_SCAFFOLD = `ADF: 0.1
70
-
71
- \u{1F4D6} GUIDE [advisory]:
72
- - Pure runtime/environment? (OS, line endings) \u2192 CLAUDE.md, not ADF
73
- - Universal architecture constraint? \u2192 core.adf CONSTRAINTS [load-bearing]
74
- - Stack-specific operational rule? \u2192 domain .adf module (backend.adf, frontend.adf)
75
- - Agent identity/behavior? \u2192 core.adf CONTEXT
76
- - Language/tooling discipline? \u2192 core.adf CONSTRAINTS or dedicated section
77
- - [load-bearing] = violation causes incorrect output
78
- - [advisory] = best practice, not enforced
79
- - Section types are open: CONTEXT, CONSTRAINTS, ADVISORY, METRICS, custom
80
-
81
- \u26A0\uFE0F CONSTRAINTS [load-bearing]:
82
- - Use Conventional Commits (feat, fix, docs, chore)
83
- - Never commit secrets or credentials
84
- - Pure functions in library code; side effects only in entry points
85
-
86
- \uD83D\uDCCA METRICS:
87
- entry_loc: 0 / 500 [lines]
71
+ exports.CORE_SCAFFOLD = `ADF: 0.1
72
+
73
+ \u{1F4D6} GUIDE [advisory]:
74
+ - Pure runtime/environment? (OS, line endings) \u2192 CLAUDE.md, not ADF
75
+ - Universal architecture constraint? \u2192 core.adf CONSTRAINTS [load-bearing]
76
+ - Stack-specific operational rule? \u2192 domain .adf module (backend.adf, frontend.adf)
77
+ - Agent identity/behavior? \u2192 core.adf CONTEXT
78
+ - Language/tooling discipline? \u2192 core.adf CONSTRAINTS or dedicated section
79
+ - [load-bearing] = violation causes incorrect output
80
+ - [advisory] = best practice, not enforced
81
+ - Section types are open: CONTEXT, CONSTRAINTS, ADVISORY, METRICS, custom
82
+
83
+ \u26A0\uFE0F CONSTRAINTS [load-bearing]:
84
+ - Use Conventional Commits (feat, fix, docs, chore)
85
+ - Never commit secrets or credentials
86
+ - Pure functions in library code; side effects only in entry points
87
+
88
+ \uD83D\uDCCA METRICS:
89
+ entry_loc: 0 / 500 [lines]
88
90
  `;
89
- exports.STATE_SCAFFOLD = `ADF: 0.1
90
- \u{1F9E0} STATE:
91
- CURRENT: Repository initialized with ADF context system
92
- NEXT: Configure on-demand modules for your stack
91
+ exports.STATE_SCAFFOLD = `ADF: 0.1
92
+ \u{1F9E0} STATE:
93
+ CURRENT: Repository initialized with ADF context system
94
+ NEXT: Configure on-demand modules for your stack
95
+ `;
96
+ exports.FRONTEND_SCAFFOLD = `ADF: 0.1
97
+ \u{1F4CB} CONTEXT:
98
+ - Frontend module scaffold
99
+ - Add framework-specific constraints and operational rules
100
+ `;
101
+ exports.BACKEND_SCAFFOLD = `ADF: 0.1
102
+ \u{1F4CB} CONTEXT:
103
+ - Backend module scaffold
104
+ - Add service/API/database constraints and operational rules
93
105
  `;
94
106
  // ============================================================================
95
107
  // Dispatcher
@@ -108,6 +120,8 @@ async function adfCommand(options, args) {
108
120
  return adfFmt(options, restArgs);
109
121
  case 'patch':
110
122
  return adfPatch(options, restArgs);
123
+ case 'create':
124
+ return adfCreate(options, restArgs);
111
125
  case 'bundle':
112
126
  return (0, adf_bundle_1.adfBundle)(options, restArgs);
113
127
  case 'sync':
@@ -116,44 +130,53 @@ async function adfCommand(options, args) {
116
130
  return (0, adf_evidence_1.adfEvidence)(options, restArgs);
117
131
  case 'migrate':
118
132
  return (0, adf_migrate_1.adfMigrateCommand)(options, restArgs);
133
+ case 'metrics':
134
+ return (0, adf_metrics_1.adfMetricsCommand)(options, restArgs);
119
135
  default:
120
- throw new index_1.CLIError(`Unknown adf subcommand: ${subcommand}. Supported: init, fmt, patch, bundle, sync, evidence, migrate`);
136
+ throw new index_1.CLIError(`Unknown adf subcommand: ${subcommand}. Supported: init, fmt, patch, create, bundle, sync, evidence, migrate, metrics`);
121
137
  }
122
138
  }
139
+ // -- Thin pointer detection markers --
140
+ /** Strings that identify an agent config file as a thin pointer to .ai/. */
141
+ exports.POINTER_MARKERS = [
142
+ 'Do not duplicate ADF rules here',
143
+ 'Do not duplicate rules from .ai/',
144
+ 'Do not add stack rules here',
145
+ ];
123
146
  // -- Thin pointer file content --
124
- exports.POINTER_CLAUDE_MD = `# Project Context
125
-
126
- > This project uses [ADF](https://github.com/Stackbilt-dev/charter) for AI agent context management.
127
- > All stack rules, constraints, and architectural guidance live in \`.ai/\`.
128
- > **Do not duplicate ADF rules here.** Only pre-ADF bootstrap content belongs in this file.
129
-
130
- See \`.ai/manifest.adf\` for the module routing manifest.
131
-
132
- ## Environment
133
- <!-- Add runtime/OS/shell-specific notes here (not stack rules) -->
147
+ exports.POINTER_CLAUDE_MD = `# Project Context
148
+
149
+ > This project uses [ADF](https://github.com/Stackbilt-dev/charter) for AI agent context management.
150
+ > All stack rules, constraints, and architectural guidance live in \`.ai/\`.
151
+ > **Do not duplicate ADF rules here.** Only pre-ADF bootstrap content belongs in this file.
152
+
153
+ See \`.ai/manifest.adf\` for the module routing manifest.
154
+
155
+ ## Environment
156
+ <!-- Add runtime/OS/shell-specific notes here (not stack rules) -->
134
157
  `;
135
- exports.POINTER_CURSORRULES = `# Cursor Rules
136
-
137
- This project uses ADF (Attention-Directed Format) for context management.
138
- All rules and constraints are in .ai/ \u2014 see .ai/manifest.adf for routing.
139
-
140
- Do not add stack rules here. This file exists only as a pointer.
141
- See: .ai/core.adf for universal constraints.
158
+ exports.POINTER_CURSORRULES = `# Cursor Rules
159
+
160
+ This project uses ADF (Attention-Directed Format) for context management.
161
+ All rules and constraints are in .ai/ \u2014 see .ai/manifest.adf for routing.
162
+
163
+ Do not add stack rules here. This file exists only as a pointer.
164
+ See: .ai/core.adf for universal constraints.
142
165
  `;
143
- exports.POINTER_AGENTS_MD = `# Agent Guidelines
144
-
145
- This project uses ADF for structured agent context.
146
- All architectural rules, constraints, and guidance live in \`.ai/\`.
147
-
148
- Module manifest: .ai/manifest.adf
149
- Universal rules: .ai/core.adf
150
- Current state: .ai/state.adf
151
-
152
- Do not duplicate rules from .ai/ modules into this file or other agent config files.
166
+ exports.POINTER_AGENTS_MD = `# Agent Guidelines
167
+
168
+ This project uses ADF for structured agent context.
169
+ All architectural rules, constraints, and guidance live in \`.ai/\`.
170
+
171
+ Module manifest: .ai/manifest.adf
172
+ Universal rules: .ai/core.adf
173
+ Current state: .ai/state.adf
174
+
175
+ Do not duplicate rules from .ai/ modules into this file or other agent config files.
153
176
  `;
154
177
  function adfInit(options, args) {
155
178
  const force = options.yes || args.includes('--force');
156
- const aiDir = getFlag(args, '--ai-dir') || '.ai';
179
+ const aiDir = (0, flags_1.getFlag)(args, '--ai-dir') || '.ai';
157
180
  const manifestPath = path.join(aiDir, 'manifest.adf');
158
181
  if (fs.existsSync(manifestPath) && !force) {
159
182
  const result = { created: false, aiDir, files: [] };
@@ -170,10 +193,12 @@ function adfInit(options, args) {
170
193
  fs.writeFileSync(path.join(aiDir, 'manifest.adf'), exports.MANIFEST_SCAFFOLD);
171
194
  fs.writeFileSync(path.join(aiDir, 'core.adf'), exports.CORE_SCAFFOLD);
172
195
  fs.writeFileSync(path.join(aiDir, 'state.adf'), exports.STATE_SCAFFOLD);
196
+ fs.writeFileSync(path.join(aiDir, 'frontend.adf'), exports.FRONTEND_SCAFFOLD);
197
+ fs.writeFileSync(path.join(aiDir, 'backend.adf'), exports.BACKEND_SCAFFOLD);
173
198
  const result = {
174
199
  created: true,
175
200
  aiDir,
176
- files: ['manifest.adf', 'core.adf', 'state.adf'],
201
+ files: ['manifest.adf', 'core.adf', 'state.adf', 'frontend.adf', 'backend.adf'],
177
202
  };
178
203
  // --emit-pointers: generate thin pointer files that redirect to .ai/
179
204
  const emitPointers = args.includes('--emit-pointers') || args.includes('--pointers');
@@ -211,6 +236,7 @@ function adfInit(options, args) {
211
236
  ...result,
212
237
  nextActions: [
213
238
  'Edit core.adf with your universal repo rules',
239
+ 'Edit frontend.adf and backend.adf stubs or replace with your domain modules',
214
240
  'charter adf fmt .ai/core.adf --check',
215
241
  'charter adf bundle --task "<prompt>"',
216
242
  ],
@@ -226,7 +252,7 @@ function adfInit(options, args) {
226
252
  console.log('');
227
253
  console.log(' Next steps:');
228
254
  console.log(' 1. Edit core.adf with your universal repo rules');
229
- console.log(' 2. Add on-demand modules (e.g. frontend.adf, backend.adf)');
255
+ console.log(' 2. Edit frontend.adf/backend.adf stubs or replace with domain modules');
230
256
  console.log(' 3. Run: charter adf fmt .ai/core.adf --check');
231
257
  }
232
258
  return index_1.EXIT_CODE.SUCCESS;
@@ -235,6 +261,24 @@ function adfInit(options, args) {
235
261
  // adf fmt
236
262
  // ============================================================================
237
263
  function adfFmt(options, args) {
264
+ if (args.includes('--explain')) {
265
+ const payload = {
266
+ canonicalSectionOrder: adf_1.CANONICAL_KEY_ORDER,
267
+ note: 'Known sections are sorted in this order; unknown sections keep insertion order after known sections.',
268
+ };
269
+ if (options.format === 'json') {
270
+ console.log(JSON.stringify(payload, null, 2));
271
+ }
272
+ else {
273
+ console.log(' Canonical ADF section order:');
274
+ for (const key of adf_1.CANONICAL_KEY_ORDER) {
275
+ console.log(` - ${key}`);
276
+ }
277
+ console.log('');
278
+ console.log(' Unknown section keys are preserved after known keys.');
279
+ }
280
+ return index_1.EXIT_CODE.SUCCESS;
281
+ }
238
282
  const filePath = args.find(a => !a.startsWith('-'));
239
283
  if (!filePath) {
240
284
  throw new index_1.CLIError('adf fmt requires a file path. Usage: charter adf fmt <file> [--check] [--write]');
@@ -283,15 +327,15 @@ function adfPatch(options, args) {
283
327
  if (!filePath) {
284
328
  throw new index_1.CLIError('adf patch requires a file path. Usage: charter adf patch <file> --ops <json>');
285
329
  }
286
- const opsJson = getFlag(args, '--ops');
287
- const opsFile = getFlag(args, '--ops-file');
330
+ const opsJson = (0, flags_1.getFlag)(args, '--ops');
331
+ const opsFile = (0, flags_1.getFlag)(args, '--ops-file');
288
332
  if (!opsJson && !opsFile) {
289
333
  throw new index_1.CLIError('adf patch requires --ops <json> or --ops-file <path>.');
290
334
  }
291
335
  if (!fs.existsSync(filePath)) {
292
336
  throw new index_1.CLIError(`File not found: ${filePath}`);
293
337
  }
294
- const rawOps = opsFile ? readJsonFlag(opsFile, '--ops-file') : opsJson;
338
+ const rawOps = opsFile ? (0, flags_1.readFlagFile)(opsFile, '--ops-file') : opsJson;
295
339
  let ops;
296
340
  try {
297
341
  ops = JSON.parse(rawOps);
@@ -331,21 +375,93 @@ function adfPatch(options, args) {
331
375
  }
332
376
  }
333
377
  // ============================================================================
334
- // Helpers
378
+ // adf create
335
379
  // ============================================================================
336
- function getFlag(args, flag) {
337
- const idx = args.indexOf(flag);
338
- if (idx !== -1 && idx + 1 < args.length) {
339
- return args[idx + 1];
380
+ function adfCreate(options, args) {
381
+ const moduleArg = args.find(a => !a.startsWith('-'));
382
+ if (!moduleArg) {
383
+ throw new index_1.CLIError('adf create requires a module path. Usage: charter adf create <module> [--triggers "a,b"] [--load default|on-demand]');
340
384
  }
341
- return undefined;
342
- }
343
- function readJsonFlag(filePath, flagName) {
344
- if (!fs.existsSync(filePath)) {
345
- throw new index_1.CLIError(`File not found for ${flagName}: ${filePath}`);
385
+ const aiDir = (0, flags_1.getFlag)(args, '--ai-dir') || '.ai';
386
+ const force = options.yes || args.includes('--force');
387
+ const load = ((0, flags_1.getFlag)(args, '--load') || 'on-demand').toLowerCase();
388
+ if (load !== 'default' && load !== 'on-demand') {
389
+ throw new index_1.CLIError(`Invalid --load value: ${load}. Use default or on-demand.`);
390
+ }
391
+ const manifestPath = path.join(aiDir, 'manifest.adf');
392
+ if (!fs.existsSync(manifestPath)) {
393
+ throw new index_1.CLIError(`manifest.adf not found at ${manifestPath}. Run: charter adf init`);
394
+ }
395
+ const modulePath = moduleArg.endsWith('.adf') ? moduleArg : `${moduleArg}.adf`;
396
+ const moduleRelPath = modulePath.replace(/\\/g, '/');
397
+ const moduleAbsPath = path.join(aiDir, moduleRelPath);
398
+ fs.mkdirSync(path.dirname(moduleAbsPath), { recursive: true });
399
+ let fileCreated = false;
400
+ if (!fs.existsSync(moduleAbsPath) || force) {
401
+ fs.writeFileSync(moduleAbsPath, buildModuleScaffold(moduleRelPath));
402
+ fileCreated = true;
403
+ }
404
+ const manifestDoc = (0, adf_1.parseAdf)(fs.readFileSync(manifestPath, 'utf-8'));
405
+ const sectionKey = load === 'default' ? 'DEFAULT_LOAD' : 'ON_DEMAND';
406
+ const triggers = parseTriggers((0, flags_1.getFlag)(args, '--triggers'));
407
+ const manifestEntry = load === 'on-demand' && triggers.length > 0
408
+ ? `${moduleRelPath} (Triggers on: ${triggers.join(', ')})`
409
+ : moduleRelPath;
410
+ let section = manifestDoc.sections.find(s => s.key === sectionKey);
411
+ if (!section) {
412
+ section = {
413
+ key: sectionKey,
414
+ decoration: null,
415
+ content: { type: 'list', items: [] },
416
+ };
417
+ manifestDoc.sections.push(section);
418
+ }
419
+ if (section.content.type !== 'list') {
420
+ throw new index_1.CLIError(`${sectionKey} must be a list section in manifest.adf`);
421
+ }
422
+ const existingIdx = section.content.items.findIndex(item => parseModulePathFromEntry(item) === moduleRelPath);
423
+ let manifestUpdated = false;
424
+ if (existingIdx === -1) {
425
+ section.content.items.push(manifestEntry);
426
+ manifestUpdated = true;
427
+ }
428
+ else if (section.content.items[existingIdx] !== manifestEntry) {
429
+ section.content.items[existingIdx] = manifestEntry;
430
+ manifestUpdated = true;
431
+ }
432
+ if (manifestUpdated) {
433
+ fs.writeFileSync(manifestPath, (0, adf_1.formatAdf)(manifestDoc));
346
434
  }
347
- return fs.readFileSync(filePath, 'utf-8');
435
+ const output = {
436
+ aiDir,
437
+ module: moduleRelPath,
438
+ fileCreated,
439
+ manifestUpdated,
440
+ loadPolicy: load === 'default' ? 'DEFAULT_LOAD' : 'ON_DEMAND',
441
+ triggers,
442
+ };
443
+ if (options.format === 'json') {
444
+ console.log(JSON.stringify(output, null, 2));
445
+ }
446
+ else {
447
+ if (fileCreated) {
448
+ console.log(` [ok] Created ${path.join(aiDir, moduleRelPath)}`);
449
+ }
450
+ else {
451
+ console.log(` [ok] Reused existing ${path.join(aiDir, moduleRelPath)}`);
452
+ }
453
+ if (manifestUpdated) {
454
+ console.log(` [ok] Registered ${moduleRelPath} in ${sectionKey}`);
455
+ }
456
+ else {
457
+ console.log(` [ok] ${moduleRelPath} already registered in ${sectionKey}`);
458
+ }
459
+ }
460
+ return index_1.EXIT_CODE.SUCCESS;
348
461
  }
462
+ // ============================================================================
463
+ // Helpers
464
+ // ============================================================================
349
465
  function printHelp() {
350
466
  console.log('');
351
467
  console.log(' charter adf — Attention-Directed Format tools');
@@ -364,9 +480,16 @@ function printHelp() {
364
480
  console.log(' charter adf patch <file> --ops <json> | --ops-file <path>');
365
481
  console.log(' Apply ADF_PATCH operations to a file.');
366
482
  console.log('');
483
+ console.log(' charter adf create <module> [--ai-dir <dir>] [--triggers "a,b,c"] [--load default|on-demand] [--force]');
484
+ console.log(' Create a module file and register it in manifest DEFAULT_LOAD or ON_DEMAND.');
485
+ console.log(' --triggers: comma-separated trigger keywords (for ON_DEMAND entries).');
486
+ console.log('');
367
487
  console.log(' charter adf bundle --task "<prompt>" [--ai-dir <dir>]');
368
488
  console.log(' Resolve manifest modules for a task and output merged context.');
369
489
  console.log('');
490
+ console.log(' charter adf fmt --explain');
491
+ console.log(' Show canonical section ordering used by the formatter.');
492
+ console.log('');
370
493
  console.log(' charter adf sync --check [--ai-dir <dir>]');
371
494
  console.log(' Verify source .adf files match their locked hashes.');
372
495
  console.log(' Exit 1 if any source has changed since last sync.');
@@ -396,5 +519,31 @@ function printHelp() {
396
519
  console.log(' --no-backup: skip creating .pre-adf-migrate.bak backups');
397
520
  console.log(' --merge-strategy: append (always add), dedupe (skip duplicates, default), replace');
398
521
  console.log('');
522
+ console.log(' charter adf metrics recalibrate [--headroom <percent>] [--reason "<text>"|--auto-rationale] [--dry-run]');
523
+ console.log(' Recalibrate metric baselines/ceilings from current LOC with required rationale.');
524
+ console.log('');
525
+ }
526
+ function parseTriggers(raw) {
527
+ if (!raw)
528
+ return [];
529
+ return raw
530
+ .split(',')
531
+ .map(v => v.trim())
532
+ .filter(v => v.length > 0);
533
+ }
534
+ function parseModulePathFromEntry(entry) {
535
+ const withoutBudget = entry.replace(/\s*\[budget\s*:\s*\d+\]\s*$/i, '').trim();
536
+ const triggerMatch = withoutBudget.match(/^(.+?)\s*\(Triggers?\s+on\s*:\s*.+\)\s*$/i);
537
+ return triggerMatch ? triggerMatch[1].trim() : withoutBudget;
538
+ }
539
+ function buildModuleScaffold(modulePath) {
540
+ const name = path.basename(modulePath, '.adf');
541
+ return `ADF: 0.1
542
+ \u{1F3AF} TASK: ${name} module
543
+
544
+ \u{1F4CB} CONTEXT:
545
+ - Module scaffold
546
+ - Add project-specific rules and constraints
547
+ `;
399
548
  }
400
549
  //# sourceMappingURL=adf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adf.js","sourceRoot":"","sources":["../../src/commands/adf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adf.js","sourceRoot":"","sources":["../../src/commands/adf.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA2D3C,wBAAsB,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAiC5F"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA4D3C,wBAAsB,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA2C5F"}
@@ -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);