@catp-protocol/cli 0.7.3 → 0.7.5

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 (51) hide show
  1. package/dist/audit/durable.d.ts +87 -0
  2. package/dist/audit/durable.d.ts.map +1 -0
  3. package/dist/audit/durable.js +285 -0
  4. package/dist/audit/durable.js.map +1 -0
  5. package/dist/audit/logger.d.ts +80 -5
  6. package/dist/audit/logger.d.ts.map +1 -1
  7. package/dist/audit/logger.js +199 -20
  8. package/dist/audit/logger.js.map +1 -1
  9. package/dist/audit/paths.d.ts +11 -0
  10. package/dist/audit/paths.d.ts.map +1 -1
  11. package/dist/audit/paths.js +19 -0
  12. package/dist/audit/paths.js.map +1 -1
  13. package/dist/audit/verifier.d.ts +9 -0
  14. package/dist/audit/verifier.d.ts.map +1 -1
  15. package/dist/audit/verifier.js +70 -18
  16. package/dist/audit/verifier.js.map +1 -1
  17. package/dist/cli.js +18 -12
  18. package/dist/cli.js.map +1 -1
  19. package/dist/commands/authorization.js +6 -0
  20. package/dist/commands/authorization.js.map +1 -1
  21. package/dist/commands/log.d.ts +51 -1
  22. package/dist/commands/log.d.ts.map +1 -1
  23. package/dist/commands/log.js +110 -22
  24. package/dist/commands/log.js.map +1 -1
  25. package/dist/commands/receipt.d.ts +71 -1
  26. package/dist/commands/receipt.d.ts.map +1 -1
  27. package/dist/commands/receipt.js +354 -72
  28. package/dist/commands/receipt.js.map +1 -1
  29. package/dist/enforcement/core.d.ts +10 -4
  30. package/dist/enforcement/core.d.ts.map +1 -1
  31. package/dist/enforcement/core.js +40 -4
  32. package/dist/enforcement/core.js.map +1 -1
  33. package/dist/evidence/canonical.d.ts +22 -0
  34. package/dist/evidence/canonical.d.ts.map +1 -0
  35. package/dist/evidence/canonical.js +45 -0
  36. package/dist/evidence/canonical.js.map +1 -0
  37. package/dist/evidence/commitments.d.ts +46 -0
  38. package/dist/evidence/commitments.d.ts.map +1 -0
  39. package/dist/evidence/commitments.js +52 -0
  40. package/dist/evidence/commitments.js.map +1 -0
  41. package/dist/hook/post.d.ts +6 -0
  42. package/dist/hook/post.d.ts.map +1 -1
  43. package/dist/hook/post.js +1 -1
  44. package/dist/hook/post.js.map +1 -1
  45. package/dist/hook/pre.d.ts +6 -0
  46. package/dist/hook/pre.d.ts.map +1 -1
  47. package/dist/hook/pre.js +4 -1
  48. package/dist/hook/pre.js.map +1 -1
  49. package/dist/policy/types.d.ts +25 -2
  50. package/dist/policy/types.d.ts.map +1 -1
  51. package/package.json +1 -1
@@ -1,8 +1,19 @@
1
1
  import { createHash, createPrivateKey, createPublicKey, generateKeyPairSync, sign, verify } from "node:crypto";
2
2
  import { readFileSync, writeFileSync } from "node:fs";
3
- import { auditLogFiles, buildAuditExport, latestAuditCommitment, stableStringify } from "./log.js";
4
- import { verifyChain } from "../audit/verifier.js";
3
+ import { auditLogFiles, buildAuditExportV2, computeAuditExportV2Sha256, latestAuditCommitment, selectedAuditExportV2Entry, stableStringify, } from "./log.js";
4
+ import { verifyChain, verifyEntryChain } from "../audit/verifier.js";
5
+ import { computeActionCommitment, computePolicyCommitment as computeEnforcementPolicyCommitment } from "../evidence/commitments.js";
5
6
  import { findPolicyFile, loadPolicy } from "../policy/loader.js";
