@neurcode-ai/cli 0.20.7 → 0.20.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"pilot.d.ts","sourceRoot":"","sources":["../../src/commands/pilot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4F5D"}
1
+ {"version":3,"file":"pilot.d.ts","sourceRoot":"","sources":["../../src/commands/pilot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmL5D"}
@@ -8,6 +8,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.registerPilotCommands = registerPilotCommands;
10
10
  const chalk_1 = __importDefault(require("chalk"));
11
+ const node_fs_1 = require("node:fs");
12
+ const node_path_1 = require("node:path");
11
13
  const v0_governance_1 = require("../utils/v0-governance");
12
14
  const brain_lifecycle_1 = require("../utils/brain-lifecycle");
13
15
  const contracts_1 = require("@neurcode-ai/contracts");
@@ -15,6 +17,8 @@ const pilot_setup_contract_1 = require("../utils/pilot-setup-contract");
15
17
  const agent_adapter_setup_1 = require("../utils/agent-adapter-setup");
16
18
  const runtime_connection_1 = require("../utils/runtime-connection");
17
19
  const eval_demo_command_1 = require("../utils/eval-demo-command");
20
+ const pilot_evidence_io_1 = require("../utils/pilot-evidence-io");
21
+ const pilot_evidence_pack_1 = require("../utils/pilot-evidence-pack");
18
22
  function emitJson(value) {
19
23
  console.log(JSON.stringify(value, null, 2));
20
24
  }
@@ -106,5 +110,82 @@ function registerPilotCommands(program) {
106
110
  console.log(`Recovery: ${contract.recoveryCommand}`);
107
111
  }
108
112
  });
