usertrust 1.5.0 → 2.0.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.
Files changed (115) hide show
  1. package/README.md +17 -1
  2. package/dist/anomaly/detector.js.map +1 -1
  3. package/dist/anomaly/index.d.ts +2 -2
  4. package/dist/anomaly/index.d.ts.map +1 -1
  5. package/dist/anomaly/index.js +1 -1
  6. package/dist/anomaly/index.js.map +1 -1
  7. package/dist/audit/anchor-doctor.d.ts +42 -0
  8. package/dist/audit/anchor-doctor.d.ts.map +1 -0
  9. package/dist/audit/anchor-doctor.js +285 -0
  10. package/dist/audit/anchor-doctor.js.map +1 -0
  11. package/dist/audit/anchor-verify.d.ts +229 -0
  12. package/dist/audit/anchor-verify.d.ts.map +1 -0
  13. package/dist/audit/anchor-verify.js +809 -0
  14. package/dist/audit/anchor-verify.js.map +1 -0
  15. package/dist/audit/anchor.d.ts +177 -0
  16. package/dist/audit/anchor.d.ts.map +1 -0
  17. package/dist/audit/anchor.js +922 -0
  18. package/dist/audit/anchor.js.map +1 -0
  19. package/dist/audit/canonical.js +1 -1
  20. package/dist/audit/canonical.js.map +1 -1
  21. package/dist/audit/chain.d.ts.map +1 -1
  22. package/dist/audit/chain.js +21 -7
  23. package/dist/audit/chain.js.map +1 -1
  24. package/dist/audit/read.d.ts +19 -0
  25. package/dist/audit/read.d.ts.map +1 -0
  26. package/dist/audit/read.js +94 -0
  27. package/dist/audit/read.js.map +1 -0
  28. package/dist/audit/rekor-verify.d.ts +116 -0
  29. package/dist/audit/rekor-verify.d.ts.map +1 -0
  30. package/dist/audit/rekor-verify.js +533 -0
  31. package/dist/audit/rekor-verify.js.map +1 -0
  32. package/dist/audit/rekor.d.ts +71 -0
  33. package/dist/audit/rekor.d.ts.map +1 -0
  34. package/dist/audit/rekor.js +556 -0
  35. package/dist/audit/rekor.js.map +1 -0
  36. package/dist/audit/rotation.js +1 -1
  37. package/dist/audit/rotation.js.map +1 -1
  38. package/dist/audit/sigv4.d.ts +44 -0
  39. package/dist/audit/sigv4.d.ts.map +1 -0
  40. package/dist/audit/sigv4.js +134 -0
  41. package/dist/audit/sigv4.js.map +1 -0
  42. package/dist/audit/verify.d.ts +78 -0
  43. package/dist/audit/verify.d.ts.map +1 -1
  44. package/dist/audit/verify.js +195 -1
  45. package/dist/audit/verify.js.map +1 -1
  46. package/dist/cli/anchor.d.ts +3 -0
  47. package/dist/cli/anchor.d.ts.map +1 -0
  48. package/dist/cli/anchor.js +626 -0
  49. package/dist/cli/anchor.js.map +1 -0
  50. package/dist/cli/completions.js +1 -1
  51. package/dist/cli/export.d.ts +3 -0
  52. package/dist/cli/export.d.ts.map +1 -0
  53. package/dist/cli/export.js +58 -0
  54. package/dist/cli/export.js.map +1 -0
  55. package/dist/cli/health.js.map +1 -1
  56. package/dist/cli/init.js +1 -1
  57. package/dist/cli/init.js.map +1 -1
  58. package/dist/cli/inspect.d.ts.map +1 -1
  59. package/dist/cli/inspect.js +4 -34
  60. package/dist/cli/inspect.js.map +1 -1
  61. package/dist/cli/main.d.ts +2 -2
  62. package/dist/cli/main.d.ts.map +1 -1
  63. package/dist/cli/main.js +20 -1
  64. package/dist/cli/main.js.map +1 -1
  65. package/dist/cli/pricing.js +1 -1
  66. package/dist/cli/pricing.js.map +1 -1
  67. package/dist/cli/ui.d.ts +3 -0
  68. package/dist/cli/ui.d.ts.map +1 -0
  69. package/dist/cli/ui.js +35 -0
  70. package/dist/cli/ui.js.map +1 -0
  71. package/dist/cli/verify.d.ts.map +1 -1
  72. package/dist/cli/verify.js +342 -3
  73. package/dist/cli/verify.js.map +1 -1
  74. package/dist/config.d.ts.map +1 -1
  75. package/dist/config.js.map +1 -1
  76. package/dist/detect.d.ts +37 -15
  77. package/dist/detect.d.ts.map +1 -1
  78. package/dist/detect.js +17 -6
  79. package/dist/detect.js.map +1 -1
  80. package/dist/export/markdown.d.ts +12 -0
  81. package/dist/export/markdown.d.ts.map +1 -0
  82. package/dist/export/markdown.js +142 -0
  83. package/dist/export/markdown.js.map +1 -0
  84. package/dist/govern.d.ts +60 -3
  85. package/dist/govern.d.ts.map +1 -1
  86. package/dist/govern.js +842 -229
  87. package/dist/govern.js.map +1 -1
  88. package/dist/headless.d.ts.map +1 -1
  89. package/dist/headless.js +4 -4
  90. package/dist/headless.js.map +1 -1
  91. package/dist/index.d.ts +33 -26
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +30 -25
  94. package/dist/index.js.map +1 -1
  95. package/dist/ledger/client.d.ts.map +1 -1
  96. package/dist/ledger/client.js +57 -46
  97. package/dist/ledger/client.js.map +1 -1
  98. package/dist/ledger/engine.d.ts.map +1 -1
  99. package/dist/ledger/engine.js +22 -13
  100. package/dist/ledger/engine.js.map +1 -1
  101. package/dist/shared/types.d.ts +114 -475
  102. package/dist/shared/types.d.ts.map +1 -1
  103. package/dist/shared/types.js +13 -13
  104. package/dist/shared/types.js.map +1 -1
  105. package/dist/snapshot/checkpoint.d.ts.map +1 -1
  106. package/dist/snapshot/checkpoint.js +20 -2
  107. package/dist/snapshot/checkpoint.js.map +1 -1
  108. package/dist/streaming.d.ts +9 -4
  109. package/dist/streaming.d.ts.map +1 -1
  110. package/dist/streaming.js +27 -0
  111. package/dist/streaming.js.map +1 -1
  112. package/dist/supply-chain/sign.d.ts.map +1 -1
  113. package/dist/supply-chain/sign.js +3 -0
  114. package/dist/supply-chain/sign.js.map +1 -1
  115. package/package.json +6 -4
