@stackbilt/cli 0.1.20 → 0.2.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,9 @@ 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"
65
68
  ```
66
69
 
67
70
  ## Human Onboarding (Copy/Paste)
@@ -132,9 +135,9 @@ npx charter audit --format json
132
135
  npx charter doctor --format json
133
136
  npx charter audit --format json
134
137
  ```
135
-
136
- ## Commands
137
-
138
+
139
+ ## Commands
140
+
138
141
  ### `charter` (no args)
139
142
 
140
143
  Default first-run experience. Shows:
@@ -169,20 +172,20 @@ Detection output includes `detected.sources` in JSON mode so agents can verify w
169
172
  Setup also adds optional root scripts when missing: `charter:detect` and `charter:setup`.
170
173
  Setup JSON now includes `mutationPlan` and `appliedMutations` so side effects are explicit before/after apply.
171
174
  Setup baseline mutation metadata now includes `configHashBefore`, `configHashAfter`, and `writesPerformed`.
172
-
175
+
173
176
  ### `charter init`
174
177
 
175
178
  Scaffold `.charter/` config templates only. Supports `--preset worker|frontend|backend|fullstack`.
176
-
177
- ### `charter doctor`
178
-
179
- Validate CLI installation and `.charter/` config.
180
-
179
+
180
+ ### `charter doctor`
181
+
182
+ Validate CLI installation and `.charter/` config.
183
+
181
184
  ### `charter validate`
182
185
 
183
186
  Validate git commits for `Governed-By` and `Resolves-Request` trailers.
184
-
185
- ```bash
187
+
188
+ ```bash
186
189
  charter validate --ci --format json
187
190
  charter validate --range HEAD~10..HEAD --format json
188
191
  ```
@@ -213,17 +216,17 @@ Resolves-Request: REQ-078
213
216
 
214
217
  Co-Authored-By: Dev <dev@example.com>
215
218
  ```
216
-
219
+
217
220
  ### `charter drift`
