@kya-os/mcp 1.16.2 → 1.18.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 (469) hide show
  1. package/AUDITABILITY.md +129 -8
  2. package/CHANGELOG.md +641 -0
  3. package/CONFORMANCE.md +12 -6
  4. package/README.md +67 -26
  5. package/SPEC.md +105 -18
  6. package/dist/audit/adapters/legacy-audit-log.d.ts +0 -1
  7. package/dist/audit/adapters/mcp.d.ts +0 -1
  8. package/dist/audit/adapters/mcp.js +35 -20
  9. package/dist/audit/adapters/mcp.js.map +1 -1
  10. package/dist/audit/adapters/references.d.ts +9 -0
  11. package/dist/audit/adapters/references.js +22 -0
  12. package/dist/audit/adapters/references.js.map +1 -0
  13. package/dist/audit/assurance.d.ts +0 -1
  14. package/dist/audit/checkpoint-coordinator.d.ts +0 -1
  15. package/dist/audit/checkpoint.d.ts +17 -1
  16. package/dist/audit/checkpoint.js +76 -21
  17. package/dist/audit/checkpoint.js.map +1 -1
  18. package/dist/audit/cli.d.ts +0 -1
  19. package/dist/audit/crypto.d.ts +0 -1
  20. package/dist/audit/crypto.js +12 -3
  21. package/dist/audit/crypto.js.map +1 -1
  22. package/dist/audit/errors.d.ts +0 -1
  23. package/dist/audit/evidence.d.ts +0 -1
  24. package/dist/audit/index.d.ts +0 -1
  25. package/dist/audit/integrity.d.ts +0 -1
  26. package/dist/audit/merkle.d.ts +0 -1
  27. package/dist/audit/mirror-service.d.ts +0 -1
  28. package/dist/audit/projection.d.ts +1 -1
  29. package/dist/audit/projection.js +23 -2
  30. package/dist/audit/projection.js.map +1 -1
  31. package/dist/audit/providers/anchor.d.ts +0 -1
  32. package/dist/audit/providers/evidence.d.ts +0 -1
  33. package/dist/audit/providers/journal.d.ts +0 -1
  34. package/dist/audit/providers/memory-journal.d.ts +0 -1
  35. package/dist/audit/providers/observer.d.ts +0 -1
  36. package/dist/audit/providers/outbox.d.ts +35 -6
  37. package/dist/audit/providers/outbox.js +46 -8
  38. package/dist/audit/providers/outbox.js.map +1 -1
  39. package/dist/audit/providers/recorder-client.d.ts +0 -1
  40. package/dist/audit/providers/source-state.d.ts +24 -2
  41. package/dist/audit/providers/source-state.js +65 -44
  42. package/dist/audit/providers/source-state.js.map +1 -1
  43. package/dist/audit/read-contract.d.ts +0 -1
  44. package/dist/audit/read-service.d.ts +2 -3
  45. package/dist/audit/read-service.js +17 -12
  46. package/dist/audit/read-service.js.map +1 -1
  47. package/dist/audit/recorder-service.d.ts +33 -5
  48. package/dist/audit/recorder-service.js +116 -20
  49. package/dist/audit/recorder-service.js.map +1 -1
  50. package/dist/audit/reference-recorder.d.ts +0 -1
  51. package/dist/audit/replay-bundle.d.ts +0 -1
  52. package/dist/audit/replay-bundle.js +143 -36
  53. package/dist/audit/replay-bundle.js.map +1 -1
  54. package/dist/audit/schemas.d.ts +0 -1
  55. package/dist/audit/service.d.ts +6 -3
  56. package/dist/audit/service.js +55 -24
  57. package/dist/audit/service.js.map +1 -1
  58. package/dist/audit/testing/index.d.ts +0 -1
  59. package/dist/audit/testing/provider-contracts.d.ts +1 -2
  60. package/dist/audit/testing/provider-contracts.js +32 -2
  61. package/dist/audit/testing/provider-contracts.js.map +1 -1
  62. package/dist/audit/types.d.ts +0 -1
  63. package/dist/audit/verifier.d.ts +57 -5
  64. package/dist/audit/verifier.js +240 -49
  65. package/dist/audit/verifier.js.map +1 -1
  66. package/dist/auth/handshake.d.ts +12 -1
  67. package/dist/auth/handshake.js +44 -11
  68. package/dist/auth/handshake.js.map +1 -1
  69. package/dist/auth/index.d.ts +0 -1
  70. package/dist/auth/types.d.ts +0 -1
  71. package/dist/authz/accountability.d.ts +0 -1
  72. package/dist/authz/adapter.d.ts +0 -1
  73. package/dist/authz/examples/inmemory-oidc.d.ts +0 -1
  74. package/dist/authz/index.d.ts +0 -1
  75. package/dist/authz/oidc/authorize.d.ts +0 -1
  76. package/dist/authz/oidc/metadata.d.ts +0 -1
  77. package/dist/authz/oidc/oidc-adapter.d.ts +0 -1
  78. package/dist/authz/oidc/oidc-adapter.js +51 -3
  79. package/dist/authz/oidc/oidc-adapter.js.map +1 -1
  80. package/dist/authz/oidc/pending-flow-store.d.ts +6 -1
  81. package/dist/authz/oidc/pending-flow-store.js +22 -2
  82. package/dist/authz/oidc/pending-flow-store.js.map +1 -1
  83. package/dist/authz/oidc/pkce.d.ts +0 -1
  84. package/dist/authz/registry.d.ts +0 -1
  85. package/dist/authz/requirement.d.ts +0 -1
  86. package/dist/card/build.d.ts +0 -1
  87. package/dist/card/builder.d.ts +0 -1
  88. package/dist/card/cimd.d.ts +19 -5
  89. package/dist/card/cimd.js +52 -7
  90. package/dist/card/cimd.js.map +1 -1
  91. package/dist/card/delegation.d.ts +12 -4
  92. package/dist/card/delegation.js +38 -22
  93. package/dist/card/delegation.js.map +1 -1
  94. package/dist/card/emit.d.ts +0 -1
  95. package/dist/card/index.d.ts +0 -1
  96. package/dist/card/middleware.d.ts +0 -1
  97. package/dist/card/proof/build.d.ts +0 -1
  98. package/dist/card/proof/canonical.d.ts +0 -1
  99. package/dist/card/proof/canonical.js +6 -1
  100. package/dist/card/proof/canonical.js.map +1 -1
  101. package/dist/card/proof/http-sig.d.ts +0 -1
  102. package/dist/card/proof/index.d.ts +0 -1
  103. package/dist/card/proof/nonce-cache.d.ts +15 -14
  104. package/dist/card/proof/nonce-cache.js +22 -20
  105. package/dist/card/proof/nonce-cache.js.map +1 -1
  106. package/dist/card/proof/signer.d.ts +0 -1
  107. package/dist/card/proof/types.d.ts +10 -4
  108. package/dist/card/proof/types.js +2 -2
  109. package/dist/card/proof/verify.d.ts +0 -1
  110. package/dist/card/proof/verify.js +17 -3
  111. package/dist/card/proof/verify.js.map +1 -1
  112. package/dist/card/resolve.d.ts +0 -1
  113. package/dist/card/resolve.js +13 -8
  114. package/dist/card/resolve.js.map +1 -1
  115. package/dist/card/revocation.d.ts +0 -1
  116. package/dist/card/revocation.js +18 -6
  117. package/dist/card/revocation.js.map +1 -1
  118. package/dist/card/schema.d.ts +7 -6
  119. package/dist/card/schema.js +7 -3
  120. package/dist/card/schema.js.map +1 -1
  121. package/dist/card/verify.d.ts +0 -1
  122. package/dist/delegation/audience-validator.d.ts +0 -1
  123. package/dist/delegation/bitstring.d.ts +0 -1
  124. package/dist/delegation/cascading-revocation.d.ts +1 -2
  125. package/dist/delegation/cascading-revocation.js +34 -36
  126. package/dist/delegation/cascading-revocation.js.map +1 -1
  127. package/dist/delegation/chain-enforcement.d.ts +42 -5
  128. package/dist/delegation/chain-enforcement.js +127 -34
  129. package/dist/delegation/chain-enforcement.js.map +1 -1
  130. package/dist/delegation/delegation-graph.d.ts +30 -1
  131. package/dist/delegation/delegation-graph.js +33 -0
  132. package/dist/delegation/delegation-graph.js.map +1 -1
  133. package/dist/delegation/delegation-registration.d.ts +22 -0
  134. package/dist/delegation/delegation-registration.js +51 -0
  135. package/dist/delegation/delegation-registration.js.map +1 -0
  136. package/dist/delegation/delegation-status-entry.d.ts +22 -0
  137. package/dist/delegation/delegation-status-entry.js +42 -0
  138. package/dist/delegation/delegation-status-entry.js.map +1 -0
  139. package/dist/delegation/did-key-resolver.d.ts +0 -1
  140. package/dist/delegation/did-key-resolver.js +15 -4
  141. package/dist/delegation/did-key-resolver.js.map +1 -1
  142. package/dist/delegation/did-linkage.d.ts +0 -1
  143. package/dist/delegation/did-resolver-registry.d.ts +0 -1
  144. package/dist/delegation/did-web-resolver.d.ts +0 -1
  145. package/dist/delegation/did-web-resolver.js +40 -5
  146. package/dist/delegation/did-web-resolver.js.map +1 -1
  147. package/dist/delegation/holder-binding.d.ts +11 -11
  148. package/dist/delegation/holder-binding.js +8 -17
  149. package/dist/delegation/holder-binding.js.map +1 -1
  150. package/dist/delegation/index.d.ts +0 -1
  151. package/dist/delegation/outbound-headers.d.ts +0 -1
  152. package/dist/delegation/outbound-proof.d.ts +0 -1
  153. package/dist/delegation/scope-matcher.d.ts +25 -2
  154. package/dist/delegation/scope-matcher.js +75 -5
  155. package/dist/delegation/scope-matcher.js.map +1 -1
  156. package/dist/delegation/status-cache.d.ts +0 -1
  157. package/dist/delegation/statuslist-manager.d.ts +18 -2
  158. package/dist/delegation/statuslist-manager.js +40 -14
  159. package/dist/delegation/statuslist-manager.js.map +1 -1
  160. package/dist/delegation/storage/memory-graph-storage.d.ts +9 -3
  161. package/dist/delegation/storage/memory-graph-storage.js +28 -14
  162. package/dist/delegation/storage/memory-graph-storage.js.map +1 -1
  163. package/dist/delegation/storage/memory-statuslist-storage.d.ts +0 -1
  164. package/dist/delegation/utils.d.ts +5 -5
  165. package/dist/delegation/utils.js +4 -4
  166. package/dist/delegation/utils.js.map +1 -1
  167. package/dist/delegation/vc-issuer.d.ts +0 -1
  168. package/dist/delegation/vc-jwt-verify.d.ts +7 -2
  169. package/dist/delegation/vc-jwt-verify.js +55 -3
  170. package/dist/delegation/vc-jwt-verify.js.map +1 -1
  171. package/dist/delegation/vc-verification-checks.d.ts +0 -1
  172. package/dist/delegation/vc-verification-checks.js +9 -5
  173. package/dist/delegation/vc-verification-checks.js.map +1 -1
  174. package/dist/delegation/vc-verifier.d.ts +0 -1
  175. package/dist/delegation/vc-verifier.types.d.ts +0 -1
  176. package/dist/delegation/verification-method-key.d.ts +0 -1
  177. package/dist/delegation/verification-method-key.js +4 -3
  178. package/dist/delegation/verification-method-key.js.map +1 -1
  179. package/dist/errors.d.ts +0 -1
  180. package/dist/extension/declaration.d.ts +0 -1
  181. package/dist/extension/gate.d.ts +0 -1
  182. package/dist/extension/index.d.ts +0 -1
  183. package/dist/extension/settings.d.ts +0 -1
  184. package/dist/index.d.ts +2 -3
  185. package/dist/index.js +1 -1
  186. package/dist/index.js.map +1 -1
  187. package/dist/integrations/cheqd/dlr.d.ts +0 -1
  188. package/dist/integrations/cheqd/dlr.js +6 -1
  189. package/dist/integrations/cheqd/dlr.js.map +1 -1
  190. package/dist/integrations/cheqd/index.d.ts +0 -1
  191. package/dist/integrations/cheqd/linkage.d.ts +0 -1
  192. package/dist/integrations/cheqd/registrar.d.ts +0 -1
  193. package/dist/integrations/cheqd/resolver.d.ts +0 -1
  194. package/dist/integrations/cheqd/statuslist-resolver.d.ts +0 -1
  195. package/dist/logging/index.d.ts +0 -1
  196. package/dist/logging/logger.d.ts +0 -1
  197. package/dist/middleware/index.d.ts +0 -1
  198. package/dist/middleware/kya-os-transport.d.ts +5 -3
  199. package/dist/middleware/kya-os-transport.js +58 -24
  200. package/dist/middleware/kya-os-transport.js.map +1 -1
  201. package/dist/middleware/with-kya-os-server.d.ts +30 -4
  202. package/dist/middleware/with-kya-os-server.js +19 -0
  203. package/dist/middleware/with-kya-os-server.js.map +1 -1
  204. package/dist/middleware/with-kya-os.config-types.d.ts +32 -4
  205. package/dist/middleware/with-kya-os.d.ts +0 -1
  206. package/dist/middleware/with-kya-os.delegation-gate.d.ts +2 -1
  207. package/dist/middleware/with-kya-os.delegation-gate.js +37 -9
  208. package/dist/middleware/with-kya-os.delegation-gate.js.map +1 -1
  209. package/dist/middleware/with-kya-os.delegation-verify.d.ts +1 -1
  210. package/dist/middleware/with-kya-os.delegation-verify.js +52 -9
  211. package/dist/middleware/with-kya-os.delegation-verify.js.map +1 -1
  212. package/dist/middleware/with-kya-os.deps.d.ts +0 -1
  213. package/dist/middleware/with-kya-os.grants.d.ts +13 -6
  214. package/dist/middleware/with-kya-os.grants.js +56 -18
  215. package/dist/middleware/with-kya-os.grants.js.map +1 -1
  216. package/dist/middleware/with-kya-os.helpers.d.ts +0 -1
  217. package/dist/middleware/with-kya-os.js +14 -4
  218. package/dist/middleware/with-kya-os.js.map +1 -1
  219. package/dist/middleware/with-kya-os.policy-gate.d.ts +0 -1
  220. package/dist/middleware/with-kya-os.policy-gate.js +18 -9
  221. package/dist/middleware/with-kya-os.policy-gate.js.map +1 -1
  222. package/dist/middleware/with-kya-os.protocol.d.ts +0 -1
  223. package/dist/middleware/with-kya-os.session.d.ts +28 -1
  224. package/dist/middleware/with-kya-os.session.js +146 -7
  225. package/dist/middleware/with-kya-os.session.js.map +1 -1
  226. package/dist/middleware/with-kya-os.types.d.ts +28 -5
  227. package/dist/policy/approval.d.ts +13 -2
  228. package/dist/policy/approval.js +15 -4
  229. package/dist/policy/approval.js.map +1 -1
  230. package/dist/policy/classifier.d.ts +0 -1
  231. package/dist/policy/default-engine.d.ts +5 -2
  232. package/dist/policy/default-engine.js +10 -2
  233. package/dist/policy/default-engine.js.map +1 -1
  234. package/dist/policy/engine.d.ts +0 -1
  235. package/dist/policy/index.d.ts +0 -1
  236. package/dist/policy/projection.d.ts +0 -1
  237. package/dist/policy/types.d.ts +0 -1
  238. package/dist/proof/covered-request.d.ts +46 -0
  239. package/dist/proof/covered-request.js +107 -0
  240. package/dist/proof/covered-request.js.map +1 -0
  241. package/dist/proof/errors.d.ts +3 -1
  242. package/dist/proof/errors.js +5 -0
  243. package/dist/proof/errors.js.map +1 -1
  244. package/dist/proof/generator.d.ts +51 -1
  245. package/dist/proof/generator.js +71 -13
  246. package/dist/proof/generator.js.map +1 -1
  247. package/dist/proof/index.d.ts +1 -2
  248. package/dist/proof/index.js.map +1 -1
  249. package/dist/proof/verifier.d.ts +50 -12
  250. package/dist/proof/verifier.js +164 -84
  251. package/dist/proof/verifier.js.map +1 -1
  252. package/dist/providers/audit-log.d.ts +0 -1
  253. package/dist/providers/base.d.ts +19 -1
  254. package/dist/providers/base.js.map +1 -1
  255. package/dist/providers/grant-store.d.ts +8 -2
  256. package/dist/providers/grant-store.js +5 -5
  257. package/dist/providers/grant-store.js.map +1 -1
  258. package/dist/providers/index.d.ts +0 -1
  259. package/dist/providers/memory.d.ts +19 -1
  260. package/dist/providers/memory.js +53 -7
  261. package/dist/providers/memory.js.map +1 -1
  262. package/dist/providers/node-crypto.d.ts +4 -1
  263. package/dist/providers/node-crypto.js +32 -9
  264. package/dist/providers/node-crypto.js.map +1 -1
  265. package/dist/providers/nonce-admission.d.ts +31 -0
  266. package/dist/providers/nonce-admission.js +47 -0
  267. package/dist/providers/nonce-admission.js.map +1 -0
  268. package/dist/providers/nonce-retention.d.ts +8 -0
  269. package/dist/providers/nonce-retention.js +15 -0
  270. package/dist/providers/nonce-retention.js.map +1 -0
  271. package/dist/providers/runtime-fetch.d.ts +0 -1
  272. package/dist/providers/system-clock.d.ts +0 -1
  273. package/dist/providers/web-crypto.d.ts +0 -1
  274. package/dist/providers/web-crypto.js +7 -1
  275. package/dist/providers/web-crypto.js.map +1 -1
  276. package/dist/session/index.d.ts +0 -1
  277. package/dist/session/manager.d.ts +13 -1
  278. package/dist/session/manager.js +25 -9
  279. package/dist/session/manager.js.map +1 -1
  280. package/dist/session/session-store.d.ts +0 -1
  281. package/dist/types/protocol.d.ts +11 -3
  282. package/dist/types/protocol.js +21 -14
  283. package/dist/types/protocol.js.map +1 -1
  284. package/dist/utils/base58.d.ts +16 -3
  285. package/dist/utils/base58.js +34 -12
  286. package/dist/utils/base58.js.map +1 -1
  287. package/dist/utils/base64.d.ts +0 -1
  288. package/dist/utils/canonical-json.d.ts +7 -1
  289. package/dist/utils/canonical-json.js +130 -60
  290. package/dist/utils/canonical-json.js.map +1 -1
  291. package/dist/utils/crypto-service.d.ts +0 -1
  292. package/dist/utils/crypto-service.js +22 -2
  293. package/dist/utils/crypto-service.js.map +1 -1
  294. package/dist/utils/did-helpers.d.ts +0 -1
  295. package/dist/utils/ed25519-constants.d.ts +0 -1
  296. package/dist/utils/ed25519-public-key.d.ts +27 -0
  297. package/dist/utils/ed25519-public-key.js +86 -0
  298. package/dist/utils/ed25519-public-key.js.map +1 -0
  299. package/dist/utils/guards.d.ts +0 -1
  300. package/dist/utils/index.d.ts +0 -1
  301. package/dist/utils/ip-classifier.d.ts +0 -1
  302. package/dist/utils/safe-fetch-transports.d.ts +0 -1
  303. package/dist/utils/safe-fetch-types.d.ts +0 -1
  304. package/dist/utils/safe-fetch.d.ts +0 -1
  305. package/dist/utils/statuslist-bits.d.ts +0 -1
  306. package/dist/utils/statuslist-purpose.d.ts +0 -1
  307. package/dist/utils/ttl-cache.d.ts +0 -1
  308. package/dist/utils/url.d.ts +0 -1
  309. package/package.json +24 -19
  310. package/schemas/card-delegation-credential.json +4 -1
  311. package/dist/audit/adapters/legacy-audit-log.d.ts.map +0 -1
  312. package/dist/audit/adapters/mcp.d.ts.map +0 -1
  313. package/dist/audit/assurance.d.ts.map +0 -1
  314. package/dist/audit/checkpoint-coordinator.d.ts.map +0 -1
  315. package/dist/audit/checkpoint.d.ts.map +0 -1
  316. package/dist/audit/cli.d.ts.map +0 -1
  317. package/dist/audit/crypto.d.ts.map +0 -1
  318. package/dist/audit/errors.d.ts.map +0 -1
  319. package/dist/audit/evidence.d.ts.map +0 -1
  320. package/dist/audit/index.d.ts.map +0 -1
  321. package/dist/audit/integrity.d.ts.map +0 -1
  322. package/dist/audit/merkle.d.ts.map +0 -1
  323. package/dist/audit/mirror-service.d.ts.map +0 -1
  324. package/dist/audit/projection.d.ts.map +0 -1
  325. package/dist/audit/providers/anchor.d.ts.map +0 -1
  326. package/dist/audit/providers/evidence.d.ts.map +0 -1
  327. package/dist/audit/providers/journal.d.ts.map +0 -1
  328. package/dist/audit/providers/memory-journal.d.ts.map +0 -1
  329. package/dist/audit/providers/observer.d.ts.map +0 -1
  330. package/dist/audit/providers/outbox.d.ts.map +0 -1
  331. package/dist/audit/providers/recorder-client.d.ts.map +0 -1
  332. package/dist/audit/providers/source-state.d.ts.map +0 -1
  333. package/dist/audit/read-contract.d.ts.map +0 -1
  334. package/dist/audit/read-service.d.ts.map +0 -1
  335. package/dist/audit/recorder-service.d.ts.map +0 -1
  336. package/dist/audit/reference-recorder.d.ts.map +0 -1
  337. package/dist/audit/replay-bundle.d.ts.map +0 -1
  338. package/dist/audit/schemas.d.ts.map +0 -1
  339. package/dist/audit/service.d.ts.map +0 -1
  340. package/dist/audit/testing/index.d.ts.map +0 -1
  341. package/dist/audit/testing/provider-contracts.d.ts.map +0 -1
  342. package/dist/audit/types.d.ts.map +0 -1
  343. package/dist/audit/verifier.d.ts.map +0 -1
  344. package/dist/auth/handshake.d.ts.map +0 -1
  345. package/dist/auth/index.d.ts.map +0 -1
  346. package/dist/auth/types.d.ts.map +0 -1
  347. package/dist/authz/accountability.d.ts.map +0 -1
  348. package/dist/authz/adapter.d.ts.map +0 -1
  349. package/dist/authz/examples/inmemory-oidc.d.ts.map +0 -1
  350. package/dist/authz/index.d.ts.map +0 -1
  351. package/dist/authz/oidc/authorize.d.ts.map +0 -1
  352. package/dist/authz/oidc/metadata.d.ts.map +0 -1
  353. package/dist/authz/oidc/oidc-adapter.d.ts.map +0 -1
  354. package/dist/authz/oidc/pending-flow-store.d.ts.map +0 -1
  355. package/dist/authz/oidc/pkce.d.ts.map +0 -1
  356. package/dist/authz/registry.d.ts.map +0 -1
  357. package/dist/authz/requirement.d.ts.map +0 -1
  358. package/dist/card/build.d.ts.map +0 -1
  359. package/dist/card/builder.d.ts.map +0 -1
  360. package/dist/card/cimd.d.ts.map +0 -1
  361. package/dist/card/delegation.d.ts.map +0 -1
  362. package/dist/card/emit.d.ts.map +0 -1
  363. package/dist/card/index.d.ts.map +0 -1
  364. package/dist/card/middleware.d.ts.map +0 -1
  365. package/dist/card/proof/build.d.ts.map +0 -1
  366. package/dist/card/proof/canonical.d.ts.map +0 -1
  367. package/dist/card/proof/http-sig.d.ts.map +0 -1
  368. package/dist/card/proof/index.d.ts.map +0 -1
  369. package/dist/card/proof/nonce-cache.d.ts.map +0 -1
  370. package/dist/card/proof/signer.d.ts.map +0 -1
  371. package/dist/card/proof/types.d.ts.map +0 -1
  372. package/dist/card/proof/verify.d.ts.map +0 -1
  373. package/dist/card/resolve.d.ts.map +0 -1
  374. package/dist/card/revocation.d.ts.map +0 -1
  375. package/dist/card/schema.d.ts.map +0 -1
  376. package/dist/card/verify.d.ts.map +0 -1
  377. package/dist/delegation/audience-validator.d.ts.map +0 -1
  378. package/dist/delegation/bitstring.d.ts.map +0 -1
  379. package/dist/delegation/cascading-revocation.d.ts.map +0 -1
  380. package/dist/delegation/chain-enforcement.d.ts.map +0 -1
  381. package/dist/delegation/delegation-graph.d.ts.map +0 -1
  382. package/dist/delegation/did-key-resolver.d.ts.map +0 -1
  383. package/dist/delegation/did-linkage.d.ts.map +0 -1
  384. package/dist/delegation/did-resolver-registry.d.ts.map +0 -1
  385. package/dist/delegation/did-web-resolver.d.ts.map +0 -1
  386. package/dist/delegation/holder-binding.d.ts.map +0 -1
  387. package/dist/delegation/index.d.ts.map +0 -1
  388. package/dist/delegation/outbound-headers.d.ts.map +0 -1
  389. package/dist/delegation/outbound-proof.d.ts.map +0 -1
  390. package/dist/delegation/scope-matcher.d.ts.map +0 -1
  391. package/dist/delegation/status-cache.d.ts.map +0 -1
  392. package/dist/delegation/statuslist-manager.d.ts.map +0 -1
  393. package/dist/delegation/storage/memory-graph-storage.d.ts.map +0 -1
  394. package/dist/delegation/storage/memory-statuslist-storage.d.ts.map +0 -1
  395. package/dist/delegation/utils.d.ts.map +0 -1
  396. package/dist/delegation/vc-issuer.d.ts.map +0 -1
  397. package/dist/delegation/vc-jwt-verify.d.ts.map +0 -1
  398. package/dist/delegation/vc-verification-checks.d.ts.map +0 -1
  399. package/dist/delegation/vc-verifier.d.ts.map +0 -1
  400. package/dist/delegation/vc-verifier.types.d.ts.map +0 -1
  401. package/dist/delegation/verification-method-key.d.ts.map +0 -1
  402. package/dist/errors.d.ts.map +0 -1
  403. package/dist/extension/declaration.d.ts.map +0 -1
  404. package/dist/extension/gate.d.ts.map +0 -1
  405. package/dist/extension/index.d.ts.map +0 -1
  406. package/dist/extension/settings.d.ts.map +0 -1
  407. package/dist/index.d.ts.map +0 -1
  408. package/dist/integrations/cheqd/dlr.d.ts.map +0 -1
  409. package/dist/integrations/cheqd/index.d.ts.map +0 -1
  410. package/dist/integrations/cheqd/linkage.d.ts.map +0 -1
  411. package/dist/integrations/cheqd/registrar.d.ts.map +0 -1
  412. package/dist/integrations/cheqd/resolver.d.ts.map +0 -1
  413. package/dist/integrations/cheqd/statuslist-resolver.d.ts.map +0 -1
  414. package/dist/logging/index.d.ts.map +0 -1
  415. package/dist/logging/logger.d.ts.map +0 -1
  416. package/dist/middleware/index.d.ts.map +0 -1
  417. package/dist/middleware/kya-os-transport.d.ts.map +0 -1
  418. package/dist/middleware/with-kya-os-server.d.ts.map +0 -1
  419. package/dist/middleware/with-kya-os.config-types.d.ts.map +0 -1
  420. package/dist/middleware/with-kya-os.d.ts.map +0 -1
  421. package/dist/middleware/with-kya-os.delegation-gate.d.ts.map +0 -1
  422. package/dist/middleware/with-kya-os.delegation-verify.d.ts.map +0 -1
  423. package/dist/middleware/with-kya-os.deps.d.ts.map +0 -1
  424. package/dist/middleware/with-kya-os.grants.d.ts.map +0 -1
  425. package/dist/middleware/with-kya-os.helpers.d.ts.map +0 -1
  426. package/dist/middleware/with-kya-os.policy-gate.d.ts.map +0 -1
  427. package/dist/middleware/with-kya-os.protocol.d.ts.map +0 -1
  428. package/dist/middleware/with-kya-os.session.d.ts.map +0 -1
  429. package/dist/middleware/with-kya-os.types.d.ts.map +0 -1
  430. package/dist/policy/approval.d.ts.map +0 -1
  431. package/dist/policy/classifier.d.ts.map +0 -1
  432. package/dist/policy/default-engine.d.ts.map +0 -1
  433. package/dist/policy/engine.d.ts.map +0 -1
  434. package/dist/policy/index.d.ts.map +0 -1
  435. package/dist/policy/projection.d.ts.map +0 -1
  436. package/dist/policy/types.d.ts.map +0 -1
  437. package/dist/proof/errors.d.ts.map +0 -1
  438. package/dist/proof/generator.d.ts.map +0 -1
  439. package/dist/proof/index.d.ts.map +0 -1
  440. package/dist/proof/verifier.d.ts.map +0 -1
  441. package/dist/providers/audit-log.d.ts.map +0 -1
  442. package/dist/providers/base.d.ts.map +0 -1
  443. package/dist/providers/grant-store.d.ts.map +0 -1
  444. package/dist/providers/index.d.ts.map +0 -1
  445. package/dist/providers/memory.d.ts.map +0 -1
  446. package/dist/providers/node-crypto.d.ts.map +0 -1
  447. package/dist/providers/runtime-fetch.d.ts.map +0 -1
  448. package/dist/providers/system-clock.d.ts.map +0 -1
  449. package/dist/providers/web-crypto.d.ts.map +0 -1
  450. package/dist/session/index.d.ts.map +0 -1
  451. package/dist/session/manager.d.ts.map +0 -1
  452. package/dist/session/session-store.d.ts.map +0 -1
  453. package/dist/types/protocol.d.ts.map +0 -1
  454. package/dist/utils/base58.d.ts.map +0 -1
  455. package/dist/utils/base64.d.ts.map +0 -1
  456. package/dist/utils/canonical-json.d.ts.map +0 -1
  457. package/dist/utils/crypto-service.d.ts.map +0 -1
  458. package/dist/utils/did-helpers.d.ts.map +0 -1
  459. package/dist/utils/ed25519-constants.d.ts.map +0 -1
  460. package/dist/utils/guards.d.ts.map +0 -1
  461. package/dist/utils/index.d.ts.map +0 -1
  462. package/dist/utils/ip-classifier.d.ts.map +0 -1
  463. package/dist/utils/safe-fetch-transports.d.ts.map +0 -1
  464. package/dist/utils/safe-fetch-types.d.ts.map +0 -1
  465. package/dist/utils/safe-fetch.d.ts.map +0 -1
  466. package/dist/utils/statuslist-bits.d.ts.map +0 -1
  467. package/dist/utils/statuslist-purpose.d.ts.map +0 -1
  468. package/dist/utils/ttl-cache.d.ts.map +0 -1
  469. package/dist/utils/url.d.ts.map +0 -1