7
+ // Domain separators for version-2 receipts. The signature covers the receipt
8
+ // body; receipt_sha256 covers the body-plus-signature. Neither includes
9
+ // receipt_sha256 itself, so the hash is a stable external fingerprint.
10
+ const RECEIPT_SIGNATURE_V2_DOMAIN = "catp:receipt-signature:v2\n";
11
+ const RECEIPT_V2_DOMAIN = "catp:receipt:v2\n";
12
+ /** SHA-256 of the public key's DER SubjectPublicKeyInfo bytes. */
13
+ export function computeIssuerKeyId(publicKeyPem) {
14
+ const der = createPublicKey(publicKeyPem).export({ type: "spki", format: "der" });
15
+ return createHash("sha256").update(der).digest("hex");
16
+ }
6
17
  export function cmdReceiptKeygen(opts) {
7
18
  const privateKeyPath = opts.privateKey ?? "catp-receipt-private.pem";
8
19
  const publicKeyPath = opts.publicKey ?? "catp-receipt-public.pem";
@@ -22,23 +33,33 @@ export function cmdReceiptSign(opts) {
22
33
  if (!opts.privateKey) {
23
34
  throw new Error("missing --private-key <path>");
24
35
  }
25
- const auditExport = readAuditExport(opts.auditExport);
26
- assertPreEnforcementAuditExport(auditExport);
36
+ const auditExport = readAuditExportV2(opts.auditExport);
37
+ const selected = selectedPreEnforcementV4Entry(auditExport);
38
+ // --file is verification evidence, never the binding source: it must
39
+ // reproduce the enforcement-time policy_commitment copied from the entry.
40
+ if (opts.file) {
41
+ assertPolicyMatchesEnforcementCommitment(loadPolicy(opts.file), selected.policy_commitment);
42
+ }
27
43
  const privateKeyPem = readFileSync(opts.privateKey, "utf8");
28
- const publicKeyPem = derivePublicKeyPem(privateKeyPem);
29
- const policyCommitment = opts.file ? computePolicyCommitment(loadPolicy(opts.file)) : resolvePolicyCommitmentIfPresent();
30
- const receipt = signAuthorizationReceipt(auditExport, privateKeyPem, publicKeyPem, { policyCommitment });
44
+ const receipt = signAuthorizationReceiptV2(auditExport, privateKeyPem);
45
+ writeReceiptV2Output(receipt, selected, opts.out);
46
+ }
47
+ function writeReceiptV2Output(receipt, selected, out, auditExportOut) {
31
48
  const json = stableStringify(receipt, 2) + "\n";
32
- if (opts.out) {
33
- writeFileSync(opts.out, json, "utf8");
34
- process.stdout.write(`Wrote authorization receipt to ${opts.out}\n`);
35
- process.stdout.write(`auditCommitment=${receipt.auditCommitment}\n`);
36
- process.stdout.write(`auditExportHash=${receipt.auditExportHash}\n`);
37
- process.stdout.write(`policyCommitment=${receipt.policyCommitment ?? "none"}\n`);
38
- process.stdout.write(`selectedTool=${auditExport.entry.tool}\n`);
39
- process.stdout.write(`selectedDecision=${auditExport.entry.decision}\n`);
40
- process.stdout.write(`selectedTimestamp=${auditExport.entry.ts}\n`);
41
- process.stdout.write(`selectedInputSummary=${auditExport.entry.input_summary}\n`);
49
+ if (out) {
50
+ writeFileSync(out, json, "utf8");
51
+ process.stdout.write(`Wrote authorization receipt to ${out}\n`);
52
+ if (auditExportOut) {
53
+ process.stdout.write(`Wrote audit export to ${auditExportOut}\n`);
54
+ }
55
+ process.stdout.write(`auditCommitment=${receipt.audit_commitment}\n`);
56
+ process.stdout.write(`auditExportSha256=${receipt.audit_export_sha256}\n`);
57
+ process.stdout.write(`policyCommitment=${receipt.policy_commitment}\n`);
58
+ process.stdout.write(`actionCommitment=${receipt.action_commitment}\n`);
59
+ process.stdout.write(`selectedTool=${selected.tool}\n`);
60
+ process.stdout.write(`selectedDecision=${selected.decision}\n`);
61
+ process.stdout.write(`selectedTimestamp=${selected.ts}\n`);
62
+ process.stdout.write(`selectedInputSummary=${selected.input_summary}\n`);
42
63
  return;
43
64
  }
44
65
  process.stdout.write(json);
@@ -71,33 +92,22 @@ async function issueReceipt(opts) {
71
92
  }
72
93
  await verifyAuditLogIntegrity(agentId);
73
94
  const commitment = resolveIssueCommitment(agentId, opts);
74
- const auditExport = buildAuditExport(agentId, commitment);
75
- assertPreEnforcementAuditExport(auditExport);
95
+ // Build the self-contained v2 bundle and require a pre-enforcement v4 entry.
96
+ // The receipt's policy/action commitments are copied from that entry, never
97
+ // re-derived from the current policy file.
98
+ const auditExport = buildAuditExportV2(agentId, commitment);
99
+ const selected = selectedPreEnforcementV4Entry(auditExport);
100
+ // An explicit --file is verification evidence only: it must reproduce the
101
+ // enforcement-time policy_commitment already recorded in the entry.
102
+ if (opts.file) {
103
+ assertPolicyMatchesEnforcementCommitment(loadPolicy(opts.file), selected.policy_commitment);
104
+ }
76
105
  const privateKeyPem = readFileSync(opts.privateKey, "utf8");
77
- const publicKeyPem = derivePublicKeyPem(privateKeyPem);
78
- const receipt = signAuthorizationReceipt(auditExport, privateKeyPem, publicKeyPem, {
79
- policyCommitment: policy ? computePolicyCommitment(policy) : null,
80
- });
106
+ const receipt = signAuthorizationReceiptV2(auditExport, privateKeyPem);
81
107
  if (opts.auditExportOut) {
82
108
  writeFileSync(opts.auditExportOut, stableStringify(auditExport, 2) + "\n", "utf8");
83
109
  }
84
- const json = stableStringify(receipt, 2) + "\n";
85
- if (opts.out) {
86
- writeFileSync(opts.out, json, "utf8");
87
- process.stdout.write(`Wrote authorization receipt to ${opts.out}\n`);
88
- if (opts.auditExportOut) {
89
- process.stdout.write(`Wrote audit export to ${opts.auditExportOut}\n`);
90
- }
91
- process.stdout.write(`auditCommitment=${receipt.auditCommitment}\n`);
92
- process.stdout.write(`auditExportHash=${receipt.auditExportHash}\n`);
93
- process.stdout.write(`policyCommitment=${receipt.policyCommitment ?? "none"}\n`);
94
- process.stdout.write(`selectedTool=${auditExport.entry.tool}\n`);
95
- process.stdout.write(`selectedDecision=${auditExport.entry.decision}\n`);
96
- process.stdout.write(`selectedTimestamp=${auditExport.entry.ts}\n`);
97
- process.stdout.write(`selectedInputSummary=${auditExport.entry.input_summary}\n`);
98
- return;
99
- }
100
- process.stdout.write(json);
110
+ writeReceiptV2Output(receipt, selected, opts.out, opts.auditExportOut);
101
111
  }
102
112
  function resolveIssueCommitment(agentId, opts) {
103
113
  if (opts.commitment) {
@@ -116,34 +126,43 @@ export function cmdReceiptVerify(opts) {
116
126
  if (!opts.publicKey) {
117
127
  throw new Error("missing --public-key <path>; receipt verification requires a trusted external public key");
118
128
  }
119
- const receipt = readAuthorizationReceipt(opts.receipt);
129
+ // The trusted public key is supplied independently of the receipt; it is never
130
+ // taken from the receipt itself.
120
131
  const publicKeyPem = readFileSync(opts.publicKey, "utf8");
132
+ const receipt = readAuthorizationReceiptAny(opts.receipt);
133
+ if (isReceiptV2(receipt)) {
134
+ // A v2 receipt claims an enforcement-time binding, so verifying one
135
+ // WITHOUT its audit export would reduce that claim to a signature check
136
+ // over self-asserted commitments. Refuse outright (non-zero exit, no
137
+ // summary on either output mode) instead of reporting a weaker result.
138
+ if (!opts.auditExport) {
139
+ throw new Error("catp_authorization_receipt_v2 verification requires --audit-export <path> (the catp_audit_export_v2 bundle from receipt issue/sign or catp log export); signature-only verification cannot establish enforcement-time-bound assurance");
140
+ }
141
+ // Full verification order: trusted-key/signature first, then the export
142
+ // bundle (export hash, chain prefix, selected v4 entry, action commitment,
143
+ // complete canonical action), then the optional policy-file evidence.
144
+ verifyAuthorizationReceiptV2(receipt, publicKeyPem);
145
+ verifyReceiptAuditExportV2(receipt, readAuditExportV2(opts.auditExport));
146
+ if (opts.file) {
147
+ verifyReceiptPolicyV2(receipt, loadPolicy(opts.file));
148
+ }
149
+ emitVerificationSummary(receiptVerificationSummaryV2(receipt, {
150
+ policyMatched: Boolean(opts.file),
151
+ }), opts);
152
+ return;
153
+ }
154
+ // Legacy version-1 receipts keep their historical semantics and assurance.
121
155
  verifyAuthorizationReceipt(receipt, publicKeyPem);
122
156
  if (opts.auditExport) {
123
- const auditExport = readAuditExport(opts.auditExport);
124
- verifyReceiptAuditExport(receipt, auditExport);
157
+ verifyReceiptAuditExport(receipt, readAuditExport(opts.auditExport));
125
158
  }
126
159
  if (opts.file) {
127
160
  verifyReceiptPolicy(receipt, loadPolicy(opts.file));
128
161
  }
129
- const summary = receiptVerificationSummary(receipt, {
162
+ emitVerificationSummary(receiptVerificationSummary(receipt, {
130
163
  auditExportMatched: Boolean(opts.auditExport),
131
164
  policyMatched: Boolean(opts.file),
132
- });
133
- if (opts.json) {
134
- process.stdout.write(stableStringify(summary, 2) + "\n");
135
- return;
136
- }
137
- process.stdout.write("authorizationReceipt=valid\n");
138
- if (opts.auditExport) {
139
- process.stdout.write("auditExport=matched\n");
140
- }
141
- if (opts.file) {
142
- process.stdout.write("policy=matched\n");
143
- }
144
- process.stdout.write(`auditCommitment=${summary.auditCommitment}\n`);
145
- process.stdout.write(`auditExportHash=${summary.auditExportHash}\n`);
146
- process.stdout.write(`policyCommitment=${summary.policyCommitment ?? "none"}\n`);
165
+ }), opts);
147
166
  }
148
167
  export function signAuthorizationReceipt(auditExport, privateKeyPem, publicKeyPem, opts = {}) {
149
168
  validateAuditExport(auditExport);
@@ -214,14 +233,233 @@ export function verifyReceiptPolicy(receipt, policy) {
214
233
  export function computePolicyCommitment(policy) {
215
234
  return sha256Hex(stableStringify(policy));
216
235
  }
236
+ // ---------------------------------------------------------------------------
237
+ // Version-2 receipts: issued only from recorded enforcement-time bindings.
238
+ // ---------------------------------------------------------------------------
239
+ /**
240
+ * Structural + cryptographic validation of a self-contained v2 audit export.
241
+ * Recomputes `export_sha256` over the body, requires the prefix length to match
242
+ * `selected_index + 1`, requires a commitment-version-4 selected entry, and
243
+ * requires the bundled complete action to reproduce that entry's
244
+ * `action_commitment`.
245
+ */
246
+ export function validateAuditExportV2(value) {
247
+ if (!value || typeof value !== "object") {
248
+ throw new Error("audit export must be an object");
249
+ }
250
+ const exp = value;
251
+ if (exp.export_version !== "catp_audit_export_v2") {
252
+ throw new Error("audit export version must be catp_audit_export_v2");
253
+ }
254
+ if (typeof exp.agent_id !== "string" || exp.agent_id === "") {
255
+ throw new Error("audit export agent_id must be a non-empty string");
256
+ }
257
+ if (typeof exp.log_date !== "string" || exp.log_date === "") {
258
+ throw new Error("audit export log_date must be a non-empty string");
259
+ }
260
+ if (!Number.isInteger(exp.selected_index) || exp.selected_index < 0) {
261
+ throw new Error("audit export selected_index must be a non-negative integer");
262
+ }
263
+ if (!Array.isArray(exp.entries) || exp.entries.length !== exp.selected_index + 1) {
264
+ throw new Error("audit export entries must be the daily prefix through selected_index");
265
+ }
266
+ if (!exp.action || typeof exp.action !== "object") {
267
+ throw new Error("audit export action must be an object");
268
+ }
269
+ assertHex(exp.export_sha256, "audit export export_sha256");
270
+ const { export_sha256, ...body } = exp;
271
+ if (computeAuditExportV2Sha256(body) !== export_sha256) {
272
+ throw new Error("audit export v2 export_sha256 does not match body");
273
+ }
274
+ const selected = selectedAuditExportV2Entry(exp);
275
+ if (!selected || typeof selected !== "object") {
276
+ throw new Error("audit export selected entry must be an object");
277
+ }
278
+ if (selected.commitment_version !== 4) {
279
+ throw new Error("audit export v2 selected entry must be commitment version 4");
280
+ }
281
+ if (computeActionCommitment(exp.action) !== selected.action_commitment) {
282
+ throw new Error("audit export action does not match the selected entry action_commitment");
283
+ }
284
+ // Enforce the same offline chain integrity here that buildAuditExportV2 and
285
+ // verifyReceiptAuditExportV2 enforce, so `receipt sign` can never sign over a
286
+ // bundle whose recorded prefix was tampered with.
287
+ const chain = verifyEntryChain(exp.entries);
288
+ if (!chain.ok) {
289
+ throw new Error(`audit export chain is broken at entry ${chain.broken_at}: ${chain.message}`);
290
+ }
291
+ }
292
+ function readAuditExportV2(path) {
293
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
294
+ validateAuditExportV2(parsed);
295
+ return parsed;
296
+ }
297
+ // The selected entry must be a pre-enforcement v4 record; post-action and
298
+ // legacy entries can never authorize.
299
+ function selectedPreEnforcementV4Entry(exp) {
300
+ const selected = selectedAuditExportV2Entry(exp);
301
+ if (!selected || selected.commitment_version !== 4) {
302
+ throw new Error("authorization receipts require a commitment version 4 audit entry");
303
+ }
304
+ if (selected.phase !== "pre") {
305
+ throw new Error("authorization receipts require a pre-enforcement audit entry");
306
+ }
307
+ return selected;
308
+ }
309
+ /**
310
+ * Sign a v2 receipt. `policy_commitment` and `action_commitment` are copied
311
+ * verbatim from the enforcement-time entry — never re-derived from any current
312
+ * policy file.
313
+ */
314
+ export function signAuthorizationReceiptV2(auditExport, privateKeyPem, opts = {}) {
315
+ validateAuditExportV2(auditExport);
316
+ const selected = selectedPreEnforcementV4Entry(auditExport);
317
+ const publicKeyPem = derivePublicKeyPem(privateKeyPem);
318
+ const body = {
319
+ receipt_version: "catp_authorization_receipt_v2",
320
+ audit_commitment: selected.commitment,
321
+ policy_commitment: selected.policy_commitment,
322
+ action_commitment: selected.action_commitment,
323
+ audit_export_sha256: auditExport.export_sha256,
324
+ agent_id: auditExport.agent_id,
325
+ tool: selected.tool,
326
+ decision: selected.decision,
327
+ phase: "pre",
328
+ rule_matched: selected.rule_matched,
329
+ reason: selected.reason,
330
+ timestamp: selected.ts,
331
+ signed_at: opts.signedAt ?? new Date().toISOString(),
332
+ issuer_key_id: computeIssuerKeyId(publicKeyPem),
333
+ signature_algorithm: "Ed25519",
334
+ };
335
+ const signature = sign(null, Buffer.from(RECEIPT_SIGNATURE_V2_DOMAIN + stableStringify(body)), privateKeyPem).toString("base64");
336
+ const receipt_sha256 = sha256Hex(RECEIPT_V2_DOMAIN + stableStringify({ ...body, signature }));
337
+ const receipt = { ...body, signature, receipt_sha256 };
338
+ // Fail closed at signing time rather than emitting a receipt that offline
339
+ // verification would later reject.
340
+ validateReceiptV2(receipt);
341
+ return receipt;
342
+ }
343
+ export function validateReceiptV2(value) {
344
+ if (!value || typeof value !== "object") {
345
+ throw new Error("authorization receipt must be an object");
346
+ }
347
+ const receipt = value;
348
+ if (receipt.receipt_version !== "catp_authorization_receipt_v2") {
349
+ throw new Error("receipt_version must be catp_authorization_receipt_v2");
350
+ }
351
+ if (receipt.signature_algorithm !== "Ed25519") {
352
+ throw new Error("signature_algorithm must be Ed25519");
353
+ }
354
+ if (receipt.phase !== "pre") {
355
+ throw new Error("phase must be pre");
356
+ }
357
+ if (receipt.decision !== "allow" && receipt.decision !== "deny") {
358
+ throw new Error("decision must be allow or deny");
359
+ }
360
+ if (receipt.rule_matched !== null && typeof receipt.rule_matched !== "string") {
361
+ throw new Error("rule_matched must be a string or null");
362
+ }
363
+ assertHex(receipt.audit_commitment, "audit_commitment");
364
+ assertHex(receipt.policy_commitment, "policy_commitment");
365
+ assertHex(receipt.action_commitment, "action_commitment");
366
+ assertHex(receipt.audit_export_sha256, "audit_export_sha256");
367
+ assertHex(receipt.issuer_key_id, "issuer_key_id");
368
+ assertHex(receipt.receipt_sha256, "receipt_sha256");
369
+ // `reason` is explanatory metadata copied verbatim from the v4 entry; match
370
+ // that contract (a string, possibly empty) rather than imposing a stricter
371
+ // non-empty rule the recorded entry does not guarantee.
372
+ if (typeof receipt.reason !== "string") {
373
+ throw new Error("reason must be a string");
374
+ }
375
+ for (const field of ["agent_id", "tool", "timestamp", "signed_at", "signature"]) {
376
+ if (typeof receipt[field] !== "string" || receipt[field] === "") {
377
+ throw new Error(`${field} must be a non-empty string`);
378
+ }
379
+ }
380
+ }
381
+ /**
382
+ * Offline-verify a v2 receipt against an INDEPENDENTLY supplied trusted public
383
+ * key. Recomputes `issuer_key_id` from that key and requires an exact match
384
+ * before accepting the signature, then checks `receipt_sha256` and the Ed25519
385
+ * signature over the domain-separated body.
386
+ */
387
+ export function verifyAuthorizationReceiptV2(receipt, trustedPublicKeyPem) {
388
+ validateReceiptV2(receipt);
389
+ const expectedKeyId = computeIssuerKeyId(trustedPublicKeyPem);
390
+ if (receipt.issuer_key_id !== expectedKeyId) {
391
+ throw new Error("receipt issuer_key_id does not match the trusted public key");
392
+ }
393
+ const { receipt_sha256, signature, ...body } = receipt;
394
+ const expectedReceiptSha256 = sha256Hex(RECEIPT_V2_DOMAIN + stableStringify({ ...body, signature }));
395
+ if (receipt_sha256 !== expectedReceiptSha256) {
396
+ throw new Error("receipt_sha256 does not match the signed receipt body");
397
+ }
398
+ const ok = verify(null, Buffer.from(RECEIPT_SIGNATURE_V2_DOMAIN + stableStringify(body)), trustedPublicKeyPem, Buffer.from(signature, "base64"));
399
+ if (!ok) {
400
+ throw new Error("authorization receipt signature is invalid");
401
+ }
402
+ }
403
+ /**
404
+ * Cross-check a v2 receipt against its self-contained audit export: export hash,
405
+ * selected-entry equality for all three bindings, and the complete-action hash.
406
+ * Offline chain integrity over the prefix is enforced by `validateAuditExportV2`.
407
+ */
408
+ export function verifyReceiptAuditExportV2(receipt, auditExport) {
409
+ validateReceiptV2(receipt);
410
+ validateAuditExportV2(auditExport);
411
+ if (receipt.audit_export_sha256 !== auditExport.export_sha256) {
412
+ throw new Error("receipt audit_export_sha256 does not match audit export");
413
+ }
414
+ if (auditExport.agent_id !== receipt.agent_id) {
415
+ throw new Error("receipt agent_id does not match audit export");
416
+ }
417
+ const selected = selectedPreEnforcementV4Entry(auditExport);
418
+ if (selected.commitment !== receipt.audit_commitment) {
419
+ throw new Error("receipt audit_commitment does not match the selected audit entry");
420
+ }
421
+ if (selected.policy_commitment !== receipt.policy_commitment) {
422
+ throw new Error("receipt policy_commitment does not match the selected audit entry");
423
+ }
424
+ if (selected.action_commitment !== receipt.action_commitment) {
425
+ throw new Error("receipt action_commitment does not match the selected audit entry");
426
+ }
427
+ if (computeActionCommitment(auditExport.action) !== receipt.action_commitment) {
428
+ throw new Error("receipt action_commitment does not match the bundled complete action");
429
+ }
430
+ }
431
+ /**
432
+ * Optional policy-file check. The supplied file is verification evidence only:
433
+ * it is hashed with the SAME domained enforcement-time scheme and compared with
434
+ * the recorded commitment. A mismatch (e.g. a swapped policy) is rejected.
435
+ */
436
+ export function verifyReceiptPolicyV2(receipt, policy) {
437
+ validateReceiptV2(receipt);
438
+ const policyCommitment = computeEnforcementPolicyCommitment(policy);
439
+ if (receipt.policy_commitment !== policyCommitment) {
440
+ throw new Error("receipt policy_commitment does not match policy");
441
+ }
442
+ }
443
+ // The supplied --file policy is evidence, never the source of the binding: it
444
+ // must reproduce the enforcement-time policy_commitment copied from the entry.
445
+ function assertPolicyMatchesEnforcementCommitment(policy, enforcementPolicyCommitment) {
446
+ if (computeEnforcementPolicyCommitment(policy) !== enforcementPolicyCommitment) {
447
+ throw new Error("supplied policy file does not match the enforcement-time policy_commitment");
448
+ }
449
+ }
217
450
  function receiptVerificationSummary(receipt, opts) {
218
451
  return {
219
452
  authorizationReceipt: "valid",
453
+ receiptVersion: "catp_authorization_receipt_v1",
454
+ // Legacy receipts predate enforcement-time policy/action binding; label
455
+ // their assurance honestly and never imply an exact-action binding.
456
+ assurance: "legacy",
220
457
  auditExport: opts.auditExportMatched ? "matched" : null,
221
458
  policy: opts.policyMatched ? "matched" : null,
222
459
  auditCommitment: receipt.auditCommitment,
223
460
  auditExportHash: receipt.auditExportHash,
224
461
  policyCommitment: receipt.policyCommitment,
462
+ actionCommitment: null,
225
463
  agentId: receipt.agentId,
226
464
  tool: receipt.tool,
227
465
  decision: receipt.decision,
@@ -229,14 +467,67 @@ function receiptVerificationSummary(receipt, opts) {
229
467
  signedAt: receipt.signedAt,
230
468
  };
231
469
  }
232
- function readAuditExport(path) {
470
+ // Reached only after cmdReceiptVerify has enforced the mandatory export
471
+ // check and the full v2 verification order, so the enforcement-time-bound
472
+ // assurance and the matched export are invariants here, not options.
473
+ function receiptVerificationSummaryV2(receipt, opts) {
474
+ return {
475
+ authorizationReceipt: "valid",
476
+ receiptVersion: "catp_authorization_receipt_v2",
477
+ assurance: "enforcement-time-bound",
478
+ auditExport: "matched",
479
+ policy: opts.policyMatched ? "matched" : null,
480
+ auditCommitment: receipt.audit_commitment,
481
+ auditExportHash: receipt.audit_export_sha256,
482
+ policyCommitment: receipt.policy_commitment,
483
+ actionCommitment: receipt.action_commitment,
484
+ agentId: receipt.agent_id,
485
+ tool: receipt.tool,
486
+ decision: receipt.decision,
487
+ timestamp: receipt.timestamp,
488
+ signedAt: receipt.signed_at,
489
+ };
490
+ }
491
+ function emitVerificationSummary(summary, opts) {
492
+ if (opts.json) {
493
+ process.stdout.write(stableStringify(summary, 2) + "\n");
494
+ return;
495
+ }
496
+ process.stdout.write("authorizationReceipt=valid\n");
497
+ process.stdout.write(`receiptVersion=${summary.receiptVersion}\n`);
498
+ process.stdout.write(`assurance=${summary.assurance}\n`);
499
+ if (summary.auditExport) {
500
+ process.stdout.write("auditExport=matched\n");
501
+ }
502
+ if (summary.policy) {
503
+ process.stdout.write("policy=matched\n");
504
+ }
505
+ process.stdout.write(`auditCommitment=${summary.auditCommitment}\n`);
506
+ process.stdout.write(`auditExportHash=${summary.auditExportHash}\n`);
507
+ process.stdout.write(`policyCommitment=${summary.policyCommitment ?? "none"}\n`);
508
+ if (summary.actionCommitment) {
509
+ process.stdout.write(`actionCommitment=${summary.actionCommitment}\n`);
510
+ }
511
+ }
512
+ function isReceiptV2(value) {
513
+ return (typeof value === "object" &&
514
+ value !== null &&
515
+ value.receipt_version === "catp_authorization_receipt_v2");
516
+ }
517
+ // Read a receipt of either version. A v2 file is validated as v2; anything else
518
+ // must satisfy the legacy v1 shape (and is labelled legacy on verification).
519
+ function readAuthorizationReceiptAny(path) {
233
520
  const parsed = JSON.parse(readFileSync(path, "utf8"));
234
- validateAuditExport(parsed);
521
+ if (isReceiptV2(parsed)) {
522
+ validateReceiptV2(parsed);
523
+ return parsed;
524
+ }
525
+ validateReceipt(parsed);
235
526
  return parsed;
236
527
  }
237
- function readAuthorizationReceipt(path) {
528
+ function readAuditExport(path) {
238
529
  const parsed = JSON.parse(readFileSync(path, "utf8"));
239
- validateReceipt(parsed);
530
+ validateAuditExport(parsed);
240
531
  return parsed;
241
532
  }
242
533
  function validateAuditExport(value) {
@@ -260,11 +551,6 @@ function validateAuditExport(value) {
260
551
  throw new Error("audit export entrySha256 does not match entry");
261
552
  }
262
553
  }
263
- function assertPreEnforcementAuditExport(auditExport) {
264
- if (auditExport.entry.phase === "post") {
265
- throw new Error("authorization receipts require a pre-enforcement audit entry");
266
- }
267
- }
268
554
  function validateReceipt(value) {
269
555
  if (!value || typeof value !== "object") {
270
556
  throw new Error("authorization receipt must be an object");
@@ -294,10 +580,6 @@ function validateReceipt(value) {
294
580
  function derivePublicKeyPem(privateKeyPem) {
295
581
  return createPublicKey(createPrivateKey(privateKeyPem)).export({ type: "spki", format: "pem" }).toString();
296
582
  }
297
- function resolvePolicyCommitmentIfPresent() {
298
- const policyPath = findPolicyFile();
299
- return policyPath ? computePolicyCommitment(loadPolicy(policyPath)) : null;
300
- }
301
583
  async function verifyAuditLogIntegrity(agentId) {
302
584
  for (const { file } of auditLogFiles(agentId)) {
303
585
  const result = await verifyChain(file);
@@ -1 +1 @@
1
- {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/commands/receipt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/commands/receipt.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,17 @@
1
- import type { CatpPolicy } from "../policy/types.js";
2
- import type { AuditEntry } from "../policy/types.js";
1
+ import { type CanonicalToolActionV1 } from "../evidence/commitments.js";
2
+ import type { AuditEntryV4, CatpPolicy } from "../policy/types.js";
3
3
  import type { ToolAction } from "../runtime/types.js";
4
4
  export interface EnforcementResult {
5
5
  allow: boolean;
6
6
  reason: string;
7
- auditEntry: AuditEntry;
7
+ auditEntry: AuditEntryV4;
8
+ /**
9
+ * The complete canonical action evidence the decision is bound to. Persisted
10
+ * as a content-addressed sidecar (see audit storage) and referenced by the
11
+ * v4 entry's `action_commitment`.
12
+ */
13
+ action: CanonicalToolActionV1;
8
14
  }
9
15
  export declare function evaluatePreAction(policy: CatpPolicy, action: ToolAction, prevCommitment?: string): EnforcementResult;
10
- export declare function recordPostAction(action: ToolAction, prevCommitment?: string): EnforcementResult;
16
+ export declare function recordPostAction(policy: CatpPolicy, action: ToolAction, prevCommitment?: string): EnforcementResult;
11
17
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/enforcement/core.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,cAAc,GAAE,MAAY,GAC3B,iBAAiB,CAgBnB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,cAAc,GAAE,MAAY,GAC3B,iBAAiB,CAMnB"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/enforcement/core.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,YAAY,CAAC;IACzB;;;;OAIG;IACH,MAAM,EAAE,qBAAqB,CAAC;CAC/B;AAaD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,cAAc,GAAE,MAAY,GAC3B,iBAAiB,CAgCnB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,cAAc,GAAE,MAAY,GAC3B,iBAAiB,CAkBnB"}