@kya-os/mcp 1.10.0 → 1.11.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 (224) hide show
  1. package/AUDITABILITY.md +441 -0
  2. package/CHANGELOG.md +104 -0
  3. package/CONFORMANCE.md +598 -0
  4. package/README.md +67 -4
  5. package/SPEC.md +1827 -0
  6. package/dist/audit/adapters/legacy-audit-log.d.ts +20 -0
  7. package/dist/audit/adapters/legacy-audit-log.d.ts.map +1 -0
  8. package/dist/audit/adapters/legacy-audit-log.js +56 -0
  9. package/dist/audit/adapters/legacy-audit-log.js.map +1 -0
  10. package/dist/audit/adapters/mcp.d.ts +105 -0
  11. package/dist/audit/adapters/mcp.d.ts.map +1 -0
  12. package/dist/audit/adapters/mcp.js +213 -0
  13. package/dist/audit/adapters/mcp.js.map +1 -0
  14. package/dist/audit/assurance.d.ts +22 -0
  15. package/dist/audit/assurance.d.ts.map +1 -0
  16. package/dist/audit/assurance.js +39 -0
  17. package/dist/audit/assurance.js.map +1 -0
  18. package/dist/audit/checkpoint-coordinator.d.ts +51 -0
  19. package/dist/audit/checkpoint-coordinator.d.ts.map +1 -0
  20. package/dist/audit/checkpoint-coordinator.js +112 -0
  21. package/dist/audit/checkpoint-coordinator.js.map +1 -0
  22. package/dist/audit/checkpoint.d.ts +59 -0
  23. package/dist/audit/checkpoint.d.ts.map +1 -0
  24. package/dist/audit/checkpoint.js +219 -0
  25. package/dist/audit/checkpoint.js.map +1 -0
  26. package/dist/audit/cli.d.ts +8 -0
  27. package/dist/audit/cli.d.ts.map +1 -0
  28. package/dist/audit/cli.js +85 -0
  29. package/dist/audit/cli.js.map +1 -0
  30. package/dist/audit/crypto.d.ts +37 -0
  31. package/dist/audit/crypto.d.ts.map +1 -0
  32. package/dist/audit/crypto.js +68 -0
  33. package/dist/audit/crypto.js.map +1 -0
  34. package/dist/audit/errors.d.ts +29 -0
  35. package/dist/audit/errors.d.ts.map +1 -0
  36. package/dist/audit/errors.js +33 -0
  37. package/dist/audit/errors.js.map +1 -0
  38. package/dist/audit/evidence.d.ts +45 -0
  39. package/dist/audit/evidence.d.ts.map +1 -0
  40. package/dist/audit/evidence.js +151 -0
  41. package/dist/audit/evidence.js.map +1 -0
  42. package/dist/audit/index.d.ts +27 -0
  43. package/dist/audit/index.d.ts.map +1 -0
  44. package/dist/audit/index.js +27 -0
  45. package/dist/audit/index.js.map +1 -0
  46. package/dist/audit/integrity.d.ts +19 -0
  47. package/dist/audit/integrity.d.ts.map +1 -0
  48. package/dist/audit/integrity.js +64 -0
  49. package/dist/audit/integrity.js.map +1 -0
  50. package/dist/audit/merkle.d.ts +31 -0
  51. package/dist/audit/merkle.d.ts.map +1 -0
  52. package/dist/audit/merkle.js +195 -0
  53. package/dist/audit/merkle.js.map +1 -0
  54. package/dist/audit/mirror-service.d.ts +19 -0
  55. package/dist/audit/mirror-service.d.ts.map +1 -0
  56. package/dist/audit/mirror-service.js +54 -0
  57. package/dist/audit/mirror-service.js.map +1 -0
  58. package/dist/audit/projection.d.ts +90 -0
  59. package/dist/audit/projection.d.ts.map +1 -0
  60. package/dist/audit/projection.js +142 -0
  61. package/dist/audit/projection.js.map +1 -0
  62. package/dist/audit/providers/anchor.d.ts +23 -0
  63. package/dist/audit/providers/anchor.d.ts.map +1 -0
  64. package/dist/audit/providers/anchor.js +25 -0
  65. package/dist/audit/providers/anchor.js.map +1 -0
  66. package/dist/audit/providers/evidence.d.ts +36 -0
  67. package/dist/audit/providers/evidence.d.ts.map +1 -0
  68. package/dist/audit/providers/evidence.js +2 -0
  69. package/dist/audit/providers/evidence.js.map +1 -0
  70. package/dist/audit/providers/journal.d.ts +35 -0
  71. package/dist/audit/providers/journal.d.ts.map +1 -0
  72. package/dist/audit/providers/journal.js +2 -0
  73. package/dist/audit/providers/journal.js.map +1 -0
  74. package/dist/audit/providers/memory-journal.d.ts +24 -0
  75. package/dist/audit/providers/memory-journal.d.ts.map +1 -0
  76. package/dist/audit/providers/memory-journal.js +73 -0
  77. package/dist/audit/providers/memory-journal.js.map +1 -0
  78. package/dist/audit/providers/observer.d.ts +30 -0
  79. package/dist/audit/providers/observer.d.ts.map +1 -0
  80. package/dist/audit/providers/observer.js +100 -0
  81. package/dist/audit/providers/observer.js.map +1 -0
  82. package/dist/audit/providers/outbox.d.ts +37 -0
  83. package/dist/audit/providers/outbox.d.ts.map +1 -0
  84. package/dist/audit/providers/outbox.js +52 -0
  85. package/dist/audit/providers/outbox.js.map +1 -0
  86. package/dist/audit/providers/recorder-client.d.ts +22 -0
  87. package/dist/audit/providers/recorder-client.d.ts.map +1 -0
  88. package/dist/audit/providers/recorder-client.js +17 -0
  89. package/dist/audit/providers/recorder-client.js.map +1 -0
  90. package/dist/audit/providers/source-state.d.ts +37 -0
  91. package/dist/audit/providers/source-state.d.ts.map +1 -0
  92. package/dist/audit/providers/source-state.js +94 -0
  93. package/dist/audit/providers/source-state.js.map +1 -0
  94. package/dist/audit/recorder-service.d.ts +78 -0
  95. package/dist/audit/recorder-service.d.ts.map +1 -0
  96. package/dist/audit/recorder-service.js +331 -0
  97. package/dist/audit/recorder-service.js.map +1 -0
  98. package/dist/audit/replay-bundle.d.ts +52 -0
  99. package/dist/audit/replay-bundle.d.ts.map +1 -0
  100. package/dist/audit/replay-bundle.js +551 -0
  101. package/dist/audit/replay-bundle.js.map +1 -0
  102. package/dist/audit/schemas.d.ts +1144 -0
  103. package/dist/audit/schemas.d.ts.map +1 -0
  104. package/dist/audit/schemas.js +483 -0
  105. package/dist/audit/schemas.js.map +1 -0
  106. package/dist/audit/service.d.ts +91 -0
  107. package/dist/audit/service.d.ts.map +1 -0
  108. package/dist/audit/service.js +222 -0
  109. package/dist/audit/service.js.map +1 -0
  110. package/dist/audit/testing/index.d.ts +2 -0
  111. package/dist/audit/testing/index.d.ts.map +1 -0
  112. package/dist/audit/testing/index.js +2 -0
  113. package/dist/audit/testing/index.js.map +1 -0
  114. package/dist/audit/testing/provider-contracts.d.ts +51 -0
  115. package/dist/audit/testing/provider-contracts.d.ts.map +1 -0
  116. package/dist/audit/testing/provider-contracts.js +391 -0
  117. package/dist/audit/testing/provider-contracts.js.map +1 -0
  118. package/dist/audit/types.d.ts +356 -0
  119. package/dist/audit/types.d.ts.map +1 -0
  120. package/dist/audit/types.js +49 -0
  121. package/dist/audit/types.js.map +1 -0
  122. package/dist/audit/verifier.d.ts +73 -0
  123. package/dist/audit/verifier.d.ts.map +1 -0
  124. package/dist/audit/verifier.js +322 -0
  125. package/dist/audit/verifier.js.map +1 -0
  126. package/dist/card/proof/canonical.d.ts.map +1 -1
  127. package/dist/card/proof/canonical.js +19 -1
  128. package/dist/card/proof/canonical.js.map +1 -1
  129. package/dist/delegation/delegation-graph.d.ts +4 -0
  130. package/dist/delegation/delegation-graph.d.ts.map +1 -1
  131. package/dist/delegation/delegation-graph.js +28 -2
  132. package/dist/delegation/delegation-graph.js.map +1 -1
  133. package/dist/delegation/statuslist-manager.d.ts +5 -0
  134. package/dist/delegation/statuslist-manager.d.ts.map +1 -1
  135. package/dist/delegation/statuslist-manager.js.map +1 -1
  136. package/dist/delegation/storage/memory-graph-storage.d.ts +4 -2
  137. package/dist/delegation/storage/memory-graph-storage.d.ts.map +1 -1
  138. package/dist/delegation/storage/memory-graph-storage.js +18 -0
  139. package/dist/delegation/storage/memory-graph-storage.js.map +1 -1
  140. package/dist/delegation/storage/memory-statuslist-storage.d.ts +5 -2
  141. package/dist/delegation/storage/memory-statuslist-storage.d.ts.map +1 -1
  142. package/dist/delegation/storage/memory-statuslist-storage.js +21 -2
  143. package/dist/delegation/storage/memory-statuslist-storage.js.map +1 -1
  144. package/dist/delegation/utils.d.ts.map +1 -1
  145. package/dist/delegation/utils.js +2 -42
  146. package/dist/delegation/utils.js.map +1 -1
  147. package/dist/delegation/vc-verifier.d.ts +4 -0
  148. package/dist/delegation/vc-verifier.d.ts.map +1 -1
  149. package/dist/delegation/vc-verifier.js +44 -13
  150. package/dist/delegation/vc-verifier.js.map +1 -1
  151. package/dist/errors.d.ts +1 -1
  152. package/dist/errors.js +1 -1
  153. package/dist/index.d.ts +2 -1
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +3 -1
  156. package/dist/index.js.map +1 -1
  157. package/dist/middleware/kya-os-transport.d.ts.map +1 -1
  158. package/dist/middleware/kya-os-transport.js +10 -3
  159. package/dist/middleware/kya-os-transport.js.map +1 -1
  160. package/dist/middleware/with-kya-os-server.d.ts +6 -0
  161. package/dist/middleware/with-kya-os-server.d.ts.map +1 -1
  162. package/dist/middleware/with-kya-os-server.js +2 -0
  163. package/dist/middleware/with-kya-os-server.js.map +1 -1
  164. package/dist/middleware/with-kya-os.config-types.d.ts +15 -0
  165. package/dist/middleware/with-kya-os.config-types.d.ts.map +1 -1
  166. package/dist/middleware/with-kya-os.config-types.js.map +1 -1
  167. package/dist/middleware/with-kya-os.d.ts.map +1 -1
  168. package/dist/middleware/with-kya-os.delegation-gate.d.ts.map +1 -1
  169. package/dist/middleware/with-kya-os.delegation-gate.js +96 -3
  170. package/dist/middleware/with-kya-os.delegation-gate.js.map +1 -1
  171. package/dist/middleware/with-kya-os.deps.d.ts +2 -0
  172. package/dist/middleware/with-kya-os.deps.d.ts.map +1 -1
  173. package/dist/middleware/with-kya-os.js +23 -0
  174. package/dist/middleware/with-kya-os.js.map +1 -1
  175. package/dist/middleware/with-kya-os.policy-gate.d.ts.map +1 -1
  176. package/dist/middleware/with-kya-os.policy-gate.js +29 -4
  177. package/dist/middleware/with-kya-os.policy-gate.js.map +1 -1
  178. package/dist/middleware/with-kya-os.protocol.d.ts.map +1 -1
  179. package/dist/middleware/with-kya-os.protocol.js +10 -0
  180. package/dist/middleware/with-kya-os.protocol.js.map +1 -1
  181. package/dist/middleware/with-kya-os.session.d.ts.map +1 -1
  182. package/dist/middleware/with-kya-os.session.js +208 -2
  183. package/dist/middleware/with-kya-os.session.js.map +1 -1
  184. package/dist/middleware/with-kya-os.types.d.ts +6 -0
  185. package/dist/middleware/with-kya-os.types.d.ts.map +1 -1
  186. package/dist/middleware/with-kya-os.types.js.map +1 -1
  187. package/dist/proof/generator.d.ts.map +1 -1
  188. package/dist/proof/generator.js +6 -5
  189. package/dist/proof/generator.js.map +1 -1
  190. package/dist/proof/verifier.d.ts +12 -0
  191. package/dist/proof/verifier.d.ts.map +1 -1
  192. package/dist/proof/verifier.js +35 -4
  193. package/dist/proof/verifier.js.map +1 -1
  194. package/dist/session/manager.js +1 -1
  195. package/dist/session/manager.js.map +1 -1
  196. package/dist/utils/canonical-json.d.ts +15 -0
  197. package/dist/utils/canonical-json.d.ts.map +1 -0
  198. package/dist/utils/canonical-json.js +109 -0
  199. package/dist/utils/canonical-json.js.map +1 -0
  200. package/dist/utils/crypto-service.d.ts.map +1 -1
  201. package/dist/utils/crypto-service.js +5 -0
  202. package/dist/utils/crypto-service.js.map +1 -1
  203. package/dist/utils/index.d.ts +1 -0
  204. package/dist/utils/index.d.ts.map +1 -1
  205. package/dist/utils/index.js +1 -0
  206. package/dist/utils/index.js.map +1 -1
  207. package/dist/utils/safe-fetch-transports.d.ts +15 -2
  208. package/dist/utils/safe-fetch-transports.d.ts.map +1 -1
  209. package/dist/utils/safe-fetch-transports.js +66 -32
  210. package/dist/utils/safe-fetch-transports.js.map +1 -1
  211. package/package.json +29 -11
  212. package/schemas/README.md +27 -1
  213. package/schemas/audit-anchor-receipt.schema.json +16 -0
  214. package/schemas/audit-bundle-manifest.schema.json +71 -0
  215. package/schemas/audit-checkpoint.schema.json +37 -0
  216. package/schemas/audit-consistency-proof.schema.json +17 -0
  217. package/schemas/audit-entry.schema.json +33 -0
  218. package/schemas/audit-event.schema.json +168 -0
  219. package/schemas/audit-inclusion-proof.schema.json +17 -0
  220. package/schemas/audit-observation.schema.json +40 -0
  221. package/schemas/audit-receipt.schema.json +32 -0
  222. package/schemas/audit-verification-policy.schema.json +71 -0
  223. package/schemas/audit-verification-report.schema.json +29 -0
  224. package/schemas/well-known-mcpi.json +17 -0