@@ -15,6 +15,14 @@ function sameHead(left, right) {
15
15
  return left === right;
16
16
  return left.entryDigest === right.entryDigest && left.sequence === right.sequence;
17
17
  }
18
+ /** The later of two heads; at an equal sequence the first one is kept. */
19
+ function higherHead(current, candidate) {
20
+ if (candidate === null)
21
+ return current;
22
+ if (current === null)
23
+ return candidate;
24
+ return BigInt(candidate.sequence) > BigInt(current.sequence) ? candidate : current;
25
+ }
18
26
  function sameSigner(left, right) {
19
27
  return left.did === right.did && left.kid === right.kid && left.alg === right.alg;
20
28
  }
@@ -31,6 +39,12 @@ export class AuditRecorderService {
31
39
  config;
32
40
  maxAppendConflicts;
33
41
  initialization;
42
+ /** Highest head this recorder has itself appended in its epoch. */
43
+ committedHead = null;
44
+ /** Highest head the journal has reported in a compare-and-append result. */
45
+ reportedHead = null;
46
+ /** Write-ahead evidence objects held by submissions in flight, by object ID. */
47
+ heldEvidence = new Map();
34
48
  constructor(config) {
35
49
  this.config = config;
36
50
  if ((config.previousEpochId === undefined) !==
@@ -62,29 +76,66 @@ export class AuditRecorderService {
62
76
  throw new AuditProtocolError(AUDIT_ERROR_CODES.EPOCH_MISMATCH, 'Wrong audit ledger epoch');
63
77
  }
64
78
  await this.ensureInitialized();
65
- await this.persistSubmittedEvidence(submission.encryptedEvidence, producerEvent);
79
+ const held = this.holdEvidence(submission.encryptedEvidence);
66
80
  try {
67
- return await this.appendEvent(producerEvent, context, false, identity);
81
+ const stored = await this.persistSubmittedEvidence(submission.encryptedEvidence, producerEvent);
82
+ try {
83
+ return await this.appendEvent(producerEvent, context, false, identity);
84
+ }
85
+ catch (error) {
86
+ await this.disposeUncommittedEvidence(stored, identity);
87
+ throw error;
88
+ }
68
89
  }
69
- catch (error) {
70
- await this.disposeUncommittedEvidence(submission.encryptedEvidence, identity);
71
- throw error;
90
+ finally {
91
+ this.releaseEvidence(held);
72
92
  }
73
93
  }
74
94
  /**
75
- * Best-effort compensation for write-ahead evidence whose append failed: the
76
- * ciphertext is disposed only after re-confirming that no committed entry
77
- * claims this event identity, so a raced idempotent commit is never stripped
78
- * of its evidence. Failures here leave orphans for operator retention tooling.
95
+ * Registers this submission as a holder of each evidence object it carries.
96
+ * An object two submissions hold at once is marked shared for as long as
97
+ * either still holds it: both may have seen it as new, and the other may
98
+ * already have committed a reference to it.
79
99
  */
80
- async disposeUncommittedEvidence(evidence, identity) {
81
- if (evidence.length === 0 || this.config.evidence === undefined)
100
+ holdEvidence(evidence) {
101
+ const objectIds = [...new Set(evidence.map((item) => item.ref.objectId))];
102
+ for (const objectId of objectIds) {
103
+ const hold = this.heldEvidence.get(objectId);
104
+ if (hold === undefined)
105
+ this.heldEvidence.set(objectId, { holders: 1, shared: false });
106
+ else
107
+ this.heldEvidence.set(objectId, { holders: hold.holders + 1, shared: true });
108
+ }
109
+ return objectIds;
110
+ }
111
+ releaseEvidence(objectIds) {
112
+ for (const objectId of objectIds) {
113
+ const hold = this.heldEvidence.get(objectId);
114
+ if (hold.holders === 1)
115
+ this.heldEvidence.delete(objectId);
116
+ else
117
+ this.heldEvidence.set(objectId, { ...hold, holders: hold.holders - 1 });
118
+ }
119
+ }
120
+ /**
121
+ * Best-effort compensation for write-ahead evidence whose append failed. Only
122
+ * objects this submission newly stored are disposed: an object that already
123
+ * existed may be referenced by another committed entry, and so may one that
124
+ * a concurrent submission held at the same time. They are disposed only
125
+ * after re-confirming that no committed entry claims this event identity, so
126
+ * a raced idempotent commit is never stripped of its evidence. Failures here
127
+ * leave orphans for operator retention tooling.
128
+ */
129
+ async disposeUncommittedEvidence(stored, identity) {
130
+ if (stored.length === 0 || this.config.evidence === undefined)
82
131
  return;
83
132
  try {
84
133
  const committed = await this.config.journal.getByIdempotencyKey(this.config.ledgerId, identity.idempotencyKey);
85
134
  if (committed !== null)
86
135
  return;
87
- for (const item of evidence) {
136
+ for (const item of stored) {
137
+ if (this.heldEvidence.get(item.ref.objectId)?.shared === true)
138
+ continue;
88
139
  await this.config.evidence.applyRetention({
89
140
  kind: 'dispose',
90
141
  ref: item.ref,
@@ -114,15 +165,17 @@ export class AuditRecorderService {
114
165
  throw new AuditProtocolError(AUDIT_ERROR_CODES.UNAUTHORIZED_SUBMISSION, 'Event tenant does not match the authenticated tenant authority');
115
166
  }
116
167
  }
168
+ /** Persists write-ahead evidence and returns the objects that did not exist before. */
117
169
  async persistSubmittedEvidence(evidence, event) {
118
170
  if (evidence.length === 0)
119
- return;
171
+ return [];
120
172
  if (this.config.evidence === undefined) {
121
173
  throw new AuditProtocolError(AUDIT_ERROR_CODES.EVIDENCE_FAILURE, 'Encrypted evidence was submitted but no evidence provider is configured');
122
174
  }
123
175
  try {
124
176
  const refs = new Map(collectAuditEvidenceRefs(event).map((ref) => [ref.objectId, ref]));
125
177
  const submitted = new Set();
178
+ const stored = [];
126
179
  for (const item of evidence) {
127
180
  const referenced = refs.get(item.ref.objectId);
128
181
  if (submitted.has(item.ref.objectId) || referenced === undefined ||
@@ -130,8 +183,12 @@ export class AuditRecorderService {
130
183
  throw new AuditProtocolError(AUDIT_ERROR_CODES.EVIDENCE_FAILURE, 'Submitted evidence does not exactly match a unique frozen event reference', { objectId: item.ref.objectId });
131
184
  }
132
185
  submitted.add(item.ref.objectId);
186
+ const existed = await this.config.evidence.has(item.ref);
133
187
  await this.config.evidence.putIfAbsent(item);
188
+ if (!existed)
189
+ stored.push(item);
134
190
  }
191
+ return stored;
135
192
  }
136
193
  catch (error) {
137
194
  if (error instanceof AuditProtocolError &&
@@ -242,7 +299,14 @@ export class AuditRecorderService {
242
299
  }
243
300
  const ledger = this.ledgerRef();
244
301
  for (let attempt = 0; attempt <= this.maxAppendConflicts; attempt += 1) {
245
- const head = await this.config.journal.getHead(ledger);
302
+ // A read behind this recorder's own commits (a lagging replica) is not
303
+ // an append position: compare-and-append against the committed head, so
304
+ // a stale read costs one retry and a journal that really moved backwards
305
+ // answers with a conflict that proves it instead of accepting a second
306
+ // entry at a receipted sequence.
307
+ const committed = this.committedHead;
308
+ const reported = this.reportedHead;
309
+ const head = higherHead(committed, await this.config.journal.getHead(ledger));
246
310
  if (genesis && head !== null) {
247
311
  const raced = await this.config.journal.getByIdempotencyKey(this.config.ledgerId, idempotencyKey);
248
312
  if (raced !== null)
@@ -261,20 +325,52 @@ export class AuditRecorderService {
261
325
  catch (error) {
262
326
  throw new AuditProtocolError(AUDIT_ERROR_CODES.JOURNAL_FAILURE, 'Audit journal append failed', undefined, { cause: error });
263
327
  }
264
- if (result.kind === 'appended' || result.kind === 'duplicate') {
265
- return result.kind === 'duplicate'
266
- ? this.resolveDuplicate(result.entry, eventDigest)
267
- : result.entry;
328
+ if (result.kind === 'appended') {
329
+ const appended = {
330
+ ...ledger,
331
+ sequence: result.entry.core.sequence,
332
+ entryDigest: result.entry.entryDigest,
333
+ };
334
+ this.committedHead = higherHead(this.committedHead, appended);
335
+ this.reportedHead = higherHead(this.reportedHead, appended);
336
+ return result.entry;
268
337
  }
269
- if (result.kind === 'idempotency_conflict') {
270
- return this.resolveDuplicate(result.existing, eventDigest);
338
+ if (result.kind === 'duplicate' || result.kind === 'idempotency_conflict') {
339
+ const existing = result.kind === 'duplicate' ? result.entry : result.existing;
340
+ // A replica that lost the cold-start genesis race finds a genesis that
341
+ // differs only in recorder-authored timing; it is accepted on epoch
342
+ // configuration, never as an event-identity conflict.
343
+ return genesis
344
+ ? this.validateExistingGenesis(existing)
345
+ : this.resolveDuplicate(existing, eventDigest);
271
346
  }
347
+ this.assertNoRegression(result.actualHead, committed, reported);
348
+ this.reportedHead = higherHead(this.reportedHead, result.actualHead);
272
349
  if (sameHead(head, result.actualHead)) {
273
350
  throw new AuditProtocolError(AUDIT_ERROR_CODES.JOURNAL_FAILURE, 'Audit journal reported a head conflict without advancing its head');
274
351
  }
275
352
  }
276
353
  throw new AuditProtocolError(AUDIT_ERROR_CODES.APPEND_CONFLICT_EXHAUSTED, 'Audit append conflict retry budget exhausted');
277
354
  }
355
+ /**
356
+ * The compare-and-append result is the journal's authoritative head. One
357
+ * below a head this recorder had committed before issuing the append, or a
358
+ * different digest at a sequence the journal already reported, means a
359
+ * failover to a lagging primary or a restore. Retrying there would sign a
360
+ * second entry at a receipted sequence, so the recorder fails closed. The
361
+ * heads compared are the ones known when the append was issued, so a
362
+ * concurrent submission's later commit never makes a correct answer look
363
+ * stale.
364
+ */
365
+ assertNoRegression(actual, committed, reported) {
366
+ const forks = (known) => known !== null && actual !== null &&
367
+ known.sequence === actual.sequence && known.entryDigest !== actual.entryDigest;
368
+ if ((committed !== null &&
369
+ (actual === null || BigInt(actual.sequence) < BigInt(committed.sequence))) ||
370
+ forks(committed) || forks(reported)) {
371
+ throw new AuditProtocolError(AUDIT_ERROR_CODES.JOURNAL_FAILURE, 'Audit journal head moved behind a head this recorder already committed or saw', { committedSequence: committed?.sequence, reportedSequence: actual?.sequence });
372
+ }
373
+ }
278
374
  async identifyEvent(event, context) {
279
375
  const eventDigest = await digestAuditEvent(this.config.hasher, event);
280
376
  const idempotencyKey = await hashAuditValue(this.config.hasher, AUDIT_DIGEST_DOMAINS.idempotency, {
@@ -1 +1 @@
1
- {"version":3,"file":"recorder-service.js","sourceRoot":"","sources":["../../src/audit/recorder-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recorder-service.js","sourceRoot":"","sources":["../../src/audit/recorder-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,cAAc,EAAsC,MAAM,aAAa,CAAC;AACjF,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,wBAAwB,EACxB,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AA+DtB,SAAS,UAAU,CAAI,KAAQ;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,QAAQ,CAAC,IAAsB,EAAE,KAAuB;IAC/D,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,KAAK,KAAK,CAAC;IAC3D,OAAO,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC;AACpF,CAAC;AAED,0EAA0E;AAC1E,SAAS,UAAU,CAAC,OAAyB,EAAE,SAA2B;IACxE,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IACvC,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACvC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AACrF,CAAC;AAED,SAAS,UAAU,CAAC,IAAwB,EAAE,KAAyB;IACrE,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;AACpF,CAAC;AAED,SAAS,SAAS,CAAC,IAAc,EAAE,KAAe;IAChD,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAAiB,EACjB,QAA8B,EAC9B,UAAoB;IAEpB,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACnE,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,YAAY,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC;QAC7E,UAAU,CAAC,GAAG,KAAK,SAAS,CAAC;AACjC,CAAC;AAED,MAAM,OAAO,oBAAoB;IAUF;IATZ,kBAAkB,CAAS;IACpC,cAAc,CAA+B;IACrD,mEAAmE;IAC3D,aAAa,GAAqB,IAAI,CAAC;IAC/C,4EAA4E;IACpE,YAAY,GAAqB,IAAI,CAAC;IAC9C,gFAAgF;IAC/D,YAAY,GAAG,IAAI,GAAG,EAAgD,CAAC;IAExF,YAA6B,MAAkC;QAAlC,WAAM,GAAN,MAAM,CAA4B;QAC7D,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,SAAS,CAAC;YACxC,CAAC,MAAM,CAAC,gCAAgC,KAAK,SAAS,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,qBAAqB,EACvC,4EAA4E,CAC7E,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACtF,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,qBAAqB,EACvC,kEAAkE,CACnE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,UAAmC,EACnC,OAA4C;QAE5C,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,uBAAuB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACxE,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;YACtC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,uBAAuB,EACzC,kDAAkD,CACnD,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,QAAQ,CAAC,cAAc,CACxB,CAAC;QACF,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;QAEtF,6EAA6E;QAC7E,6EAA6E;QAC7E,yEAAyE;QACzE,IAAI,UAAU,CAAC,qBAAqB,KAAK,SAAS;YAChD,UAAU,CAAC,qBAAqB,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACjE,MAAM,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAChD,UAAU,CAAC,iBAAiB,EAC5B,aAAa,CACd,CAAC;YACF,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACxD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,YAAY,CAAC,QAA2C;QAC9D,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;;gBAClF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,eAAe,CAAC,SAA4B;QAClD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;gBAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;;gBACtD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,0BAA0B,CACtC,MAAyC,EACzC,QAAoC;QAEpC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO;QACtE,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,QAAQ,CAAC,cAAc,CACxB,CAAC;YACF,IAAI,SAAS,KAAK,IAAI;gBAAE,OAAO;YAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI;oBAAE,SAAS;gBACxE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;oBACxC,IAAI,EAAE,SAAS;oBACf,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,YAAY,EAAE,gBAAgB;oBAC9B,MAAM,EAAE,2BAA2B;iBACpC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,4EAA4E;QAC9E,CAAC;IACH,CAAC;IAEO,0BAA0B,CAChC,UAAmC,EACnC,OAA4C;QAE5C,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC3D,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,uBAAuB,EACzC,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACjD,MAAM,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAEO,sBAAsB,CAC5B,KAA+B,EAC/B,OAA4C;QAE5C,IAAI,CAAC,qBAAqB,CACxB,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,WAAW,EACnB,KAAK,CAAC,MAAM,CAAC,QAAQ,CACtB,EAAE,CAAC;YACF,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,uBAAuB,EACzC,oEAAoE,CACrE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpD,CAAC,qBAAqB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACtF,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,uBAAuB,EACzC,gEAAgE,CACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,uFAAuF;IAC/E,KAAK,CAAC,wBAAwB,CACpC,QAA2C,EAC3C,KAA+B;QAE/B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,gBAAgB,EAClC,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACxF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;YACpC,MAAM,MAAM,GAA6B,EAAE,CAAC;YAC5C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,UAAU,KAAK,SAAS;oBAC9D,gBAAgB,CAAC,UAAU,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9D,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,gBAAgB,EAClC,2EAA2E,EAC3E,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAChC,CAAC;gBACJ,CAAC;gBACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzD,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,CAAC,OAAO;oBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,kBAAkB;gBACrC,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,gBAAgB;gBAAE,MAAM,KAAK,CAAC;YACjE,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,gBAAgB,EAClC,0CAA0C,EAC1C,SAAS,EACT,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACrE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,eAAe,EAAE,oCAAoC,CAAC,CAAC;QACxG,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC9C,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAqB,CAAC,aAAa,CAAC;gBAC9E,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC9B,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;gBAC5C,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;gBACtC,gCAAgC,EAAE,IAAI,CAAC,MAAM,CAAC,gCAAiC;aAChF,CAAC,CAAC;YACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,qBAAqB,EACvC,yDAAyD,CAC1D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,WAAW,CACtC,IAAI,CAAC,YAAY,EAAE,EACnB;YACE,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;YAC7C,eAAe,EAAE,gBAAgB;YACjC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;YACpE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SACjC,EACD,IAAI,CACL,CAAC,OAAO,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEO,uBAAuB,CAAC,SAA6B;QAC3D,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,GAAG;gBACvC,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,IAAI;gBACvC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC5C,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa;gBACtD,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;gBACvD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,sBAAsB;gBACrD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO;gBAChD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ;gBACzD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;gBACtD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;gBACnE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC5D,OAAO,CAAC,MAAM,KAAK,QAAQ;gBAC3B,OAAO,CAAC,KAAK,KAAK,eAAe;gBACjC,OAAO,CAAC,eAAe,KAAK,IAAI,CAAC,MAAM,CAAC,eAAe;gBACvD,OAAO,CAAC,gCAAgC;oBACtC,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC;YACjD,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACnF,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,eAAe,EACjC,iFAAiF,EACjF,SAAS,EACT,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,OAAO,uBAAuB,CAAC;YAC7B,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;YACvE,SAAS,EAAE,sBAAsB;YACjC,YAAY,EAAE,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;YACnC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,MAAM,EAAE;gBACN,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;gBACjE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC9B,cAAc,EAAE,GAAG;aACpB;YACD,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;YACjE,MAAM,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE;YACpC,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,eAAe;gBACtB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe;oBAC7B,CAAC,CAAC;wBACE,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;wBAC5C,gCAAgC,EAC9B,IAAI,CAAC,MAAM,CAAC,gCAAgC;qBAC/C;oBACH,CAAC,CAAC,EAAE,CAAC;aACR;YACD,OAAO,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAC5E,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,KAA+B,EAC/B,OAA4C,EAC5C,OAAO,GAAG,KAAK,EACf,aAA+D;QAE/D,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,aAAa;YACnD,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE3C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,cAAc,CACf,CAAC;QACF,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,0EAA0E;YAC1E,yEAAyE;YACzE,OAAO,OAAO;gBACZ,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBACzC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,kBAAkB,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YACvE,uEAAuE;YACvE,wEAAwE;YACxE,yEAAyE;YACzE,uEAAuE;YACvE,iCAAiC;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;YACnC,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9E,IAAI,OAAO,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CACzD,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,cAAc,CACf,CAAC;gBACF,IAAI,KAAK,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACjE,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/E,IAAI,MAAM,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;oBAClD,MAAM;oBACN,YAAY,EAAE,IAAI;oBAClB,KAAK,EAAE,SAAS;oBAChB,cAAc;iBACf,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,eAAe,EACjC,6BAA6B,EAC7B,SAAS,EACT,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG;oBACf,GAAG,MAAM;oBACT,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ;oBACpC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;iBACtC,CAAC;gBACF,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBAC9D,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBAC5D,OAAO,MAAM,CAAC,KAAK,CAAC;YACtB,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;gBAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC9E,uEAAuE;gBACvE,oEAAoE;gBACpE,sDAAsD;gBACtD,OAAO,OAAO;oBACZ,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;oBACxC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChE,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YACrE,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,eAAe,EACjC,mEAAmE,CACpE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,yBAAyB,EAC3C,8CAA8C,CAC/C,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,kBAAkB,CACxB,MAAwB,EACxB,SAA2B,EAC3B,QAA0B;QAE1B,MAAM,KAAK,GAAG,CAAC,KAAuB,EAAW,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;YACnF,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,CAAC;QACjF,IAAI,CAAC,SAAS,KAAK,IAAI;YACrB,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1E,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,eAAe,EACjC,+EAA+E,EAC/E,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,KAA+B,EAC/B,OAA4C;QAE5C,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtE,MAAM,cAAc,GAAG,MAAM,cAAc,CACzC,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,oBAAoB,CAAC,WAAW,EAChC;YACE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;YAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CACF,CAAC;QACF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;IACzC,CAAC;IAEO,gBAAgB,CAAC,QAA4B,EAAE,MAAc;QACnE,IAAI,QAAQ,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YACpC,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,iBAAiB,EACnC,yEAAyE,EACzE,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CACzC,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,KAA+B,EAC/B,WAAmB,EACnB,IAAsB,EACtB,OAAgB;QAEhB,MAAM,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/E,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,kBAAkB,CAC1B,iBAAiB,CAAC,eAAe,EACjC,OAAO,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,uCAAuC,CAC5F,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3C,MAAM,sBAAsB,GAAG,MAAM,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5F,MAAM,IAAI,GAAG,mBAAmB,CAAC;YAC/B,MAAM,EAAE,qBAAqB;YAC7B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;YACxC,QAAQ;YACR,mBAAmB,EAAE,IAAI,EAAE,WAAW,IAAI,IAAI;YAC9C,UAAU;YACV,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;YAChC,WAAW;YACX,KAAK;YACL,sBAAsB;YACtB,cAAc,EAAE,qBAAqB;SACtC,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,6BAA6B,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACrE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC;QAC9E,OAAO,UAAU,CAAC;YAChB,IAAI;YACJ,WAAW;YACX,WAAW;YACX,eAAe,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;SACf,CAAC,CAAC;IAClC,CAAC;IAEO,SAAS;QACf,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;SAChC,CAAC;IACb,CAAC;CACF"}
@@ -40,4 +40,3 @@ export interface ReferenceRecorderOptions {
40
40
  export declare function sampleAuditEvent(sequence: number, overrides?: Partial<AuditProducerEventCoreV1>): AuditProducerEventCoreV1;
41
41
  /** Compose an in-memory reference recorder with a freshly generated Ed25519 signing key. */
42
42
  export declare function createInMemoryReferenceRecorder(options?: ReferenceRecorderOptions): Promise<ReferenceRecorder>;
43
- //# sourceMappingURL=reference-recorder.d.ts.map
@@ -49,4 +49,3 @@ export interface VerifyAuditBundleDependencies {
49
49
  }
50
50
  /** Offline bundle verification. Trust is supplied only through the policy argument. */
51
51
  export declare function verifyAuditBundle(bundle: AuditReplayBundleV1 | unknown, policy: AuditVerificationPolicyV1, dependencies: VerifyAuditBundleDependencies): Promise<AuditVerificationReportV1>;
52
- //# sourceMappingURL=replay-bundle.d.ts.map
@@ -3,7 +3,7 @@ import { hashAuditValue } from './crypto.js';
3
3
  import { AUDIT_DIGEST_DOMAINS } from './integrity.js';
4
4
  import { Rfc9162MerkleTree } from './merkle.js';
5
5
  import { auditObservationReceiptSchema, auditAnchorReceiptSchema, auditBundleConsistencyProofSchema, auditBundleInclusionProofSchema, auditReplayBundleSchema, auditVerificationPolicySchema, parseAuditBundleManifestCore, signedAuditCheckpointSchema, signedAuditEntrySchema, } from './schemas.js';
6
- import { AUDIT_REASON_CODES, AuditArtifactVerifier, mergeAuditDimensions, } from './verifier.js';
6
+ import { AUDIT_REASON_CODES, AuditArtifactVerifier, applyRequiredAuditProfile, mergeAuditDimensions, } from './verifier.js';
7
7
  const BUNDLE_SCHEMA = 'https://schema.kya-os.org/v1/protocol/audit/bundle-manifest/v1.0.0';
8
8
  const BUNDLE_SUITE = 'KYA-AUDIT-BUNDLE-JCS-SHA256-JWS-2026';
9
9
  export const AUDIT_BUNDLE_MEDIA_TYPES = Object.freeze({
@@ -123,10 +123,27 @@ export class AuditReplayBundleExporter {
123
123
  });
124
124
  }
125
125
  }
126
- function exporterAuthorized(core, policy) {
127
- return policy.authorizedExporters.some((authorization) => authorization.allowedPurposes.includes(core.purpose) &&
128
- core.selections.every((selection) => authorization.allowedLedgerIds.includes(selection.ledgerId)) &&
129
- authorization.signerKeys.some((key) => sameSigner(key.signer, core.exporter) && atTime(key, core.exportedAt)));
126
+ /**
127
+ * An export has no ledger position, so an exporter key bounded by
128
+ * `validFromCheckpoint` or `validUntilCheckpoint` can neither be confirmed nor
129
+ * refuted here: such a key leaves the exporter `unresolved`, never authorized.
130
+ */
131
+ function exporterAuthorization(core, policy) {
132
+ let result = 'unauthorized';
133
+ for (const authorization of policy.authorizedExporters) {
134
+ if (!authorization.allowedPurposes.includes(core.purpose) ||
135
+ !core.selections.every((selection) => authorization.allowedLedgerIds.includes(selection.ledgerId)))
136
+ continue;
137
+ for (const key of authorization.signerKeys) {
138
+ if (!sameSigner(key.signer, core.exporter) || !atTime(key, core.exportedAt))
139
+ continue;
140
+ if (key.validFromCheckpoint === undefined && key.validUntilCheckpoint === undefined) {
141
+ return 'authorized';
142
+ }
143
+ result = 'unresolved';
144
+ }
145
+ }
146
+ return result;
130
147
  }
131
148
  function componentMetadata(component) {
132
149
  return {
@@ -151,12 +168,26 @@ function includedArrays(bundle, mediaType) {
151
168
  function ledgerEpochKey(value) {
152
169
  return `${value.ledgerId}\0${value.ledgerEpochId}`;
153
170
  }
171
+ function sameLedgerEpoch(left, right) {
172
+ return left.ledgerId === right.ledgerId && left.ledgerEpochId === right.ledgerEpochId;
173
+ }
154
174
  function compareDecimal(left, right) {
155
175
  const a = BigInt(left);
156
176
  const b = BigInt(right);
157
177
  return a < b ? -1 : a > b ? 1 : 0;
158
178
  }
159
- async function verifyEntryGroups(entries, policy, artifacts) {
179
+ function inclusionKey(checkpointDigest, entryDigest, sequence) {
180
+ return `${checkpointDigest}\0${entryDigest}\0${sequence}`;
181
+ }
182
+ function consistencyKey(oldCheckpointDigest, newCheckpointDigest) {
183
+ return `${oldCheckpointDigest}\0${newCheckpointDigest}`;
184
+ }
185
+ /** True when the entries are exactly the leaves 0..treeSize-1, in order. */
186
+ function isCompletePrefix(entries, treeSize) {
187
+ return BigInt(entries.length) === BigInt(treeSize) &&
188
+ entries.every((entry, index) => entry.core.sequence === String(index));
189
+ }
190
+ async function verifyEntryGroups(entries, policy, artifacts, context) {
160
191
  const groups = new Map();
161
192
  const malformed = [];
162
193
  for (const candidate of entries) {
@@ -171,11 +202,11 @@ async function verifyEntryGroups(entries, policy, artifacts) {
171
202
  groups.set(key, group);
172
203
  }
173
204
  const reports = await Promise.all([
174
- ...[...groups.values()].map((group) => artifacts.verifyEntries(group, policy)),
175
- ...(malformed.length === 0 ? [] : [artifacts.verifyEntries(malformed, policy)]),
205
+ ...[...groups.values()].map((group) => artifacts.verifyEntries(group, policy, context)),
206
+ ...(malformed.length === 0 ? [] : [artifacts.verifyEntries(malformed, policy, context)]),
176
207
  ]);
177
208
  if (reports.length === 0)
178
- return artifacts.verifyEntries([], policy);
209
+ return artifacts.verifyEntries([], policy, context);
179
210
  const first = reports[0];
180
211
  return {
181
212
  ...first,
@@ -188,7 +219,7 @@ async function verifyEntryGroups(entries, policy, artifacts) {
188
219
  currentAuthorization: mergeAuditDimensions(...reports.map((report) => report.currentAuthorization)),
189
220
  };
190
221
  }
191
- function verifyCheckpointHistory(checkpoints, entries, selections) {
222
+ function verifyCheckpointHistory(checkpoints, entries, selections, verifiedConsistency) {
192
223
  const reasons = new Set();
193
224
  const groups = new Map();
194
225
  for (const checkpoint of checkpoints) {
@@ -198,18 +229,26 @@ function verifyCheckpointHistory(checkpoints, entries, selections) {
198
229
  groups.set(key, group);
199
230
  }
200
231
  for (const group of groups.values()) {
201
- group.sort((left, right) => {
202
- const a = BigInt(left.core.treeSize);
203
- const b = BigInt(right.core.treeSize);
204
- return a < b ? -1 : a > b ? 1 : 0;
205
- });
232
+ group.sort((left, right) => compareDecimal(left.core.treeSize, right.core.treeSize));
233
+ const included = new Set(group.map((checkpoint) => checkpoint.checkpointDigest));
206
234
  for (let index = 1; index < group.length; index += 1) {
207
235
  const previous = group[index - 1];
208
236
  const current = group[index];
209
237
  if (current.core.treeSize === previous.core.treeSize) {
210
238
  reasons.add(AUDIT_REASON_CODES.CHECKPOINT_FORK_DETECTED);
239
+ continue;
211
240
  }
212
- else if (current.core.previousCheckpointDigest !== previous.checkpointDigest) {
241
+ const claimed = current.core.previousCheckpointDigest;
242
+ if (claimed === previous.checkpointDigest)
243
+ continue;
244
+ // A subset export may omit intermediate checkpoints. An unlinked pair is
245
+ // accepted only when an omitted checkpoint could sit between the two and
246
+ // a verified consistency proof binds them: the proof, not the chain link,
247
+ // is the split-view guarantee. Naming another included checkpoint, or
248
+ // none, is a forked checkpoint chain.
249
+ const omittable = claimed !== null && !included.has(claimed) &&
250
+ BigInt(current.core.treeSize) - BigInt(previous.core.treeSize) > 1n;
251
+ if (!omittable || !verifiedConsistency.has(consistencyKey(previous.checkpointDigest, current.checkpointDigest))) {
213
252
  reasons.add(AUDIT_REASON_CODES.CHECKPOINT_CHAIN_MISMATCH);
214
253
  }
215
254
  }
@@ -232,18 +271,34 @@ function verifyCheckpointHistory(checkpoints, entries, selections) {
232
271
  if (details.previousEpochId === undefined ||
233
272
  details.previousTerminalCheckpointDigest === undefined)
234
273
  continue;
235
- const predecessorSelected = selections.some((selection) => selection.ledgerId === entry.core.ledgerId &&
236
- selection.ledgerEpochId === details.previousEpochId);
237
- if (predecessorSelected && !checkpoints.some((checkpoint) => checkpoint.core.ledgerId === entry.core.ledgerId &&
238
- checkpoint.core.ledgerEpochId === details.previousEpochId &&
239
- checkpoint.checkpointDigest === details.previousTerminalCheckpointDigest)) {
274
+ const predecessor = {
275
+ ledgerId: entry.core.ledgerId,
276
+ ledgerEpochId: details.previousEpochId,
277
+ };
278
+ if (!selections.some((selection) => sameLedgerEpoch(selection, predecessor)))
279
+ continue;
280
+ const terminal = checkpoints.find((checkpoint) => sameLedgerEpoch(checkpoint.core, predecessor) &&
281
+ checkpoint.checkpointDigest === details.previousTerminalCheckpointDigest);
282
+ if (terminal === undefined) {
240
283
  reasons.add(AUDIT_REASON_CODES.CHECKPOINT_CHAIN_MISMATCH);
284
+ continue;
285
+ }
286
+ // The successor genesis commits where the predecessor epoch ends, so a
287
+ // predecessor checkpoint signed over a larger tree is a second authority
288
+ // still checkpointing after rollover. Entries past the terminal are not:
289
+ // the terminal checkpoint's own lifecycle event lands there legitimately.
290
+ const terminalSize = BigInt(terminal.core.treeSize);
291
+ if (checkpoints.some((checkpoint) => sameLedgerEpoch(checkpoint.core, predecessor) &&
292
+ BigInt(checkpoint.core.treeSize) > terminalSize)) {
293
+ reasons.add(AUDIT_REASON_CODES.CHECKPOINT_FORK_DETECTED);
241
294
  }
242
295
  }
243
296
  return dim(reasons.size === 0 ? 'valid' : 'invalid', reasons);
244
297
  }
245
298
  async function verifyMerkleProofComponents(bundle, entries, checkpoints, hasher) {
246
299
  const reasons = new Set();
300
+ const inclusions = new Set();
301
+ const consistencies = new Set();
247
302
  const tree = new Rfc9162MerkleTree(hasher);
248
303
  const inclusionCandidates = includedArrays(bundle, AUDIT_BUNDLE_MEDIA_TYPES.inclusionProofs);
249
304
  for (const candidate of inclusionCandidates) {
@@ -273,6 +328,9 @@ async function verifyMerkleProofComponents(bundle, entries, checkpoints, hasher)
273
328
  }))) {
274
329
  reasons.add(AUDIT_REASON_CODES.MERKLE_PROOF_INVALID);
275
330
  }
331
+ else {
332
+ inclusions.add(inclusionKey(item.checkpointDigest, item.entryDigest, item.sequence));
333
+ }
276
334
  }
277
335
  const consistencyCandidates = includedArrays(bundle, AUDIT_BUNDLE_MEDIA_TYPES.consistencyProofs);
278
336
  for (const candidate of consistencyCandidates) {
@@ -299,6 +357,32 @@ async function verifyMerkleProofComponents(bundle, entries, checkpoints, hasher)
299
357
  }))) {
300
358
  reasons.add(AUDIT_REASON_CODES.MERKLE_PROOF_INVALID);
301
359
  }
360
+ else {
361
+ consistencies.add(consistencyKey(item.oldCheckpointDigest, item.newCheckpointDigest));
362
+ }
363
+ }
364
+ return {
365
+ dimension: dim(reasons.size === 0 ? 'valid' : 'invalid', reasons),
366
+ inclusions,
367
+ consistencies,
368
+ };
369
+ }
370
+ /**
371
+ * Without the complete leaf prefix a checkpoint's root cannot be recomputed,
372
+ * so every entry it covers must instead carry a verified inclusion proof
373
+ * against it, and a covered head entry must be the one the checkpoint signed.
374
+ */
375
+ function verifyInclusionBinding(checkpoint, covered, verifiedInclusions) {
376
+ const reasons = new Set();
377
+ const headSequence = String(BigInt(checkpoint.core.treeSize) - 1n);
378
+ for (const entry of covered) {
379
+ if (!verifiedInclusions.has(inclusionKey(checkpoint.checkpointDigest, entry.entryDigest, entry.core.sequence))) {
380
+ reasons.add(AUDIT_REASON_CODES.MERKLE_PROOF_MISSING);
381
+ }
382
+ if (entry.core.sequence === headSequence &&
383
+ entry.entryDigest !== checkpoint.core.headEntryDigest) {
384
+ reasons.add(AUDIT_REASON_CODES.CHECKPOINT_RANGE_MISMATCH);
385
+ }
302
386
  }
303
387
  return dim(reasons.size === 0 ? 'valid' : 'invalid', reasons);
304
388
  }
@@ -425,7 +509,7 @@ export async function verifyAuditBundle(bundle, policy, dependencies) {
425
509
  };
426
510
  }
427
511
  if (!auditReplayBundleSchema.safeParse(bundle).success) {
428
- return malformedBundleReport(policy);
512
+ return applyRequiredAuditProfile(malformedBundleReport(policy), policy);
429
513
  }
430
514
  const replayBundle = bundle;
431
515
  const reasons = new Set();
@@ -439,9 +523,11 @@ export async function verifyAuditBundle(bundle, policy, dependencies) {
439
523
  if (core === undefined || !policy.acceptedAlgorithms.includes(core.exporter.alg)) {
440
524
  reasons.add(AUDIT_REASON_CODES.UNSUPPORTED_ALGORITHM);
441
525
  }
442
- if (core === undefined || !exporterAuthorized(core, policy)) {
526
+ const exporter = core === undefined ? 'unauthorized' : exporterAuthorization(core, policy);
527
+ if (exporter === 'unauthorized')
443
528
  reasons.add(AUDIT_REASON_CODES.BUNDLE_EXPORTER_UNAUTHORIZED);
444
- }
529
+ if (exporter === 'unresolved')
530
+ reasons.add(AUDIT_REASON_CODES.KEY_BOUNDARY_UNRESOLVED);
445
531
  if (core !== undefined) {
446
532
  const [manifestDigest, policyDigest] = await Promise.all([
447
533
  hashAuditValue(dependencies.hasher, AUDIT_DIGEST_DOMAINS.bundleManifest, core),
@@ -496,12 +582,16 @@ export async function verifyAuditBundle(bundle, policy, dependencies) {
496
582
  const checkpointCandidates = includedArrays(replayBundle, AUDIT_BUNDLE_MEDIA_TYPES.checkpoints);
497
583
  const observationCandidates = includedArrays(replayBundle, AUDIT_BUNDLE_MEDIA_TYPES.observations);
498
584
  const anchorCandidates = includedArrays(replayBundle, AUDIT_BUNDLE_MEDIA_TYPES.anchors);
499
- const artifacts = dependencies.artifacts ?? new AuditArtifactVerifier(dependencies);
500
- const artifactReport = await verifyEntryGroups(entryCandidates, policy, artifacts);
501
585
  const entries = entryCandidates.filter((candidate) => signedAuditEntrySchema.safeParse(candidate).success);
502
586
  const checkpoints = checkpointCandidates.filter((candidate) => signedAuditCheckpointSchema.safeParse(candidate).success);
587
+ const observations = observationCandidates.filter((candidate) => auditObservationReceiptSchema.safeParse(candidate).success);
588
+ // The bundle's own checkpoints are what checkpoint-bounded key policies name.
589
+ const context = { checkpoints };
590
+ const artifacts = dependencies.artifacts ?? new AuditArtifactVerifier(dependencies);
591
+ const artifactReport = await verifyEntryGroups(entryCandidates, policy, artifacts, context);
503
592
  let checkpointDimension = artifactReport.checkpointIntegrity;
504
593
  if (checkpointCandidates.length > 0) {
594
+ const proofs = await verifyMerkleProofComponents(replayBundle, entries, checkpoints, dependencies.hasher);
505
595
  const checkpointResults = [];
506
596
  for (const candidate of checkpointCandidates) {
507
597
  if (!signedAuditCheckpointSchema.safeParse(candidate).success) {
@@ -509,12 +599,15 @@ export async function verifyAuditBundle(bundle, policy, dependencies) {
509
599
  continue;
510
600
  }
511
601
  const checkpoint = candidate;
512
- const checkpointEntries = entries.filter((entry) => entry.core.ledgerId === checkpoint.core.ledgerId &&
513
- entry.core.ledgerEpochId === checkpoint.core.ledgerEpochId &&
602
+ const covered = entries.filter((entry) => sameLedgerEpoch(entry.core, checkpoint.core) &&
514
603
  BigInt(entry.core.sequence) < BigInt(checkpoint.core.treeSize));
515
- checkpointResults.push(await artifacts.verifyCheckpoint(checkpoint, checkpointEntries, policy));
604
+ // A subset export (a sequence range, or no entries at all) cannot
605
+ // recompute the root, so its entries are bound by inclusion proofs.
606
+ checkpointResults.push(isCompletePrefix(covered, checkpoint.core.treeSize)
607
+ ? await artifacts.verifyCheckpoint(checkpoint, covered, policy, context)
608
+ : mergeAuditDimensions(await artifacts.verifySignedCheckpoint(checkpoint, policy, context), verifyInclusionBinding(checkpoint, covered, proofs.inclusions)));
516
609
  }
517
- checkpointDimension = mergeAuditDimensions(...checkpointResults, verifyCheckpointHistory(checkpoints, entries, core.selections), await verifyMerkleProofComponents(replayBundle, entries, checkpoints, dependencies.hasher));
610
+ checkpointDimension = mergeAuditDimensions(...checkpointResults, verifyCheckpointHistory(checkpoints, entries, core.selections, proofs.consistencies), proofs.dimension);
518
611
  }
519
612
  else if (core.selections.some((selection) => selection.checkpointTreeSizes.length > 0)) {
520
613
  checkpointDimension = dim('invalid', [AUDIT_REASON_CODES.CHECKPOINT_MISSING]);
@@ -531,21 +624,35 @@ export async function verifyAuditBundle(bundle, policy, dependencies) {
531
624
  const checkpoint = checkpoints.find((candidate) => candidate.checkpointDigest === receipt.core.checkpointDigest);
532
625
  observationResults.push(checkpoint === undefined
533
626
  ? dim('invalid', [AUDIT_REASON_CODES.OBSERVATION_SCOPE_MISMATCH])
534
- : await artifacts.verifyObservation(checkpoint, receipt, policy));
627
+ : await artifacts.verifyObservation(checkpoint, receipt, policy, context));
535
628
  }
536
- const validObservations = observationCandidates.filter((candidate) => auditObservationReceiptSchema.safeParse(candidate).success);
537
- anchorDimension = mergeAuditDimensions(...observationResults, verifyObservationHistory(validObservations));
629
+ anchorDimension = mergeAuditDimensions(...observationResults, verifyObservationHistory(observations));
538
630
  }
539
631
  if (anchorCandidates.length > 0) {
540
632
  anchorDimension = mergeAuditDimensions(anchorDimension, await verifySupportingAnchors(anchorCandidates, checkpoints, policy, dependencies.verifySupportingAnchor));
541
633
  }
542
- const manifestDimension = dim(reasons.size === 0 ? 'valid' : 'invalid', reasons);
543
- return {
634
+ // An exporter key bound that cannot be placed leaves the manifest
635
+ // undecided, never valid; any other manifest reason is a failure.
636
+ const manifestDimension = dim(reasons.size === 0
637
+ ? 'valid'
638
+ : [...reasons].every((reason) => reason === AUDIT_REASON_CODES.KEY_BOUNDARY_UNRESOLVED)
639
+ ? 'indeterminate'
640
+ : 'invalid', reasons);
641
+ // Entry recorder keys were already evaluated per ledger epoch group.
642
+ const currentKeys = artifacts.verifyCurrentKeys(policy, {
643
+ checkpoints,
644
+ observations,
645
+ exporter: core.exporter,
646
+ });
647
+ return applyRequiredAuditProfile({
544
648
  ...artifactReport,
545
649
  cryptographicIntegrity: mergeAuditDimensions(manifestDimension, artifactReport.cryptographicIntegrity),
546
650
  checkpointIntegrity: checkpointDimension,
547
651
  anchorIntegrity: anchorDimension,
548
652
  scopeEvidenceCompleteness: selectionCompleteness(core?.selections ?? [], entries, replayBundle.components.filter((component) => component.disposition !== 'included')),
549
- };
653
+ currentAuthorization: currentKeys === undefined
654
+ ? artifactReport.currentAuthorization
655
+ : mergeAuditDimensions(artifactReport.currentAuthorization, currentKeys),
656
+ }, policy, { supportingAnchors: anchorCandidates.length > 0 });
550
657
  }
551
658
  //# sourceMappingURL=replay-bundle.js.map