@stackbilt/cli 0.1.20 → 0.3.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.
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
- # @stackbilt/cli
2
-
3
- CLI entry point for Charter Kit -- a local-first governance toolkit for software repositories. Orchestrates all other `@stackbilt/*` packages to parse commit trailers, score risk, detect blessed-stack drift, and classify change scope. No LLM calls at runtime.
4
-
5
- > **This is the only package most users need.** One install gives you the full Charter Kit toolkit.
6
-
1
+ # @stackbilt/cli
2
+
3
+ CLI entry point for Charter Kit -- a local-first governance toolkit for software repositories. Orchestrates all other `@stackbilt/*` packages to parse commit trailers, score risk, detect blessed-stack drift, and classify change scope. No LLM calls at runtime.
4
+
5
+ > **This is the only package most users need.** One install gives you the full Charter Kit toolkit.
6
+
7
7
  ## Install (Recommended)
8
8
 
9
9
  ```bash
@@ -43,11 +43,11 @@ npx --no-install charter --version
43
43
  ```
44
44
 
45
45
  For CI pipelines, install as a dev dependency:
46
-
47
- ```bash
48
- npm install --save-dev @stackbilt/cli
49
- ```
50
-
46
+
47
+ ```bash
48
+ npm install --save-dev @stackbilt/cli
49
+ ```
50
+
51
51
  Requires Node >= 18.
52
52
 
53
53
  ## Quick Start
@@ -62,6 +62,11 @@ charter drift # scan for blessed-stack drift
62
62
  charter audit # generate governance audit report
63
63
  charter classify "migrate auth provider"
64
64
  charter hook install --commit-msg
65
+ charter adf init # scaffold .ai/ context directory
66
+ charter adf fmt .ai/core.adf # reformat ADF to canonical form
67
+ charter adf bundle --task "fix React component"
68
+ charter adf sync --check # verify .adf files match locked hashes
69
+ charter adf evidence --auto-measure --format json # validate metric ceilings
65
70
  ```
66
71
 
67
72
  ## Human Onboarding (Copy/Paste)
@@ -128,13 +133,17 @@ npx charter validate --ci --format json
128
133
  npx charter drift --ci --format json
129
134
  npx charter audit --format json
130
135
 
136
+ # ADF context management
137
+ npx charter adf evidence --auto-measure --format json --ci
138
+ npx charter adf sync --check --format json
139
+
131
140
  # recurring maintenance
132
141
  npx charter doctor --format json
133
142
  npx charter audit --format json
134
143
  ```
135
-
136
- ## Commands
137
-
144
+
145
+ ## Commands
146
+
138
147
  ### `charter` (no args)
139
148
 
140
149
  Default first-run experience. Shows:
@@ -169,20 +178,20 @@ Detection output includes `detected.sources` in JSON mode so agents can verify w
169
178
  Setup also adds optional root scripts when missing: `charter:detect` and `charter:setup`.
170
179
  Setup JSON now includes `mutationPlan` and `appliedMutations` so side effects are explicit before/after apply.
171
180
  Setup baseline mutation metadata now includes `configHashBefore`, `configHashAfter`, and `writesPerformed`.
172
-
181
+
173
182
  ### `charter init`
174
183
 
175
184
  Scaffold `.charter/` config templates only. Supports `--preset worker|frontend|backend|fullstack`.
176
-
177
- ### `charter doctor`
178
-
179
- Validate CLI installation and `.charter/` config.
180
-
185
+
186
+ ### `charter doctor`
187
+
188
+ Validate CLI installation, `.charter/` config, and ADF readiness (manifest existence, module parseability, sync lock status).
189
+
181
190
  ### `charter validate`
182
191
 
183
192
  Validate git commits for `Governed-By` and `Resolves-Request` trailers.
184
-
185
- ```bash
193
+
194
+ ```bash
186
195
  charter validate --ci --format json
187
196
  charter validate --range HEAD~10..HEAD --format json
188
197
  ```
@@ -213,17 +222,17 @@ Resolves-Request: REQ-078
213
222
 
214
223
  Co-Authored-By: Dev <dev@example.com>
215
224
  ```
216
-
225
+
217
226
  ### `charter drift`