113
+ // ── export (Iteration 10 — Pilot Evidence Pack) ──────────────────────────────
114
+ // After a pilot, generate a source-free executive packet (summary + sessions +
115
+ // blocked risk families + approvals + plan drift + dependency changes +
116
+ // evidence hashes + what-stayed-local + limitations) that can be shared with
117
+ // an engineering manager, principal engineer, security reviewer, or
118
+ // procurement/IT without a live founder walkthrough. Repo-local only.
119
+ pilot
120
+ .command('export')
121
+ .description('Generate a source-free executive pilot evidence pack (JSON manifest + markdown/HTML)')
122
+ .option('--dir <path>', 'Repository root (default: current directory)')
123
+ .option('--out <dir>', 'Output directory (default: .neurcode/pilot-evidence)')
124
+ .option('--format <format>', 'Human-readable format: markdown | html | both', 'both')
125
+ .option('--days <n>', 'Metrics window in days (default: 7)')
126
+ .option('--json', 'Print the pack JSON to stdout instead of writing files')
127
+ .action(async (options) => {
128
+ const repoRoot = (0, v0_governance_1.resolveRepoRoot)(options.dir || process.cwd());
129
+ // Optional, best-effort, read-only repository brain readiness.
130
+ let brainReadiness = null;
131
+ try {
132
+ const brain = await (0, brain_lifecycle_1.inspectBrainLifecycle)(repoRoot);
133
+ brainReadiness = {
134
+ state: brain.state ?? null,
135
+ filesIndexed: brain.progress?.filesIndexed ?? null,
136
+ filesScanned: brain.progress?.filesScanned ?? null,
137
+ percent: brain.progress?.percent ?? null,
138
+ };
139
+ }
140
+ catch {
141
+ brainReadiness = null;
142
+ }
143
+ const parsedDays = Number.parseInt(options.days ?? '', 10);
144
+ const days = Number.isFinite(parsedDays) && parsedDays > 0 ? parsedDays : 7;
145
+ const inputs = (0, pilot_evidence_io_1.gatherPilotEvidenceInputs)(repoRoot, {
146
+ generatedAt: new Date().toISOString(),
147
+ days,
148
+ brainReadiness,
149
+ });
150
+ const pack = (0, pilot_evidence_pack_1.buildPilotEvidencePack)(inputs);
151
+ const markdown = (0, pilot_evidence_pack_1.renderPilotEvidencePackMarkdown)(pack);
152
+ const html = (0, pilot_evidence_pack_1.renderPilotEvidencePackHtml)(pack);
153
+ // Source-free backstop before anything is written or printed.
154
+ (0, pilot_evidence_pack_1.assertPilotEvidencePackSourceFree)(pack, 'pilot evidence pack (json)');
155
+ (0, pilot_evidence_pack_1.assertPilotEvidencePackSourceFree)(markdown, 'pilot evidence pack (markdown)');
156
+ (0, pilot_evidence_pack_1.assertPilotEvidencePackSourceFree)(html, 'pilot evidence pack (html)');
157
+ if (options.json) {
158
+ emitJson(pack);
159
+ return;
160
+ }
161
+ const outDir = options.out ? (0, node_path_1.resolve)(repoRoot, options.out) : (0, node_path_1.join)(repoRoot, '.neurcode', 'pilot-evidence');
162
+ if (!(0, node_fs_1.existsSync)(outDir))
163
+ (0, node_fs_1.mkdirSync)(outDir, { recursive: true });
164
+ const jsonPath = (0, node_path_1.join)(outDir, 'pilot-evidence-pack.json');
165
+ (0, node_fs_1.writeFileSync)(jsonPath, JSON.stringify(pack, null, 2) + '\n', 'utf8');
166
+ const written = [jsonPath];
167
+ const fmt = (options.format || 'both').toLowerCase();
168
+ if (fmt === 'markdown' || fmt === 'md' || fmt === 'both') {
169
+ const mdPath = (0, node_path_1.join)(outDir, 'pilot-evidence-pack.md');
170
+ (0, node_fs_1.writeFileSync)(mdPath, markdown, 'utf8');
171
+ written.push(mdPath);
172
+ }
173
+ if (fmt === 'html' || fmt === 'both') {
174
+ const htmlPath = (0, node_path_1.join)(outDir, 'pilot-evidence-pack.html');
175
+ (0, node_fs_1.writeFileSync)(htmlPath, html, 'utf8');
176
+ written.push(htmlPath);
177
+ }
178
+ console.log('');
179
+ console.log(chalk_1.default.green(`Pilot evidence pack written (source-free · ${pack.completeness.status}).`));
180
+ for (const p of written)
181
+ console.log(` ${chalk_1.default.cyan(p)}`);
182
+ console.log(chalk_1.default.dim(` ${pack.summary.headline}`));
183
+ console.log(chalk_1.default.dim(` Content hash: ${pack.contentHash}`));
184
+ if (pack.completeness.status !== 'complete') {
185
+ console.log(chalk_1.default.yellow(` Incomplete pilot: missing ${pack.completeness.missingArtifacts.join('; ') || 'n/a'}`));
186
+ }
187
+ console.log(chalk_1.default.dim(' Contains paths, owners, counts, verdicts, and hashes only — no source, diffs, or prompts.'));
188
+ console.log('');
189
+ });
109
190
  }
110
191
  //# sourceMappingURL=pilot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pilot.js","sourceRoot":"","sources":["../../src/commands/pilot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pilot.js","sourceRoot":"","sources":["../../src/commands/pilot.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schemaVersion": "neurcode.cli-build.v1",
3
- "version": "0.20.7",
4
- "gitCommit": "2f47162e35c339c014853219495ed0c870b279c6",
5
- "builtAt": "2026-06-27T13:46:04.244Z",
3
+ "version": "0.20.8",
4
+ "gitCommit": "107ac41df5738ae668c1c6fce32de03e5093dc74",
5
+ "builtAt": "2026-06-27T19:13:35.086Z",
6
6
  "entryFile": "index.js",
7
7
  "entrySize": 102622,
8
- "entryMtimeMs": 1782567964122.0176
8
+ "entryMtimeMs": 1782587614962.7444
9
9
  }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Pilot Evidence Pack — repo-local I/O glue (Iteration 10).
