@claude-flow/cli 3.6.19 → 3.6.21
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/.claude/helpers/intelligence.cjs +69 -6
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +2 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/verify.d.ts +19 -0
- package/dist/src/commands/verify.d.ts.map +1 -0
- package/dist/src/commands/verify.js +240 -0
- package/dist/src/commands/verify.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -108,6 +108,47 @@ function deduplicateById(entries) {
|
|
|
108
108
|
return Array.from(seen.values());
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
+
// ADR-095 G6 — content-hash dedup. The April audit measured 5,706 entries
|
|
112
|
+
// in the auto-memory store with only ~20 unique by content; 5,686 dupes
|
|
113
|
+
// were the same MEMORY.md sections imported from sibling project dirs
|
|
114
|
+
// with different IDs. deduplicateById can't catch these (the IDs really
|
|
115
|
+
// are different); we need a content fingerprint.
|
|
116
|
+
//
|
|
117
|
+
// Fast non-cryptographic fingerprint — collisions on 64-bit FNV-1a are
|
|
118
|
+
// vanishingly rare for human prose at the scale of an auto-memory store.
|
|
119
|
+
// Whitespace-normalized so trivially-different formatting doesn't bypass dedup.
|
|
120
|
+
function fingerprintContent(text) {
|
|
121
|
+
if (typeof text !== 'string' || text.length === 0) return '0';
|
|
122
|
+
const norm = text.replace(/\s+/g, ' ').trim().toLowerCase();
|
|
123
|
+
// FNV-1a 64-bit (split into 32-bit halves to stay within Number safe int)
|
|
124
|
+
let h1 = 0x811c9dc5, h2 = 0xcbf29ce4;
|
|
125
|
+
for (let i = 0; i < norm.length; i++) {
|
|
126
|
+
const c = norm.charCodeAt(i);
|
|
127
|
+
h1 ^= c; h1 = Math.imul(h1, 0x01000193) >>> 0;
|
|
128
|
+
h2 ^= c; h2 = Math.imul(h2, 0x100000001b3 & 0xffffffff) >>> 0;
|
|
129
|
+
}
|
|
130
|
+
return `${h1.toString(16)}_${h2.toString(16)}_${norm.length}`;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function deduplicateByContent(entries) {
|
|
134
|
+
if (!entries || !Array.isArray(entries)) return entries;
|
|
135
|
+
const seen = new Map();
|
|
136
|
+
for (const entry of entries) {
|
|
137
|
+
const content = entry.content || entry.summary || entry.value || '';
|
|
138
|
+
const fp = fingerprintContent(typeof content === 'string' ? content : JSON.stringify(content));
|
|
139
|
+
if (!seen.has(fp)) {
|
|
140
|
+
seen.set(fp, entry);
|
|
141
|
+
} else {
|
|
142
|
+
// Keep the entry with the higher accessCount or earlier createdAt
|
|
143
|
+
const existing = seen.get(fp);
|
|
144
|
+
const existingAccess = existing.accessCount || 0;
|
|
145
|
+
const candidateAccess = entry.accessCount || 0;
|
|
146
|
+
if (candidateAccess > existingAccess) seen.set(fp, entry);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return Array.from(seen.values());
|
|
150
|
+
}
|
|
151
|
+
|
|
111
152
|
// ── Session state helpers ────────────────────────────────────────────────────
|
|
112
153
|
|
|
113
154
|
function sessionGet(key) {
|
|
@@ -217,14 +258,24 @@ function buildEdges(entries) {
|
|
|
217
258
|
}
|
|
218
259
|
}
|
|
219
260
|
|
|
220
|
-
// Similarity edges within categories (Jaccard > 0.3)
|
|
261
|
+
// Similarity edges within categories (Jaccard > 0.3).
|
|
262
|
+
// ADR-095 G6 perf: hoist the trigram computation outside the inner
|
|
263
|
+
// loop. Previously we re-tokenized + re-trigrammed group[j] for every
|
|
264
|
+
// i — O(n²) extra work for nothing. Now compute once per entry.
|
|
221
265
|
for (const cat of Object.keys(byCategory)) {
|
|
222
266
|
const group = byCategory[cat];
|
|
267
|
+
if (group.length < 2) continue;
|
|
268
|
+
|
|
269
|
+
// Cache trigram sets for every entry in the group.
|
|
270
|
+
const triCache = new Array(group.length);
|
|
271
|
+
for (let i = 0; i < group.length; i++) {
|
|
272
|
+
triCache[i] = trigrams(tokenize(group[i].content || group[i].summary || ''));
|
|
273
|
+
}
|
|
274
|
+
|
|
223
275
|
for (let i = 0; i < group.length; i++) {
|
|
224
|
-
const triA =
|
|
276
|
+
const triA = triCache[i];
|
|
225
277
|
for (let j = i + 1; j < group.length; j++) {
|
|
226
|
-
const
|
|
227
|
-
const sim = jaccardSimilarity(triA, triB);
|
|
278
|
+
const sim = jaccardSimilarity(triA, triCache[j]);
|
|
228
279
|
if (sim > 0.3) {
|
|
229
280
|
edges.push({
|
|
230
281
|
sourceId: group[i].id,
|
|
@@ -340,9 +391,21 @@ function init() {
|
|
|
340
391
|
}
|
|
341
392
|
|
|
342
393
|
// Deduplicate store entries by ID (fixes #1518 — 194MB → ~79KB)
|
|
343
|
-
|
|
394
|
+
let deduped = deduplicateById(store);
|
|
395
|
+
// ADR-095 G6: also dedupe by content fingerprint. The April audit
|
|
396
|
+
// measured 5,706 entries with only ~20 unique by content because the
|
|
397
|
+
// same MEMORY.md sections get imported from sibling project dirs with
|
|
398
|
+
// different IDs. deduplicateById can't catch that; deduplicateByContent
|
|
399
|
+
// can. Cuts the graph from O(n²) over near-identical duplicates down
|
|
400
|
+
// to O(unique²), which is the difference between a 100MB graph-state
|
|
401
|
+
// and a kilobytes-scale one for typical workloads.
|
|
402
|
+
const beforeContentDedup = deduped.length;
|
|
403
|
+
deduped = deduplicateByContent(deduped);
|
|
344
404
|
if (deduped.length < store.length) {
|
|
345
|
-
process.stderr.write(
|
|
405
|
+
process.stderr.write(
|
|
406
|
+
`[INTELLIGENCE] Deduped store: ${store.length} -> ${deduped.length} entries ` +
|
|
407
|
+
`(by-id: ${store.length - beforeContentDedup} dropped, by-content: ${beforeContentDedup - deduped.length} dropped)\n`
|
|
408
|
+
);
|
|
346
409
|
writeJSON(STORE_PATH, deduped);
|
|
347
410
|
}
|
|
348
411
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,8 @@ const commandLoaders = {
|
|
|
43
43
|
// P0 Commands
|
|
44
44
|
completions: () => import('./completions.js'),
|
|
45
45
|
doctor: () => import('./doctor.js'),
|
|
46
|
+
// Verification (ADR-095, signed witness manifest)
|
|
47
|
+
verify: () => import('./verify.js'),
|
|
46
48
|
// Analysis Commands
|
|
47
49
|
analyze: () => import('./analyze.js'),
|
|
48
50
|
// Q-Learning Routing Commands
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 CLI Verify Command
|
|
3
|
+
*
|
|
4
|
+
* Fetches the verification.md.json witness manifest from the live repo,
|
|
5
|
+
* recomputes SHA-256 of every cited file in the user's installed
|
|
6
|
+
* artifact, re-derives the Ed25519 public key from the manifest's git
|
|
7
|
+
* commit, and verifies the signature.
|
|
8
|
+
*
|
|
9
|
+
* Run via: ruflo verify [--branch <branch>] [--manifest <local-path>]
|
|
10
|
+
*
|
|
11
|
+
* If everything checks, the user has byte-for-byte the same fix
|
|
12
|
+
* footprint as the manifest claims. If anything mismatches, the
|
|
13
|
+
* command exits non-zero and prints which fix regressed or which file
|
|
14
|
+
* drifted.
|
|
15
|
+
*/
|
|
16
|
+
import type { Command } from '../types.js';
|
|
17
|
+
export declare const verifyCommand: Command;
|
|
18
|
+
export default verifyCommand;
|
|
19
|
+
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAwI1E,eAAO,MAAM,aAAa,EAAE,OAuI3B,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 CLI Verify Command
|
|
3
|
+
*
|
|
4
|
+
* Fetches the verification.md.json witness manifest from the live repo,
|
|
5
|
+
* recomputes SHA-256 of every cited file in the user's installed
|
|
6
|
+
* artifact, re-derives the Ed25519 public key from the manifest's git
|
|
7
|
+
* commit, and verifies the signature.
|
|
8
|
+
*
|
|
9
|
+
* Run via: ruflo verify [--branch <branch>] [--manifest <local-path>]
|
|
10
|
+
*
|
|
11
|
+
* If everything checks, the user has byte-for-byte the same fix
|
|
12
|
+
* footprint as the manifest claims. If anything mismatches, the
|
|
13
|
+
* command exits non-zero and prints which fix regressed or which file
|
|
14
|
+
* drifted.
|
|
15
|
+
*/
|
|
16
|
+
import { createHash } from 'crypto';
|
|
17
|
+
import { existsSync, readFileSync } from 'fs';
|
|
18
|
+
import { dirname, join, sep } from 'path';
|
|
19
|
+
import { fileURLToPath } from 'url';
|
|
20
|
+
import { output } from '../output.js';
|
|
21
|
+
const DEFAULT_MANIFEST_URL = 'https://raw.githubusercontent.com/ruvnet/ruflo/{branch}/verification.md.json';
|
|
22
|
+
async function fetchWitness(branch) {
|
|
23
|
+
const url = DEFAULT_MANIFEST_URL.replace('{branch}', branch);
|
|
24
|
+
const res = await fetch(url);
|
|
25
|
+
if (!res.ok) {
|
|
26
|
+
throw new Error(`Failed to fetch manifest from ${url}: ${res.status} ${res.statusText}`);
|
|
27
|
+
}
|
|
28
|
+
return await res.json();
|
|
29
|
+
}
|
|
30
|
+
function loadLocalWitness(localPath) {
|
|
31
|
+
if (!existsSync(localPath)) {
|
|
32
|
+
throw new Error(`Manifest not found: ${localPath}`);
|
|
33
|
+
}
|
|
34
|
+
return JSON.parse(readFileSync(localPath, 'utf-8'));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Locate the user's installed package root.
|
|
38
|
+
*
|
|
39
|
+
* The witness manifest paths are repo-relative (e.g.
|
|
40
|
+
* "v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js"). For
|
|
41
|
+
* end users, only the dist/ subtree ships in node_modules. We map
|
|
42
|
+
* the repo path → the installed equivalent by stripping the
|
|
43
|
+
* "v3/@claude-flow/<pkg>/" prefix and looking up node_modules/<pkg>/.
|
|
44
|
+
*/
|
|
45
|
+
function repoPathToInstalledPath(repoPath) {
|
|
46
|
+
// Match v3/@claude-flow/<pkg>/<rest>
|
|
47
|
+
const match = repoPath.match(/^v3\/(@claude-flow\/[^/]+)\/(.+)$/);
|
|
48
|
+
if (match) {
|
|
49
|
+
const pkg = match[1];
|
|
50
|
+
const rest = match[2];
|
|
51
|
+
// Try several anchors: cwd/node_modules, the dirname of this script's package
|
|
52
|
+
const candidates = [];
|
|
53
|
+
candidates.push(join(process.cwd(), 'node_modules', pkg, rest));
|
|
54
|
+
try {
|
|
55
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
56
|
+
// Walk up looking for node_modules
|
|
57
|
+
let dir = dirname(__filename);
|
|
58
|
+
for (let i = 0; i < 10; i++) {
|
|
59
|
+
candidates.push(join(dir, 'node_modules', pkg, rest));
|
|
60
|
+
const parent = dirname(dir);
|
|
61
|
+
if (parent === dir)
|
|
62
|
+
break;
|
|
63
|
+
dir = parent;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch { /* ignore */ }
|
|
67
|
+
for (const c of candidates) {
|
|
68
|
+
if (existsSync(c))
|
|
69
|
+
return c;
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
// Top-level paths (e.g. package.json) — return relative to cwd
|
|
74
|
+
const top = join(process.cwd(), repoPath);
|
|
75
|
+
return existsSync(top) ? top : null;
|
|
76
|
+
}
|
|
77
|
+
function fileSha256(path) {
|
|
78
|
+
return createHash('sha256').update(readFileSync(path)).digest('hex');
|
|
79
|
+
}
|
|
80
|
+
function fileContains(path, marker) {
|
|
81
|
+
return readFileSync(path, 'utf-8').includes(marker);
|
|
82
|
+
}
|
|
83
|
+
async function verifySignature(witness) {
|
|
84
|
+
// Lazy-load @noble/ed25519 — keep verify command snappy when no signature check needed
|
|
85
|
+
let ed = null;
|
|
86
|
+
try {
|
|
87
|
+
ed = await import('@noble/ed25519');
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return { manifestHashOk: false, publicKeyReproducible: false, signatureValid: false };
|
|
91
|
+
}
|
|
92
|
+
// Configure sync sha512 for the v2 API
|
|
93
|
+
const sha512Sync = (...m) => {
|
|
94
|
+
const h = createHash('sha512');
|
|
95
|
+
for (const x of m)
|
|
96
|
+
h.update(x);
|
|
97
|
+
return h.digest();
|
|
98
|
+
};
|
|
99
|
+
ed.etc.sha512Sync = sha512Sync;
|
|
100
|
+
const manifestCanonical = JSON.stringify(witness.manifest);
|
|
101
|
+
const recomputedHash = createHash('sha256').update(manifestCanonical).digest('hex');
|
|
102
|
+
const manifestHashOk = recomputedHash === witness.integrity.manifestHash;
|
|
103
|
+
const seed = createHash('sha256').update(witness.manifest.gitCommit + ':ruflo-witness/v1').digest();
|
|
104
|
+
const reKey = ed.getPublicKey(seed);
|
|
105
|
+
const publicKeyReproducible = Buffer.from(reKey).toString('hex') === witness.integrity.publicKey;
|
|
106
|
+
const signatureValid = ed.verify(Buffer.from(witness.integrity.signature, 'hex'), Buffer.from(witness.integrity.manifestHash, 'hex'), Buffer.from(witness.integrity.publicKey, 'hex'));
|
|
107
|
+
return { manifestHashOk, publicKeyReproducible, signatureValid };
|
|
108
|
+
}
|
|
109
|
+
export const verifyCommand = {
|
|
110
|
+
name: 'verify',
|
|
111
|
+
description: 'Verify installed artifact against the signed witness manifest',
|
|
112
|
+
options: [
|
|
113
|
+
{
|
|
114
|
+
name: 'branch',
|
|
115
|
+
short: 'b',
|
|
116
|
+
type: 'string',
|
|
117
|
+
description: 'Git branch to fetch verification.md.json from (defaults to fix/issues-may-1-3)',
|
|
118
|
+
default: 'fix/issues-may-1-3',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
name: 'manifest',
|
|
122
|
+
short: 'm',
|
|
123
|
+
type: 'string',
|
|
124
|
+
description: 'Local path to a verification.md.json file (overrides --branch)',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: 'json',
|
|
128
|
+
type: 'boolean',
|
|
129
|
+
description: 'Output JSON instead of human-readable table',
|
|
130
|
+
default: false,
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
examples: [
|
|
134
|
+
{ command: 'ruflo verify', description: 'Fetch latest manifest from main branch + verify' },
|
|
135
|
+
{ command: 'ruflo verify --branch main', description: 'Verify against a specific branch' },
|
|
136
|
+
{ command: 'ruflo verify --manifest ./verification.md.json', description: 'Use a local manifest copy' },
|
|
137
|
+
{ command: 'ruflo verify --json', description: 'Machine-readable output for CI' },
|
|
138
|
+
],
|
|
139
|
+
action: async (ctx) => {
|
|
140
|
+
const branch = ctx.flags.branch || 'fix/issues-may-1-3';
|
|
141
|
+
const localPath = ctx.flags.manifest;
|
|
142
|
+
const asJson = ctx.flags.json === true;
|
|
143
|
+
if (!asJson) {
|
|
144
|
+
output.writeln();
|
|
145
|
+
output.writeln(output.bold('Ruflo Verification'));
|
|
146
|
+
output.writeln(output.dim('─'.repeat(50)));
|
|
147
|
+
}
|
|
148
|
+
let witness;
|
|
149
|
+
try {
|
|
150
|
+
witness = localPath ? loadLocalWitness(localPath) : await fetchWitness(branch);
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
154
|
+
if (asJson)
|
|
155
|
+
output.printJson({ ok: false, error: msg });
|
|
156
|
+
else
|
|
157
|
+
output.printError(`Could not load witness manifest: ${msg}`);
|
|
158
|
+
return { success: false, exitCode: 1 };
|
|
159
|
+
}
|
|
160
|
+
// Signature verification
|
|
161
|
+
const sig = await verifySignature(witness);
|
|
162
|
+
// File verification
|
|
163
|
+
const fileResults = witness.manifest.fixes.map((fix) => {
|
|
164
|
+
const installedPath = repoPathToInstalledPath(fix.file);
|
|
165
|
+
if (!installedPath) {
|
|
166
|
+
return { ...fix, status: 'missing', sha256Match: false, markerPresent: false, installedPath: null, localSha256: undefined };
|
|
167
|
+
}
|
|
168
|
+
const localHash = fileSha256(installedPath);
|
|
169
|
+
const markerPresent = fileContains(installedPath, fix.marker);
|
|
170
|
+
const sha256Match = localHash === fix.sha256;
|
|
171
|
+
const status = sha256Match && markerPresent
|
|
172
|
+
? 'pass'
|
|
173
|
+
: (markerPresent ? 'drift' : 'regressed');
|
|
174
|
+
return { ...fix, status, sha256Match, markerPresent, localSha256: localHash, installedPath: installedPath.replace(process.cwd() + sep, '') };
|
|
175
|
+
});
|
|
176
|
+
const passCount = fileResults.filter((r) => r.status === 'pass').length;
|
|
177
|
+
const driftCount = fileResults.filter((r) => r.status === 'drift').length;
|
|
178
|
+
const regressedCount = fileResults.filter((r) => r.status === 'regressed').length;
|
|
179
|
+
const missingCount = fileResults.filter((r) => r.status === 'missing').length;
|
|
180
|
+
const allOk = sig.manifestHashOk && sig.publicKeyReproducible && sig.signatureValid && regressedCount === 0;
|
|
181
|
+
if (asJson) {
|
|
182
|
+
output.printJson({
|
|
183
|
+
ok: allOk,
|
|
184
|
+
manifest: witness.manifest,
|
|
185
|
+
signature: sig,
|
|
186
|
+
results: fileResults,
|
|
187
|
+
summary: { pass: passCount, drift: driftCount, regressed: regressedCount, missing: missingCount },
|
|
188
|
+
});
|
|
189
|
+
return { success: allOk, exitCode: allOk ? 0 : 1 };
|
|
190
|
+
}
|
|
191
|
+
output.writeln();
|
|
192
|
+
output.writeln(output.bold('Manifest signature'));
|
|
193
|
+
output.writeln(` manifest hash matches: ${sig.manifestHashOk ? output.success('yes') : output.error('no')}`);
|
|
194
|
+
output.writeln(` public key reproducible from gitCommit: ${sig.publicKeyReproducible ? output.success('yes') : output.error('no')}`);
|
|
195
|
+
output.writeln(` Ed25519 signature valid: ${sig.signatureValid ? output.success('yes') : output.error('no')}`);
|
|
196
|
+
output.writeln();
|
|
197
|
+
output.writeln(output.bold('Fix verification'));
|
|
198
|
+
for (const r of fileResults) {
|
|
199
|
+
const status = r.status === 'pass'
|
|
200
|
+
? output.success('pass')
|
|
201
|
+
: r.status === 'drift'
|
|
202
|
+
? output.warning('drift')
|
|
203
|
+
: output.error(r.status);
|
|
204
|
+
output.writeln(` [${status}] ${r.id} — ${r.desc}`);
|
|
205
|
+
if (r.status === 'drift' && r.localSha256) {
|
|
206
|
+
output.writeln(output.dim(` expected sha256: ${r.sha256.slice(0, 16)}…`));
|
|
207
|
+
output.writeln(output.dim(` local sha256: ${r.localSha256.slice(0, 16)}…`));
|
|
208
|
+
}
|
|
209
|
+
else if (r.status === 'regressed') {
|
|
210
|
+
output.writeln(output.dim(` marker missing: '${r.marker}' not found in ${r.installedPath ?? r.file}`));
|
|
211
|
+
}
|
|
212
|
+
else if (r.status === 'missing') {
|
|
213
|
+
output.writeln(output.dim(` file not found in node_modules: ${r.file}`));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
output.writeln();
|
|
217
|
+
output.writeln(output.bold('Summary'));
|
|
218
|
+
output.writeln(` pass: ${passCount}`);
|
|
219
|
+
output.writeln(` drift: ${driftCount}`);
|
|
220
|
+
output.writeln(` regressed: ${regressedCount}`);
|
|
221
|
+
output.writeln(` missing: ${missingCount}`);
|
|
222
|
+
output.writeln();
|
|
223
|
+
if (allOk) {
|
|
224
|
+
output.printSuccess('All fixes verified. Installed artifact matches the signed witness manifest.');
|
|
225
|
+
return { success: true };
|
|
226
|
+
}
|
|
227
|
+
if (regressedCount > 0) {
|
|
228
|
+
output.printError(`${regressedCount} fix(es) regressed. Markers not found in installed artifact.`);
|
|
229
|
+
}
|
|
230
|
+
if (driftCount > 0) {
|
|
231
|
+
output.printWarning(`${driftCount} fix(es) drifted. Markers present, but file SHA-256 differs (could be a benign edit; inspect the diff).`);
|
|
232
|
+
}
|
|
233
|
+
if (!sig.signatureValid || !sig.manifestHashOk) {
|
|
234
|
+
output.printError('Manifest signature failed verification. The witness file may have been tampered with or corrupted.');
|
|
235
|
+
}
|
|
236
|
+
return { success: false, exitCode: 1 };
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
export default verifyCommand;
|
|
240
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"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"}
|