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