218
-
219
- Scan files against blessed-stack patterns in `.charter/patterns/*.json`.
220
-
221
- ```bash
227
+
228
+ Scan files against blessed-stack patterns in `.charter/patterns/*.json`.
229
+
230
+ ```bash
222
231
  charter drift --path ./src --ci
223
232
  ```
224
233
 
225
234
  JSON output includes `patternsCustomized` when pattern files declare customization metadata.
226
-
235
+
227
236
  ### `charter audit`
228
237
 
229
238
  Generate a governance audit report covering trailers, risk, drift, and policy-section coverage quality.
@@ -231,12 +240,12 @@ Use `--range <revset>` to audit the same commit window used by validation in rev
231
240
 
232
241
  If score is held down by trailer coverage, enforce `validate --ci` in PR checks and add commit-template guidance for required trailers.
233
242
  Audit output includes whether preset pattern files are still uncustomized when metadata is present.
234
-
243
+
235
244
  ### `charter classify`
236
-
237
- Classify a change as `SURFACE`, `LOCAL`, or `CROSS_CUTTING`.
238
-
239
- ```bash
245
+
246
+ Classify a change as `SURFACE`, `LOCAL`, or `CROSS_CUTTING`.
247
+
248
+ ```bash
240
249
  charter classify "update button color"
241
250
  ```
242
251
 
@@ -249,43 +258,93 @@ charter hook install --commit-msg
249
258
  ```
250
259
 
251
260
  `--force` (or global `--yes`) allows overwrite when a non-Charter `commit-msg` hook already exists.
252
-
253
- ## Global Options
254
-
255
- | Option | Description | Default |
256
- |---|---|---|
257
- | `--config <path>` | Path to `.charter/` directory | `.charter/` |
258
- | `--format <mode>` | Output: `text` or `json` | `text` |
259
- | `--ci` | CI mode: exit non-zero on WARN or FAIL | off |
261
+
262
+ ### `charter adf`
263
+
264
+ ADF (Attention-Directed Format) context management. Replaces monolithic `.cursorrules`/`claude.md` files with a modular, AST-backed `.ai/` directory.
265
+
266
+ ```bash
267
+ charter adf init [--ai-dir <dir>] [--force]
268
+ charter adf fmt <file> [--check] [--write]
269
+ charter adf patch <file> --ops '<json>' | --ops-file <path>
270
+ charter adf bundle --task "Fix React component" [--ai-dir <dir>]
271
+ charter adf sync --check [--ai-dir <dir>]
272
+ charter adf sync --write [--ai-dir <dir>]
273
+ charter adf evidence [--task "<prompt>"] [--ai-dir <dir>] [--auto-measure]
274
+ [--context '{"key": value}'] [--context-file <path>]
275
+ ```
276
+
277
+ - `init`: Scaffold `.ai/` with `manifest.adf`, `core.adf`, and `state.adf`. Core module includes a 500-line LOC guardrail metric by default.
278
+ - `fmt`: Parse and reformat to canonical ADF. `--check` exits 1 if not canonical. `--write` reformats in place. Default prints to stdout.
279
+ - `patch`: Apply typed delta operations (ADD_BULLET, REPLACE_BULLET, REMOVE_BULLET, ADD_SECTION, REPLACE_SECTION, REMOVE_SECTION, UPDATE_METRIC). Accepts `--ops <json>` inline or `--ops-file <path>` from a file.
280
+ - `bundle`: Read `manifest.adf`, resolve ON_DEMAND modules via keyword matching against the task, and output merged context with token estimate, trigger observability (matched keywords, load reasons), unmatched modules, and advisory-only warnings.
281
+ - `sync --check`: Verify source `.adf` files match their locked hashes. Exits 1 if any source has drifted since last sync.
282
+ - `sync --write`: Update `.adf.lock` with current source hashes.
283
+ - `evidence`: Validate all metric ceilings in the merged document and produce a structured pass/fail evidence report. `--auto-measure` counts lines in files referenced by the manifest METRICS section. `--context` or `--context-file` inject external metric overrides that take precedence over auto-measured and document values. In `--ci` mode, exits 1 on constraint failures (warnings don't fail).
284
+
285
+ #### Evidence Example (from Charter's own repo)
286
+
287
+ Charter uses its own ADF system for self-governance. Running evidence with auto-measurement:
288
+
289
+ ```bash
290
+ charter adf evidence --auto-measure --format json --ci
291
+ ```
292
+
293
+ Produces constraint checks against live source file line counts:
294
+
295
+ ```json
296
+ {
297
+ "constraints": [
298
+ { "metric": "adf_commands_loc", "value": 835, "ceiling": 900, "status": "pass", "source": "context" },
299
+ { "metric": "bundler_loc", "value": 389, "ceiling": 500, "status": "pass", "source": "context" },
300
+ { "metric": "parser_loc", "value": 214, "ceiling": 300, "status": "pass", "source": "context" },
301
+ { "metric": "cli_entry_loc", "value": 142, "ceiling": 200, "status": "pass", "source": "context" }
302
+ ],
303
+ "allPassing": true,
304
+ "failCount": 0,
305
+ "nextActions": []
306
+ }
307
+ ```
308
+
309
+ `source: "context"` indicates values were auto-measured from source files (not from the document's static values). In `--ci` mode, exit code 1 is returned when any constraint fails.
310
+
311
+ ## Global Options
312
+
313
+ | Option | Description | Default |
314
+ |---|---|---|
315
+ | `--config <path>` | Path to `.charter/` directory | `.charter/` |
316
+ | `--format <mode>` | Output: `text` or `json` | `text` |
317
+ | `--ci` | CI mode: exit non-zero on WARN or FAIL | off |
260
318
  | `--yes` | Auto-accept safe setup overwrites | off |
261
319
 
262
320
  Setup-only options:
263
321
  - `--preset <worker|frontend|backend|fullstack>`: override auto-detected preset
264
322
  - `--detect-only`: print stack detection result and selected preset without writing files
265
323
  - `--no-dependency-sync`: skip rewriting `devDependencies["@stackbilt/cli"]` during setup
266
-
267
- ## Exit Codes
268
-
269
- | Code | Meaning |
270
- |------|---------|
271
- | 0 | Success |
272
- | 1 | Policy violation (CI mode) |
273
- | 2 | Runtime or usage error |
274
-
275
- ## Related Packages
276
-
277
- - `@stackbilt/types` -- shared enums and interfaces
278
- - `@stackbilt/core` -- Zod schemas and sanitization helpers
279
- - `@stackbilt/git` -- trailer parsing and commit risk assessment
280
- - `@stackbilt/classify` -- heuristic change classification
281
- - `@stackbilt/drift` -- blessed-stack pattern drift detection
282
- - `@stackbilt/validate` -- citation validation and intent classification
283
- - `@stackbilt/ci` -- GitHub Actions integration helpers
284
-
285
- ## License
286
-
287
- Apache-2.0
288
-
289
- ## Repository
290
-
291
- [https://github.com/Stackbilt-dev/charter](https://github.com/Stackbilt-dev/charter)
324
+
325
+ ## Exit Codes
326
+
327
+ | Code | Meaning |
328
+ |------|---------|
329
+ | 0 | Success |
330
+ | 1 | Policy violation (CI mode) |
331
+ | 2 | Runtime or usage error |
332
+
333
+ ## Related Packages
334
+
335
+ - `@stackbilt/types` -- shared enums and interfaces
336
+ - `@stackbilt/core` -- Zod schemas and sanitization helpers
337
+ - `@stackbilt/git` -- trailer parsing and commit risk assessment
338
+ - `@stackbilt/classify` -- heuristic change classification
339
+ - `@stackbilt/drift` -- blessed-stack pattern drift detection
340
+ - `@stackbilt/validate` -- citation validation and intent classification
341
+ - `@stackbilt/adf` -- ADF parser, formatter, patcher, and bundler
342
+ - `@stackbilt/ci` -- GitHub Actions integration helpers
343
+
344
+ ## License
345
+
346
+ Apache-2.0
347
+
348
+ ## Repository
349
+
350
+ [https://github.com/Stackbilt-dev/charter](https://github.com/Stackbilt-dev/charter)
@@ -0,0 +1,8 @@
1
+ /**
2
+ * charter adf
3
+ *
4
+ * ADF (Attention-Directed Format) subcommands: init, fmt, patch, bundle, sync.
5
+ */
6
+ import type { CLIOptions } from '../index';
7
+ export declare function adfCommand(options: CLIOptions, args: string[]): Promise<number>;
8
+ //# sourceMappingURL=adf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adf.d.ts","sourceRoot":"","sources":["../../src/commands/adf.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAiD3C,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBrF"}
@@ -0,0 +1,763 @@
1
+ "use strict";
2
+ /**
3
+ * charter adf
4
+ *
5
+ * ADF (Attention-Directed Format) subcommands: init, fmt, patch, bundle, sync.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.adfCommand = adfCommand;
42
+ const fs = __importStar(require("node:fs"));
43
+ const path = __importStar(require("node:path"));
44
+ const crypto = __importStar(require("node:crypto"));
45
+ const adf_1 = require("@stackbilt/adf");
46
+ const index_1 = require("../index");
47
+ // ============================================================================
48
+ // Scaffold Content
49
+ // ============================================================================
50
+ const MANIFEST_SCAFFOLD = `ADF: 0.1
51
+ \u{1F3AF} ROLE: Repo context router
52
+
53
+ \u{1F4E6} DEFAULT_LOAD:
54
+ - core.adf
55
+ - state.adf
56
+
57
+ \u{1F4C2} ON_DEMAND:
58
+ - frontend.adf (Triggers on: React, CSS, UI)
59
+ - backend.adf (Triggers on: API, Node, DB)
60
+
61
+ \u{1F4D0} RULES:
62
+ - Prefer smallest relevant module set.
63
+ - Never assume unseen modules were loaded.
64
+ `;
65
+ const CORE_SCAFFOLD = `ADF: 0.1
66
+ \u{1F3AF} TASK: Define universal repository rules
67
+
68
+ \u{2699}\u{FE0F} CONTEXT:
69
+ - This file is loaded by default for every task.
70
+ - Keep it lean — add domain-specific rules to on-demand modules.
71
+
72
+ \u{26A0}\u{FE0F} CONSTRAINTS [load-bearing]:
73
+ - Follow conventional commits.
74
+ - No secrets in source code.
75
+ - Prefer pure functions in library code.
76
+
77
+ \u{1F4CA} METRICS [load-bearing]:
78
+ entry_loc: 0 / 500 [lines]
79
+ `;
80
+ const STATE_SCAFFOLD = `ADF: 0.1
81
+ \u{1F9E0} STATE:
82
+ CURRENT: Repository initialized with ADF context system
83
+ NEXT: Configure on-demand modules for your stack
84
+ `;
85
+ // ============================================================================
86
+ // Dispatcher
87
+ // ============================================================================
88
+ async function adfCommand(options, args) {
89
+ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
90
+ printHelp();
91
+ return index_1.EXIT_CODE.SUCCESS;
92
+ }
93
+ const subcommand = args[0];
94
+ const restArgs = args.slice(1);
95
+ switch (subcommand) {
96
+ case 'init':
97
+ return adfInit(options, restArgs);
98
+ case 'fmt':
99
+ return adfFmt(options, restArgs);
100
+ case 'patch':
101
+ return adfPatch(options, restArgs);
102
+ case 'bundle':
103
+ return adfBundle(options, restArgs);
104
+ case 'sync':
105
+ return adfSync(options, restArgs);
106
+ case 'evidence':
107
+ return adfEvidence(options, restArgs);
108
+ default:
109
+ throw new index_1.CLIError(`Unknown adf subcommand: ${subcommand}. Supported: init, fmt, patch, bundle, sync, evidence`);
110
+ }
111
+ }
112
+ function adfInit(options, args) {
113
+ const force = options.yes || args.includes('--force');
114
+ const aiDir = getFlag(args, '--ai-dir') || '.ai';
115
+ const manifestPath = path.join(aiDir, 'manifest.adf');
116
+ if (fs.existsSync(manifestPath) && !force) {
117
+ const result = { created: false, aiDir, files: [] };
118
+ if (options.format === 'json') {
119
+ console.log(JSON.stringify({ ...result, nextActions: ['charter adf fmt .ai/core.adf --check', 'charter adf bundle --task "<prompt>"'] }, null, 2));
120
+ }
121
+ else {
122
+ console.log(` .ai/ already exists at ${aiDir}/`);
123
+ console.log(' Use --force (or --yes) to overwrite.');
124
+ }
125
+ return index_1.EXIT_CODE.SUCCESS;
126
+ }
127
+ fs.mkdirSync(aiDir, { recursive: true });
128
+ fs.writeFileSync(path.join(aiDir, 'manifest.adf'), MANIFEST_SCAFFOLD);
129
+ fs.writeFileSync(path.join(aiDir, 'core.adf'), CORE_SCAFFOLD);
130
+ fs.writeFileSync(path.join(aiDir, 'state.adf'), STATE_SCAFFOLD);
131
+ const result = {
132
+ created: true,
133
+ aiDir,
134
+ files: ['manifest.adf', 'core.adf', 'state.adf'],
135
+ };
136
+ if (options.format === 'json') {
137
+ console.log(JSON.stringify({
138
+ ...result,
139
+ nextActions: [
140
+ 'Edit core.adf with your universal repo rules',
141
+ 'charter adf fmt .ai/core.adf --check',
142
+ 'charter adf bundle --task "<prompt>"',
143
+ ],
144
+ }, null, 2));
145
+ }
146
+ else {
147
+ console.log(` Initialized ADF context at ${aiDir}/`);
148
+ console.log('');
149
+ console.log(' Created:');
150
+ for (const file of result.files) {
151
+ console.log(` ${file}`);
152
+ }
153
+ console.log('');
154
+ console.log(' Next steps:');
155
+ console.log(' 1. Edit core.adf with your universal repo rules');
156
+ console.log(' 2. Add on-demand modules (e.g. frontend.adf, backend.adf)');
157
+ console.log(' 3. Run: charter adf fmt .ai/core.adf --check');
158
+ }
159
+ return index_1.EXIT_CODE.SUCCESS;
160
+ }
161
+ // ============================================================================
162
+ // adf fmt
163
+ // ============================================================================
164
+ function adfFmt(options, args) {
165
+ const filePath = args.find(a => !a.startsWith('-'));
166
+ if (!filePath) {
167
+ throw new index_1.CLIError('adf fmt requires a file path. Usage: charter adf fmt <file> [--check] [--write]');
168
+ }
169
+ if (!fs.existsSync(filePath)) {
170
+ throw new index_1.CLIError(`File not found: ${filePath}`);
171
+ }
172
+ const input = fs.readFileSync(filePath, 'utf-8');
173
+ const doc = (0, adf_1.parseAdf)(input);
174
+ const formatted = (0, adf_1.formatAdf)(doc);
175
+ const checkMode = args.includes('--check');
176
+ const writeMode = args.includes('--write');
177
+ if (checkMode) {
178
+ const isCanonical = input === formatted;
179
+ if (options.format === 'json') {
180
+ console.log(JSON.stringify({ file: filePath, canonical: isCanonical }, null, 2));
181
+ }
182
+ else if (isCanonical) {
183
+ console.log(` [ok] ${filePath} is canonical.`);
184
+ }
185
+ else {
186
+ console.log(` [warn] ${filePath} is not in canonical format.`);
187
+ console.log(' Run: charter adf fmt <file> --write');
188
+ }
189
+ return isCanonical ? index_1.EXIT_CODE.SUCCESS : index_1.EXIT_CODE.POLICY_VIOLATION;
190
+ }
191
+ if (writeMode) {
192
+ fs.writeFileSync(filePath, formatted);
193
+ if (options.format === 'json') {
194
+ console.log(JSON.stringify({ file: filePath, written: true }, null, 2));
195
+ }
196
+ else {
197
+ console.log(` [ok] Reformatted ${filePath}`);
198
+ }
199
+ return index_1.EXIT_CODE.SUCCESS;
200
+ }
201
+ // Default: print to stdout
202
+ process.stdout.write(formatted);
203
+ return index_1.EXIT_CODE.SUCCESS;
204
+ }
205
+ // ============================================================================
206
+ // adf patch
207
+ // ============================================================================
208
+ function adfPatch(options, args) {
209
+ const filePath = args.find(a => !a.startsWith('-'));
210
+ if (!filePath) {
211
+ throw new index_1.CLIError('adf patch requires a file path. Usage: charter adf patch <file> --ops <json>');
212
+ }
213
+ const opsJson = getFlag(args, '--ops');
214
+ const opsFile = getFlag(args, '--ops-file');
215
+ if (!opsJson && !opsFile) {
216
+ throw new index_1.CLIError('adf patch requires --ops <json> or --ops-file <path>.');
217
+ }
218
+ if (!fs.existsSync(filePath)) {
219
+ throw new index_1.CLIError(`File not found: ${filePath}`);
220
+ }
221
+ const rawOps = opsFile ? readJsonFlag(opsFile, '--ops-file') : opsJson;
222
+ let ops;
223
+ try {
224
+ ops = JSON.parse(rawOps);
225
+ if (!Array.isArray(ops)) {
226
+ throw new Error('ops must be an array');
227
+ }
228
+ }
229
+ catch (e) {
230
+ const msg = e instanceof Error ? e.message : String(e);
231
+ throw new index_1.CLIError(`Invalid --ops JSON: ${msg}`);
232
+ }
233
+ const input = fs.readFileSync(filePath, 'utf-8');
234
+ const doc = (0, adf_1.parseAdf)(input);
235
+ try {
236
+ const patched = (0, adf_1.applyPatches)(doc, ops);
237
+ const output = (0, adf_1.formatAdf)(patched);
238
+ fs.writeFileSync(filePath, output);
239
+ if (options.format === 'json') {
240
+ console.log(JSON.stringify({ file: filePath, patched: true, opsApplied: ops.length }, null, 2));
241
+ }
242
+ else {
243
+ console.log(` [ok] Applied ${ops.length} patch${ops.length === 1 ? '' : 'es'} to ${filePath}`);
244
+ }
245
+ return index_1.EXIT_CODE.SUCCESS;
246
+ }
247
+ catch (e) {
248
+ if (e instanceof Error && e.name === 'AdfPatchError') {
249
+ if (options.format === 'json') {
250
+ console.log(JSON.stringify({ file: filePath, patched: false, error: e.message }, null, 2));
251
+ }
252
+ else {
253
+ console.error(` [error] ${e.message}`);
254
+ }
255
+ return index_1.EXIT_CODE.RUNTIME_ERROR;
256
+ }
257
+ throw e;
258
+ }
259
+ }
260
+ // ============================================================================
261
+ // adf bundle
262
+ // ============================================================================
263
+ function adfBundle(options, args) {
264
+ const task = getFlag(args, '--task');
265
+ if (!task) {
266
+ throw new index_1.CLIError('adf bundle requires --task "<prompt>". Usage: charter adf bundle --task "Fix React component"');
267
+ }
268
+ const aiDir = getFlag(args, '--ai-dir') || '.ai';
269
+ const manifestPath = path.join(aiDir, 'manifest.adf');
270
+ if (!fs.existsSync(manifestPath)) {
271
+ throw new index_1.CLIError(`manifest.adf not found at ${manifestPath}. Run: charter adf init`);
272
+ }
273
+ const manifestContent = fs.readFileSync(manifestPath, 'utf-8');
274
+ const manifestDoc = (0, adf_1.parseAdf)(manifestContent);
275
+ const manifest = (0, adf_1.parseManifest)(manifestDoc);
276
+ // Tokenize task into keywords (simple word split)
277
+ const keywords = task
278
+ .split(/[\s,;:()[\]{}]+/)
279
+ .filter(w => w.length > 1)
280
+ .map(w => w.replace(/[^a-zA-Z0-9]/g, ''));
281
+ const modulePaths = (0, adf_1.resolveModules)(manifest, keywords);
282
+ const readFile = (p) => fs.readFileSync(p, 'utf-8');
283
+ try {
284
+ const result = (0, adf_1.bundleModules)(aiDir, modulePaths, readFile, keywords);
285
+ if (options.format === 'json') {
286
+ const jsonOut = {
287
+ task,
288
+ keywords,
289
+ resolvedModules: result.resolvedModules,
290
+ tokenEstimate: result.tokenEstimate,
291
+ tokenBudget: result.tokenBudget,
292
+ tokenUtilization: result.tokenUtilization,
293
+ perModuleTokens: result.perModuleTokens,
294
+ triggerMatches: result.triggerMatches,
295
+ };
296
+ if (result.unmatchedModules.length > 0) {
297
+ jsonOut.unmatchedModules = result.unmatchedModules;
298
+ }
299
+ if (result.moduleBudgetOverruns.length > 0) {
300
+ jsonOut.moduleBudgetOverruns = result.moduleBudgetOverruns;
301
+ }
302
+ if (result.advisoryOnlyModules.length > 0) {
303
+ jsonOut.advisoryOnlyModules = result.advisoryOnlyModules;
304
+ }
305
+ if (result.manifest.cadence.length > 0) {
306
+ jsonOut.cadence = result.manifest.cadence;
307
+ }
308
+ console.log(JSON.stringify(jsonOut, null, 2));
309
+ }
310
+ else {
311
+ console.log(` Task: "${task}"`);
312
+ console.log(` Keywords: ${keywords.join(', ')}`);
313
+ console.log(` Resolved modules: ${result.resolvedModules.join(', ')}`);
314
+ console.log(` Token estimate: ~${result.tokenEstimate}`);
315
+ if (result.tokenBudget !== null) {
316
+ const pct = result.tokenUtilization !== null
317
+ ? ` (${(result.tokenUtilization * 100).toFixed(0)}%)`
318
+ : '';
319
+ console.log(` Token budget: ${result.tokenBudget}${pct}`);
320
+ }
321
+ console.log('');
322
+ if (result.moduleBudgetOverruns.length > 0) {
323
+ console.log(' Module budget overruns:');
324
+ for (const o of result.moduleBudgetOverruns) {
325
+ console.log(` [!] ${o.module}: ~${o.tokens} tokens (budget: ${o.budget})`);
326
+ }
327
+ console.log('');
328
+ }
329
+ if (result.triggerMatches.length > 0) {
330
+ console.log(' Trigger report:');
331
+ for (const tm of result.triggerMatches) {
332
+ const icon = tm.matched ? '+' : '-';
333
+ const kw = tm.matchedKeywords.length > 0 ? ` [${tm.matchedKeywords.join(', ')}]` : '';
334
+ console.log(` [${icon}] ${tm.module} (${tm.trigger})${kw}`);
335
+ }
336
+ console.log('');
337
+ }
338
+ if (result.unmatchedModules.length > 0) {
339
+ console.log(' Unmatched modules (not loaded):');
340
+ for (const m of result.unmatchedModules) {
341
+ console.log(` [-] ${m}`);
342
+ }
343
+ console.log('');
344
+ }
345
+ if (result.advisoryOnlyModules.length > 0) {
346
+ console.log(' Advisory-only modules:');
347
+ for (const m of result.advisoryOnlyModules) {
348
+ console.log(` [!] ${m}: no load-bearing sections`);
349
+ }
350
+ console.log('');
351
+ }
352
+ if (result.manifest.cadence.length > 0) {
353
+ console.log(' Cadence schedule:');
354
+ for (const c of result.manifest.cadence) {
355
+ console.log(` ${c.check}: ${c.frequency}`);
356
+ }
357
+ console.log('');
358
+ }
359
+ // Output merged document
360
+ const output = (0, adf_1.formatAdf)(result.mergedDocument);
361
+ console.log(' --- Merged Context ---');
362
+ console.log(output);
363
+ }
364
+ return index_1.EXIT_CODE.SUCCESS;
365
+ }
366
+ catch (e) {
367
+ if (e instanceof Error && e.name === 'AdfBundleError') {
368
+ if (options.format === 'json') {
369
+ console.log(JSON.stringify({ error: e.message }, null, 2));
370
+ }
371
+ else {
372
+ console.error(` [error] ${e.message}`);
373
+ }
374
+ return index_1.EXIT_CODE.RUNTIME_ERROR;
375
+ }
376
+ throw e;
377
+ }
378
+ }
379
+ function adfSync(options, args) {
380
+ const aiDir = getFlag(args, '--ai-dir') || '.ai';
381
+ const checkMode = args.includes('--check');
382
+ const writeMode = args.includes('--write');
383
+ if (!checkMode && !writeMode) {
384
+ throw new index_1.CLIError('adf sync requires --check or --write. Usage: charter adf sync --check');
385
+ }
386
+ const manifestPath = path.join(aiDir, 'manifest.adf');
387
+ if (!fs.existsSync(manifestPath)) {
388
+ throw new index_1.CLIError(`manifest.adf not found at ${manifestPath}. Run: charter adf init`);
389
+ }
390
+ const manifestContent = fs.readFileSync(manifestPath, 'utf-8');
391
+ const manifestDoc = (0, adf_1.parseAdf)(manifestContent);
392
+ const manifest = (0, adf_1.parseManifest)(manifestDoc);
393
+ if (manifest.sync.length === 0) {
394
+ const result = {
395
+ aiDir,
396
+ lockFile: path.join(aiDir, '.adf.lock'),
397
+ entries: [],
398
+ allInSync: true,
399
+ written: false,
400
+ };
401
+ if (options.format === 'json') {
402
+ console.log(JSON.stringify(result, null, 2));
403
+ }
404
+ else {
405
+ console.log(' No SYNC entries in manifest. Nothing to check.');
406
+ }
407
+ return index_1.EXIT_CODE.SUCCESS;
408
+ }
409
+ const lockFile = path.join(aiDir, '.adf.lock');
410
+ const locked = loadLockFile(lockFile);
411
+ const entries = [];
412
+ for (const entry of manifest.sync) {
413
+ const sourcePath = path.join(aiDir, entry.source);
414
+ if (!fs.existsSync(sourcePath)) {
415
+ throw new index_1.CLIError(`Sync source not found: ${sourcePath}`);
416
+ }
417
+ const sourceContent = fs.readFileSync(sourcePath, 'utf-8');
418
+ const sourceHash = hashContent(sourceContent);
419
+ const lockedHash = locked[entry.source] ?? null;
420
+ entries.push({
421
+ source: entry.source,
422
+ target: entry.target,
423
+ sourceHash,
424
+ lockedHash,
425
+ inSync: lockedHash === sourceHash,
426
+ });
427
+ }
428
+ const allInSync = entries.every(e => e.inSync);
429
+ if (writeMode) {
430
+ const newLock = {};
431
+ for (const e of entries) {
432
+ newLock[e.source] = e.sourceHash;
433
+ }
434
+ fs.writeFileSync(lockFile, JSON.stringify(newLock, null, 2) + '\n');
435
+ const result = {
436
+ aiDir,
437
+ lockFile,
438
+ entries,
439
+ allInSync: true,
440
+ written: true,
441
+ };
442
+ if (options.format === 'json') {
443
+ console.log(JSON.stringify(result, null, 2));
444
+ }
445
+ else {
446
+ console.log(` [ok] Updated ${lockFile} with ${entries.length} hash${entries.length === 1 ? '' : 'es'}.`);
447
+ }
448
+ return index_1.EXIT_CODE.SUCCESS;
449
+ }
450
+ // --check mode
451
+ const result = {
452
+ aiDir,
453
+ lockFile,
454
+ entries,
455
+ allInSync,
456
+ written: false,
457
+ };
458
+ if (options.format === 'json') {
459
+ const syncOut = { ...result };
460
+ if (!allInSync) {
461
+ syncOut.nextActions = ['Regenerate targets from source .adf files', 'charter adf sync --write'];
462
+ }
463
+ console.log(JSON.stringify(syncOut, null, 2));
464
+ }
465
+ else {
466
+ for (const e of entries) {
467
+ if (e.inSync) {
468
+ console.log(` [ok] ${e.source} -> ${e.target} (in sync)`);
469
+ }
470
+ else if (e.lockedHash === null) {
471
+ console.log(` [warn] ${e.source} -> ${e.target} (no lock entry — run: charter adf sync --write)`);
472
+ }
473
+ else {
474
+ console.log(` [fail] ${e.source} -> ${e.target} (source changed since last sync)`);
475
+ }
476
+ }
477
+ if (!allInSync) {
478
+ console.log('');
479
+ console.log(' Source .adf files have changed. Regenerate targets and run: charter adf sync --write');
480
+ }
481
+ }
482
+ return allInSync ? index_1.EXIT_CODE.SUCCESS : index_1.EXIT_CODE.POLICY_VIOLATION;
483
+ }
484
+ function hashContent(content) {
485
+ return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);
486
+ }
487
+ function loadLockFile(lockFile) {
488
+ if (!fs.existsSync(lockFile))
489
+ return {};
490
+ try {
491
+ return JSON.parse(fs.readFileSync(lockFile, 'utf-8'));
492
+ }
493
+ catch {
494
+ return {};
495
+ }
496
+ }
497
+ function adfEvidence(options, args) {
498
+ const task = getFlag(args, '--task');
499
+ const aiDir = getFlag(args, '--ai-dir') || '.ai';
500
+ const contextJson = getFlag(args, '--context');
501
+ const contextFile = getFlag(args, '--context-file');
502
+ const autoMeasure = args.includes('--auto-measure');
503
+ const manifestPath = path.join(aiDir, 'manifest.adf');
504
+ if (!fs.existsSync(manifestPath)) {
505
+ throw new index_1.CLIError(`manifest.adf not found at ${manifestPath}. Run: charter adf init`);
506
+ }
507
+ const manifestContent = fs.readFileSync(manifestPath, 'utf-8');
508
+ const manifestDoc = (0, adf_1.parseAdf)(manifestContent);
509
+ const manifest = (0, adf_1.parseManifest)(manifestDoc);
510
+ // Resolve modules
511
+ let modulePaths;
512
+ let keywords = [];
513
+ if (task) {
514
+ keywords = task
515
+ .split(/[\s,;:()[\]{}]+/)
516
+ .filter(w => w.length > 1)
517
+ .map(w => w.replace(/[^a-zA-Z0-9]/g, ''));
518
+ modulePaths = (0, adf_1.resolveModules)(manifest, keywords);
519
+ }
520
+ else {
521
+ modulePaths = [...manifest.defaultLoad];
522
+ }
523
+ const readFile = (p) => fs.readFileSync(p, 'utf-8');
524
+ let context;
525
+ const rawContext = contextFile ? readJsonFlag(contextFile, '--context-file') : contextJson;
526
+ if (rawContext) {
527
+ try {
528
+ const parsed = JSON.parse(rawContext);
529
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
530
+ throw new Error('must be a JSON object');
531
+ }
532
+ context = parsed;
533
+ }
534
+ catch (e) {
535
+ const msg = e instanceof Error ? e.message : String(e);
536
+ throw new index_1.CLIError(`Invalid --context JSON: ${msg}`);
537
+ }
538
+ }
539
+ // Auto-measure: count lines in files referenced by manifest METRICS
540
+ // Manifest keys are UPPERCASE (parser map disambiguation), metric keys are lowercase.
541
+ const autoMeasured = [];
542
+ if (autoMeasure && manifest.metrics.length > 0) {
543
+ const measured = {};
544
+ for (const ms of manifest.metrics) {
545
+ const metricKey = ms.key.toLowerCase();
546
+ const filePath = path.resolve(ms.path);
547
+ if (fs.existsSync(filePath)) {
548
+ const content = fs.readFileSync(filePath, 'utf-8');
549
+ const lines = content.split('\n').length;
550
+ measured[metricKey] = lines;
551
+ autoMeasured.push({ metric: metricKey, path: ms.path, lines });
552
+ }
553
+ else {
554
+ autoMeasured.push({ metric: metricKey, path: ms.path, lines: null, error: 'file not found' });
555
+ }
556
+ }
557
+ // Merge: explicit --context wins over auto-measured
558
+ context = { ...measured, ...context };
559
+ }
560
+ try {
561
+ const bundle = (0, adf_1.bundleModules)(aiDir, modulePaths, readFile, keywords);
562
+ const evidence = (0, adf_1.validateConstraints)(bundle.mergedDocument, context);
563
+ // Check sync status
564
+ const lockFile = path.join(aiDir, '.adf.lock');
565
+ const locked = loadLockFile(lockFile);
566
+ const syncEntries = [];
567
+ for (const entry of manifest.sync) {
568
+ const sourcePath = path.join(aiDir, entry.source);
569
+ if (fs.existsSync(sourcePath)) {
570
+ const sourceContent = fs.readFileSync(sourcePath, 'utf-8');
571
+ const sourceHash = hashContent(sourceContent);
572
+ const lockedHash = locked[entry.source] ?? null;
573
+ syncEntries.push({ source: entry.source, inSync: lockedHash === sourceHash });
574
+ }
575
+ }
576
+ const allInSync = syncEntries.length === 0 || syncEntries.every(e => e.inSync);
577
+ const staleCount = syncEntries.filter(e => !e.inSync).length;
578
+ if (options.format === 'json') {
579
+ const jsonOut = {
580
+ aiDir,
581
+ resolvedModules: bundle.resolvedModules,
582
+ tokenEstimate: bundle.tokenEstimate,
583
+ tokenBudget: bundle.tokenBudget,
584
+ tokenUtilization: bundle.tokenUtilization,
585
+ constraints: evidence.constraints,
586
+ weightSummary: evidence.weightSummary,
587
+ allPassing: evidence.allPassing,
588
+ failCount: evidence.failCount,
589
+ warnCount: evidence.warnCount,
590
+ syncStatus: { allInSync, staleCount },
591
+ };
592
+ if (task) {
593
+ jsonOut.task = task;
594
+ jsonOut.keywords = keywords;
595
+ }
596
+ if (bundle.advisoryOnlyModules.length > 0) {
597
+ jsonOut.advisoryOnlyModules = bundle.advisoryOnlyModules;
598
+ }
599
+ if (autoMeasured.length > 0) {
600
+ jsonOut.autoMeasured = autoMeasured;
601
+ }
602
+ // Suggest logical next steps based on results
603
+ const nextActions = [];
604
+ if (!evidence.allPassing) {
605
+ nextActions.push('Fix failing constraints before merging');
606
+ }
607
+ if (!allInSync) {
608
+ nextActions.push('charter adf sync --write');
609
+ }
610
+ if (evidence.warnCount > 0) {
611
+ nextActions.push('Review metrics at ceiling boundary');
612
+ }
613
+ if (nextActions.length > 0) {
614
+ jsonOut.nextActions = nextActions;
615
+ }
616
+ console.log(JSON.stringify(jsonOut, null, 2));
617
+ }
618
+ else {
619
+ console.log('');
620
+ console.log(' ADF Evidence Report');
621
+ console.log(' ===================');
622
+ console.log(` Modules loaded: ${bundle.resolvedModules.join(', ')}`);
623
+ console.log(` Token estimate: ~${bundle.tokenEstimate}`);
624
+ if (bundle.tokenBudget !== null) {
625
+ const pct = bundle.tokenUtilization !== null
626
+ ? ` (${(bundle.tokenUtilization * 100).toFixed(0)}%)`
627
+ : '';
628
+ console.log(` Token budget: ${bundle.tokenBudget}${pct}`);
629
+ }
630
+ console.log('');
631
+ // Auto-measured metrics
632
+ if (autoMeasured.length > 0) {
633
+ console.log(' Auto-measured:');
634
+ for (const m of autoMeasured) {
635
+ if (m.lines !== null) {
636
+ console.log(` ${m.metric}: ${m.lines} lines (${m.path})`);
637
+ }
638
+ else {
639
+ console.log(` ${m.metric}: [file not found] (${m.path})`);
640
+ }
641
+ }
642
+ console.log('');
643
+ }
644
+ // Weight summary
645
+ console.log(' Section weights:');
646
+ console.log(` Load-bearing: ${evidence.weightSummary.loadBearing}`);
647
+ console.log(` Advisory: ${evidence.weightSummary.advisory}`);
648
+ console.log(` Unweighted: ${evidence.weightSummary.unweighted}`);
649
+ console.log('');
650
+ // Advisory-only module warnings
651
+ if (bundle.advisoryOnlyModules.length > 0) {
652
+ console.log(' Advisory-only modules:');
653
+ for (const m of bundle.advisoryOnlyModules) {
654
+ console.log(` [!] ${m}: no load-bearing sections`);
655
+ }
656
+ console.log('');
657
+ }
658
+ // Constraints
659
+ if (evidence.constraints.length > 0) {
660
+ console.log(' Constraints:');
661
+ for (const c of evidence.constraints) {
662
+ const icon = c.status === 'pass' ? 'ok' : c.status === 'warn' ? 'WARN' : 'FAIL';
663
+ console.log(` [${icon}] ${c.message}`);
664
+ }
665
+ }
666
+ else {
667
+ console.log(' Constraints: (none)');
668
+ }
669
+ console.log('');
670
+ // Sync status
671
+ if (syncEntries.length > 0) {
672
+ if (allInSync) {
673
+ console.log(' Sync: all sources in sync');
674
+ }
675
+ else {
676
+ console.log(` Sync: ${staleCount} source${staleCount === 1 ? '' : 's'} out of sync`);
677
+ }
678
+ }
679
+ else {
680
+ console.log(' Sync: no sync entries configured');
681
+ }
682
+ console.log('');
683
+ // Verdict
684
+ const verdict = evidence.allPassing ? 'PASS' : 'FAIL';
685
+ console.log(` Verdict: ${verdict}`);
686
+ if (evidence.warnCount > 0) {
687
+ console.log(` (${evidence.warnCount} warning${evidence.warnCount === 1 ? '' : 's'} — at ceiling boundary)`);
688
+ }
689
+ console.log('');
690
+ }
691
+ // CI mode: exit 1 on constraint failures
692
+ if (options.ciMode && !evidence.allPassing) {
693
+ return index_1.EXIT_CODE.POLICY_VIOLATION;
694
+ }
695
+ return index_1.EXIT_CODE.SUCCESS;
696
+ }
697
+ catch (e) {
698
+ if (e instanceof Error && e.name === 'AdfBundleError') {
699
+ if (options.format === 'json') {
700
+ console.log(JSON.stringify({ error: e.message }, null, 2));
701
+ }
702
+ else {
703
+ console.error(` [error] ${e.message}`);
704
+ }
705
+ return index_1.EXIT_CODE.RUNTIME_ERROR;
706
+ }
707
+ throw e;
708
+ }
709
+ }
710
+ // ============================================================================
711
+ // Helpers
712
+ // ============================================================================
713
+ function getFlag(args, flag) {
714
+ const idx = args.indexOf(flag);
715
+ if (idx !== -1 && idx + 1 < args.length) {
716
+ return args[idx + 1];
717
+ }
718
+ return undefined;
719
+ }
720
+ function readJsonFlag(filePath, flagName) {
721
+ if (!fs.existsSync(filePath)) {
722
+ throw new index_1.CLIError(`File not found for ${flagName}: ${filePath}`);
723
+ }
724
+ return fs.readFileSync(filePath, 'utf-8');
725
+ }
726
+ function printHelp() {
727
+ console.log('');
728
+ console.log(' charter adf — Attention-Directed Format tools');
729
+ console.log('');
730
+ console.log(' Usage:');
731
+ console.log(' charter adf init [--ai-dir <dir>] [--force]');
732
+ console.log(' Scaffold .ai/ directory with manifest, core, and state modules.');
733
+ console.log('');
734
+ console.log(' charter adf fmt <file> [--check] [--write]');
735
+ console.log(' Parse and reformat an ADF file to canonical form.');
736
+ console.log(' --check: exit 1 if not canonical (no write)');
737
+ console.log(' --write: reformat file in place');
738
+ console.log(' Default: print formatted output to stdout.');
739
+ console.log('');
740
+ console.log(' charter adf patch <file> --ops <json> | --ops-file <path>');
741
+ console.log(' Apply ADF_PATCH operations to a file.');
742
+ console.log('');
743
+ console.log(' charter adf bundle --task "<prompt>" [--ai-dir <dir>]');
744
+ console.log(' Resolve manifest modules for a task and output merged context.');
745
+ console.log('');
746
+ console.log(' charter adf sync --check [--ai-dir <dir>]');
747
+ console.log(' Verify source .adf files match their locked hashes.');
748
+ console.log(' Exit 1 if any source has changed since last sync.');
749
+ console.log('');
750
+ console.log(' charter adf sync --write [--ai-dir <dir>]');
751
+ console.log(' Update .adf.lock with current source hashes.');
752
+ console.log('');
753
+ console.log(' charter adf evidence [--task "<prompt>"] [--ai-dir <dir>] [--auto-measure]');
754
+ console.log(' [--context \'{"key": value}\']');
755
+ console.log(' Validate metric constraints and produce a structured evidence report.');
756
+ console.log(' --task: resolve on-demand modules for task. Omit for defaultLoad only.');
757
+ console.log(' --auto-measure: count lines in files from manifest METRICS section.');
758
+ console.log(' --context: JSON object of external metric overrides (wins over auto).');
759
+ console.log(' --context-file: read --context JSON from a file instead.');
760
+ console.log(' In --ci mode, exit 1 if any constraint fails.');
761
+ console.log('');
762
+ }
763
+ //# sourceMappingURL=adf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adf.js","sourceRoot":"","sources":["../../src/commands/adf.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAa3C,wBAAsB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA+DxE"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAc3C,wBAAsB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAkIxE"}
@@ -44,6 +44,7 @@ const fs = __importStar(require("node:fs"));
44
44
  const path = __importStar(require("node:path"));
45
45
  const index_1 = require("../index");
46
46
  const config_1 = require("../config");
47
+ const adf_1 = require("@stackbilt/adf");
47
48
  async function doctorCommand(options) {
48
49
  const checks = [];
49
50
  const configFile = path.join(options.configPath, 'config.json');
@@ -79,6 +80,69 @@ async function doctorCommand(options) {
79
80
  status: policyCount > 0 ? 'PASS' : 'WARN',
80
81
  details: policyCount > 0 ? `${policyCount} markdown policy file(s).` : 'No policy markdown files found.',
81
82
  });
83
+ // ADF readiness checks
84
+ const aiDir = '.ai';
85
+ const manifestPath = path.join(aiDir, 'manifest.adf');
86
+ const hasManifest = fs.existsSync(manifestPath);
87
+ checks.push({
88
+ name: 'adf manifest',
89
+ status: hasManifest ? 'PASS' : 'WARN',
90
+ details: hasManifest ? `${manifestPath} exists.` : `${manifestPath} not found. Run: charter adf init`,
91
+ });
92
+ if (hasManifest) {
93
+ try {
94
+ const manifestContent = fs.readFileSync(manifestPath, 'utf-8');
95
+ const manifestDoc = (0, adf_1.parseAdf)(manifestContent);
96
+ const manifest = (0, adf_1.parseManifest)(manifestDoc);
97
+ checks.push({
98
+ name: 'adf manifest parse',
99
+ status: 'PASS',
100
+ details: `Parsed: ${manifest.defaultLoad.length} default-load, ${manifest.onDemand.length} on-demand module(s).`,
101
+ });
102
+ // Check that all defaultLoad modules exist and parse
103
+ const missingModules = [];
104
+ for (const mod of manifest.defaultLoad) {
105
+ const modPath = path.join(aiDir, mod);
106
+ if (!fs.existsSync(modPath)) {
107
+ missingModules.push(mod);
108
+ }
109
+ else {
110
+ try {
111
+ (0, adf_1.parseAdf)(fs.readFileSync(modPath, 'utf-8'));
112
+ }
113
+ catch {
114
+ missingModules.push(`${mod} (parse error)`);
115
+ }
116
+ }
117
+ }
118
+ checks.push({
119
+ name: 'adf default modules',
120
+ status: missingModules.length === 0 ? 'PASS' : 'WARN',
121
+ details: missingModules.length === 0
122
+ ? `All ${manifest.defaultLoad.length} default-load module(s) present and parseable.`
123
+ : `Missing or unparseable: ${missingModules.join(', ')}`,
124
+ });
125
+ // Sync lock status
126
+ if (manifest.sync.length > 0) {
127
+ const lockFile = path.join(aiDir, '.adf.lock');
128
+ const hasLock = fs.existsSync(lockFile);
129
+ checks.push({
130
+ name: 'adf sync lock',
131
+ status: hasLock ? 'PASS' : 'WARN',
132
+ details: hasLock
133
+ ? `${lockFile} exists (${manifest.sync.length} sync entry/entries).`
134
+ : `${lockFile} not found. Run: charter adf sync --write`,
135
+ });
136
+ }
137
+ }
138
+ catch {
139
+ checks.push({
140
+ name: 'adf manifest parse',
141
+ status: 'WARN',
142
+ details: `${manifestPath} failed to parse.`,
143
+ });
144
+ }
145
+ }
82
146
  const hasWarn = checks.some((check) => check.status === 'WARN');
83
147
  const result = {
84
148
  status: hasWarn ? 'WARN' : 'PASS',
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgDH,eAAO,MAAM,SAAS;;;;CAIZ,CAAC;AAEX,qBAAa,QAAS,SAAQ,KAAK;aAGf,QAAQ,EAAE,MAAM;gBADhC,OAAO,EAAE,MAAM,EACC,QAAQ,GAAE,MAAgC;CAK7D;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoDzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkDH,eAAO,MAAM,SAAS;;;;CAIZ,CAAC;AAEX,qBAAa,QAAS,SAAQ,KAAK;aAGf,QAAQ,EAAE,MAAM;gBADhC,OAAO,EAAE,MAAM,EACC,QAAQ,GAAE,MAAgC;CAK7D;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsDzD"}
package/dist/index.js CHANGED
@@ -20,6 +20,7 @@ const drift_1 = require("./commands/drift");
20
20
  const classify_1 = require("./commands/classify");
21
21
  const why_1 = require("./commands/why");
22
22
  const hook_1 = require("./commands/hook");
23
+ const adf_1 = require("./commands/adf");
23
24
  const package_json_1 = __importDefault(require("../package.json"));
24
25
  const CLI_VERSION = package_json_1.default.version;
25
26
  const HELP = `
@@ -39,6 +40,7 @@ Usage:
39
40
  charter classify <subject> Classify a change (SURFACE/LOCAL/CROSS_CUTTING)
40
41
  charter hook install --commit-msg
41
42
  Install git commit-msg hook for trailer normalization
43
+ charter adf <subcommand> ADF context format tools (init, fmt, patch, bundle, sync, evidence)
42
44
  charter why Explain why teams adopt Charter and expected ROI
43
45
  charter doctor Check CLI + config health
44
46
  charter --help Show this help
@@ -111,6 +113,8 @@ async function run(args) {
111
113
  return (0, doctor_1.doctorCommand)(options);
112
114
  case 'hook':
113
115
  return (0, hook_1.hookCommand)(options, restArgs);
116
+ case 'adf':
117
+ return (0, adf_1.adfCommand)(options, restArgs);
114
118
  default:
115
119
  throw new CLIError(`Unknown command: ${command}\n${HELP}`);
116
120
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackbilt/cli",
3
- "version": "0.1.20",
3
+ "version": "0.3.0",
4
4
  "description": "Charter CLI — repo-level governance checks",
5
5
  "bin": {
6
6
  "charter": "./dist/bin.js"
@@ -34,12 +34,13 @@
34
34
  "access": "public"
35
35
  },
36
36
  "dependencies": {
37
- "@stackbilt/types": "^0.1.20",
38
- "@stackbilt/core": "^0.1.20",
39
- "@stackbilt/git": "^0.1.20",
40
- "@stackbilt/classify": "^0.1.20",
41
- "@stackbilt/validate": "^0.1.20",
42
- "@stackbilt/drift": "^0.1.20"
37
+ "@stackbilt/types": "^0.3.0",
38
+ "@stackbilt/core": "^0.3.0",
39
+ "@stackbilt/git": "^0.3.0",
40
+ "@stackbilt/classify": "^0.3.0",
41
+ "@stackbilt/validate": "^0.3.0",
42
+ "@stackbilt/adf": "^0.3.0",
43
+ "@stackbilt/drift": "^0.3.0"
43
44
  },
44
45
  "license": "Apache-2.0",
45
46
  "scripts": {