@stackbilt/cli 0.5.0 → 0.7.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 (55) hide show
  1. package/dist/__tests__/integration/evidence-contracts.test.d.ts +9 -0
  2. package/dist/__tests__/integration/evidence-contracts.test.d.ts.map +1 -0
  3. package/dist/__tests__/integration/evidence-contracts.test.js +203 -0
  4. package/dist/__tests__/integration/evidence-contracts.test.js.map +1 -0
  5. package/dist/__tests__/integration/precommit-hook.test.d.ts +12 -0
  6. package/dist/__tests__/integration/precommit-hook.test.d.ts.map +1 -0
  7. package/dist/__tests__/integration/precommit-hook.test.js +270 -0
  8. package/dist/__tests__/integration/precommit-hook.test.js.map +1 -0
  9. package/dist/__tests__/integration/sync-bundle.test.d.ts +10 -0
  10. package/dist/__tests__/integration/sync-bundle.test.d.ts.map +1 -0
  11. package/dist/__tests__/integration/sync-bundle.test.js +241 -0
  12. package/dist/__tests__/integration/sync-bundle.test.js.map +1 -0
  13. package/dist/__tests__/integration/vendor-bloat.test.d.ts +12 -0
  14. package/dist/__tests__/integration/vendor-bloat.test.d.ts.map +1 -0
  15. package/dist/__tests__/integration/vendor-bloat.test.js +300 -0
  16. package/dist/__tests__/integration/vendor-bloat.test.js.map +1 -0
  17. package/dist/commands/adf-evidence.d.ts.map +1 -1
  18. package/dist/commands/adf-evidence.js +35 -66
  19. package/dist/commands/adf-evidence.js.map +1 -1
  20. package/dist/commands/adf-migrate.d.ts +17 -0
  21. package/dist/commands/adf-migrate.d.ts.map +1 -1
  22. package/dist/commands/adf-migrate.js +24 -2
  23. package/dist/commands/adf-migrate.js.map +1 -1
  24. package/dist/commands/adf-tidy.d.ts +10 -0
  25. package/dist/commands/adf-tidy.d.ts.map +1 -0
  26. package/dist/commands/adf-tidy.js +547 -0
  27. package/dist/commands/adf-tidy.js.map +1 -0
  28. package/dist/commands/adf.d.ts +9 -3
  29. package/dist/commands/adf.d.ts.map +1 -1
  30. package/dist/commands/adf.js +87 -23
  31. package/dist/commands/adf.js.map +1 -1
  32. package/dist/commands/bootstrap.d.ts.map +1 -1
  33. package/dist/commands/bootstrap.js +137 -25
  34. package/dist/commands/bootstrap.js.map +1 -1
  35. package/dist/commands/doctor.d.ts.map +1 -1
  36. package/dist/commands/doctor.js +98 -1
  37. package/dist/commands/doctor.js.map +1 -1
  38. package/dist/commands/hook.d.ts.map +1 -1
  39. package/dist/commands/hook.js +38 -4
  40. package/dist/commands/hook.js.map +1 -1
  41. package/dist/commands/init.d.ts +1 -1
  42. package/dist/commands/init.d.ts.map +1 -1
  43. package/dist/commands/init.js +27 -1
  44. package/dist/commands/init.js.map +1 -1
  45. package/dist/commands/serve.d.ts +14 -0
  46. package/dist/commands/serve.d.ts.map +1 -0
  47. package/dist/commands/serve.js +253 -0
  48. package/dist/commands/serve.js.map +1 -0
  49. package/dist/commands/setup.d.ts.map +1 -1
  50. package/dist/commands/setup.js +69 -2
  51. package/dist/commands/setup.js.map +1 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +6 -0
  54. package/dist/index.js.map +1 -1
  55. package/package.json +9 -8