@@ -0,0 +1,20 @@
1
+ import { AuditLogProvider } from '../../providers/audit-log.js';
2
+ import type { AuditContext, AuditEventContext } from '../../types/protocol.js';
3
+ import type { AuditTrailService } from '../service.js';
4
+ export interface LegacyAuditSinkAdapterOptions {
5
+ identityKind?: 'public_did' | 'pairwise_did';
6
+ resourceKind?: 'public_did' | 'pairwise_did';
7
+ }
8
+ /**
9
+ * 1.x compatibility bridge. It captures legacy calls in the new ledger but can
10
+ * claim only legacy/capture coverage because the old shape lacks lifecycle data.
11
+ */
12
+ export declare class LegacyAuditSinkAdapter extends AuditLogProvider {
13
+ private readonly trail;
14
+ private readonly options;
15
+ readonly capability: "legacy-capture";
16
+ constructor(trail: Pick<AuditTrailService, 'record'>, options?: LegacyAuditSinkAdapterOptions);
17
+ logAuditRecord(context: AuditContext): Promise<void>;
18
+ logEvent(context: AuditEventContext): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=legacy-audit-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-audit-log.d.ts","sourceRoot":"","sources":["../../../src/audit/adapters/legacy-audit-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAwB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE7E,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,YAAY,GAAG,cAAc,CAAC;IAC7C,YAAY,CAAC,EAAE,YAAY,GAAG,cAAc,CAAC;CAC9C;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;IAIxD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,QAAQ,CAAC,UAAU,EAAG,gBAAgB,CAAU;gBAG7B,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EACxC,OAAO,GAAE,6BAAkC;IAKxD,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBpD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB1D"}
@@ -0,0 +1,56 @@
1
+ import { AuditLogProvider } from '../../providers/audit-log.js';
2
+ /**
3
+ * 1.x compatibility bridge. It captures legacy calls in the new ledger but can
4
+ * claim only legacy/capture coverage because the old shape lacks lifecycle data.
5
+ */
6
+ export class LegacyAuditSinkAdapter extends AuditLogProvider {
7
+ trail;
8
+ options;
9
+ capability = 'legacy-capture';
10
+ constructor(trail, options = {}) {
11
+ super();
12
+ this.trail = trail;
13
+ this.options = options;
14
+ }
15
+ async logAuditRecord(context) {
16
+ const verified = context.verified === 'yes';
17
+ await this.trail.record({
18
+ eventType: verified ? 'proof.verified' : 'proof.rejected',
19
+ actor: { kind: this.options.identityKind ?? 'public_did', did: context.identity.did },
20
+ resource: { kind: this.options.resourceKind ?? 'public_did', did: context.session.audience },
21
+ action: { category: 'legacy.audit-record' },
22
+ outcome: verified ? 'succeeded' : 'failed',
23
+ ...(verified ? {} : { reason: { code: 'LEGACY_VERIFICATION_FAILED' } }),
24
+ ...(context.scopeId === undefined ? {} : {
25
+ authorization: {
26
+ source: 'policy',
27
+ decision: verified ? 'allowed' : 'denied',
28
+ scopeId: context.scopeId,
29
+ },
30
+ }),
31
+ evidence: [],
32
+ details: {
33
+ family: 'proof',
34
+ phase: verified ? 'verified' : 'rejected',
35
+ verificationCode: verified ? 'LEGACY_VERIFIED_CLAIM' : 'LEGACY_REJECTED_CLAIM',
36
+ },
37
+ });
38
+ }
39
+ async logEvent(context) {
40
+ const input = {
41
+ eventType: 'configuration.changed',
42
+ actor: { kind: this.options.identityKind ?? 'public_did', did: context.identity.did },
43
+ resource: { kind: this.options.resourceKind ?? 'public_did', did: context.session.audience },
44
+ action: { category: 'legacy.event' },
45
+ outcome: 'unknown',
46
+ reason: { code: 'LEGACY_EVENT_CAPTURE' },
47
+ evidence: [],
48
+ details: {
49
+ family: 'key',
50
+ phase: 'configuration_changed',
51
+ },
52
+ };
53
+ await this.trail.record(input);
54
+ }
55
+ }
56
+ //# sourceMappingURL=legacy-audit-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-audit-log.js","sourceRoot":"","sources":["../../../src/audit/adapters/legacy-audit-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAShE;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;IAIvC;IACA;IAJV,UAAU,GAAG,gBAAyB,CAAC;IAEhD,YACmB,KAAwC,EACxC,UAAyC,EAAE;QAE5D,KAAK,EAAE,CAAC;QAHS,UAAK,GAAL,KAAK,CAAmC;QACxC,YAAO,GAAP,OAAO,CAAoC;IAG9D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAqB;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC;QAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB;YACzD,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;YACrF,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC5F,MAAM,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE;YAC3C,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;YAC1C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvC,aAAa,EAAE;oBACb,MAAM,EAAE,QAAiB;oBACzB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAkB,CAAC,CAAC,CAAC,QAAiB;oBAC3D,OAAO,EAAE,OAAO,CAAC,OAAO;iBACzB;aACF,CAAC;YACF,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;gBACzC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB;aAC/E;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA0B;QACvC,MAAM,KAAK,GAAyB;YAClC,SAAS,EAAE,uBAAuB;YAClC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;YACrF,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC5F,MAAM,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE;YACpC,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE;YACxC,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,uBAAuB;aAC/B;SACF,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,105 @@
1
+ import type { AuditTrailService } from '../service.js';
2
+ import type { AuditEventDetails, AuthorizationEvidence, Digest, PartyRef } from '../types.js';
3
+ export interface McpAuditContext {
4
+ actor?: PartyRef;
5
+ responsibleParty?: PartyRef;
6
+ authorization?: AuthorizationEvidence;
7
+ correlationId?: string;
8
+ causationId?: string;
9
+ }
10
+ export interface McpAuditEventAdapterOptions {
11
+ includeToolNames?: boolean;
12
+ }
13
+ /** Privacy-minimal translation from MCP lifecycle signals to binding-neutral events. */
14
+ export declare class McpAuditEventAdapter {
15
+ private readonly trail;
16
+ private readonly options;
17
+ constructor(trail: Pick<AuditTrailService, 'record'>, options?: McpAuditEventAdapterOptions);
18
+ session(phase: Extract<AuditEventDetails, {
19
+ family: 'session';
20
+ }>['phase'], input: {
21
+ succeeded: boolean;
22
+ reasonCode?: string;
23
+ context?: McpAuditContext;
24
+ }): Promise<void>;
25
+ tool(phase: Extract<AuditEventDetails, {
26
+ family: 'tool';
27
+ }>['phase'], input: {
28
+ toolName: string;
29
+ outcome: 'succeeded' | 'failed' | 'denied' | 'challenged' | 'unknown';
30
+ attempt?: string;
31
+ reasonCode?: string;
32
+ context?: McpAuditContext;
33
+ }): Promise<void>;
34
+ proof(phase: Extract<AuditEventDetails, {
35
+ family: 'proof';
36
+ }>['phase'], input: {
37
+ outcome: 'succeeded' | 'failed';
38
+ proofDigest?: Digest;
39
+ verificationCode?: string;
40
+ context?: McpAuditContext;
41
+ }): Promise<void>;
42
+ authorization(phase: Extract<AuditEventDetails, {
43
+ family: 'authorization';
44
+ }>['phase'], input: {
45
+ outcome: 'succeeded' | 'denied' | 'challenged';
46
+ reasonCode?: string;
47
+ policyDigest?: Digest;
48
+ grantRef?: string;
49
+ context?: McpAuditContext;
50
+ }): Promise<void>;
51
+ delegation(phase: Extract<AuditEventDetails, {
52
+ family: 'delegation';
53
+ }>['phase'], input: {
54
+ delegationRef: string;
55
+ outcome: 'succeeded' | 'failed' | 'denied';
56
+ reasonCode?: string;
57
+ parentRef?: string;
58
+ context?: McpAuditContext;
59
+ }): Promise<void>;
60
+ consent(phase: Extract<AuditEventDetails, {
61
+ family: 'consent';
62
+ }>['phase'], input: {
63
+ outcome: 'succeeded' | 'failed' | 'denied' | 'challenged';
64
+ consentRef?: string;
65
+ reasonCode?: string;
66
+ context?: McpAuditContext;
67
+ }): Promise<void>;
68
+ key(phase: Extract<AuditEventDetails, {
69
+ family: 'key';
70
+ }>['phase'], input: {
71
+ outcome: 'succeeded' | 'failed';
72
+ reasonCode?: string;
73
+ previousSigner?: Extract<AuditEventDetails, {
74
+ family: 'key';
75
+ }>['previousSigner'];
76
+ nextSigner?: Extract<AuditEventDetails, {
77
+ family: 'key';
78
+ }>['nextSigner'];
79
+ configurationDigest?: Digest;
80
+ context?: McpAuditContext;
81
+ }): Promise<void>;
82
+ ledger(phase: Extract<AuditEventDetails, {
83
+ family: 'ledger';
84
+ }>['phase'], input: {
85
+ outcome: 'succeeded' | 'failed';
86
+ reasonCode?: string;
87
+ checkpointDigest?: Digest;
88
+ previousEpochId?: string;
89
+ previousTerminalCheckpointDigest?: Digest;
90
+ successorEpochIds?: string[];
91
+ context?: McpAuditContext;
92
+ }): Promise<void>;
93
+ administration(phase: Extract<AuditEventDetails, {
94
+ family: 'administration';
95
+ }>['phase'], input: {
96
+ outcome: 'succeeded' | 'failed' | 'denied';
97
+ reasonCode?: string;
98
+ purpose?: string;
99
+ sourceSequence?: string;
100
+ selectionDigest?: Digest;
101
+ context?: McpAuditContext;
102
+ }): Promise<void>;
103
+ private context;
104
+ }
105
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/audit/adapters/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ function boundedReference(value, maxLength = 256) {
2
+ return value.slice(0, maxLength);
3
+ }
4
+ /** Privacy-minimal translation from MCP lifecycle signals to binding-neutral events. */
5
+ export class McpAuditEventAdapter {
6
+ trail;
7
+ options;
8
+ constructor(trail, options = {}) {
9
+ this.trail = trail;
10
+ this.options = options;
11
+ }
12
+ async session(phase, input) {
13
+ await this.trail.record({
14
+ eventType: `session.${phase}`,
15
+ ...this.context(input.context),
16
+ action: { category: 'session' },
17
+ outcome: input.succeeded ? 'succeeded' : 'failed',
18
+ ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
19
+ evidence: [],
20
+ details: {
21
+ family: 'session', phase,
22
+ ...(input.reasonCode === undefined ? {} : { reasonCode: input.reasonCode }),
23
+ },
24
+ });
25
+ }
26
+ async tool(phase, input) {
27
+ await this.trail.record({
28
+ eventType: `tool.call.${phase}`,
29
+ ...this.context(input.context),
30
+ action: {
31
+ category: 'tool.call',
32
+ ...(this.options.includeToolNames
33
+ ? { name: boundedReference(input.toolName) }
34
+ : {}),
35
+ },
36
+ outcome: input.outcome,
37
+ ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
38
+ evidence: [],
39
+ details: { family: 'tool', phase, attempt: input.attempt ?? '1' },
40
+ });
41
+ }
42
+ async proof(phase, input) {
43
+ await this.trail.record({
44
+ eventType: `proof.${phase}`,
45
+ ...this.context(input.context),
46
+ action: { category: 'proof' },
47
+ outcome: input.outcome,
48
+ evidence: [],
49
+ details: {
50
+ family: 'proof', phase,
51
+ ...(input.proofDigest === undefined ? {} : { proofDigest: input.proofDigest }),
52
+ ...(input.verificationCode === undefined
53
+ ? {}
54
+ : { verificationCode: input.verificationCode }),
55
+ },
56
+ });
57
+ }
58
+ async authorization(phase, input) {
59
+ const eventType = phase === 'grant_used'
60
+ ? 'grant.used'
61
+ : `authorization.${phase}`;
62
+ await this.trail.record({
63
+ eventType,
64
+ ...this.context(input.context),
65
+ action: { category: 'authorization' },
66
+ outcome: input.outcome,
67
+ ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
68
+ evidence: [],
69
+ details: {
70
+ family: 'authorization', phase,
71
+ ...(input.policyDigest === undefined ? {} : { policyDigest: input.policyDigest }),
72
+ ...(input.grantRef === undefined
73
+ ? {}
74
+ : { grantRef: boundedReference(input.grantRef) }),
75
+ },
76
+ });
77
+ }
78
+ async delegation(phase, input) {
79
+ await this.trail.record({
80
+ eventType: `delegation.${phase}`,
81
+ ...this.context(input.context),
82
+ action: { category: 'delegation' },
83
+ outcome: input.outcome,
84
+ ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
85
+ evidence: [],
86
+ details: {
87
+ family: 'delegation', phase,
88
+ delegationRef: boundedReference(input.delegationRef),
89
+ ...(input.parentRef === undefined
90
+ ? {}
91
+ : { parentRef: boundedReference(input.parentRef) }),
92
+ },
93
+ });
94
+ }
95
+ async consent(phase, input) {
96
+ const eventType = phase.startsWith('credential_')
97
+ ? `credential.${phase.slice('credential_'.length)}`
98
+ : `consent.${phase}`;
99
+ await this.trail.record({
100
+ eventType: eventType,
101
+ ...this.context(input.context),
102
+ action: { category: 'consent' },
103
+ outcome: input.outcome,
104
+ ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
105
+ evidence: [],
106
+ details: {
107
+ family: 'consent', phase,
108
+ ...(input.consentRef === undefined
109
+ ? {}
110
+ : { consentRef: boundedReference(input.consentRef) }),
111
+ },
112
+ });
113
+ }
114
+ async key(phase, input) {
115
+ const eventTypes = {
116
+ rotated: 'key.rotated',
117
+ policy_changed: 'policy.changed',
118
+ configuration_changed: 'configuration.changed',
119
+ integrity_suite_transitioned: 'integrity_suite.transitioned',
120
+ };
121
+ await this.trail.record({
122
+ eventType: eventTypes[phase],
123
+ ...this.context(input.context),
124
+ action: { category: 'configuration' },
125
+ outcome: input.outcome,
126
+ ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
127
+ evidence: [],
128
+ details: {
129
+ family: 'key', phase,
130
+ ...(input.previousSigner === undefined ? {} : { previousSigner: input.previousSigner }),
131
+ ...(input.nextSigner === undefined ? {} : { nextSigner: input.nextSigner }),
132
+ ...(input.configurationDigest === undefined
133
+ ? {}
134
+ : { configurationDigest: input.configurationDigest }),
135
+ },
136
+ });
137
+ }
138
+ async ledger(phase, input) {
139
+ const eventTypes = {
140
+ epoch_started: 'ledger.epoch.started',
141
+ epoch_transitioned: 'ledger.epoch.transitioned',
142
+ checkpoint_created: 'checkpoint.created',
143
+ checkpoint_anchored: 'checkpoint.anchored',
144
+ checkpoint_anchor_failed: 'checkpoint.anchor_failed',
145
+ evidence_disposed: 'evidence.disposed',
146
+ projection_reconciled: 'projection.reconciled',
147
+ };
148
+ await this.trail.record({
149
+ eventType: eventTypes[phase],
150
+ ...this.context(input.context),
151
+ action: { category: 'audit.ledger' },
152
+ outcome: input.outcome,
153
+ ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
154
+ evidence: [],
155
+ details: {
156
+ family: 'ledger', phase,
157
+ ...(input.checkpointDigest === undefined
158
+ ? {}
159
+ : { checkpointDigest: input.checkpointDigest }),
160
+ ...(input.previousEpochId === undefined ? {} : { previousEpochId: input.previousEpochId }),
161
+ ...(input.previousTerminalCheckpointDigest === undefined
162
+ ? {}
163
+ : { previousTerminalCheckpointDigest: input.previousTerminalCheckpointDigest }),
164
+ ...(input.successorEpochIds === undefined
165
+ ? {}
166
+ : { successorEpochIds: input.successorEpochIds }),
167
+ },
168
+ });
169
+ }
170
+ async administration(phase, input) {
171
+ const eventTypes = {
172
+ source_high_water: 'audit.source_high_water',
173
+ accessed: 'audit.accessed',
174
+ exported: 'audit.exported',
175
+ legal_hold_applied: 'legal_hold.applied',
176
+ retention_executed: 'retention.executed',
177
+ };
178
+ await this.trail.record({
179
+ eventType: eventTypes[phase],
180
+ ...this.context(input.context),
181
+ action: { category: 'audit.administration' },
182
+ outcome: input.outcome,
183
+ ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
184
+ evidence: [],
185
+ details: {
186
+ family: 'administration', phase,
187
+ ...(input.purpose === undefined ? {} : { purpose: input.purpose }),
188
+ ...(input.sourceSequence === undefined
189
+ ? {}
190
+ : { sourceSequence: input.sourceSequence }),
191
+ ...(input.selectionDigest === undefined
192
+ ? {}
193
+ : { selectionDigest: input.selectionDigest }),
194
+ },
195
+ });
196
+ }
197
+ context(context) {
198
+ if (context === undefined)
199
+ return {};
200
+ return {
201
+ ...(context.actor === undefined ? {} : { actor: context.actor }),
202
+ ...(context.responsibleParty === undefined
203
+ ? {}
204
+ : { responsibleParty: context.responsibleParty }),
205
+ ...(context.authorization === undefined
206
+ ? {}
207
+ : { authorization: context.authorization }),
208
+ ...(context.correlationId === undefined ? {} : { correlationId: context.correlationId }),
209
+ ...(context.causationId === undefined ? {} : { causationId: context.causationId }),
210
+ };
211
+ }
212
+ }
213
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/audit/adapters/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export type AuditAssuranceProfile = 'AAP-0' | 'AAP-1' | 'AAP-2' | 'AAP-3' | 'AAP-4';
2
+ export type AuditDeliveryMode = 'best-effort' | 'buffered' | 'required';
3
+ export type AuditSupportingAnchor = 'worm' | 'rfc3161' | 'scitt';
4
+ export interface AuditCapabilities {
5
+ profile: AuditAssuranceProfile;
6
+ recorderTopology: 'none' | 'self-hosted' | 'managed' | 'verified-mirror';
7
+ delivery: AuditDeliveryMode;
8
+ journalDurability: 'none' | 'ephemeral' | 'durable';
9
+ atomicAppend: boolean;
10
+ sourceHighWater: boolean;
11
+ merkleCheckpoints: boolean;
12
+ independentObservation: boolean;
13
+ supportingAnchors: AuditSupportingAnchor[];
14
+ evidenceRetention: 'none' | 'inline' | 'separate';
15
+ }
16
+ export declare const AUDIT_ASSURANCE_PROFILES: Readonly<Record<AuditAssuranceProfile, {
17
+ name: string;
18
+ claim: string;
19
+ }>>;
20
+ /** Fail startup when advertised assurance exceeds configured mechanics. */
21
+ export declare function assertAuditCapabilities(capabilities: AuditCapabilities): void;
22
+ //# sourceMappingURL=assurance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assurance.d.ts","sourceRoot":"","sources":["../../src/audit/assurance.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AACpF,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,CAAC;AACxE,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,gBAAgB,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,iBAAiB,CAAC;IACzE,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IACpD,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sBAAsB,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IAC3C,iBAAiB,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;CACnD;AAED,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,qBAAqB,EAAE;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAMA,CAAC;AAEH,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,iBAAiB,GAAG,IAAI,CA4B7E"}
@@ -0,0 +1,39 @@
1
+ export const AUDIT_ASSURANCE_PROFILES = Object.freeze({
2
+ 'AAP-0': { name: 'None', claim: 'No audit assurance' },
3
+ 'AAP-1': { name: 'Recorded', claim: 'Structured capture of delivered instrumented events' },
4
+ 'AAP-2': { name: 'Chained', claim: 'Ordered tamper-evident accepted history for a declared scope' },
5
+ 'AAP-3': { name: 'Transparent', claim: 'Efficient inclusion, consistency, and declared source-gap evidence' },
6
+ 'AAP-4': { name: 'Observed', claim: 'Conflicting observed views are detectable relative to independently known checkpoints' },
7
+ });
8
+ /** Fail startup when advertised assurance exceeds configured mechanics. */
9
+ export function assertAuditCapabilities(capabilities) {
10
+ const level = Number(capabilities.profile.slice(-1));
11
+ if (level === 0)
12
+ return;
13
+ if (capabilities.recorderTopology === 'none' || capabilities.journalDurability === 'none') {
14
+ throw new Error(`${capabilities.profile} requires an audit recorder or verified mirror`);
15
+ }
16
+ if (level >= 2) {
17
+ if (capabilities.journalDurability !== 'durable') {
18
+ throw new Error(`${capabilities.profile} requires a durable journal`);
19
+ }
20
+ if (!capabilities.atomicAppend) {
21
+ throw new Error(`${capabilities.profile} requires atomic append`);
22
+ }
23
+ if (capabilities.delivery === 'best-effort') {
24
+ throw new Error(`${capabilities.profile} cannot use best-effort delivery`);
25
+ }
26
+ }
27
+ if (level >= 3 && (!capabilities.merkleCheckpoints || !capabilities.sourceHighWater)) {
28
+ throw new Error(`${capabilities.profile} requires Merkle checkpoints and source high-water evidence`);
29
+ }
30
+ if (level >= 4) {
31
+ if (!capabilities.independentObservation) {
32
+ throw new Error('AAP-4 requires independent observation with authenticated comparison/gossip');
33
+ }
34
+ if (capabilities.supportingAnchors.length === 0) {
35
+ throw new Error('AAP-4 requires at least one supporting checkpoint receipt');
36
+ }
37
+ }
38
+ }
39
+ //# sourceMappingURL=assurance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assurance.js","sourceRoot":"","sources":["../../src/audit/assurance.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,wBAAwB,GAG/B,MAAM,CAAC,MAAM,CAAC;IAClB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE;IACtD,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,qDAAqD,EAAE;IAC3F,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,8DAA8D,EAAE;IACnG,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,oEAAoE,EAAE;IAC7G,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,uFAAuF,EAAE;CAC9H,CAAC,CAAC;AAEH,2EAA2E;AAC3E,MAAM,UAAU,uBAAuB,CAAC,YAA+B;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO;IACxB,IAAI,YAAY,CAAC,gBAAgB,KAAK,MAAM,IAAI,YAAY,CAAC,iBAAiB,KAAK,MAAM,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,gDAAgD,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,IAAI,YAAY,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,6BAA6B,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,yBAAyB,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,YAAY,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,kCAAkC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IACD,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,iBAAiB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,6DAA6D,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,YAAY,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { AuditAnchorProvider } from './providers/anchor.js';
2
+ import type { AuditCheckpointObserverProvider } from './providers/observer.js';
3
+ import type { AuditAnchorReceipt, AuditLedgerRef, AuditObservationReceiptV1, SignedAuditCheckpointV1 } from './types.js';
4
+ export interface AuditCheckpointCreator {
5
+ createCheckpoint(ledger: AuditLedgerRef): Promise<SignedAuditCheckpointV1>;
6
+ }
7
+ export interface AuditCheckpointPublicationFailure {
8
+ role: 'observer' | 'anchor';
9
+ providerIndex: number;
10
+ kind?: AuditAnchorReceipt['kind'];
11
+ attempts: number;
12
+ error: unknown;
13
+ }
14
+ export interface AuditCheckpointPublicationResult {
15
+ checkpoint: SignedAuditCheckpointV1;
16
+ observations: AuditObservationReceiptV1[];
17
+ anchors: AuditAnchorReceipt[];
18
+ failures: AuditCheckpointPublicationFailure[];
19
+ }
20
+ export interface AuditCheckpointCoordinatorOptions {
21
+ checkpoints: AuditCheckpointCreator;
22
+ observers?: readonly AuditCheckpointObserverProvider[];
23
+ anchors?: readonly AuditAnchorProvider[];
24
+ requirements?: {
25
+ minimumObservers: number;
26
+ requiredAnchorKinds: readonly AuditAnchorReceipt['kind'][];
27
+ };
28
+ maxPublishAttempts?: number;
29
+ backoff?: (input: {
30
+ role: AuditCheckpointPublicationFailure['role'];
31
+ providerIndex: number;
32
+ attempt: number;
33
+ error: unknown;
34
+ }) => Promise<void>;
35
+ onPublished?: (result: AuditCheckpointPublicationResult) => Promise<void> | void;
36
+ }
37
+ /**
38
+ * Coordinates post-commit checkpoint publication. A failed publication never
39
+ * rolls back or rewrites the already signed checkpoint.
40
+ */
41
+ export declare class AuditCheckpointCoordinator {
42
+ private readonly options;
43
+ private readonly observers;
44
+ private readonly anchors;
45
+ private readonly maxAttempts;
46
+ constructor(options: AuditCheckpointCoordinatorOptions);
47
+ createAndPublish(ledger: AuditLedgerRef): Promise<AuditCheckpointPublicationResult>;
48
+ private publishWithRetry;
49
+ private assertRequirements;
50
+ }
51
+ //# sourceMappingURL=checkpoint-coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint-coordinator.d.ts","sourceRoot":"","sources":["../../src/audit/checkpoint-coordinator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,iCAAiC;IAChD,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,gCAAgC;IAC/C,UAAU,EAAE,uBAAuB,CAAC;IACpC,YAAY,EAAE,yBAAyB,EAAE,CAAC;IAC1C,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,QAAQ,EAAE,iCAAiC,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,iCAAiC;IAChD,WAAW,EAAE,sBAAsB,CAAC;IACpC,SAAS,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACvD,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE;QACb,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,SAAS,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;KAC5D,CAAC;IACF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAChB,IAAI,EAAE,iCAAiC,CAAC,MAAM,CAAC,CAAC;QAChD,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;KAChB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,gCAAgC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClF;AAED;;;GAGG;AACH,qBAAa,0BAA0B;IAKzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6C;IACvE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAER,OAAO,EAAE,iCAAiC;IAqBjE,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,gCAAgC,CAAC;YAqC3E,gBAAgB;IAgD9B,OAAO,CAAC,kBAAkB;CAwB3B"}