@@ -6,16 +6,295 @@
6
6
  * Calls verifyVault() on the local vault (anchored to the `.meta` head, spans
7
7
  * rotated segments) and displays the result. Sets a nonzero process exit code
8
8
  * on a FAILED verdict so CI gates fail on a tampered vault.
9
+ *
10
+ * External-anchor flags (spec §7.5) mirror the standalone usertrust-verify
11
+ * CLI: the caller fetches anchor artifacts and pins the public key
12
+ * out-of-band; trust is never read from the vault under audit.
9
13
  */
10
- import { existsSync } from "node:fs";
14
+ import { existsSync, readFileSync } from "node:fs";
11
15
  import { join } from "node:path";
12
16
  import pc from "picocolors";
13
- import { verifyVault } from "../audit/verify.js";
17
+ import { parseAnchorsContent } from "../audit/anchor-verify.js";
18
+ import { exitCodeForAnchored, verifyVault, verifyVaultWithAnchors, } from "../audit/verify.js";
14
19
  import { VAULT_DIR } from "../shared/constants.js";
20
+ function parseDurationMs(raw) {
21
+ const m = /^(\d+)(ms|s|m|h|d)?$/.exec(raw);
22
+ if (m === null) {
23
+ // Silently dropping the policy would quietly disable the staleness
24
+ // gate — the exact fail-open the unknown-flag rejection exists to stop.
25
+ throw new Error(`Invalid --max-anchor-age: ${raw} (use e.g. 500ms, 30s, 15m, 1h, 7d)`);
26
+ }
27
+ const n = Number.parseInt(m[1], 10);
28
+ const mult = { ms: 1, s: 1000, m: 60_000, h: 3_600_000, d: 86_400_000 }[m[2] ?? "ms"];
29
+ return n * mult;
30
+ }
31
+ const KNOWN_VERIFY_FLAGS = new Set([
32
+ // Global flags main.ts accepts for every subcommand — rejecting them here
33
+ // would break existing `usertrust verify --skip-verify`-style invocations.
34
+ "--json",
35
+ "--skip-verify",
36
+ "--reconfigure",
37
+ // Anchor flags.
38
+ "--anchor",
39
+ "--anchors",
40
+ "--anchor-url",
41
+ "--bundle",
42
+ "--rekor-receipts",
43
+ "--rekor-pubkey",
44
+ "--pubkey",
45
+ "--successor-pin",
46
+ "--require-anchor",
47
+ "--require-external-anchor",
48
+ "--max-anchor-age",
49
+ "--max-unanchored-events",
50
+ "--vault-id",
51
+ ]);
52
+ const MAX_PEM_BYTES = 16 * 1024;
53
+ const MAX_BUNDLE_ITEMS = 10_000;
54
+ const BUNDLE_KEYS = new Set(["v", "records", "rekorReceipts"]);
55
+ function readArtifact(pathOrDash) {
56
+ return pathOrDash === "-" ? readFileSync(0, "utf-8") : readFileSync(pathOrDash, "utf-8");
57
+ }
58
+ /**
59
+ * Read one pinned log key. A file that carries no usable PEM is a usage error,
60
+ * not an empty pin: the verifier discards unusable entries, so accepting one
61
+ * here would leave the caller believing they pinned a key while the receipt was
62
+ * checked against something else entirely.
63
+ */
64
+ function readPinnedPem(path) {
65
+ const pem = readFileSync(path, "utf-8");
66
+ if (Buffer.byteLength(pem, "utf8") > MAX_PEM_BYTES) {
67
+ throw new Error(`--rekor-pubkey ${path}: PEM exceeds 16 KiB`);
68
+ }
69
+ if (pem.trim().length === 0 || !pem.includes("-----BEGIN PUBLIC KEY-----")) {
70
+ throw new Error(`--rekor-pubkey ${path}: not a PEM public key (-----BEGIN PUBLIC KEY----- missing)`);
71
+ }
72
+ return pem;
73
+ }
74
+ /**
75
+ * Strict parse of an auditor bundle: `{v:1, records, rekorReceipts?}`. A bundle
76
+ * is untrusted transport, so unknown top-level fields are rejected rather than
77
+ * ignored — a field the CLI silently drops is one an exporter can use to carry
78
+ * evidence the verifier never looks at. Element shapes are NOT validated here:
79
+ * records and receipts are re-serialized and go through the same strict parsers
80
+ * every other input does.
81
+ */
82
+ function parseBundle(raw) {
83
+ let parsed;
84
+ try {
85
+ parsed = JSON.parse(raw);
86
+ }
87
+ catch {
88
+ throw new Error("--bundle: not valid JSON");
89
+ }
90
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
91
+ throw new Error("--bundle: not an object");
92
+ }
93
+ const obj = parsed;
94
+ for (const key of Object.keys(obj)) {
95
+ if (!BUNDLE_KEYS.has(key))
96
+ throw new Error(`--bundle: unknown field "${key.slice(0, 80)}"`);
97
+ }
98
+ if (obj.v !== 1)
99
+ throw new Error("--bundle: unsupported version (expected 1)");
100
+ if (!Array.isArray(obj.records))
101
+ throw new Error("--bundle: records must be an array");
102
+ if (obj.records.length > MAX_BUNDLE_ITEMS) {
103
+ throw new Error(`--bundle: records exceeds the ${MAX_BUNDLE_ITEMS} cap`);
104
+ }
105
+ const receipts = obj.rekorReceipts ?? [];
106
+ if (!Array.isArray(receipts))
107
+ throw new Error("--bundle: rekorReceipts must be an array");
108
+ if (receipts.length > MAX_BUNDLE_ITEMS) {
109
+ throw new Error(`--bundle: rekorReceipts exceeds the ${MAX_BUNDLE_ITEMS} cap`);
110
+ }
111
+ return {
112
+ anchorsRaw: obj.records.map((record) => JSON.stringify(record)).join("\n"),
113
+ receiptsRaw: receipts.map((receipt) => JSON.stringify(receipt)),
114
+ };
115
+ }
116
+ function fetchAnchorUrl(url) {
117
+ return new Promise((resolve) => {
118
+ import("node:https")
119
+ .then((https) => {
120
+ const req = https.get(url, { timeout: 15_000 }, (res) => {
121
+ const code = res.statusCode ?? 0;
122
+ if (code < 200 || code >= 300) {
123
+ res.resume();
124
+ resolve({ ok: false, error: `HTTP ${code}` });
125
+ return;
126
+ }
127
+ const chunks = [];
128
+ res.on("data", (c) => chunks.push(c));
129
+ res.on("end", () => resolve({ ok: true, body: Buffer.concat(chunks).toString("utf-8") }));
130
+ });
131
+ req.on("timeout", () => req.destroy(new Error("timeout")));
132
+ req.on("error", (err) => resolve({ ok: false, error: err.message }));
133
+ })
134
+ .catch((err) => resolve({ ok: false, error: err.message }));
135
+ });
136
+ }
137
+ async function parseAnchorFlags(argv) {
138
+ const anchorFiles = [];
139
+ const rekorReceiptFiles = [];
140
+ const rekorPubkeyFiles = [];
141
+ let bundleFile;
142
+ let anchorUrl;
143
+ let pubkeyFile;
144
+ const successorPinFiles = [];
145
+ let requireAnchor = false;
146
+ let requireExternalAnchor = false;
147
+ let maxAnchorAgeMs;
148
+ let maxUnanchoredEvents;
149
+ let vaultId;
150
+ for (let i = 0; i < argv.length; i++) {
151
+ const arg = argv[i];
152
+ const next = () => argv[++i];
153
+ if (arg === "--anchor" || arg === "--anchors") {
154
+ const v = next();
155
+ if (v !== undefined)
156
+ anchorFiles.push(v);
157
+ }
158
+ else if (arg === "--rekor-receipts") {
159
+ const v = next();
160
+ if (v !== undefined)
161
+ rekorReceiptFiles.push(v);
162
+ }
163
+ else if (arg === "--rekor-pubkey") {
164
+ const v = next();
165
+ if (v !== undefined)
166
+ rekorPubkeyFiles.push(v);
167
+ }
168
+ else if (arg === "--bundle")
169
+ bundleFile = next();
170
+ else if (arg === "--anchor-url")
171
+ anchorUrl = next();
172
+ else if (arg === "--pubkey")
173
+ pubkeyFile = next();
174
+ else if (arg === "--successor-pin") {
175
+ const v = next();
176
+ if (v !== undefined)
177
+ successorPinFiles.push(v);
178
+ }
179
+ else if (arg === "--require-anchor")
180
+ requireAnchor = true;
181
+ else if (arg === "--require-external-anchor")
182
+ requireExternalAnchor = true;
183
+ else if (arg === "--max-anchor-age") {
184
+ const v = next();
185
+ if (v === undefined)
186
+ throw new Error("--max-anchor-age requires a value");
187
+ maxAnchorAgeMs = parseDurationMs(v);
188
+ }
189
+ else if (arg === "--max-unanchored-events") {
190
+ const v = next();
191
+ maxUnanchoredEvents = Number.parseInt(v ?? "", 10);
192
+ // parseInt("1O0") === 1 (partial parse) and NaN comparisons are always
193
+ // false — either typo would silently weaken the staleness gate.
194
+ // Require the WHOLE value to be a non-negative integer.
195
+ if (!/^\d+$/.test(v ?? "") ||
196
+ !Number.isSafeInteger(maxUnanchoredEvents) ||
197
+ maxUnanchoredEvents < 0) {
198
+ throw new Error(`Invalid --max-unanchored-events: ${v} (non-negative integer required)`);
199
+ }
200
+ }
201
+ else if (arg === "--vault-id")
202
+ vaultId = next();
203
+ else if (arg.startsWith("--") && !KNOWN_VERIFY_FLAGS.has(arg)) {
204
+ // Reject unknown flags rather than silently ignoring them — a typoed
205
+ // --require-anchro must not quietly weaken a CI gate.
206
+ throw new Error(`Unknown flag: ${arg}`);
207
+ }
208
+ }
209
+ const externalAnchorsRaw = anchorFiles.map(readArtifact);
210
+ const rekorReceiptsRaw = rekorReceiptFiles.map(readArtifact);
211
+ const rekorLogPubkeysPem = rekorPubkeyFiles.map(readPinnedPem);
212
+ if (bundleFile !== undefined) {
213
+ const bundle = parseBundle(readArtifact(bundleFile));
214
+ externalAnchorsRaw.push(bundle.anchorsRaw);
215
+ rekorReceiptsRaw.push(...bundle.receiptsRaw);
216
+ }
217
+ let witness = { requested: false };
218
+ if (anchorUrl !== undefined) {
219
+ const fetched = await fetchAnchorUrl(anchorUrl);
220
+ // Empty/fully-unparseable body = witness unreachable (inconclusive).
221
+ // A body with ANY cleanly parsed records IS evidence — keep it whole;
222
+ // embedded parse errors fail closed downstream instead of discarding
223
+ // the rollback proof the valid records carry.
224
+ const parsed = fetched.ok && fetched.body !== undefined ? parseAnchorsContent(fetched.body) : null;
225
+ if (parsed !== null && parsed.records.length > 0) {
226
+ externalAnchorsRaw.push(fetched.body);
227
+ witness = { requested: true, ok: true };
228
+ }
229
+ else {
230
+ witness = {
231
+ requested: true,
232
+ ok: false,
233
+ error: fetched.ok
234
+ ? "witness returned an empty or unparseable body"
235
+ : (fetched.error ?? "fetch failed"),
236
+ };
237
+ }
238
+ }
239
+ const anchorMode = anchorFiles.length > 0 ||
240
+ anchorUrl !== undefined ||
241
+ pubkeyFile !== undefined ||
242
+ bundleFile !== undefined ||
243
+ rekorReceiptFiles.length > 0 ||
244
+ requireAnchor ||
245
+ requireExternalAnchor;
246
+ const trust = pubkeyFile !== undefined
247
+ ? {
248
+ rootPem: readFileSync(pubkeyFile, "utf-8"),
249
+ ...(successorPinFiles.length > 0
250
+ ? { successorPinsPem: successorPinFiles.map((f) => readFileSync(f, "utf-8")) }
251
+ : {}),
252
+ }
253
+ : undefined;
254
+ return {
255
+ anchorMode,
256
+ requireAnchor,
257
+ requireExternalAnchor,
258
+ params: {
259
+ externalAnchorsRaw,
260
+ rekorReceiptsRaw,
261
+ rekorLogPubkeysPem,
262
+ ...(trust !== undefined ? { trust } : {}),
263
+ witness,
264
+ ...(maxAnchorAgeMs !== undefined ? { maxAnchorAgeMs } : {}),
265
+ ...(maxUnanchoredEvents !== undefined ? { maxUnanchoredEvents } : {}),
266
+ ...(vaultId !== undefined ? { expectedVaultId: vaultId } : {}),
267
+ },
268
+ };
269
+ }
270
+ /**
271
+ * A witness-attested time on its way to a terminal. The receipt parser bounds
272
+ * integratedTime, but this value also arrives from library callers, and
273
+ * `toISOString()` throws RangeError outside ±8.64e15 ms — printing raw
274
+ * milliseconds beats crashing the verifier over a number it already distrusts.
275
+ */
276
+ function formatAttestedMs(ms) {
277
+ return Number.isFinite(ms) && Math.abs(ms) <= 8.64e15 ? new Date(ms).toISOString() : `${ms} ms`;
278
+ }
15
279
  export async function run(rootDir, opts) {
16
280
  const root = rootDir ?? process.cwd();
17
281
  const vaultPath = join(root, VAULT_DIR);
18
282
  const json = opts?.json === true;
283
+ let flags;
284
+ try {
285
+ flags = await parseAnchorFlags(process.argv.slice(2));
286
+ }
287
+ catch (err) {
288
+ const message = err instanceof Error ? err.message : String(err);
289
+ if (json) {
290
+ console.log(JSON.stringify({ command: "verify", success: false, data: { message } }));
291
+ }
292
+ else {
293
+ console.log(pc.red(message));
294
+ }
295
+ process.exitCode = 1;
296
+ return;
297
+ }
19
298
  if (!existsSync(vaultPath)) {
20
299
  if (json) {
21
300
  console.log(JSON.stringify({
@@ -31,8 +310,66 @@ export async function run(rootDir, opts) {
31
310
  process.exitCode = 1;
32
311
  return;
33
312
  }
34
- const result = verifyVault(vaultPath);
35
313
  const verifiedAt = new Date().toISOString();
314
+ if (flags.anchorMode) {
315
+ const result = verifyVaultWithAnchors(vaultPath, flags.params);
316
+ const exitCode = exitCodeForAnchored(result, {
317
+ requireAnchor: flags.requireAnchor,
318
+ requireExternalAnchor: flags.requireExternalAnchor,
319
+ });
320
+ if (json) {
321
+ console.log(JSON.stringify({
322
+ command: "verify",
323
+ success: result.valid,
324
+ data: {
325
+ valid: result.valid,
326
+ chainLength: result.chainLength,
327
+ errors: result.errors,
328
+ merkleRoot: result.merkleRoot,
329
+ anchorState: result.anchorState,
330
+ anchoring: result.anchoring,
331
+ verifiedAt,
332
+ },
333
+ }));
334
+ if (exitCode !== 0)
335
+ process.exitCode = exitCode;
336
+ return;
337
+ }
338
+ if (result.valid) {
339
+ console.log(pc.green(`Chain verified: ${result.chainLength} events, all hashes valid.`));
340
+ }
341
+ else {
342
+ console.log(pc.red(`Chain verification FAILED: ${result.errors.length} error(s) found.`));
343
+ for (const err of result.errors) {
344
+ console.log(pc.red(` - ${err}`));
345
+ }
346
+ }
347
+ console.log(`Anchor state: ${result.anchorState} (source: ${result.anchoring.anchorSource})`);
348
+ if (result.anchoring.latestAnchor) {
349
+ const la = result.anchoring.latestAnchor;
350
+ console.log(`Latest anchor: #${la.anchorSeq} treeSize ${la.treeSize} (${la.timestamp})`);
351
+ }
352
+ console.log(`Unanchored tail: ${result.anchoring.unanchoredTail.events} event(s)`);
353
+ const rekor = result.anchoring.rekor;
354
+ if (rekor !== undefined) {
355
+ const attested = rekor.latestAttestedTimeMs === null
356
+ ? ""
357
+ : `, attested ${formatAttestedMs(rekor.latestAttestedTimeMs)}`;
358
+ const failed = rekor.receiptsFailed > 0 ? `, ${rekor.receiptsFailed} FAILED` : "";
359
+ console.log(`Rekor: ${rekor.receiptsVerified} receipt(s) verified${failed}${attested}`);
360
+ }
361
+ if (result.anchoring.anchorSource === "vault-mirror") {
362
+ console.log(pc.yellow("WARNING: anchors verified from the vault-local mirror only — supply an externally fetched copy for deletion protection."));
363
+ }
364
+ for (const w of result.anchoring.warnings) {
365
+ console.log(pc.yellow(`WARNING: ${w}`));
366
+ }
367
+ console.log(pc.dim(`Verified at: ${verifiedAt}`));
368
+ if (exitCode !== 0)
369
+ process.exitCode = exitCode;
370
+ return;
371
+ }
372
+ const result = verifyVault(vaultPath);
36
373
  if (json) {
37
374
  console.log(JSON.stringify({
38
375
  command: "verify",
@@ -42,6 +379,7 @@ export async function run(rootDir, opts) {
42
379
  chainLength: result.chainLength,
43
380
  errors: result.errors,
44
381
  merkleRoot: result.merkleRoot,
382
+ anchorState: "UNANCHORED",
45
383
  verifiedAt,
46
384
  },
47
385
  }));
@@ -53,6 +391,7 @@ export async function run(rootDir, opts) {
53
391
  console.log(pc.green(`Chain verified: ${result.chainLength} events, all hashes valid.`));
54
392
  if (result.merkleRoot)
55
393
  console.log(`Merkle root: ${pc.dim(result.merkleRoot)}`);
394
+ console.log(pc.dim("Anchor state: UNANCHORED — internal consistency only; supply --anchor + --pubkey for independent verification."));
56
395
  }
57
396
  else {
58
397
  console.log(pc.red(`Chain verification FAILED: ${result.errors.length} error(s) found.`));
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA4BrD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC/B,SAAS,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC,CAwBtB;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAE7D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA6BrD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC/B,SAAS,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC,CAwBtB;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAE7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/detect.d.ts CHANGED
@@ -4,30 +4,52 @@
4
4
  * Uses structural checks (duck typing) to identify which SDK a client object
5
5
  * belongs to, without requiring the SDK packages as dependencies.
6
6
  *
7
- * **Governance boundary:** only the following methods are intercepted and governed:
8
- * - Anthropic: `client.messages.create()`
9
- * - OpenAI: `client.chat.completions.create()`
7
+ * **Governance boundary:** the following methods are intercepted and governed:
8
+ * - Anthropic: `client.messages.create()`, `client.messages.stream()`,
9
+ * `client.messages.parse()`, `client.beta.messages.create()`,
10
+ * `client.beta.messages.stream()`, `client.beta.messages.parse()`
11
+ * - OpenAI: `client.chat.completions.create()`, and `client.responses.create()`
12
+ * when present (feature-detected — the Responses API postdates the peer-range
13
+ * floor, so older clients simply lack it and it stays a pass-through). A streaming
14
+ * `responses.create({ stream: true })` is governed; the `responses.stream()`
15
+ * convenience helper is NOT (see below).
10
16
  * - Google: `client.models.generateContent()`
11
17
  *
12
- * Alternative methods (e.g., `client.messages.stream`, `client.beta.*`, streaming
13
- * APIs, `client.completions.create`) are **NOT** intercepted and will bypass
14
- * governance, audit, and budget enforcement. This is a known limitation of
15
- * duck-typed proxy interception. Callers relying on ungoverned methods should
16
- * implement their own budget and audit controls or wrap calls through the
17
- * governed entry points above.
18
+ * Remaining ungoverned surfaces (feature-detected pass-throughs, or shapes that do
19
+ * not mirror `create`): `client.messages.batches`, `client.beta.messages.batches`,
20
+ * `client.beta.models`, `client.beta.files`, the OpenAI Responses non-create
21
+ * methods (`client.responses.retrieve/cancel/delete`, plus the
22
+ * `client.responses.stream()` and `client.responses.parse()` helpers both drive
23
+ * the SDK's raw client internally and so bypass the governed `create`), the OpenAI
24
+ * `client.beta.*` namespace (assistants/threads/realtime — a different shape from
25
+ * Anthropic beta), and the legacy `client.completions.create`. These are **NOT**
26
+ * intercepted and bypass governance, audit, and budget enforcement. Callers relying
27
+ * on ungoverned methods should implement their own budget and audit controls or wrap
28
+ * calls through the governed entry points above.
18
29
  */
19
30
  import type { EndpointInfo, LLMClientKind, TrustConfig } from "./shared/types.js";
20
31
  /**
21
32
  * Detect which LLM SDK a client belongs to by inspecting its shape.
22
33
  *
23
- * Governance boundary: only the following methods are intercepted and governed:
24
- * - Anthropic: `client.messages.create()`
25
- * - OpenAI: `client.chat.completions.create()`
34
+ * Governance boundary: the following methods are intercepted and governed:
35
+ * - Anthropic: `client.messages.create()`, `client.messages.stream()`,
36
+ * `client.messages.parse()`, `client.beta.messages.create()`,
37
+ * `client.beta.messages.stream()`, `client.beta.messages.parse()`
38
+ * - OpenAI: `client.chat.completions.create()`, and `client.responses.create()`
39
+ * when present (feature-detected — the Responses API postdates the peer-range
40
+ * floor, so older clients simply lack it and it stays a pass-through). A streaming
41
+ * `responses.create({ stream: true })` is governed; the `responses.stream()`
42
+ * helper is NOT.
26
43
  * - Google: `client.models.generateContent()`
27
44
  *
28
- * Alternative methods (e.g., `client.messages.stream`, `client.beta.*`, streaming APIs)
29
- * are NOT intercepted and will bypass governance, audit, and budget enforcement.
30
- * This is a known limitation of duck-typed proxy interception.
45
+ * Remaining ungoverned pass-throughs: `client.messages.batches`,
46
+ * `client.beta.messages.batches`, `client.beta.models`, `client.beta.files`, the
47
+ * OpenAI Responses non-create methods (`client.responses.retrieve/cancel/delete`,
48
+ * plus the `client.responses.stream()` and `client.responses.parse()` helpers,
49
+ * which drive the SDK's raw client and bypass the governed `create`), the OpenAI
50
+ * `client.beta.*` namespace (assistants/threads/realtime), and the legacy
51
+ * `client.completions.create`. These bypass governance, audit, and budget
52
+ * enforcement (they do not mirror the `create` request/response shape).
31
53
  *
32
54
  * @throws {Error} if the client does not match any known SDK shape
33
55
  */
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAgB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhG;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAyC/D;AAsED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC9B,YAAY,CA8Bd"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAgB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhG;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAyC/D;AAsED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC9B,YAAY,CA8Bd"}
package/dist/detect.js CHANGED
@@ -3,14 +3,25 @@
3
3
  /**
4
4
  * Detect which LLM SDK a client belongs to by inspecting its shape.
5
5
  *
6
- * Governance boundary: only the following methods are intercepted and governed:
7
- * - Anthropic: `client.messages.create()`
8
- * - OpenAI: `client.chat.completions.create()`
6
+ * Governance boundary: the following methods are intercepted and governed:
7
+ * - Anthropic: `client.messages.create()`, `client.messages.stream()`,
8
+ * `client.messages.parse()`, `client.beta.messages.create()`,
9
+ * `client.beta.messages.stream()`, `client.beta.messages.parse()`
10
+ * - OpenAI: `client.chat.completions.create()`, and `client.responses.create()`
11
+ * when present (feature-detected — the Responses API postdates the peer-range
12
+ * floor, so older clients simply lack it and it stays a pass-through). A streaming
13
+ * `responses.create({ stream: true })` is governed; the `responses.stream()`
14
+ * helper is NOT.
9
15
  * - Google: `client.models.generateContent()`
10
16
  *
11
- * Alternative methods (e.g., `client.messages.stream`, `client.beta.*`, streaming APIs)
12
- * are NOT intercepted and will bypass governance, audit, and budget enforcement.
13
- * This is a known limitation of duck-typed proxy interception.
17
+ * Remaining ungoverned pass-throughs: `client.messages.batches`,
18
+ * `client.beta.messages.batches`, `client.beta.models`, `client.beta.files`, the
19
+ * OpenAI Responses non-create methods (`client.responses.retrieve/cancel/delete`,
20
+ * plus the `client.responses.stream()` and `client.responses.parse()` helpers,
21
+ * which drive the SDK's raw client and bypass the governed `create`), the OpenAI
22
+ * `client.beta.*` namespace (assistants/threads/realtime), and the legacy
23
+ * `client.completions.create`. These bypass governance, audit, and budget
24
+ * enforcement (they do not mirror the `create` request/response shape).
14
25
  *
15
26
  * @throws {Error} if the client does not match any known SDK shape
16
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface ExportResult {
2
+ written: number;
3
+ outDir: string;
4
+ /** Parsed-chain walk verdict (hash linkage over readable events). */
5
+ chainValid: boolean;
6
+ breakIndex: number | null;
7
+ /** Full vault verification (segments, malformed lines, .meta anchor). */
8
+ vaultValid: boolean;
9
+ vaultErrors: string[];
10
+ }
11
+ export declare function exportMarkdown(vaultPath: string, outDir: string): ExportResult;
12
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/export/markdown.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,yEAAyE;IACzE,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;CACtB;AAkGD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAiD9E"}