3
+ *
4
+ * Reads the source-free runtime artifacts the Neurcode control plane already
5
+ * persists and projects them into the narrow, source-free inputs consumed by the
6
+ * pure builder in utils/pilot-evidence-pack.ts:
7
+ *
8
+ * - .neurcode/sessions/<id>.change-record.json (neurcode.governed-session-record.v1)
9
+ * - .neurcode/admission/<id>.json (neurcode.admission-record.v1)
10
+ * - .neurcode/pilot-metrics.json (rolling governance metrics)
11
+ *
12
+ * Hard rules:
13
+ * - NEVER read the raw `.neurcode/sessions/<id>.json` session log (large; may
14
+ * contain source-like trajectory data). Only the curated, source-free
15
+ * `.change-record.json` projection is read.
16
+ * - NEVER copy the admission record's natural-language `intentSummary` / goal
17
+ * prose. Intent is represented by its hash + categories only.
18
+ * - Every field is coerced defensively so a malformed artifact degrades to a
19
+ * count of zero / null rather than crashing the export.
20
+ */
21
+ import type { BuildPilotEvidencePackInput, PilotAdmissionInput, PilotBrainReadinessInput, PilotMetricsInput, PilotSessionInput } from './pilot-evidence-pack';
22
+ /**
23
+ * Project `.neurcode/sessions/*.change-record.json` into source-free session
24
+ * inputs. The raw `<id>.json` session logs are intentionally never read.
25
+ */
26
+ export declare function readPilotChangeRecords(repoRoot: string): PilotSessionInput[];
27
+ /**
28
+ * Project `.neurcode/admission/*.json` into source-free admission inputs. The
29
+ * record's `runtimeContext.intentSummary` prose is intentionally never read.
30
+ */
31
+ export declare function readPilotAdmissionRecords(repoRoot: string): PilotAdmissionInput[];
32
+ /**
33
+ * Project the local pilot-metrics rollup into source-free metric inputs. Returns
34
+ * null when no `.neurcode/pilot-metrics.json` exists (an incomplete-pilot signal).
35
+ */
36
+ export declare function readPilotMetricsInput(repoRoot: string, days?: number): PilotMetricsInput | null;
37
+ /** Resolve the CLI's own package version without spawning a subprocess. */
38
+ export declare function resolveCliVersion(): string | null;
39
+ export interface GatherPilotEvidenceOptions {
40
+ generatedAt: string;
41
+ cliVersion?: string | null;
42
+ days?: number;
43
+ repoName?: string | null;
44
+ brainReadiness?: PilotBrainReadinessInput | null;
45
+ }
46
+ /**
47
+ * Read every repo-local artifact and assemble the source-free builder input.
48
+ * Synchronous and side-effect-free apart from reads; the optional brain
49
+ * readiness is computed by the caller and threaded through.
50
+ */
51
+ export declare function gatherPilotEvidenceInputs(repoRoot: string, options: GatherPilotEvidenceOptions): BuildPilotEvidencePackInput;
52
+ //# sourceMappingURL=pilot-evidence-io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pilot-evidence-io.d.ts","sourceRoot":"","sources":["../../src/utils/pilot-evidence-io.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,KAAK,EACV,2BAA2B,EAC3B,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAiD/B;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAsD5E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAiEjF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,iBAAiB,GAAG,IAAI,CAa1F;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAQjD;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAClD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,0BAA0B,GAClC,2BAA2B,CAW7B"}
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ /**
3
+ * Pilot Evidence Pack — repo-local I/O glue (Iteration 10).
4
+ *
5
+ * Reads the source-free runtime artifacts the Neurcode control plane already
6
+ * persists and projects them into the narrow, source-free inputs consumed by the
7
+ * pure builder in utils/pilot-evidence-pack.ts:
8
+ *
9
+ * - .neurcode/sessions/<id>.change-record.json (neurcode.governed-session-record.v1)
10
+ * - .neurcode/admission/<id>.json (neurcode.admission-record.v1)
11
+ * - .neurcode/pilot-metrics.json (rolling governance metrics)
12
+ *
13
+ * Hard rules:
14
+ * - NEVER read the raw `.neurcode/sessions/<id>.json` session log (large; may
15
+ * contain source-like trajectory data). Only the curated, source-free
16
+ * `.change-record.json` projection is read.
17
+ * - NEVER copy the admission record's natural-language `intentSummary` / goal
18
+ * prose. Intent is represented by its hash + categories only.
19
+ * - Every field is coerced defensively so a malformed artifact degrades to a
20
+ * count of zero / null rather than crashing the export.
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.readPilotChangeRecords = readPilotChangeRecords;
24
+ exports.readPilotAdmissionRecords = readPilotAdmissionRecords;
25
+ exports.readPilotMetricsInput = readPilotMetricsInput;
26
+ exports.resolveCliVersion = resolveCliVersion;
27
+ exports.gatherPilotEvidenceInputs = gatherPilotEvidenceInputs;
28
+ const node_fs_1 = require("node:fs");
29
+ const node_path_1 = require("node:path");
30
+ const guided_eval_1 = require("./guided-eval");
31
+ const pilot_metrics_1 = require("./pilot-metrics");
32
+ // ── Defensive coercion helpers ────────────────────────────────────────────────
33
+ function asString(value) {
34
+ return typeof value === 'string' && value.length > 0 ? value : null;
35
+ }
36
+ function asNumber(value) {
37
+ return typeof value === 'number' && Number.isFinite(value) ? value : 0;
38
+ }
39
+ function asStringArray(value) {
40
+ return Array.isArray(value) ? value.filter((v) => typeof v === 'string') : [];
41
+ }
42
+ function arrayLength(value) {
43
+ return Array.isArray(value) ? value.length : 0;
44
+ }
45
+ function readJson(path) {
46
+ try {
47
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
48
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : null;
49
+ }
50
+ catch {
51
+ return null;
52
+ }
53
+ }
54
+ function listJsonFiles(dir, filter) {
55
+ try {
56
+ if (!(0, node_fs_1.existsSync)(dir))
57
+ return [];
58
+ return (0, node_fs_1.readdirSync)(dir)
59
+ .filter((name) => filter(name))
60
+ .sort()
61
+ .map((name) => (0, node_path_1.join)(dir, name));
62
+ }
63
+ catch {
64
+ return [];
65
+ }
66
+ }
67
+ function get(obj, key) {
68
+ if (!obj)
69
+ return null;
70
+ const value = obj[key];
71
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : null;
72
+ }
73
+ // ── Readers ───────────────────────────────────────────────────────────────────
74
+ /**
75
+ * Project `.neurcode/sessions/*.change-record.json` into source-free session
76
+ * inputs. The raw `<id>.json` session logs are intentionally never read.
77
+ */
78
+ function readPilotChangeRecords(repoRoot) {
79
+ const dir = (0, node_path_1.join)(repoRoot, '.neurcode', 'sessions');
80
+ const files = listJsonFiles(dir, (name) => name.endsWith('.change-record.json'));
81
+ const out = [];
82
+ for (const file of files) {
83
+ const j = readJson(file);
84
+ if (!j)
85
+ continue;
86
+ const session = get(j, 'session');
87
+ const counts = get(session, 'counts');
88
+ const intentSummary = get(get(j, 'intent'), 'summary');
89
+ const integrity = get(j, 'integrity');
90
+ const facts = get(get(j, 'accountability'), 'facts');
91
+ const plan = get(j, 'plan');
92
+ const reviewBrief = get(j, 'reviewBrief');
93
+ const sessionId = asString(session?.['sessionId']) ?? (0, node_path_1.basename)(file).replace(/\.change-record\.json$/, '');
94
+ out.push({
95
+ sessionId,
96
+ status: asString(session?.['status']),
97
+ scopeMode: asString(session?.['scopeMode']),
98
+ trustLevel: asString(integrity?.['trustLevel']),
99
+ verdict: asString(reviewBrief?.['verdict']),
100
+ counts: {
101
+ ok: asNumber(counts?.['ok']),
102
+ warn: asNumber(counts?.['warn']),
103
+ block: asNumber(counts?.['block']),
104
+ approval: asNumber(counts?.['approval']),
105
+ planEvents: asNumber(counts?.['planEvents']),
106
+ events: asNumber(counts?.['events']),
107
+ },
108
+ intentHash: asString(intentSummary?.['intentHash']),
109
+ intentCategories: asStringArray(intentSummary?.['categories']),
110
+ approvals: {
111
+ approvalRequired: facts?.['approvalRequired'] === true,
112
+ exactPathApprovalOnly: facts?.['exactPathApprovalOnly'] === true,
113
+ approvedExactPathCount: arrayLength(facts?.['approvedExactPaths']),
114
+ neighborSensitiveBlocked: facts?.['neighboringSensitiveFilesBlocked'] === true,
115
+ blockedBoundaryCount: arrayLength(facts?.['blockedBoundaries']),
116
+ boundaryOwnerCount: arrayLength(facts?.['boundaryOwners']),
117
+ },
118
+ blockedBoundaries: asStringArray(facts?.['blockedBoundaries']),
119
+ plan: {
120
+ timelineCount: arrayLength(plan?.['timeline']),
121
+ pendingAmendmentCount: arrayLength(plan?.['pendingAmendments']),
122
+ },
123
+ reuseAdvisoryCount: asNumber(facts?.['reuseAdvisoryCount']),
124
+ evidenceReceipt: asString(facts?.['evidenceReceipt']),
125
+ hashes: {
126
+ recordHash: asString(integrity?.['recordHash']),
127
+ replayHash: asString(integrity?.['replayHash']),
128
+ },
129
+ });
130
+ }
131
+ return out;
132
+ }
133
+ /**
134
+ * Project `.neurcode/admission/*.json` into source-free admission inputs. The
135
+ * record's `runtimeContext.intentSummary` prose is intentionally never read.
136
+ */
137
+ function readPilotAdmissionRecords(repoRoot) {
138
+ const dir = (0, node_path_1.join)(repoRoot, '.neurcode', 'admission');
139
+ const files = listJsonFiles(dir, (name) => name.endsWith('.json'));
140
+ const out = [];
141
+ for (const file of files) {
142
+ const j = readJson(file);
143
+ if (!j)
144
+ continue;
145
+ const rc = get(j, 'runtimeContext');
146
+ const counts = get(rc, 'counts');
147
+ const paths = get(rc, 'paths');
148
+ const integrity = get(rc, 'integrity');
149
+ const receipt = get(integrity, 'receipt');
150
+ const manifest = get(j, 'manifest');
151
+ const deltaRaw = Array.isArray(manifest?.['delta']) ? manifest['delta'] : [];
152
+ const delta = deltaRaw
153
+ .map((entry) => {
154
+ const e = entry && typeof entry === 'object' ? entry : {};
155
+ return {
156
+ path: asString(e['path']) ?? '',
157
+ changeType: asString(e['changeType']) ?? 'unknown',
158
+ oldObjectId: asString(e['oldObjectId']),
159
+ newObjectId: asString(e['newObjectId']),
160
+ };
161
+ })
162
+ .filter((e) => e.path.length > 0);
163
+ const sessionId = asString(j['sessionId']) ?? (0, node_path_1.basename)(file).replace(/\.json$/, '');
164
+ out.push({
165
+ sessionId,
166
+ attestationKind: asString(j['attestationKind']),
167
+ trustLevel: asString(rc?.['trustLevel']),
168
+ sessionStatus: asString(rc?.['sessionStatus']),
169
+ counts: {
170
+ changedPaths: asNumber(counts?.['changedPaths']),
171
+ blockedPaths: asNumber(counts?.['blockedPaths']),
172
+ suggestedApprovalPaths: asNumber(counts?.['suggestedApprovalPaths']),
173
+ approvedExactPaths: asNumber(counts?.['approvedExactPaths']),
174
+ deniedPaths: asNumber(counts?.['deniedPaths']),
175
+ approvalRequiredSurfaces: asNumber(counts?.['approvalRequiredSurfaces']),
176
+ owners: asNumber(counts?.['owners']),
177
+ preWriteChecks: asNumber(counts?.['preWriteChecks']),
178
+ allowedChecks: asNumber(counts?.['allowedChecks']),
179
+ warningChecks: asNumber(counts?.['warningChecks']),
180
+ },
181
+ paths: {
182
+ blocked: asStringArray(paths?.['blocked']),
183
+ denied: asStringArray(paths?.['denied']),
184
+ approvalRequiredSurfaces: asStringArray(paths?.['approvalRequiredSurfaces']),
185
+ approvedExact: asStringArray(paths?.['approvedExact']),
186
+ changed: asStringArray(paths?.['changed']),
187
+ },
188
+ manifest: {
189
+ entryCount: asNumber(manifest?.['entryCount']),
190
+ deltaHash: asString(manifest?.['deltaHash']),
191
+ coverageSetHash: asString(manifest?.['coverageSetHash']),
192
+ delta,
193
+ },
194
+ integrity: {
195
+ sourceFree: integrity?.['sourceFree'] === true,
196
+ replayHash: asString(integrity?.['replayHash']),
197
+ evidenceIntegrityStatus: asString(integrity?.['evidenceIntegrityStatus']),
198
+ receiptPresent: receipt?.['present'] === true,
199
+ },
200
+ });
201
+ }
202
+ return out;
203
+ }
204
+ /**
205
+ * Project the local pilot-metrics rollup into source-free metric inputs. Returns
206
+ * null when no `.neurcode/pilot-metrics.json` exists (an incomplete-pilot signal).
207
+ */
208
+ function readPilotMetricsInput(repoRoot, days = 7) {
209
+ const path = (0, node_path_1.join)(repoRoot, '.neurcode', 'pilot-metrics.json');
210
+ if (!(0, node_fs_1.existsSync)(path))
211
+ return null;
212
+ const summary = (0, pilot_metrics_1.generatePilotSummary)(repoRoot, days);
213
+ return {
214
+ periodDays: summary.periodDays,
215
+ totalVerifyRuns: summary.totalVerifyRuns,
216
+ totalBlockingCaught: summary.totalBlockingCaught,
217
+ totalStructuralCaught: summary.totalStructuralCaught,
218
+ averagePassRate: summary.averagePassRate,
219
+ suppressionRate: summary.suppressionRate,
220
+ aiDebtTrend: summary.aiDebtTrend,
221
+ };
222
+ }
223
+ /** Resolve the CLI's own package version without spawning a subprocess. */
224
+ function resolveCliVersion() {
225
+ try {
226
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
227
+ const pkg = require('../../package.json');
228
+ return typeof pkg?.version === 'string' ? pkg.version : null;
229
+ }
230
+ catch {
231
+ return null;
232
+ }
233
+ }
234
+ /**
235
+ * Read every repo-local artifact and assemble the source-free builder input.
236
+ * Synchronous and side-effect-free apart from reads; the optional brain
237
+ * readiness is computed by the caller and threaded through.
238
+ */
239
+ function gatherPilotEvidenceInputs(repoRoot, options) {
240
+ return {
241
+ generatedAt: options.generatedAt,
242
+ cliVersion: options.cliVersion ?? resolveCliVersion(),
243
+ repoRootHash: (0, guided_eval_1.hashRepoIdentity)(repoRoot),
244
+ repoName: options.repoName ?? (0, node_path_1.basename)(repoRoot),
245
+ sessions: readPilotChangeRecords(repoRoot),
246
+ admissions: readPilotAdmissionRecords(repoRoot),
247
+ metrics: readPilotMetricsInput(repoRoot, options.days ?? 7),
248
+ brainReadiness: options.brainReadiness ?? null,
249
+ };
250
+ }
251
+ //# sourceMappingURL=pilot-evidence-io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pilot-evidence-io.js","sourceRoot":"","sources":["../../src/utils/pilot-evidence-io.ts"],"names":[],"mappings":"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"}