218
-
219
- Scan files against blessed-stack patterns in `.charter/patterns/*.json`.
220
-
221
- ```bash
221
+
222
+ Scan files against blessed-stack patterns in `.charter/patterns/*.json`.
223
+
224
+ ```bash
222
225
  charter drift --path ./src --ci
223
226
  ```
224
227
 
225
228
  JSON output includes `patternsCustomized` when pattern files declare customization metadata.
226
-
229
+
227
230
  ### `charter audit`
228
231
 
229
232
  Generate a governance audit report covering trailers, risk, drift, and policy-section coverage quality.
@@ -231,12 +234,12 @@ Use `--range <revset>` to audit the same commit window used by validation in rev
231
234
 
232
235
  If score is held down by trailer coverage, enforce `validate --ci` in PR checks and add commit-template guidance for required trailers.
233
236
  Audit output includes whether preset pattern files are still uncustomized when metadata is present.
234
-
237
+
235
238
  ### `charter classify`
236
-
237
- Classify a change as `SURFACE`, `LOCAL`, or `CROSS_CUTTING`.
238
-
239
- ```bash
239
+
240
+ Classify a change as `SURFACE`, `LOCAL`, or `CROSS_CUTTING`.
241
+
242
+ ```bash
240
243
  charter classify "update button color"
241
244
  ```
242
245
 
@@ -249,43 +252,60 @@ charter hook install --commit-msg
249
252
  ```
250
253
 
251
254
  `--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 |
255
+
256
+ ### `charter adf`
257
+
258
+ ADF (Attention-Directed Format) context management. Replaces monolithic `.cursorrules`/`claude.md` files with a modular, AST-backed `.ai/` directory.
259
+
260
+ ```bash
261
+ charter adf init [--ai-dir <dir>] [--force]
262
+ charter adf fmt <file> [--check] [--write]
263
+ charter adf patch <file> --ops '<json>'
264
+ charter adf bundle --task "Fix React component" [--ai-dir <dir>]
265
+ ```
266
+
267
+ - `init`: Scaffold `.ai/` with `manifest.adf`, `core.adf`, and `state.adf`.
268
+ - `fmt`: Parse and reformat to canonical ADF. `--check` exits 1 if not canonical. `--write` reformats in place. Default prints to stdout.
269
+ - `patch`: Apply typed delta operations (ADD_BULLET, REPLACE_BULLET, REMOVE_BULLET, ADD_SECTION, REPLACE_SECTION, REMOVE_SECTION).
270
+ - `bundle`: Read `manifest.adf`, resolve ON_DEMAND modules via keyword matching against the task, and output merged context with token estimate.
271
+
272
+ ## Global Options
273
+
274
+ | Option | Description | Default |
275
+ |---|---|---|
276
+ | `--config <path>` | Path to `.charter/` directory | `.charter/` |
277
+ | `--format <mode>` | Output: `text` or `json` | `text` |
278
+ | `--ci` | CI mode: exit non-zero on WARN or FAIL | off |
260
279
  | `--yes` | Auto-accept safe setup overwrites | off |
261
280
 
262
281
  Setup-only options:
263
282
  - `--preset <worker|frontend|backend|fullstack>`: override auto-detected preset
264
283
  - `--detect-only`: print stack detection result and selected preset without writing files
265
284
  - `--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)
285
+
286
+ ## Exit Codes
287
+
288
+ | Code | Meaning |
289
+ |------|---------|
290
+ | 0 | Success |
291
+ | 1 | Policy violation (CI mode) |
292
+ | 2 | Runtime or usage error |
293
+
294
+ ## Related Packages
295
+
296
+ - `@stackbilt/types` -- shared enums and interfaces
297
+ - `@stackbilt/core` -- Zod schemas and sanitization helpers
298
+ - `@stackbilt/git` -- trailer parsing and commit risk assessment
299
+ - `@stackbilt/classify` -- heuristic change classification
300
+ - `@stackbilt/drift` -- blessed-stack pattern drift detection
301
+ - `@stackbilt/validate` -- citation validation and intent classification
302
+ - `@stackbilt/adf` -- ADF parser, formatter, patcher, and bundler
303
+ - `@stackbilt/ci` -- GitHub Actions integration helpers
304
+
305
+ ## License
306
+
307
+ Apache-2.0
308
+
309
+ ## Repository
310
+
311
+ [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.
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;AAaH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA8C3C,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBrF"}
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+ /**
3
+ * charter adf
4
+ *
5
+ * ADF (Attention-Directed Format) subcommands: init, fmt, patch, bundle.
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 adf_1 = require("@stackbilt/adf");
45
+ const index_1 = require("../index");
46
+ // ============================================================================
47
+ // Scaffold Content
48
+ // ============================================================================
49
+ const MANIFEST_SCAFFOLD = `ADF: 0.1
50
+ \u{1F3AF} ROLE: Repo context router
51
+
52
+ \u{1F4E6} DEFAULT_LOAD:
53
+ - core.adf
54
+ - state.adf
55
+
56
+ \u{1F4C2} ON_DEMAND:
57
+ - frontend.adf (Triggers on: React, CSS, UI)
58
+ - backend.adf (Triggers on: API, Node, DB)
59
+
60
+ \u{1F4D0} RULES:
61
+ - Prefer smallest relevant module set.
62
+ - Never assume unseen modules were loaded.
63
+ `;
64
+ const CORE_SCAFFOLD = `ADF: 0.1
65
+ \u{1F3AF} TASK: Define universal repository rules
66
+
67
+ \u{2699}\u{FE0F} CONTEXT:
68
+ - This file is loaded by default for every task.
69
+ - Keep it lean — add domain-specific rules to on-demand modules.
70
+
71
+ \u{26A0}\u{FE0F} CONSTRAINTS:
72
+ - Follow conventional commits.
73
+ - No secrets in source code.
74
+ - Prefer pure functions in library code.
75
+ `;
76
+ const STATE_SCAFFOLD = `ADF: 0.1
77
+ \u{1F9E0} STATE:
78
+ CURRENT: Repository initialized with ADF context system
79
+ NEXT: Configure on-demand modules for your stack
80
+ `;
81
+ // ============================================================================
82
+ // Dispatcher
83
+ // ============================================================================
84
+ async function adfCommand(options, args) {
85
+ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
86
+ printHelp();
87
+ return index_1.EXIT_CODE.SUCCESS;
88
+ }
89
+ const subcommand = args[0];
90
+ const restArgs = args.slice(1);
91
+ switch (subcommand) {
92
+ case 'init':
93
+ return adfInit(options, restArgs);
94
+ case 'fmt':
95
+ return adfFmt(options, restArgs);
96
+ case 'patch':
97
+ return adfPatch(options, restArgs);
98
+ case 'bundle':
99
+ return adfBundle(options, restArgs);
100
+ default:
101
+ throw new index_1.CLIError(`Unknown adf subcommand: ${subcommand}. Supported: init, fmt, patch, bundle`);
102
+ }
103
+ }
104
+ function adfInit(options, args) {
105
+ const force = options.yes || args.includes('--force');
106
+ const aiDir = getFlag(args, '--ai-dir') || '.ai';
107
+ const manifestPath = path.join(aiDir, 'manifest.adf');
108
+ if (fs.existsSync(manifestPath) && !force) {
109
+ const result = { created: false, aiDir, files: [] };
110
+ if (options.format === 'json') {
111
+ console.log(JSON.stringify(result, null, 2));
112
+ }
113
+ else {
114
+ console.log(` .ai/ already exists at ${aiDir}/`);
115
+ console.log(' Use --force (or --yes) to overwrite.');
116
+ }
117
+ return index_1.EXIT_CODE.SUCCESS;
118
+ }
119
+ fs.mkdirSync(aiDir, { recursive: true });
120
+ fs.writeFileSync(path.join(aiDir, 'manifest.adf'), MANIFEST_SCAFFOLD);
121
+ fs.writeFileSync(path.join(aiDir, 'core.adf'), CORE_SCAFFOLD);
122
+ fs.writeFileSync(path.join(aiDir, 'state.adf'), STATE_SCAFFOLD);
123
+ const result = {
124
+ created: true,
125
+ aiDir,
126
+ files: ['manifest.adf', 'core.adf', 'state.adf'],
127
+ };
128
+ if (options.format === 'json') {
129
+ console.log(JSON.stringify(result, null, 2));
130
+ }
131
+ else {
132
+ console.log(` Initialized ADF context at ${aiDir}/`);
133
+ console.log('');
134
+ console.log(' Created:');
135
+ for (const file of result.files) {
136
+ console.log(` ${file}`);
137
+ }
138
+ console.log('');
139
+ console.log(' Next steps:');
140
+ console.log(' 1. Edit core.adf with your universal repo rules');
141
+ console.log(' 2. Add on-demand modules (e.g. frontend.adf, backend.adf)');
142
+ console.log(' 3. Run: charter adf fmt .ai/core.adf --check');
143
+ }
144
+ return index_1.EXIT_CODE.SUCCESS;
145
+ }
146
+ // ============================================================================
147
+ // adf fmt
148
+ // ============================================================================
149
+ function adfFmt(options, args) {
150
+ const filePath = args.find(a => !a.startsWith('-'));
151
+ if (!filePath) {
152
+ throw new index_1.CLIError('adf fmt requires a file path. Usage: charter adf fmt <file> [--check] [--write]');
153
+ }
154
+ if (!fs.existsSync(filePath)) {
155
+ throw new index_1.CLIError(`File not found: ${filePath}`);
156
+ }
157
+ const input = fs.readFileSync(filePath, 'utf-8');
158
+ const doc = (0, adf_1.parseAdf)(input);
159
+ const formatted = (0, adf_1.formatAdf)(doc);
160
+ const checkMode = args.includes('--check');
161
+ const writeMode = args.includes('--write');
162
+ if (checkMode) {
163
+ const isCanonical = input === formatted;
164
+ if (options.format === 'json') {
165
+ console.log(JSON.stringify({ file: filePath, canonical: isCanonical }, null, 2));
166
+ }
167
+ else if (isCanonical) {
168
+ console.log(` [ok] ${filePath} is canonical.`);
169
+ }
170
+ else {
171
+ console.log(` [warn] ${filePath} is not in canonical format.`);
172
+ console.log(' Run: charter adf fmt <file> --write');
173
+ }
174
+ return isCanonical ? index_1.EXIT_CODE.SUCCESS : index_1.EXIT_CODE.POLICY_VIOLATION;
175
+ }
176
+ if (writeMode) {
177
+ fs.writeFileSync(filePath, formatted);
178
+ if (options.format === 'json') {
179
+ console.log(JSON.stringify({ file: filePath, written: true }, null, 2));
180
+ }
181
+ else {
182
+ console.log(` [ok] Reformatted ${filePath}`);
183
+ }
184
+ return index_1.EXIT_CODE.SUCCESS;
185
+ }
186
+ // Default: print to stdout
187
+ process.stdout.write(formatted);
188
+ return index_1.EXIT_CODE.SUCCESS;
189
+ }
190
+ // ============================================================================
191
+ // adf patch
192
+ // ============================================================================
193
+ function adfPatch(options, args) {
194
+ const filePath = args.find(a => !a.startsWith('-'));
195
+ if (!filePath) {
196
+ throw new index_1.CLIError('adf patch requires a file path. Usage: charter adf patch <file> --ops <json>');
197
+ }
198
+ const opsJson = getFlag(args, '--ops');
199
+ if (!opsJson) {
200
+ throw new index_1.CLIError('adf patch requires --ops <json>.');
201
+ }
202
+ if (!fs.existsSync(filePath)) {
203
+ throw new index_1.CLIError(`File not found: ${filePath}`);
204
+ }
205
+ let ops;
206
+ try {
207
+ ops = JSON.parse(opsJson);
208
+ if (!Array.isArray(ops)) {
209
+ throw new Error('ops must be an array');
210
+ }
211
+ }
212
+ catch (e) {
213
+ const msg = e instanceof Error ? e.message : String(e);
214
+ throw new index_1.CLIError(`Invalid --ops JSON: ${msg}`);
215
+ }
216
+ const input = fs.readFileSync(filePath, 'utf-8');
217
+ const doc = (0, adf_1.parseAdf)(input);
218
+ try {
219
+ const patched = (0, adf_1.applyPatches)(doc, ops);
220
+ const output = (0, adf_1.formatAdf)(patched);
221
+ fs.writeFileSync(filePath, output);
222
+ if (options.format === 'json') {
223
+ console.log(JSON.stringify({ file: filePath, patched: true, opsApplied: ops.length }, null, 2));
224
+ }
225
+ else {
226
+ console.log(` [ok] Applied ${ops.length} patch${ops.length === 1 ? '' : 'es'} to ${filePath}`);
227
+ }
228
+ return index_1.EXIT_CODE.SUCCESS;
229
+ }
230
+ catch (e) {
231
+ if (e instanceof Error && e.name === 'AdfPatchError') {
232
+ if (options.format === 'json') {
233
+ console.log(JSON.stringify({ file: filePath, patched: false, error: e.message }, null, 2));
234
+ }
235
+ else {
236
+ console.error(` [error] ${e.message}`);
237
+ }
238
+ return index_1.EXIT_CODE.RUNTIME_ERROR;
239
+ }
240
+ throw e;
241
+ }
242
+ }
243
+ // ============================================================================
244
+ // adf bundle
245
+ // ============================================================================
246
+ function adfBundle(options, args) {
247
+ const task = getFlag(args, '--task');
248
+ if (!task) {
249
+ throw new index_1.CLIError('adf bundle requires --task "<prompt>". Usage: charter adf bundle --task "Fix React component"');
250
+ }
251
+ const aiDir = getFlag(args, '--ai-dir') || '.ai';
252
+ const manifestPath = path.join(aiDir, 'manifest.adf');
253
+ if (!fs.existsSync(manifestPath)) {
254
+ throw new index_1.CLIError(`manifest.adf not found at ${manifestPath}. Run: charter adf init`);
255
+ }
256
+ const manifestContent = fs.readFileSync(manifestPath, 'utf-8');
257
+ const manifestDoc = (0, adf_1.parseAdf)(manifestContent);
258
+ const manifest = (0, adf_1.parseManifest)(manifestDoc);
259
+ // Tokenize task into keywords (simple word split)
260
+ const keywords = task
261
+ .split(/[\s,;:()[\]{}]+/)
262
+ .filter(w => w.length > 1)
263
+ .map(w => w.replace(/[^a-zA-Z0-9]/g, ''));
264
+ const modulePaths = (0, adf_1.resolveModules)(manifest, keywords);
265
+ const readFile = (p) => fs.readFileSync(p, 'utf-8');
266
+ try {
267
+ const result = (0, adf_1.bundleModules)(aiDir, modulePaths, readFile);
268
+ if (options.format === 'json') {
269
+ console.log(JSON.stringify({
270
+ task,
271
+ keywords,
272
+ resolvedModules: result.resolvedModules,
273
+ tokenEstimate: result.tokenEstimate,
274
+ triggerMatches: result.triggerMatches,
275
+ }, null, 2));
276
+ }
277
+ else {
278
+ console.log(` Task: "${task}"`);
279
+ console.log(` Keywords: ${keywords.join(', ')}`);
280
+ console.log(` Resolved modules: ${result.resolvedModules.join(', ')}`);
281
+ console.log(` Token estimate: ~${result.tokenEstimate}`);
282
+ console.log('');
283
+ if (result.triggerMatches.length > 0) {
284
+ console.log(' Trigger report:');
285
+ for (const tm of result.triggerMatches) {
286
+ const icon = tm.matched ? '+' : '-';
287
+ console.log(` [${icon}] ${tm.module} (${tm.trigger})`);
288
+ }
289
+ console.log('');
290
+ }
291
+ // Output merged document
292
+ const output = (0, adf_1.formatAdf)(result.mergedDocument);
293
+ console.log(' --- Merged Context ---');
294
+ console.log(output);
295
+ }
296
+ return index_1.EXIT_CODE.SUCCESS;
297
+ }
298
+ catch (e) {
299
+ if (e instanceof Error && e.name === 'AdfBundleError') {
300
+ if (options.format === 'json') {
301
+ console.log(JSON.stringify({ error: e.message }, null, 2));
302
+ }
303
+ else {
304
+ console.error(` [error] ${e.message}`);
305
+ }
306
+ return index_1.EXIT_CODE.RUNTIME_ERROR;
307
+ }
308
+ throw e;
309
+ }
310
+ }
311
+ // ============================================================================
312
+ // Helpers
313
+ // ============================================================================
314
+ function getFlag(args, flag) {
315
+ const idx = args.indexOf(flag);
316
+ if (idx !== -1 && idx + 1 < args.length) {
317
+ return args[idx + 1];
318
+ }
319
+ return undefined;
320
+ }
321
+ function printHelp() {
322
+ console.log('');
323
+ console.log(' charter adf — Attention-Directed Format tools');
324
+ console.log('');
325
+ console.log(' Usage:');
326
+ console.log(' charter adf init [--ai-dir <dir>] [--force]');
327
+ console.log(' Scaffold .ai/ directory with manifest, core, and state modules.');
328
+ console.log('');
329
+ console.log(' charter adf fmt <file> [--check] [--write]');
330
+ console.log(' Parse and reformat an ADF file to canonical form.');
331
+ console.log(' --check: exit 1 if not canonical (no write)');
332
+ console.log(' --write: reformat file in place');
333
+ console.log(' Default: print formatted output to stdout.');
334
+ console.log('');
335
+ console.log(' charter adf patch <file> --ops <json>');
336
+ console.log(' Apply ADF_PATCH operations to a file.');
337
+ console.log('');
338
+ console.log(' charter adf bundle --task "<prompt>" [--ai-dir <dir>]');
339
+ console.log(' Resolve manifest modules for a task and output merged context.');
340
+ console.log('');
341
+ }
342
+ //# 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":"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)
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.2.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.2.0",
38
+ "@stackbilt/core": "^0.2.0",
39
+ "@stackbilt/git": "^0.2.0",
40
+ "@stackbilt/classify": "^0.2.0",
41
+ "@stackbilt/validate": "^0.2.0",
42
+ "@stackbilt/adf": "^0.2.0",
43
+ "@stackbilt/drift": "^0.2.0"
43
44
  },
44
45
  "license": "Apache-2.0",
45
46
  "scripts": {