@stackbilt/cli 0.4.2 → 0.6.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 +17 -1
- 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__/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 +5 -15
- 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 -50
- 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.d.ts +17 -0
- package/dist/commands/adf-migrate.d.ts.map +1 -1
- package/dist/commands/adf-migrate.js +36 -14
- 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 +2 -8
- package/dist/commands/adf-sync.js.map +1 -1
- package/dist/commands/adf.d.ts +5 -0
- package/dist/commands/adf.d.ts.map +1 -1
- package/dist/commands/adf.js +118 -82
- 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 +160 -52
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +4 -15
- 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 +4 -14
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +29 -9
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +34 -11
- 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 +94 -54
- 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
|
@@ -43,13 +43,15 @@ const fs = __importStar(require("node:fs"));
|
|
|
43
43
|
const path = __importStar(require("node:path"));
|
|
44
44
|
const adf_1 = require("@stackbilt/adf");
|
|
45
45
|
const index_1 = require("../index");
|
|
46
|
+
const flags_1 = require("../flags");
|
|
46
47
|
const adf_sync_1 = require("./adf-sync");
|
|
47
48
|
function adfEvidence(options, args) {
|
|
48
|
-
const task = getFlag(args, '--task');
|
|
49
|
-
const aiDir = getFlag(args, '--ai-dir') || '.ai';
|
|
50
|
-
const contextJson = getFlag(args, '--context');
|
|
51
|
-
const contextFile = getFlag(args, '--context-file');
|
|
49
|
+
const task = (0, flags_1.getFlag)(args, '--task');
|
|
50
|
+
const aiDir = (0, flags_1.getFlag)(args, '--ai-dir') || '.ai';
|
|
51
|
+
const contextJson = (0, flags_1.getFlag)(args, '--context');
|
|
52
|
+
const contextFile = (0, flags_1.getFlag)(args, '--context-file');
|
|
52
53
|
const autoMeasure = args.includes('--auto-measure');
|
|
54
|
+
const staleThreshold = parseStaleThreshold((0, flags_1.getFlag)(args, '--stale-threshold') || '1.2');
|
|
53
55
|
const manifestPath = path.join(aiDir, 'manifest.adf');
|
|
54
56
|
if (!fs.existsSync(manifestPath)) {
|
|
55
57
|
throw new index_1.CLIError(`manifest.adf not found at ${manifestPath}. Run: charter adf init`);
|
|
@@ -61,10 +63,7 @@ function adfEvidence(options, args) {
|
|
|
61
63
|
let modulePaths;
|
|
62
64
|
let keywords = [];
|
|
63
65
|
if (task) {
|
|
64
|
-
keywords = task
|
|
65
|
-
.split(/[\s,;:()[\]{}]+/)
|
|
66
|
-
.filter(w => w.length > 1)
|
|
67
|
-
.map(w => w.replace(/[^a-zA-Z0-9]/g, ''));
|
|
66
|
+
keywords = (0, flags_1.tokenizeTask)(task);
|
|
68
67
|
modulePaths = (0, adf_1.resolveModules)(manifest, keywords);
|
|
69
68
|
}
|
|
70
69
|
else {
|
|
@@ -72,7 +71,7 @@ function adfEvidence(options, args) {
|
|
|
72
71
|
}
|
|
73
72
|
const readFile = (p) => fs.readFileSync(p, 'utf-8');
|
|
74
73
|
let context;
|
|
75
|
-
const rawContext = contextFile ?
|
|
74
|
+
const rawContext = contextFile ? (0, flags_1.readFlagFile)(contextFile, '--context-file') : contextJson;
|
|
76
75
|
if (rawContext) {
|
|
77
76
|
try {
|
|
78
77
|
const parsed = JSON.parse(rawContext);
|
|
@@ -108,8 +107,8 @@ function adfEvidence(options, args) {
|
|
|
108
107
|
context = { ...measured, ...context };
|
|
109
108
|
}
|
|
110
109
|
try {
|
|
111
|
-
const bundle = (0, adf_1.bundleModules)(aiDir, modulePaths, readFile, keywords);
|
|
112
|
-
const
|
|
110
|
+
const bundle = (0, adf_1.bundleModules)(aiDir, modulePaths, readFile, keywords, manifest);
|
|
111
|
+
const report = (0, adf_1.evaluateEvidence)(bundle, context, staleThreshold);
|
|
113
112
|
// Check sync status
|
|
114
113
|
const lockFile = path.join(aiDir, '.adf.lock');
|
|
115
114
|
const locked = (0, adf_sync_1.loadLockFile)(lockFile);
|
|
@@ -129,37 +128,44 @@ function adfEvidence(options, args) {
|
|
|
129
128
|
const jsonOut = {
|
|
130
129
|
aiDir,
|
|
131
130
|
resolvedModules: bundle.resolvedModules,
|
|
132
|
-
tokenEstimate:
|
|
133
|
-
tokenBudget:
|
|
134
|
-
tokenUtilization:
|
|
135
|
-
constraints:
|
|
136
|
-
weightSummary:
|
|
137
|
-
allPassing:
|
|
138
|
-
failCount:
|
|
139
|
-
warnCount:
|
|
131
|
+
tokenEstimate: report.tokenEstimate,
|
|
132
|
+
tokenBudget: report.tokenBudget,
|
|
133
|
+
tokenUtilization: report.tokenUtilization,
|
|
134
|
+
constraints: report.constraints,
|
|
135
|
+
weightSummary: report.weightSummary,
|
|
136
|
+
allPassing: report.allPassing,
|
|
137
|
+
failCount: report.failCount,
|
|
138
|
+
warnCount: report.warnCount,
|
|
139
|
+
staleBaselineCount: report.staleBaselines.length,
|
|
140
140
|
syncStatus: { allInSync, staleCount },
|
|
141
141
|
};
|
|
142
142
|
if (task) {
|
|
143
143
|
jsonOut.task = task;
|
|
144
144
|
jsonOut.keywords = keywords;
|
|
145
145
|
}
|
|
146
|
-
if (
|
|
147
|
-
jsonOut.advisoryOnlyModules =
|
|
146
|
+
if (report.advisoryOnlyModules.length > 0) {
|
|
147
|
+
jsonOut.advisoryOnlyModules = report.advisoryOnlyModules;
|
|
148
148
|
}
|
|
149
149
|
if (autoMeasured.length > 0) {
|
|
150
150
|
jsonOut.autoMeasured = autoMeasured;
|
|
151
151
|
}
|
|
152
|
+
if (report.staleBaselines.length > 0) {
|
|
153
|
+
jsonOut.staleBaselines = report.staleBaselines;
|
|
154
|
+
}
|
|
152
155
|
// Suggest logical next steps based on results
|
|
153
156
|
const nextActions = [];
|
|
154
|
-
if (!
|
|
157
|
+
if (!report.allPassing) {
|
|
155
158
|
nextActions.push('Fix failing constraints before merging');
|
|
156
159
|
}
|
|
157
160
|
if (!allInSync) {
|
|
158
161
|
nextActions.push('charter adf sync --write');
|
|
159
162
|
}
|
|
160
|
-
if (
|
|
163
|
+
if (report.warnCount > 0) {
|
|
161
164
|
nextActions.push('Review metrics at ceiling boundary');
|
|
162
165
|
}
|
|
166
|
+
if (report.staleBaselines.length > 0) {
|
|
167
|
+
nextActions.push('charter adf metrics recalibrate --headroom 15 --reason "<rationale>" --dry-run');
|
|
168
|
+
}
|
|
163
169
|
if (nextActions.length > 0) {
|
|
164
170
|
jsonOut.nextActions = nextActions;
|
|
165
171
|
}
|
|
@@ -170,12 +176,12 @@ function adfEvidence(options, args) {
|
|
|
170
176
|
console.log(' ADF Evidence Report');
|
|
171
177
|
console.log(' ===================');
|
|
172
178
|
console.log(` Modules loaded: ${bundle.resolvedModules.join(', ')}`);
|
|
173
|
-
console.log(` Token estimate: ~${
|
|
174
|
-
if (
|
|
175
|
-
const pct =
|
|
176
|
-
? ` (${(
|
|
179
|
+
console.log(` Token estimate: ~${report.tokenEstimate}`);
|
|
180
|
+
if (report.tokenBudget !== null) {
|
|
181
|
+
const pct = report.tokenUtilization !== null
|
|
182
|
+
? ` (${(report.tokenUtilization * 100).toFixed(0)}%)`
|
|
177
183
|
: '';
|
|
178
|
-
console.log(` Token budget: ${
|
|
184
|
+
console.log(` Token budget: ${report.tokenBudget}${pct}`);
|
|
179
185
|
}
|
|
180
186
|
console.log('');
|
|
181
187
|
// Auto-measured metrics
|
|
@@ -191,24 +197,31 @@ function adfEvidence(options, args) {
|
|
|
191
197
|
}
|
|
192
198
|
console.log('');
|
|
193
199
|
}
|
|
200
|
+
if (report.staleBaselines.length > 0) {
|
|
201
|
+
console.log(' Stale baseline warnings:');
|
|
202
|
+
for (const s of report.staleBaselines) {
|
|
203
|
+
console.log(` [warn] ${s.metric}: baseline ${s.baseline}, current ${s.current}, delta ${s.delta}, recommended ceiling ${s.recommendedCeiling} (rationale required)`);
|
|
204
|
+
}
|
|
205
|
+
console.log('');
|
|
206
|
+
}
|
|
194
207
|
// Weight summary
|
|
195
208
|
console.log(' Section weights:');
|
|
196
|
-
console.log(` Load-bearing: ${
|
|
197
|
-
console.log(` Advisory: ${
|
|
198
|
-
console.log(` Unweighted: ${
|
|
209
|
+
console.log(` Load-bearing: ${report.weightSummary.loadBearing}`);
|
|
210
|
+
console.log(` Advisory: ${report.weightSummary.advisory}`);
|
|
211
|
+
console.log(` Unweighted: ${report.weightSummary.unweighted}`);
|
|
199
212
|
console.log('');
|
|
200
213
|
// Advisory-only module warnings
|
|
201
|
-
if (
|
|
214
|
+
if (report.advisoryOnlyModules.length > 0) {
|
|
202
215
|
console.log(' Advisory-only modules:');
|
|
203
|
-
for (const m of
|
|
216
|
+
for (const m of report.advisoryOnlyModules) {
|
|
204
217
|
console.log(` [!] ${m}: no load-bearing sections`);
|
|
205
218
|
}
|
|
206
219
|
console.log('');
|
|
207
220
|
}
|
|
208
221
|
// Constraints
|
|
209
|
-
if (
|
|
222
|
+
if (report.constraints.length > 0) {
|
|
210
223
|
console.log(' Constraints:');
|
|
211
|
-
for (const c of
|
|
224
|
+
for (const c of report.constraints) {
|
|
212
225
|
const icon = c.status === 'pass' ? 'ok' : c.status === 'warn' ? 'WARN' : 'FAIL';
|
|
213
226
|
console.log(` [${icon}] ${c.message}`);
|
|
214
227
|
}
|
|
@@ -231,15 +244,15 @@ function adfEvidence(options, args) {
|
|
|
231
244
|
}
|
|
232
245
|
console.log('');
|
|
233
246
|
// Verdict
|
|
234
|
-
const verdict =
|
|
247
|
+
const verdict = report.allPassing ? 'PASS' : 'FAIL';
|
|
235
248
|
console.log(` Verdict: ${verdict}`);
|
|
236
|
-
if (
|
|
237
|
-
console.log(` (${
|
|
249
|
+
if (report.warnCount > 0) {
|
|
250
|
+
console.log(` (${report.warnCount} warning${report.warnCount === 1 ? '' : 's'} — at ceiling boundary)`);
|
|
238
251
|
}
|
|
239
252
|
console.log('');
|
|
240
253
|
}
|
|
241
254
|
// CI mode: exit 1 on constraint failures
|
|
242
|
-
if (options.ciMode && !
|
|
255
|
+
if (options.ciMode && !report.allPassing) {
|
|
243
256
|
return index_1.EXIT_CODE.POLICY_VIOLATION;
|
|
244
257
|
}
|
|
245
258
|
return index_1.EXIT_CODE.SUCCESS;
|
|
@@ -257,17 +270,11 @@ function adfEvidence(options, args) {
|
|
|
257
270
|
throw e;
|
|
258
271
|
}
|
|
259
272
|
}
|
|
260
|
-
function
|
|
261
|
-
const
|
|
262
|
-
if (
|
|
263
|
-
|
|
264
|
-
}
|
|
265
|
-
return undefined;
|
|
266
|
-
}
|
|
267
|
-
function readJsonFlag(filePath, flagName) {
|
|
268
|
-
if (!fs.existsSync(filePath)) {
|
|
269
|
-
throw new index_1.CLIError(`File not found for ${flagName}: ${filePath}`);
|
|
273
|
+
function parseStaleThreshold(raw) {
|
|
274
|
+
const parsed = parseFloat(raw);
|
|
275
|
+
if (!Number.isFinite(parsed) || parsed < 1.0 || parsed > 10) {
|
|
276
|
+
throw new index_1.CLIError(`Invalid --stale-threshold value: ${raw}. Use a number between 1.0 and 10.0.`);
|
|
270
277
|
}
|
|
271
|
-
return
|
|
278
|
+
return parsed;
|
|
272
279
|
}
|
|
273
280
|
//# sourceMappingURL=adf-evidence.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adf-evidence.js","sourceRoot":"","sources":["../../src/commands/adf-evidence.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"adf-evidence.js","sourceRoot":"","sources":["../../src/commands/adf-evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* charter adf metrics
|
|
3
|
+
*
|
|
4
|
+
* Metric budget utilities for recalibration workflows.
|
|
5
|
+
*/
|
|
6
|
+
import type { CLIOptions } from '../index';
|
|
7
|
+
export declare function adfMetricsCommand(options: CLIOptions, args: string[]): number;
|
|
8
|
+
//# sourceMappingURL=adf-metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adf-metrics.d.ts","sourceRoot":"","sources":["../../src/commands/adf-metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAmB3C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAc7E"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* charter adf metrics
|
|
4
|
+
*
|
|
5
|
+
* Metric budget utilities for recalibration workflows.
|
|
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.adfMetricsCommand = adfMetricsCommand;
|
|
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
|
+
const flags_1 = require("../flags");
|
|
47
|
+
function adfMetricsCommand(options, args) {
|
|
48
|
+
if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
|
|
49
|
+
printHelp();
|
|
50
|
+
return index_1.EXIT_CODE.SUCCESS;
|
|
51
|
+
}
|
|
52
|
+
const subcommand = args[0];
|
|
53
|
+
const rest = args.slice(1);
|
|
54
|
+
switch (subcommand) {
|
|
55
|
+
case 'recalibrate':
|
|
56
|
+
return metricsRecalibrate(options, rest);
|
|
57
|
+
default:
|
|
58
|
+
throw new index_1.CLIError(`Unknown adf metrics subcommand: ${subcommand}. Supported: recalibrate`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function metricsRecalibrate(options, args) {
|
|
62
|
+
const aiDir = (0, flags_1.getFlag)(args, '--ai-dir') || '.ai';
|
|
63
|
+
const manifestPath = path.join(aiDir, 'manifest.adf');
|
|
64
|
+
const headroomPercent = parseHeadroom((0, flags_1.getFlag)(args, '--headroom') || '15');
|
|
65
|
+
const dryRun = args.includes('--dry-run');
|
|
66
|
+
const autoRationale = args.includes('--auto-rationale');
|
|
67
|
+
const reason = (0, flags_1.getFlag)(args, '--reason');
|
|
68
|
+
if (!fs.existsSync(manifestPath)) {
|
|
69
|
+
throw new index_1.CLIError(`manifest.adf not found at ${manifestPath}. Run: charter adf init`);
|
|
70
|
+
}
|
|
71
|
+
if (!autoRationale && !reason) {
|
|
72
|
+
throw new index_1.CLIError('metrics recalibrate requires --reason "<rationale>" or --auto-rationale.');
|
|
73
|
+
}
|
|
74
|
+
const manifestDoc = (0, adf_1.parseAdf)(fs.readFileSync(manifestPath, 'utf-8'));
|
|
75
|
+
const manifest = (0, adf_1.parseManifest)(manifestDoc);
|
|
76
|
+
if (manifest.metrics.length === 0) {
|
|
77
|
+
throw new index_1.CLIError('No METRICS sources found in manifest.adf; cannot recalibrate.');
|
|
78
|
+
}
|
|
79
|
+
const measured = measureManifestMetrics(manifest.metrics);
|
|
80
|
+
const updateByModule = buildModuleUpdates(aiDir, manifest, measured, headroomPercent);
|
|
81
|
+
const allUpdates = [...updateByModule.values()].flatMap((u) => u.updates);
|
|
82
|
+
if (allUpdates.length === 0) {
|
|
83
|
+
if (options.format === 'json') {
|
|
84
|
+
console.log(JSON.stringify({ aiDir, updated: false, reason: 'no matching metric entries found' }, null, 2));
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.log(' No matching metric entries found in module METRICS sections.');
|
|
88
|
+
}
|
|
89
|
+
return index_1.EXIT_CODE.SUCCESS;
|
|
90
|
+
}
|
|
91
|
+
const rationaleText = autoRationale
|
|
92
|
+
? buildAutoRationale(headroomPercent, allUpdates.length)
|
|
93
|
+
: reason;
|
|
94
|
+
for (const moduleUpdate of updateByModule.values()) {
|
|
95
|
+
ensureRationaleEntry(moduleUpdate.document, moduleUpdate.updates, rationaleText);
|
|
96
|
+
}
|
|
97
|
+
if (!dryRun) {
|
|
98
|
+
writeModuleUpdatesAtomically(aiDir, [...updateByModule.values()]);
|
|
99
|
+
}
|
|
100
|
+
const output = {
|
|
101
|
+
aiDir,
|
|
102
|
+
dryRun,
|
|
103
|
+
headroomPercent,
|
|
104
|
+
metricsUpdated: allUpdates.length,
|
|
105
|
+
modulesTouched: [...updateByModule.keys()],
|
|
106
|
+
updates: allUpdates.map((u) => ({
|
|
107
|
+
metric: u.metric,
|
|
108
|
+
module: u.module,
|
|
109
|
+
baseline: u.previousValue,
|
|
110
|
+
current: u.current,
|
|
111
|
+
delta: u.current - u.previousValue,
|
|
112
|
+
previousCeiling: u.previousCeiling,
|
|
113
|
+
recommendedCeiling: u.recommendedCeiling,
|
|
114
|
+
rationaleRequired: true,
|
|
115
|
+
})),
|
|
116
|
+
rationale: rationaleText,
|
|
117
|
+
};
|
|
118
|
+
if (options.format === 'json') {
|
|
119
|
+
console.log(JSON.stringify(output, null, 2));
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.log(` Recalibration ${dryRun ? 'preview' : 'complete'} (${allUpdates.length} metric update(s))`);
|
|
123
|
+
console.log(` Headroom policy: +${headroomPercent}%`);
|
|
124
|
+
for (const update of allUpdates) {
|
|
125
|
+
const delta = update.current - update.previousValue;
|
|
126
|
+
console.log(` - ${update.metric} [${update.module}]: baseline ${update.previousValue}, current ${update.current}, delta ${delta}, ceiling ${update.previousCeiling} -> ${update.recommendedCeiling}`);
|
|
127
|
+
}
|
|
128
|
+
console.log(` Rationale: ${rationaleText}`);
|
|
129
|
+
}
|
|
130
|
+
return index_1.EXIT_CODE.SUCCESS;
|
|
131
|
+
}
|
|
132
|
+
function measureManifestMetrics(metricSources) {
|
|
133
|
+
const measured = {};
|
|
134
|
+
for (const source of metricSources) {
|
|
135
|
+
const metricKey = source.key.toLowerCase();
|
|
136
|
+
const sourcePath = path.resolve(source.path);
|
|
137
|
+
if (!fs.existsSync(sourcePath))
|
|
138
|
+
continue;
|
|
139
|
+
const content = fs.readFileSync(sourcePath, 'utf-8');
|
|
140
|
+
measured[metricKey] = content.split('\n').length;
|
|
141
|
+
}
|
|
142
|
+
return measured;
|
|
143
|
+
}
|
|
144
|
+
function buildModuleUpdates(aiDir, manifest, measured, headroomPercent) {
|
|
145
|
+
const modulePaths = [...new Set([...manifest.defaultLoad, ...manifest.onDemand.map((m) => m.path)])];
|
|
146
|
+
const updates = new Map();
|
|
147
|
+
for (const modulePath of modulePaths) {
|
|
148
|
+
const fullPath = path.join(aiDir, modulePath);
|
|
149
|
+
if (!fs.existsSync(fullPath))
|
|
150
|
+
continue;
|
|
151
|
+
const doc = (0, adf_1.parseAdf)(fs.readFileSync(fullPath, 'utf-8'));
|
|
152
|
+
const moduleUpdates = [];
|
|
153
|
+
for (const section of doc.sections) {
|
|
154
|
+
if (section.key !== 'METRICS' || section.content.type !== 'metric')
|
|
155
|
+
continue;
|
|
156
|
+
for (const entry of section.content.entries) {
|
|
157
|
+
const key = entry.key.toLowerCase();
|
|
158
|
+
const current = measured[key];
|
|
159
|
+
if (current === undefined)
|
|
160
|
+
continue;
|
|
161
|
+
const recommendedCeiling = Math.ceil(current * (1 + headroomPercent / 100));
|
|
162
|
+
moduleUpdates.push({
|
|
163
|
+
metric: key,
|
|
164
|
+
current,
|
|
165
|
+
previousValue: entry.value,
|
|
166
|
+
previousCeiling: entry.ceiling,
|
|
167
|
+
recommendedCeiling,
|
|
168
|
+
module: modulePath,
|
|
169
|
+
});
|
|
170
|
+
entry.value = current;
|
|
171
|
+
entry.ceiling = recommendedCeiling;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (moduleUpdates.length > 0) {
|
|
175
|
+
updates.set(modulePath, {
|
|
176
|
+
modulePath,
|
|
177
|
+
document: doc,
|
|
178
|
+
updates: moduleUpdates,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return updates;
|
|
183
|
+
}
|
|
184
|
+
function ensureRationaleEntry(doc, updates, rationale) {
|
|
185
|
+
const key = 'BUDGET_RATIONALES';
|
|
186
|
+
let section = doc.sections.find((s) => s.key === key);
|
|
187
|
+
if (!section) {
|
|
188
|
+
section = {
|
|
189
|
+
key,
|
|
190
|
+
decoration: null,
|
|
191
|
+
content: { type: 'map', entries: [] },
|
|
192
|
+
};
|
|
193
|
+
doc.sections.push(section);
|
|
194
|
+
}
|
|
195
|
+
if (section.content.type !== 'map') {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
const date = new Date().toISOString().slice(0, 10);
|
|
199
|
+
for (const update of updates) {
|
|
200
|
+
const rationaleKey = `${update.metric}_${date}`;
|
|
201
|
+
const rationaleValue = `${update.previousValue} -> ${update.current}, ceiling ${update.previousCeiling} -> ${update.recommendedCeiling}; ${rationale}`;
|
|
202
|
+
const existing = section.content.entries.find((entry) => entry.key === rationaleKey);
|
|
203
|
+
if (existing) {
|
|
204
|
+
existing.value = rationaleValue;
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
section.content.entries.push({ key: rationaleKey, value: rationaleValue });
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function writeModuleUpdatesAtomically(aiDir, updates) {
|
|
212
|
+
const tempFiles = [];
|
|
213
|
+
for (const update of updates) {
|
|
214
|
+
const target = path.join(aiDir, update.modulePath);
|
|
215
|
+
const temp = `${target}.tmp-${process.pid}-${Date.now()}`;
|
|
216
|
+
fs.writeFileSync(temp, (0, adf_1.formatAdf)(update.document));
|
|
217
|
+
tempFiles.push({ temp, target });
|
|
218
|
+
}
|
|
219
|
+
for (const entry of tempFiles) {
|
|
220
|
+
fs.renameSync(entry.temp, entry.target);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
function parseHeadroom(raw) {
|
|
224
|
+
const parsed = parseInt(raw, 10);
|
|
225
|
+
if (!Number.isFinite(parsed) || parsed < 1 || parsed > 200) {
|
|
226
|
+
throw new index_1.CLIError(`Invalid --headroom value: ${raw}. Use an integer between 1 and 200.`);
|
|
227
|
+
}
|
|
228
|
+
return parsed;
|
|
229
|
+
}
|
|
230
|
+
function buildAutoRationale(headroomPercent, metricCount) {
|
|
231
|
+
const date = new Date().toISOString().slice(0, 10);
|
|
232
|
+
return `Recalibrated ${metricCount} metric baseline(s) on ${date} using +${headroomPercent}% headroom from current measured LOC.`;
|
|
233
|
+
}
|
|
234
|
+
function printHelp() {
|
|
235
|
+
console.log('');
|
|
236
|
+
console.log(' charter adf metrics');
|
|
237
|
+
console.log('');
|
|
238
|
+
console.log(' Usage:');
|
|
239
|
+
console.log(' charter adf metrics recalibrate [--headroom <percent>] [--reason "<text>"|--auto-rationale] [--dry-run] [--ai-dir <dir>]');
|
|
240
|
+
console.log('');
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=adf-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adf-metrics.js","sourceRoot":"","sources":["../../src/commands/adf-metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,23 @@
|
|
|
5
5
|
* copilot-instructions.md), classifies their content using the ADX-002 decision tree,
|
|
6
6
|
* and migrates structured blocks into ADF modules. Replaces originals with thin pointers.
|
|
7
7
|
*/
|
|
8
|
+
import { buildMigrationPlan } from '@stackbilt/adf';
|
|
8
9
|
import type { CLIOptions } from '../index';
|
|
9
10
|
export declare function adfMigrateCommand(options: CLIOptions, args: string[]): Promise<number>;
|
|
11
|
+
export interface SourceMigrationResult {
|
|
12
|
+
source: string;
|
|
13
|
+
skipped: boolean;
|
|
14
|
+
skipReason?: string;
|
|
15
|
+
lineCount: number;
|
|
16
|
+
sectionCount: number;
|
|
17
|
+
plan?: ReturnType<typeof buildMigrationPlan>;
|
|
18
|
+
actions: MigrationAction[];
|
|
19
|
+
}
|
|
20
|
+
interface MigrationAction {
|
|
21
|
+
type: 'MERGE' | 'KEEP' | 'BACKUP' | 'SKIP';
|
|
22
|
+
target: string;
|
|
23
|
+
detail: string;
|
|
24
|
+
}
|
|
25
|
+
export declare function migrateSource(sourcePath: string, aiDir: string, mergeStrategy: 'append' | 'dedupe' | 'replace', dryRun: boolean, noBackup: boolean, options: CLIOptions): SourceMigrationResult;
|
|
26
|
+
export {};
|
|
10
27
|
//# sourceMappingURL=adf-migrate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adf-migrate.d.ts","sourceRoot":"","sources":["../../src/commands/adf-migrate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"adf-migrate.d.ts","sourceRoot":"","sources":["../../src/commands/adf-migrate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAQL,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA4B3C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoD5F;AAMD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC7C,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAC9C,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,UAAU,GAClB,qBAAqB,CAiIvB"}
|