@@ -0,0 +1,547 @@
1
+ "use strict";
2
+ /**
3
+ * charter adf tidy
4
+ *
5
+ * Scans vendor config files for content beyond the thin pointer, classifies
6
+ * and routes it to the appropriate ADF modules, and restores the thin pointer.
7
+ * Designed as a composable primitive for the pre-commit hook (#24).
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.adfTidyCommand = adfTidyCommand;
44
+ const fs = __importStar(require("node:fs"));
45
+ const path = __importStar(require("node:path"));
46
+ const adf_1 = require("@stackbilt/adf");
47
+ const index_1 = require("../index");
48
+ const flags_1 = require("../flags");
49
+ const adf_2 = require("./adf");
50
+ // ============================================================================
51
+ // Constants
52
+ // ============================================================================
53
+ const VENDOR_FILES = [
54
+ 'CLAUDE.md',
55
+ '.cursorrules',
56
+ 'agents.md',
57
+ 'AGENTS.md',
58
+ 'GEMINI.md',
59
+ 'copilot-instructions.md',
60
+ ];
61
+ /** Lazy-init to avoid circular dependency with adf.ts at module load time. */
62
+ function getPointerTemplates() {
63
+ return {
64
+ 'CLAUDE.md': adf_2.POINTER_CLAUDE_MD,
65
+ '.cursorrules': adf_2.POINTER_CURSORRULES,
66
+ 'agents.md': adf_2.POINTER_AGENTS_MD,
67
+ 'AGENTS.md': adf_2.POINTER_AGENTS_MD,
68
+ 'GEMINI.md': adf_2.POINTER_GEMINI_MD,
69
+ 'copilot-instructions.md': adf_2.POINTER_COPILOT_MD,
70
+ };
71
+ }
72
+ // ============================================================================
73
+ // Types
74
+ // ============================================================================
75
+ const SECTION_SIZE_WARN_THRESHOLD = 20;
76
+ // ============================================================================
77
+ // Command Entry
78
+ // ============================================================================
79
+ async function adfTidyCommand(options, args) {
80
+ const dryRun = args.includes('--dry-run');
81
+ const ciMode = args.includes('--ci');
82
+ const sourceFile = (0, flags_1.getFlag)(args, '--source');
83
+ const aiDir = (0, flags_1.getFlag)(args, '--ai-dir') || '.ai';
84
+ // Determine which files to scan
85
+ const targets = sourceFile
86
+ ? [sourceFile]
87
+ : VENDOR_FILES.filter(f => fs.existsSync(path.resolve(f)));
88
+ if (targets.length === 0) {
89
+ if (options.format === 'json') {
90
+ console.log(JSON.stringify({ dryRun, files: [], totalExtracted: 0, modulesModified: [], moduleWarnings: [] }, null, 2));
91
+ }
92
+ else {
93
+ console.log(' No vendor config files found.');
94
+ }
95
+ return index_1.EXIT_CODE.SUCCESS;
96
+ }
97
+ // Load trigger map from manifest
98
+ const triggerMap = loadTriggerMap(aiDir);
99
+ const fileResults = [];
100
+ const allModuleGroups = {};
101
+ for (const file of targets) {
102
+ const result = analyzeVendorFile(file, aiDir, triggerMap);
103
+ if (!result) {
104
+ fileResults.push({ file, status: 'not-found', itemsExtracted: 0, routing: {} });
105
+ continue;
106
+ }
107
+ if (result.migrateItems.length === 0) {
108
+ fileResults.push({ file, status: 'clean', itemsExtracted: 0, routing: {} });
109
+ continue;
110
+ }
111
+ // Group items by module
112
+ const moduleGroups = groupByModule(result.migrateItems);
113
+ const routing = {};
114
+ for (const [mod, sections] of Object.entries(moduleGroups)) {
115
+ const count = Object.values(sections).reduce((sum, items) => sum + items.length, 0);
116
+ routing[mod] = count;
117
+ // Accumulate for batch write
118
+ if (!allModuleGroups[mod])
119
+ allModuleGroups[mod] = {};
120
+ for (const [sec, items] of Object.entries(sections)) {
121
+ if (!allModuleGroups[mod][sec])
122
+ allModuleGroups[mod][sec] = [];
123
+ allModuleGroups[mod][sec].push(...items);
124
+ }
125
+ }
126
+ fileResults.push({
127
+ file,
128
+ status: 'tidied',
129
+ itemsExtracted: result.migrateItems.length,
130
+ routing,
131
+ });
132
+ // Restore thin pointer (if not dry-run)
133
+ if (!dryRun) {
134
+ restorePointer(file, result.stayItems);
135
+ }
136
+ }
137
+ // Apply accumulated changes to ADF modules (if not dry-run)
138
+ if (!dryRun) {
139
+ for (const [module, sectionGroups] of Object.entries(allModuleGroups)) {
140
+ const modulePath = path.join(aiDir, module);
141
+ applyMigrationToModule(modulePath, sectionGroups);
142
+ }
143
+ }
144
+ const totalExtracted = fileResults.reduce((sum, f) => sum + f.itemsExtracted, 0);
145
+ const modulesModified = Object.keys(allModuleGroups);
146
+ // Check module health — warn when sections grow past the threshold.
147
+ // In dry-run mode project counts (current + incoming); otherwise read written files.
148
+ const moduleWarnings = dryRun
149
+ ? projectModuleWarnings(aiDir, allModuleGroups)
150
+ : scanModuleWarnings(aiDir, modulesModified);
151
+ const result = { dryRun, files: fileResults, totalExtracted, modulesModified, moduleWarnings };
152
+ // Output
153
+ if (options.format === 'json') {
154
+ console.log(JSON.stringify(result, null, 2));
155
+ }
156
+ else {
157
+ printTextResult(result);
158
+ }
159
+ // Exit codes: in --ci mode, exit 1 if bloat was found (for pre-commit gating)
160
+ if (ciMode && totalExtracted > 0 && dryRun) {
161
+ return index_1.EXIT_CODE.POLICY_VIOLATION;
162
+ }
163
+ return index_1.EXIT_CODE.SUCCESS;
164
+ }
165
+ function analyzeVendorFile(filePath, aiDir, triggerMap) {
166
+ const fullPath = path.resolve(filePath);
167
+ if (!fs.existsSync(fullPath))
168
+ return null;
169
+ const content = fs.readFileSync(fullPath, 'utf-8');
170
+ // If it's not a thin pointer at all, skip — use `adf migrate` instead
171
+ if (!adf_2.POINTER_MARKERS.some(marker => content.includes(marker))) {
172
+ return null;
173
+ }
174
+ // Extract content beyond the thin pointer
175
+ const beyondPointer = extractBeyondPointer(content, filePath);
176
+ if (!beyondPointer.trim()) {
177
+ return { migrateItems: [], stayItems: [] };
178
+ }
179
+ // Parse and classify the extracted content
180
+ const sections = (0, adf_1.parseMarkdownSections)(beyondPointer);
181
+ // Load ALL existing ADF modules for dedup (not just core.adf — items may have
182
+ // been routed to any domain module in a previous session).
183
+ const existingAdf = loadAllAdfModules(aiDir);
184
+ const plan = (0, adf_1.buildMigrationPlan)(sections, existingAdf, triggerMap);
185
+ return {
186
+ migrateItems: plan.migrateItems,
187
+ stayItems: plan.stayItems,
188
+ };
189
+ }
190
+ /**
191
+ * Extract content that was added beyond the thin pointer.
192
+ *
193
+ * Strategy: scan for H2 sections that aren't ## Environment — those are bloat.
194
+ * Any content before the first H2 that isn't part of the pointer is also bloat.
195
+ * The ## Environment section and its items are legitimate retained content.
196
+ */
197
+ function extractBeyondPointer(content, fileName) {
198
+ const baseName = path.basename(fileName);
199
+ const template = getPointerTemplates()[baseName];
200
+ if (!template)
201
+ return '';
202
+ const lines = content.split('\n');
203
+ const bloatLines = [];
204
+ let inEnvironmentSection = false;
205
+ let inPointerHeader = true; // Start true — skip the pointer preamble
206
+ for (const line of lines) {
207
+ const trimmed = line.trim();
208
+ // Detect pointer header lines — skip them
209
+ if (inPointerHeader) {
210
+ if (trimmed === '' ||
211
+ trimmed.startsWith('#') && !trimmed.startsWith('## ') ||
212
+ trimmed.startsWith('>') ||
213
+ trimmed.startsWith('<!--') ||
214
+ adf_2.POINTER_MARKERS.some(m => trimmed.includes(m)) ||
215
+ trimmed.includes('.ai/manifest.adf') ||
216
+ trimmed.includes('auto-managed by Charter') ||
217
+ trimmed.includes('module routing manifest') ||
218
+ trimmed.includes('See `.ai/') ||
219
+ trimmed.startsWith('See .ai/')) {
220
+ continue;
221
+ }
222
+ // Once we hit a non-pointer line, we're past the header
223
+ if (trimmed.startsWith('## ')) {
224
+ inPointerHeader = false;
225
+ // Fall through to section detection below
226
+ }
227
+ else {
228
+ inPointerHeader = false;
229
+ // Non-header, non-section content — treat as bloat
230
+ bloatLines.push(line);
231
+ continue;
232
+ }
233
+ }
234
+ // Section detection
235
+ if (trimmed.startsWith('## ')) {
236
+ if (trimmed === '## Environment') {
237
+ inEnvironmentSection = true;
238
+ continue;
239
+ }
240
+ else {
241
+ inEnvironmentSection = false;
242
+ // Non-Environment H2 section = bloat
243
+ bloatLines.push(line);
244
+ continue;
245
+ }
246
+ }
247
+ if (inEnvironmentSection) {
248
+ // Environment items are retained — not bloat
249
+ continue;
250
+ }
251
+ // Everything else after the pointer that's not in ## Environment = bloat
252
+ bloatLines.push(line);
253
+ }
254
+ return bloatLines.join('\n');
255
+ }
256
+ // ============================================================================
257
+ // Module Mutation (reused from adf-migrate pattern)
258
+ // ============================================================================
259
+ function groupByModule(items) {
260
+ const result = {};
261
+ for (const item of items) {
262
+ const mod = item.classification.targetModule;
263
+ const sec = item.classification.targetSection;
264
+ if (!result[mod])
265
+ result[mod] = {};
266
+ if (!result[mod][sec])
267
+ result[mod][sec] = [];
268
+ result[mod][sec].push(item);
269
+ }
270
+ return result;
271
+ }
272
+ function applyMigrationToModule(modulePath, sectionGroups) {
273
+ let doc;
274
+ if (fs.existsSync(modulePath)) {
275
+ doc = (0, adf_1.parseAdf)(fs.readFileSync(modulePath, 'utf-8'));
276
+ }
277
+ else {
278
+ doc = { version: '0.1', sections: [] };
279
+ }
280
+ const ops = [];
281
+ for (const [sectionKey, items] of Object.entries(sectionGroups)) {
282
+ const existingSection = doc.sections.find(s => s.key === sectionKey);
283
+ const weight = items.some(i => i.classification.weight === 'load-bearing')
284
+ ? 'load-bearing'
285
+ : 'advisory';
286
+ if (!existingSection) {
287
+ const listItems = items.map(i => formatItemForAdf(i));
288
+ ops.push({
289
+ op: 'ADD_SECTION',
290
+ key: sectionKey,
291
+ content: { type: 'list', items: listItems },
292
+ weight,
293
+ });
294
+ }
295
+ else if (existingSection.content.type === 'text') {
296
+ const existingText = existingSection.content.value.trim();
297
+ const newItems = items.map(i => formatItemForAdf(i));
298
+ ops.push({
299
+ op: 'REPLACE_SECTION',
300
+ key: sectionKey,
301
+ content: { type: 'list', items: existingText ? [existingText, ...newItems] : newItems },
302
+ });
303
+ }
304
+ else {
305
+ for (const item of items) {
306
+ const formatted = formatItemForAdf(item);
307
+ // Dedup against existing content
308
+ if (existingSection.content.type === 'list') {
309
+ const isDup = existingSection.content.items.some(existing => (0, adf_1.isDuplicateItem)(existing, formatted));
310
+ if (isDup)
311
+ continue;
312
+ }
313
+ ops.push({ op: 'ADD_BULLET', section: sectionKey, value: formatted });
314
+ }
315
+ }
316
+ }
317
+ if (ops.length > 0) {
318
+ doc = (0, adf_1.applyPatches)(doc, ops);
319
+ }
320
+ // Post-patch weight promotion
321
+ for (const [sectionKey, items] of Object.entries(sectionGroups)) {
322
+ if (items.some(i => i.classification.weight === 'load-bearing')) {
323
+ const section = doc.sections.find(s => s.key === sectionKey);
324
+ if (section && section.weight !== 'load-bearing') {
325
+ section.weight = 'load-bearing';
326
+ }
327
+ }
328
+ }
329
+ fs.writeFileSync(modulePath, (0, adf_1.formatAdf)(doc));
330
+ }
331
+ function formatItemForAdf(item) {
332
+ const el = item.element;
333
+ switch (el.type) {
334
+ case 'rule':
335
+ return el.content;
336
+ case 'code-block':
337
+ if (el.language === 'bash' || el.language === 'sh') {
338
+ return `[Build commands] ${el.content.split('\n').filter(l => l.trim()).slice(0, 3).join('; ')}${el.content.split('\n').filter(l => l.trim()).length > 3 ? ' (...)' : ''}`;
339
+ }
340
+ return `[${el.language || 'code'}] ${el.content.split('\n')[0]}`;
341
+ case 'table-row':
342
+ return el.content;
343
+ case 'prose':
344
+ return el.content;
345
+ }
346
+ }
347
+ // ============================================================================
348
+ // Pointer Restoration
349
+ // ============================================================================
350
+ /**
351
+ * Format a STAY item for writing back into the vendor file's ## Environment section.
352
+ * Headings (lines starting with #) are preserved as-is; everything else gets a - prefix.
353
+ */
354
+ function formatStayItem(content) {
355
+ return content.trimStart().startsWith('#') ? content : `- ${content}`;
356
+ }
357
+ function restorePointer(filePath, stayItems) {
358
+ const fullPath = path.resolve(filePath);
359
+ const baseName = path.basename(filePath);
360
+ let pointer = getPointerTemplates()[baseName];
361
+ if (!pointer) {
362
+ pointer = `# ${baseName}\n\n` +
363
+ '> **DO NOT add rules, constraints, or context to this file.**\n' +
364
+ '> All project rules are managed in `.ai/` by Charter.\n' +
365
+ '> See `.ai/manifest.adf` for the module routing manifest.\n';
366
+ }
367
+ // Re-attach retained environment items
368
+ const envItems = stayItems.filter(i => i.classification.reason.includes('Environment') ||
369
+ i.classification.reason.includes('runtime') ||
370
+ i.classification.reason.includes('STAY'));
371
+ if (envItems.length > 0) {
372
+ const envSection = '\n## Environment\n' +
373
+ envItems.map(i => formatStayItem(i.element.content)).join('\n') + '\n';
374
+ if (pointer.includes('## Environment')) {
375
+ pointer = pointer.replace(/## Environment[\s\S]*$/, envSection.trim() + '\n');
376
+ }
377
+ else {
378
+ pointer += envSection;
379
+ }
380
+ }
381
+ // Read current content to preserve any existing ## Environment items
382
+ // that were already there (not extracted as bloat)
383
+ const currentContent = fs.readFileSync(fullPath, 'utf-8');
384
+ const currentLines = currentContent.split('\n');
385
+ let inEnv = false;
386
+ const existingEnvLines = [];
387
+ for (const line of currentLines) {
388
+ if (line.trim() === '## Environment') {
389
+ inEnv = true;
390
+ continue;
391
+ }
392
+ if (line.startsWith('## ') && line.trim() !== '## Environment') {
393
+ inEnv = false;
394
+ }
395
+ if (inEnv && line.trim().startsWith('- ')) {
396
+ existingEnvLines.push(line);
397
+ }
398
+ }
399
+ // If we didn't extract any stay items but there are existing env lines, preserve them
400
+ if (envItems.length === 0 && existingEnvLines.length > 0) {
401
+ const envSection = '\n## Environment\n' + existingEnvLines.join('\n') + '\n';
402
+ if (pointer.includes('## Environment')) {
403
+ pointer = pointer.replace(/## Environment[\s\S]*$/, envSection.trim() + '\n');
404
+ }
405
+ else {
406
+ pointer += envSection;
407
+ }
408
+ }
409
+ fs.writeFileSync(fullPath, pointer);
410
+ }
411
+ // ============================================================================
412
+ // Helpers
413
+ // ============================================================================
414
+ /**
415
+ * Load and merge all .adf modules in aiDir into a single synthetic AdfDocument
416
+ * for dedup checking. This ensures items previously routed to any domain module
417
+ * (backend.adf, security.adf, etc.) are recognized as duplicates on re-injection.
418
+ */
419
+ function loadAllAdfModules(aiDir) {
420
+ if (!fs.existsSync(aiDir))
421
+ return undefined;
422
+ const allSections = [];
423
+ let files;
424
+ try {
425
+ files = fs.readdirSync(aiDir).filter(f => f.endsWith('.adf') && f !== 'manifest.adf');
426
+ }
427
+ catch {
428
+ return undefined;
429
+ }
430
+ for (const file of files) {
431
+ try {
432
+ const doc = (0, adf_1.parseAdf)(fs.readFileSync(path.join(aiDir, file), 'utf-8'));
433
+ allSections.push(...doc.sections);
434
+ }
435
+ catch {
436
+ // skip unparseable modules
437
+ }
438
+ }
439
+ if (allSections.length === 0)
440
+ return undefined;
441
+ return { sections: allSections };
442
+ }
443
+ /**
444
+ * Scan written modules post-apply for sections that exceed the warning threshold.
445
+ */
446
+ function scanModuleWarnings(aiDir, modules) {
447
+ const warnings = [];
448
+ for (const mod of modules) {
449
+ const p = path.join(aiDir, mod);
450
+ if (!fs.existsSync(p))
451
+ continue;
452
+ try {
453
+ const doc = (0, adf_1.parseAdf)(fs.readFileSync(p, 'utf-8'));
454
+ for (const section of doc.sections) {
455
+ if (section.content.type !== 'list')
456
+ continue;
457
+ const count = section.content.items.length;
458
+ if (count >= SECTION_SIZE_WARN_THRESHOLD) {
459
+ warnings.push({ module: mod, section: section.key, itemCount: count });
460
+ }
461
+ }
462
+ }
463
+ catch { /* skip unparseable */ }
464
+ }
465
+ return warnings;
466
+ }
467
+ /**
468
+ * Project module sizes in dry-run mode: current items + incoming items per section.
469
+ */
470
+ function projectModuleWarnings(aiDir, allModuleGroups) {
471
+ const warnings = [];
472
+ for (const [mod, sectionGroups] of Object.entries(allModuleGroups)) {
473
+ const p = path.join(aiDir, mod);
474
+ const currentCounts = {};
475
+ if (fs.existsSync(p)) {
476
+ try {
477
+ const doc = (0, adf_1.parseAdf)(fs.readFileSync(p, 'utf-8'));
478
+ for (const section of doc.sections) {
479
+ if (section.content.type === 'list') {
480
+ currentCounts[section.key] = section.content.items.length;
481
+ }
482
+ }
483
+ }
484
+ catch { /* skip */ }
485
+ }
486
+ for (const [sectionKey, items] of Object.entries(sectionGroups)) {
487
+ const projected = (currentCounts[sectionKey] ?? 0) + items.length;
488
+ if (projected >= SECTION_SIZE_WARN_THRESHOLD) {
489
+ warnings.push({ module: mod, section: sectionKey, itemCount: projected });
490
+ }
491
+ }
492
+ }
493
+ return warnings;
494
+ }
495
+ function loadTriggerMap(aiDir) {
496
+ const manifestPath = path.join(aiDir, 'manifest.adf');
497
+ if (!fs.existsSync(manifestPath))
498
+ return undefined;
499
+ try {
500
+ const manifestDoc = (0, adf_1.parseAdf)(fs.readFileSync(manifestPath, 'utf-8'));
501
+ const manifest = (0, adf_1.parseManifest)(manifestDoc);
502
+ const triggerMap = {};
503
+ for (const mod of manifest.onDemand) {
504
+ if (mod.triggers.length > 0) {
505
+ triggerMap[mod.path] = mod.triggers.map(t => t.toLowerCase());
506
+ }
507
+ }
508
+ return triggerMap;
509
+ }
510
+ catch {
511
+ return undefined;
512
+ }
513
+ }
514
+ // ============================================================================
515
+ // Output
516
+ // ============================================================================
517
+ function printTextResult(result) {
518
+ const tidied = result.files.filter(f => f.status === 'tidied');
519
+ const clean = result.files.filter(f => f.status === 'clean');
520
+ if (tidied.length === 0) {
521
+ console.log(' All vendor files are clean.');
522
+ return;
523
+ }
524
+ const label = result.dryRun ? 'Would tidy' : 'Tidied';
525
+ console.log(` ${label} ${tidied.length} vendor file(s):`);
526
+ for (const f of tidied) {
527
+ const routes = Object.entries(f.routing)
528
+ .map(([mod, count]) => `${mod} (${count})`)
529
+ .join(', ');
530
+ console.log(` ${f.file}: ${f.itemsExtracted} items \u2192 ${routes}`);
531
+ }
532
+ if (clean.length > 0) {
533
+ console.log(` ${clean.length} file(s) already clean.`);
534
+ }
535
+ if (result.moduleWarnings.length > 0) {
536
+ console.log('');
537
+ console.log(' ⚠ Module size warnings:');
538
+ for (const w of result.moduleWarnings) {
539
+ console.log(` ${w.module} > ${w.section}: ${w.itemCount} items — consider running: charter adf prune`);
540
+ }
541
+ }
542
+ if (result.dryRun) {
543
+ console.log('');
544
+ console.log(' Run without --dry-run to apply.');
545
+ }
546
+ }
547
+ //# sourceMappingURL=adf-tidy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adf-tidy.js","sourceRoot":"","sources":["../../src/commands/adf-tidy.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,16 @@ export declare const CORE_SCAFFOLD = "ADF: 0.1\n\n\uD83D\uDCD6 GUIDE [advisory]:
9
9
  export declare const STATE_SCAFFOLD = "ADF: 0.1\n\uD83E\uDDE0 STATE:\n CURRENT: Repository initialized with ADF context system\n NEXT: Configure on-demand modules for your stack\n";
10
10
  export declare const FRONTEND_SCAFFOLD = "ADF: 0.1\n\uD83D\uDCCB CONTEXT:\n - Frontend module scaffold\n - Add framework-specific constraints and operational rules\n";
11
11
  export declare const BACKEND_SCAFFOLD = "ADF: 0.1\n\uD83D\uDCCB CONTEXT:\n - Backend module scaffold\n - Add service/API/database constraints and operational rules\n";
12
+ export declare const DECISIONS_SCAFFOLD = "ADF: 0.1\n\uD83D\uDCCB CONTEXT:\n - Decisions module scaffold\n - Record architectural decision rationale and outcomes\n";
13
+ export declare const PLANNING_SCAFFOLD = "ADF: 0.1\n\uD83D\uDCCB CONTEXT:\n - Planning module scaffold\n - Track project phases, milestones, and sequencing\n";
14
+ export declare const CONTENT_SCAFFOLD = "ADF: 0.1\n\uD83D\uDCCB CONTEXT:\n - Content module scaffold\n - Add Markdown/MDX authoring conventions, frontmatter schema, and doc linting rules\n\n\u26A0\uFE0F CONSTRAINTS [load-bearing]:\n - All pages must include required frontmatter fields (title, description)\n - Use MDX for pages that require interactive components\n\n\uD83D\uDCCB ADVISORY:\n - Prefer flat URL structures; avoid deep nesting beyond 3 levels\n - Include alt text on all images\n";
15
+ export declare const MANIFEST_DOCS_SCAFFOLD = "ADF: 0.1\n\uD83C\uDFAF ROLE: Documentation workspace context router\n\n\uD83D\uDCE6 DEFAULT_LOAD:\n - core.adf\n - state.adf\n\n\uD83D\uDCC2 ON_DEMAND:\n - content.adf (Triggers on: Markdown, MDX, frontmatter, content, Astro, navigation, docs, authoring)\n - decisions.adf (Triggers on: ADR, decision, rationale, architecture)\n - planning.adf (Triggers on: plan, milestone, phase, roadmap)\n\n\uD83D\uDCD0 RULES:\n - Prefer smallest relevant module set.\n - Never assume unseen modules were loaded.\n";
12
16
  export declare function adfCommand(options: CLIOptions, args: string[]): Promise<number>;
13
17
  /** Strings that identify an agent config file as a thin pointer to .ai/. */
14
18
  export declare const POINTER_MARKERS: string[];
15
- export declare const POINTER_CLAUDE_MD = "# Project Context\n\n> This project uses [ADF](https://github.com/Stackbilt-dev/charter) for AI agent context management.\n> All stack rules, constraints, and architectural guidance live in `.ai/`.\n> **Do not duplicate ADF rules here.** Only pre-ADF bootstrap content belongs in this file.\n\nSee `.ai/manifest.adf` for the module routing manifest.\n\n## Environment\n<!-- Add runtime/OS/shell-specific notes here (not stack rules) -->\n";
16
- export declare const POINTER_CURSORRULES = "# Cursor Rules\n\nThis project uses ADF (Attention-Directed Format) for context management.\nAll rules and constraints are in .ai/ \u2014 see .ai/manifest.adf for routing.\n\nDo not add stack rules here. This file exists only as a pointer.\nSee: .ai/core.adf for universal constraints.\n";
17
- export declare const POINTER_AGENTS_MD = "# Agent Guidelines\n\nThis project uses ADF for structured agent context.\nAll architectural rules, constraints, and guidance live in `.ai/`.\n\nModule manifest: .ai/manifest.adf\nUniversal rules: .ai/core.adf\nCurrent state: .ai/state.adf\n\nDo not duplicate rules from .ai/ modules into this file or other agent config files.\n";
19
+ export declare const POINTER_CLAUDE_MD = "# CLAUDE.md\n\n> **DO NOT add rules, constraints, or context to this file.**\n> This file is auto-managed by Charter. All project rules live in `.ai/`.\n> New rules should be added to the appropriate `.ai/*.adf` module.\n> See `.ai/manifest.adf` for the module routing manifest.\n\n## Environment\n<!-- Add runtime/OS/shell-specific notes here (not stack rules) -->\n";
20
+ export declare const POINTER_CURSORRULES = "DO NOT modify this file. All project rules are managed in .ai/ by Charter.\nSee .ai/manifest.adf for the module routing manifest.\n";
21
+ export declare const POINTER_AGENTS_MD = "# agents.md\n\n> **DO NOT add instructions to this file.**\n> All agent instructions are managed in `.ai/` by Charter.\n> See `.ai/manifest.adf` for the module routing manifest.\n";
22
+ export declare const POINTER_GEMINI_MD = "# GEMINI.md\n\n> **DO NOT add rules or context to this file.**\n> All project rules are managed in `.ai/` by Charter.\n> See `.ai/manifest.adf` for the module routing manifest.\n";
23
+ export declare const POINTER_COPILOT_MD = "DO NOT modify this file. All project rules are managed in .ai/ by Charter.\nSee .ai/manifest.adf for the module routing manifest.\n";
18
24
  //# sourceMappingURL=adf.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adf.d.ts","sourceRoot":"","sources":["../../src/commands/adf.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAa3C,eAAO,MAAM,iBAAiB,0VAc7B,CAAC;AAEF,eAAO,MAAM,aAAa,k3BAmBzB,CAAC;AAEF,eAAO,MAAM,cAAc,mJAI1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,kIAI7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,mIAI5B,CAAC;AAMF,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BrF;AAeD,4EAA4E;AAC5E,eAAO,MAAM,eAAe,UAI3B,CAAC;AAIF,eAAO,MAAM,iBAAiB,2bAU7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,oSAO/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,8UAU7B,CAAC"}
1
+ {"version":3,"file":"adf.d.ts","sourceRoot":"","sources":["../../src/commands/adf.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAc3C,eAAO,MAAM,iBAAiB,0VAc7B,CAAC;AAEF,eAAO,MAAM,aAAa,k3BAmBzB,CAAC;AAEF,eAAO,MAAM,cAAc,mJAI1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,kIAI7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,mIAI5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,+HAI9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,0HAI7B,CAAC;AAGF,eAAO,MAAM,gBAAgB,gdAY5B,CAAC;AAEF,eAAO,MAAM,sBAAsB,igBAelC,CAAC;AAMF,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAiCrF;AAeD,4EAA4E;AAC5E,eAAO,MAAM,eAAe,UAQ3B,CAAC;AAIF,eAAO,MAAM,iBAAiB,oXAS7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,wIAE/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,wLAK7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,uLAK7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,wIAE9B,CAAC"}