@kya-os/mcp 1.16.1 → 1.17.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 (470) hide show
  1. package/AUDITABILITY.md +129 -8
  2. package/CHANGELOG.md +591 -0
  3. package/CONFORMANCE.md +4 -4
  4. package/README.md +65 -26
  5. package/SPEC.md +85 -17
  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 +0 -1
  92. package/dist/card/delegation.js +25 -15
  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 +26 -5
  128. package/dist/delegation/chain-enforcement.js +110 -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 +24 -4
  202. package/dist/middleware/with-kya-os-server.js +7 -0
  203. package/dist/middleware/with-kya-os-server.js.map +1 -1
  204. package/dist/middleware/with-kya-os.config-types.d.ts +22 -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 +45 -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 +9 -6
  310. package/schemas/card-delegation-credential.json +4 -1
  311. package/schemas/delegation-credential.json +122 -30
  312. package/dist/audit/adapters/legacy-audit-log.d.ts.map +0 -1
  313. package/dist/audit/adapters/mcp.d.ts.map +0 -1
  314. package/dist/audit/assurance.d.ts.map +0 -1
  315. package/dist/audit/checkpoint-coordinator.d.ts.map +0 -1
  316. package/dist/audit/checkpoint.d.ts.map +0 -1
  317. package/dist/audit/cli.d.ts.map +0 -1
  318. package/dist/audit/crypto.d.ts.map +0 -1
  319. package/dist/audit/errors.d.ts.map +0 -1
  320. package/dist/audit/evidence.d.ts.map +0 -1
  321. package/dist/audit/index.d.ts.map +0 -1
  322. package/dist/audit/integrity.d.ts.map +0 -1
  323. package/dist/audit/merkle.d.ts.map +0 -1
  324. package/dist/audit/mirror-service.d.ts.map +0 -1
  325. package/dist/audit/projection.d.ts.map +0 -1
  326. package/dist/audit/providers/anchor.d.ts.map +0 -1
  327. package/dist/audit/providers/evidence.d.ts.map +0 -1
  328. package/dist/audit/providers/journal.d.ts.map +0 -1
  329. package/dist/audit/providers/memory-journal.d.ts.map +0 -1
  330. package/dist/audit/providers/observer.d.ts.map +0 -1
  331. package/dist/audit/providers/outbox.d.ts.map +0 -1
  332. package/dist/audit/providers/recorder-client.d.ts.map +0 -1
  333. package/dist/audit/providers/source-state.d.ts.map +0 -1
  334. package/dist/audit/read-contract.d.ts.map +0 -1
  335. package/dist/audit/read-service.d.ts.map +0 -1
  336. package/dist/audit/recorder-service.d.ts.map +0 -1
  337. package/dist/audit/reference-recorder.d.ts.map +0 -1
  338. package/dist/audit/replay-bundle.d.ts.map +0 -1
  339. package/dist/audit/schemas.d.ts.map +0 -1
  340. package/dist/audit/service.d.ts.map +0 -1
  341. package/dist/audit/testing/index.d.ts.map +0 -1
  342. package/dist/audit/testing/provider-contracts.d.ts.map +0 -1
  343. package/dist/audit/types.d.ts.map +0 -1
  344. package/dist/audit/verifier.d.ts.map +0 -1
  345. package/dist/auth/handshake.d.ts.map +0 -1
  346. package/dist/auth/index.d.ts.map +0 -1
  347. package/dist/auth/types.d.ts.map +0 -1
  348. package/dist/authz/accountability.d.ts.map +0 -1
  349. package/dist/authz/adapter.d.ts.map +0 -1
  350. package/dist/authz/examples/inmemory-oidc.d.ts.map +0 -1
  351. package/dist/authz/index.d.ts.map +0 -1
  352. package/dist/authz/oidc/authorize.d.ts.map +0 -1
  353. package/dist/authz/oidc/metadata.d.ts.map +0 -1
  354. package/dist/authz/oidc/oidc-adapter.d.ts.map +0 -1
  355. package/dist/authz/oidc/pending-flow-store.d.ts.map +0 -1
  356. package/dist/authz/oidc/pkce.d.ts.map +0 -1
  357. package/dist/authz/registry.d.ts.map +0 -1
  358. package/dist/authz/requirement.d.ts.map +0 -1
  359. package/dist/card/build.d.ts.map +0 -1
  360. package/dist/card/builder.d.ts.map +0 -1
  361. package/dist/card/cimd.d.ts.map +0 -1
  362. package/dist/card/delegation.d.ts.map +0 -1
  363. package/dist/card/emit.d.ts.map +0 -1
  364. package/dist/card/index.d.ts.map +0 -1
  365. package/dist/card/middleware.d.ts.map +0 -1
  366. package/dist/card/proof/build.d.ts.map +0 -1
  367. package/dist/card/proof/canonical.d.ts.map +0 -1
  368. package/dist/card/proof/http-sig.d.ts.map +0 -1
  369. package/dist/card/proof/index.d.ts.map +0 -1
  370. package/dist/card/proof/nonce-cache.d.ts.map +0 -1
  371. package/dist/card/proof/signer.d.ts.map +0 -1
  372. package/dist/card/proof/types.d.ts.map +0 -1
  373. package/dist/card/proof/verify.d.ts.map +0 -1
  374. package/dist/card/resolve.d.ts.map +0 -1
  375. package/dist/card/revocation.d.ts.map +0 -1
  376. package/dist/card/schema.d.ts.map +0 -1
  377. package/dist/card/verify.d.ts.map +0 -1
  378. package/dist/delegation/audience-validator.d.ts.map +0 -1
  379. package/dist/delegation/bitstring.d.ts.map +0 -1
  380. package/dist/delegation/cascading-revocation.d.ts.map +0 -1
  381. package/dist/delegation/chain-enforcement.d.ts.map +0 -1
  382. package/dist/delegation/delegation-graph.d.ts.map +0 -1
  383. package/dist/delegation/did-key-resolver.d.ts.map +0 -1
  384. package/dist/delegation/did-linkage.d.ts.map +0 -1
  385. package/dist/delegation/did-resolver-registry.d.ts.map +0 -1
  386. package/dist/delegation/did-web-resolver.d.ts.map +0 -1
  387. package/dist/delegation/holder-binding.d.ts.map +0 -1
  388. package/dist/delegation/index.d.ts.map +0 -1
  389. package/dist/delegation/outbound-headers.d.ts.map +0 -1
  390. package/dist/delegation/outbound-proof.d.ts.map +0 -1
  391. package/dist/delegation/scope-matcher.d.ts.map +0 -1
  392. package/dist/delegation/status-cache.d.ts.map +0 -1
  393. package/dist/delegation/statuslist-manager.d.ts.map +0 -1
  394. package/dist/delegation/storage/memory-graph-storage.d.ts.map +0 -1
  395. package/dist/delegation/storage/memory-statuslist-storage.d.ts.map +0 -1
  396. package/dist/delegation/utils.d.ts.map +0 -1
  397. package/dist/delegation/vc-issuer.d.ts.map +0 -1
  398. package/dist/delegation/vc-jwt-verify.d.ts.map +0 -1
  399. package/dist/delegation/vc-verification-checks.d.ts.map +0 -1
  400. package/dist/delegation/vc-verifier.d.ts.map +0 -1
  401. package/dist/delegation/vc-verifier.types.d.ts.map +0 -1
  402. package/dist/delegation/verification-method-key.d.ts.map +0 -1
  403. package/dist/errors.d.ts.map +0 -1
  404. package/dist/extension/declaration.d.ts.map +0 -1
  405. package/dist/extension/gate.d.ts.map +0 -1
  406. package/dist/extension/index.d.ts.map +0 -1
  407. package/dist/extension/settings.d.ts.map +0 -1
  408. package/dist/index.d.ts.map +0 -1
  409. package/dist/integrations/cheqd/dlr.d.ts.map +0 -1
  410. package/dist/integrations/cheqd/index.d.ts.map +0 -1
  411. package/dist/integrations/cheqd/linkage.d.ts.map +0 -1
  412. package/dist/integrations/cheqd/registrar.d.ts.map +0 -1
  413. package/dist/integrations/cheqd/resolver.d.ts.map +0 -1
  414. package/dist/integrations/cheqd/statuslist-resolver.d.ts.map +0 -1
  415. package/dist/logging/index.d.ts.map +0 -1
  416. package/dist/logging/logger.d.ts.map +0 -1
  417. package/dist/middleware/index.d.ts.map +0 -1
  418. package/dist/middleware/kya-os-transport.d.ts.map +0 -1
  419. package/dist/middleware/with-kya-os-server.d.ts.map +0 -1
  420. package/dist/middleware/with-kya-os.config-types.d.ts.map +0 -1
  421. package/dist/middleware/with-kya-os.d.ts.map +0 -1
  422. package/dist/middleware/with-kya-os.delegation-gate.d.ts.map +0 -1
  423. package/dist/middleware/with-kya-os.delegation-verify.d.ts.map +0 -1
  424. package/dist/middleware/with-kya-os.deps.d.ts.map +0 -1
  425. package/dist/middleware/with-kya-os.grants.d.ts.map +0 -1
  426. package/dist/middleware/with-kya-os.helpers.d.ts.map +0 -1
  427. package/dist/middleware/with-kya-os.policy-gate.d.ts.map +0 -1
  428. package/dist/middleware/with-kya-os.protocol.d.ts.map +0 -1
  429. package/dist/middleware/with-kya-os.session.d.ts.map +0 -1
  430. package/dist/middleware/with-kya-os.types.d.ts.map +0 -1
  431. package/dist/policy/approval.d.ts.map +0 -1
  432. package/dist/policy/classifier.d.ts.map +0 -1
  433. package/dist/policy/default-engine.d.ts.map +0 -1
  434. package/dist/policy/engine.d.ts.map +0 -1
  435. package/dist/policy/index.d.ts.map +0 -1
  436. package/dist/policy/projection.d.ts.map +0 -1
  437. package/dist/policy/types.d.ts.map +0 -1
  438. package/dist/proof/errors.d.ts.map +0 -1
  439. package/dist/proof/generator.d.ts.map +0 -1
  440. package/dist/proof/index.d.ts.map +0 -1
  441. package/dist/proof/verifier.d.ts.map +0 -1
  442. package/dist/providers/audit-log.d.ts.map +0 -1
  443. package/dist/providers/base.d.ts.map +0 -1
  444. package/dist/providers/grant-store.d.ts.map +0 -1
  445. package/dist/providers/index.d.ts.map +0 -1
  446. package/dist/providers/memory.d.ts.map +0 -1
  447. package/dist/providers/node-crypto.d.ts.map +0 -1
  448. package/dist/providers/runtime-fetch.d.ts.map +0 -1
  449. package/dist/providers/system-clock.d.ts.map +0 -1
  450. package/dist/providers/web-crypto.d.ts.map +0 -1
  451. package/dist/session/index.d.ts.map +0 -1
  452. package/dist/session/manager.d.ts.map +0 -1
  453. package/dist/session/session-store.d.ts.map +0 -1
  454. package/dist/types/protocol.d.ts.map +0 -1
  455. package/dist/utils/base58.d.ts.map +0 -1
  456. package/dist/utils/base64.d.ts.map +0 -1
  457. package/dist/utils/canonical-json.d.ts.map +0 -1
  458. package/dist/utils/crypto-service.d.ts.map +0 -1
  459. package/dist/utils/did-helpers.d.ts.map +0 -1
  460. package/dist/utils/ed25519-constants.d.ts.map +0 -1
  461. package/dist/utils/guards.d.ts.map +0 -1
  462. package/dist/utils/index.d.ts.map +0 -1
  463. package/dist/utils/ip-classifier.d.ts.map +0 -1
  464. package/dist/utils/safe-fetch-transports.d.ts.map +0 -1
  465. package/dist/utils/safe-fetch-types.d.ts.map +0 -1
  466. package/dist/utils/safe-fetch.d.ts.map +0 -1
  467. package/dist/utils/statuslist-bits.d.ts.map +0 -1
  468. package/dist/utils/statuslist-purpose.d.ts.map +0 -1
  469. package/dist/utils/ttl-cache.d.ts.map +0 -1
  470. package/dist/utils/url.d.ts.map +0 -1
package/README.md CHANGED
@@ -252,7 +252,7 @@ The server is operated by a maintainer on pinned releases; this repo does not de
252
252
  | **Revocation** | StatusList2021 bitstring with cascading revocation |
253
253
  | **Replay prevention** | Nonce-based handshake with timestamp skew validation |
254
254
  | **Verifiable auditability** | Typed producer events, authoritative atomic recorder, signed chain receipts, RFC 9162 checkpoints, independent observation, encrypted evidence references, replay bundles, and offline CLI |
255
- | **Extensible** | Bring your own KMS, HSM, nonce cache (Redis, DynamoDB, KV), or DID method |
255
+ | **Extensible** | Bring your own KMS, HSM, atomic nonce provider, or DID method |
256
256
 
257
257
  ### Multi-instance deployments
258
258
 
@@ -263,25 +263,77 @@ implementation for **every** runtime-state seam — the nonce cache
263
263
  `PendingFlowStore`, `SessionStore`) — so replay protection, grants, pending OAuth
264
264
  flows, and sessions are shared across instances and survive restarts.
265
265
 
266
+ Delegation grants must retain their original signed evidence: `credentialJwt` for VC-JWTs, or `delegationCredential` for object VCs.
267
+ `wrapWithDelegation` revalidates that evidence with the same verifier as a directly presented credential on every reuse, including chain resolution, audience, scope, expiry, and configured status/revocation checks.
268
+ Store providers must preserve these fields and return only active grants; cache availability alone does not authorize a request.
269
+ Grant expiry is bounded by the earliest credential or constraint expiry in the verified chain.
270
+
271
+ **Upgrade compatibility:** legacy grants without signed evidence intentionally return `needs_authorization`; re-present a valid delegation or complete the normal consent flow to replace them.
272
+ Do not reconstruct unsigned credentials from cached metadata.
273
+ Under `holderBinding: 'enforce'`, did:key session retries also require a fresh holder proof.
274
+ `off` and `warn` retain their documented session behavior, and non-did:key binding remains deferred; neither provides an enforced proof-of-possession guarantee for those requests.
275
+ Status and chain providers now receive reads on grant reuse as they do on direct calls, and an unavailable required provider prevents reuse.
276
+ This does not strengthen a provider's own status-cache freshness policy.
277
+
278
+ VC-JWT envelope `exp` and `nbf` are checked on every verification, including signature-cache hits and grant reuse.
279
+ Omitted claims remain supported.
280
+ A present claim must be a finite NumericDate.
281
+ An expired envelope denies authorization even when the embedded VC is otherwise current, and verified envelope expiry can shorten the cached grant's lifetime.
282
+ `nbf` allows `JWT_NBF_LEEWAY_SECONDS` (30 seconds) of clock skew; `exp` allows none.
283
+
284
+ **Delegation issuers:** each re-delegation must be signed by its parent's subject.
285
+ The `issuerDid` inside a credential is only a claim, so the chain walk also checks who signed it.
286
+ Set `delegation.trustedRootIssuers` to the DIDs allowed to issue root delegations, the Responsible Party for the whole chain.
287
+ With it set, a chain whose root is signed by any other DID is rejected, including when a stored grant is reused.
288
+ Without it, any issuer is accepted, including an agent signing a delegation for itself, and the middleware logs a warning at startup.
289
+ A root whose claimed `issuerDid` differs from its signer is still accepted, and logged.
290
+
291
+ **Nonce providers:** give your `NonceCacheProvider` an atomic `consume(nonce, ttlSeconds, agentDid?)`.
292
+ It must record an unseen `(agentDid, nonce)`, return literal `true` only to the call that recorded it, and reject on storage failure.
293
+ Implement the claim in the shared backend with a conditional insert and expiry, not with a local mutex around remote reads and writes.
294
+ Eventually consistent KV alone cannot provide it.
295
+ The bundled memory provider implements `consume`, but it protects only one cache instance and loses its state on restart.
296
+ `consume` is optional: a provider without it keeps working by falling back to `has` then `add`, which cannot stop concurrent duplicates of one signed request, and a warning is logged once.
297
+ Set `requireAtomicNonce: true` on the middleware, `ProofVerifier`, `SessionManager` or `consumeFromNonceCacheProvider` to refuse that fallback; each then throws at construction for a provider without `consume`.
298
+ Any result other than literal `true`, or a storage failure, denies admission.
299
+ `withKyaOs` takes the same `nonceCache` and `requireAtomicNonce` options (and `responseProofProfile`) and passes them to the middleware.
300
+
301
+ Providers must honor the requested retention duration.
302
+ The verifiers retain nonces through the final accepted second, including future timestamps and clock skew, while preserving a longer configured TTL.
303
+ The detached verifier also covers later increases up to its supported `setTimestampSkew` maximum.
304
+ Custom card `consumeNonceIfFresh` callbacks must honor the new third `minTtlSec` argument; the bundled card cache and provider adapter do so.
305
+ Instances sharing a replay namespace must agree on the longest proof-acceptance policy and retain state accordingly.
306
+ Retire old non-atomic writers before claiming atomic protection.
307
+ Preserve or extend existing records through the full remaining acceptance window; merely keeping their old, shorter TTLs is insufficient.
308
+ If the backend cannot extend them safely, pause affected admission and wait out that window before cutover.
309
+ Do not clear records while their proofs may still be accepted.
310
+
266
311
  ---
267
312
 
268
313
  ## Integrations
269
314
 
270
- KYA-OS reaches the outside world two ways: shipped **modules** for specific
271
- systems and standards, and typed **adapter seams** with in-memory defaults you
272
- swap out. Adding one is "drop a folder under `src/integrations/`" or "implement
273
- this interface" — contributions welcome.
274
-
275
- ### Modules
315
+ KYA-OS integrates through typed **seams** — the adapter pattern is the whole
316
+ model. Every external dependency is a port with an in-memory or reference
317
+ default; bind your own backend, or drop in a shipped adapter. Adding one is
318
+ "implement this interface" (or, for a self-contained system, "drop a folder
319
+ under `src/integrations/`") — contributions welcome.
276
320
 
277
- | Module | Adds | Docs |
321
+ | Seam (port) | Reference / default | Bring your own |
278
322
  | --- | --- | --- |
279
- | **cheqd** (on-chain) | `did:cheqd` resolution, StatusList2021 revocation, DID-Linked Resources + registrar | [src/integrations/cheqd](./src/integrations/cheqd/README.md) |
280
- | **OAuth / OIDC** | PKCE + protected-resource metadata; generic-OIDC reference adapter | [`@kya-os/mcp/authz`](./src/authz/) · [example](./examples/authz-inspector/) |
281
- | **Verifiable audit** | RFC 9162 ledger; local or Checkpoint recorders, on-chain anchoring | [AUDITABILITY.md](./AUDITABILITY.md) |
323
+ | DID resolution — `DIDResolver` | `did:key`, `did:web` | `did:cheqd`, custom methods |
324
+ | Revocation — `StatusListResolver` | not configured | cheqd StatusList2021 |
325
+ | Authorization — `AuthorizationServerAdapter` | `GenericOidcAdapter` (OIDC + PKCE) | Auth0, Okta, your IdP ([example](./examples/authz-inspector/)) |
326
+ | State — `GrantStore`, `SessionStore`, `NonceCacheProvider`, `PendingFlowStore` | in-memory | Redis, DynamoDB, Durable Objects, DB; atomic consumption for replay and pending state ([multi-instance](#multi-instance-deployments)) |
327
+ | Audit delivery — `AuditRecorder`, `AuditAnchorProvider` | local recorder | Checkpoint, on-chain anchoring ([AUDITABILITY.md](./AUDITABILITY.md)) |
328
+ | Crypto — `CryptoProvider` | Node, WebCrypto | your KMS / HSM |
329
+ | Policy — `PolicyEngine` | built-in default | custom engine |
282
330
 
283
- Enabling a module is a small config change. cheqd, for example, is a resolver
284
- you register under `didResolvers`:
331
+ ### cheqd: a fully-worked on-chain integration
332
+
333
+ cheqd is the reference for what filling the seams looks like end to end — one
334
+ package binds three at once: DID resolution (`did:cheqd`), revocation (on-chain
335
+ StatusList2021), and audit anchoring (DID-Linked Resources). Enabling the
336
+ resolver is a small config change:
285
337
 
286
338
  ```typescript
287
339
  import { cheqdResolver } from '@kya-os/mcp/cheqd';
@@ -299,19 +351,6 @@ DID-Linked Resource helpers, live testnet E2E) lives in
299
351
  [src/integrations/cheqd/README.md](./src/integrations/cheqd/README.md); see
300
352
  [examples/cheqd-dlr](./examples/cheqd-dlr/) for a complete operator flow.
301
353
 
302
- ### Adapter seams (bring your own)
303
-
304
- Every external dependency is a typed interface with an in-memory default, so you
305
- can swap in your own backend without touching the middleware.
306
-
307
- | Seam | Default | Swap in |
308
- | --- | --- | --- |
309
- | DID resolution — `DIDResolver` | `did:key`, `did:web` | `did:cheqd`, custom |
310
- | Revocation — `StatusListResolver` | none | cheqd StatusList2021 |
311
- | State — `GrantStore`, `SessionStore`, `NonceCacheProvider`, `PendingFlowStore` | in-memory | Redis, DynamoDB, KV, Durable Objects, DB ([multi-instance](#multi-instance-deployments)) |
312
- | Crypto — `CryptoProvider` | Node, WebCrypto | your KMS / HSM |
313
- | Policy — `PolicyEngine` | default | custom |
314
-
315
354
  ## Links
316
355
 
317
356
  - [Spec](./SPEC.md) | [Card Profile](./SPEC-ENTITY-CARD.md) | [Changelog](./CHANGELOG.md) | [DIF TAAWG](https://identity.foundation/working-groups/trusted-agents.html) | [npm](https://www.npmjs.com/package/@kya-os/mcp)
package/SPEC.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Version: 1.0.0
6
6
  Status: Stable
7
- Editors: KYA-OS Working Group
7
+ Editors: Dylan Hobbs ([@H0BB5](https://github.com/H0BB5)), KYA-OS Working Group
8
8
  Repository: https://github.com/decentralized-identity/kya-os-mcp
9
9
 
10
10
  ---
@@ -194,7 +194,18 @@ Base58btc: 6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK
194
194
  DID: did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK
195
195
  ```
196
196
 
197
- The verification method ID is `<did>#keys-1`.
197
+ The verification method ID is `<did>#<multibase>`: the fragment repeats the
198
+ `z`-prefixed multibase value, as the W3C did:key method defines it. For the
199
+ example above:
200
+
201
+ ```
202
+ did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK
203
+ ```
204
+
205
+ This fragment identifies the Ed25519 verification method; `#keys-1` does not.
206
+ A `did:key` document may also carry an X25519 `keyAgreement` method derived
207
+ from the same key; its fragment is the X25519 key's own multibase value
208
+ (`#z6LS…`).
198
209
 
199
210
  ### 4.4 did:web Resolution
200
211
 
@@ -384,8 +395,8 @@ The server MUST validate the handshake request:
384
395
 
385
396
  2. **Nonce Uniqueness**: The (nonce, agentDid) pair MUST NOT have been seen before
386
397
  - Reject with "Nonce already used (replay attack prevention)"
387
- - Nonces MUST be cached for at least `sessionTtlMinutes + 1 minute`
388
- - When `agentDid` is omitted, the dedupe key is `nonce` alone. Servers MUST use a shorter cache TTL for anonymous nonces (recommended: 60 seconds, vs. the default 120 seconds for authenticated handshakes)
398
+ - Nonces MUST be retained for at least the acceptance window of rule 1, as §5.5 specifies; retention is not tied to the session TTL
399
+ - When `agentDid` is omitted, the dedupe key is `nonce` alone. Servers MAY keep a shorter minimum retention for anonymous nonces than for authenticated ones (for example 60 and 120 seconds), never below what §5.5 requires
389
400
 
390
401
  3. **Audience Match**: `request.audience` MUST match the server's DID or expected domain
391
402
  - Prevents credential forwarding attacks
@@ -421,9 +432,11 @@ The nonce cache implementation MUST:
421
432
  - Store (nonce, agentDid, expiry) tuples
422
433
  - Support TTL-based automatic expiry
423
434
  - Be atomic to prevent race conditions in concurrent environments
424
- - For distributed deployments: use Redis, DynamoDB, or Cloudflare KV (not in-memory)
435
+ - For distributed deployments: use a shared store with an atomic conditional insert and expiry, such as Redis `SET NX PX`, a DynamoDB conditional write or a Durable Object transaction (not in-memory). Eventually consistent stores such as Cloudflare Workers KV cannot provide the atomic check-and-set on their own.
425
436
 
426
- Nonce lifetime MUST exceed the session TTL. Servers MUST NOT drop nonces before the lifetime expires, to prevent replay attacks via early eviction.
437
+ **Retention.** A verifier MUST retain each admitted nonce at least until the timestamp it was admitted with leaves the acceptance window on the verifier's clock: until `ts + skew`, plus a margin of at least one second for second-granularity timestamps. `ts` is the handshake `timestamp` or the proof's `ts`, and `skew` is the largest timestamp skew the verifier may apply while the nonce is retained; a verifier that can widen its skew at runtime (§10.1) retains for the widest. Servers MUST NOT evict a nonce before its retention ends, to prevent replay via early eviction. Verifiers MAY retain longer, and a verifier whose clock can be stepped backwards SHOULD add the largest expected step to the margin.
438
+
439
+ Retention is bounded by the acceptance window, not by the session TTL. A nonce presented after its window is rejected on its timestamp (§5.2 rule 1, §11.3) before the cache is consulted, so keeping it longer adds memory and denial-of-service exposure and no replay protection. The bound holds because every nonce-checked path checks a timestamp window in the same verification: the handshake (§5.2), the detached proof and the holder-binding request proof (`ts` within skew, signed with the nonce, §7.4), and the Entity Card proof (`created`/`expires`, SPEC-ENTITY-CARD §8). The handshake request is unsigned, so a replayed handshake gives its sender nothing that a fresh handshake would not; its nonce check deduplicates and follows the same window. A path that checked a nonce without a timestamp window would have to retain the nonce for as long as the message it protects stays valid.
427
440
 
428
441
  ---
429
442
 
@@ -493,7 +506,7 @@ Delegations are issued as W3C Verifiable Credentials:
493
506
  "proof": {
494
507
  "type": "Ed25519Signature2020",
495
508
  "created": "2024-03-01T12:00:00Z",
496
- "verificationMethod": "did:key:z6MkIssuer...#keys-1",
509
+ "verificationMethod": "did:key:z6MkIssuer...#z6MkIssuer...",
497
510
  "proofPurpose": "assertionMethod",
498
511
  "proofValue": "<base64url-encoded-signature>"
499
512
  }
@@ -819,7 +832,7 @@ chain:
819
832
 
820
833
  - **action subset** - child `allowedAction ⊆ parent`;
821
834
  - **monotone caveats** - no parent caveat may be silently dropped; for a shared caveat type, child
822
- `MaxAmount ≤ parent` (same currency; compared as fixed-point decimals scaled to 6 places) and
835
+ `MaxAmount ≤ parent` (same currency; compared as exact decimals, never rounded or truncated) and
823
836
  child `ValidUntil ≤ parent`; an unknown caveat type MUST be replicated **verbatim**;
824
837
  - **top-level `validUntil` narrowing** - child `validUntil ≤ parent`;
825
838
  - **continuity** - the parent's delegate (`invoker`) MUST equal the child's `issuer` (you may only
@@ -877,10 +890,10 @@ interface ProofMeta {
877
890
  did: string; // Server's DID (signer)
878
891
  kid: string; // Key ID used for signing
879
892
  ts: number; // Unix epoch seconds when proof was generated
880
- nonce: string; // Session nonce (prevents cross-session replay)
893
+ nonce: string; // Fresh random nonce per proof (replay protection, §5.5)
881
894
  audience: string; // Session audience
882
895
  sessionId: string; // Session identifier
883
- requestHash: string; // SHA-256 of canonicalized request
896
+ requestHash: string; // SHA-256 of the canonicalized request (§7.3)
884
897
  responseHash?: string; // SHA-256 of canonicalized response. Present on success
885
898
  // AND on needs_authorization challenges (binds the
886
899
  // challenge content, incl. authorizationUrl); ABSENT on
@@ -905,14 +918,36 @@ interface ProofMeta {
905
918
  2. **Hash**: Compute SHA-256 of the canonical JSON bytes (UTF-8 encoded)
906
919
  3. **Format**: `sha256:<64-char-lowercase-hex>`
907
920
 
908
- Request canonicalization includes:
921
+ Request canonicalization covers the JSON-RPC request as sent: its `method` and `params`.
922
+ The envelope members `jsonrpc` and `id` are not covered.
923
+ Two kinds of member are removed before canonicalizing:
924
+
925
+ 1. `params._meta`, if present.
926
+ `_meta` is intermediary-mutable transport metadata that also carries proofs (§7.6), so it is never signed.
927
+ Only that top-level member is removed; values nested under other `params` members are not touched.
928
+ 2. For `method: "tools/call"`, every member of `params.arguments` whose name begins with `_kyaos`: the KYA-OS control arguments (`_kyaos_delegation`, `_kyaos_proof`, `_kyaos_approvals`).
929
+ They carry the credentials that authorize the call, each authenticated on its own, and the holder-of-key request proof and approval grants are themselves bound to this hash, so covering them would make the hash depend on its own output.
930
+ Tool handlers SHOULD NOT receive control arguments, so that the covered request is the call the tool executes.
931
+ An absent `params.arguments` is covered as `{}`, since a server cannot tell it from an empty one.
932
+
933
+ Every other `params` member (`name`, `task`, and any future member) is covered.
934
+ When `params` is absent the covered request is `{ "method": ... }`.
935
+ For a tool call:
909
936
  ```json
910
937
  {
911
938
  "method": "tools/call",
912
- "params": { /* sorted keys, no whitespace */ }
939
+ "params": { "name": "echo", "arguments": { /* minus _kyaos* members */ } }
913
940
  }
914
941
  ```
915
942
 
943
+ A client, a PEP or a third-party auditor recomputes `requestHash` this way from the request it sent or received.
944
+ Rule 1 is the rule Entity Card request proofs use (SPEC-ENTITY-CARD §8.3).
945
+ Appendix C.1 gives vectors.
946
+
947
+ **Legacy shape in 1.x.** The 1.x releases of the reference implementation (`@kya-os/mcp`) still emit `requestHash` over the legacy shape `{"method": <tool name>, "params": <arguments>}` for every proof over a tool call: response and outcome proofs (§7.4), the approval `requestHash` of a step-up challenge, and holder-of-key request proofs.
948
+ Their verifiers accept a `requestHash` over either shape of the call they hold, so a producer that follows this section verifies against them; the reference producers switch to the covered request above in 2.0.0.
949
+ The legacy shape is deprecated: it hashes a tool named after a JSON-RPC method like that method's request, and it has no room for `params` members other than the arguments.
950
+
916
951
  Response canonicalization is selected by the proof's response-proof profile, named by the signature-covered `prf` claim (§7.2):
917
952
 
918
953
  - **body** (`prf` ABSENT — the original profile): the `data` field only (excludes `_meta`).
@@ -1243,7 +1278,7 @@ interface NeedsAuthorizationError {
1243
1278
  message: string;
1244
1279
  authorizationUrl: string; // URL where user can grant authorization
1245
1280
  resumeToken: string; // Token to resume flow after authorization
1246
- expiresAt: number; // Unix epoch when resumeToken expires
1281
+ expiresAt: number; // Unix timestamp in seconds when resumeToken expires
1247
1282
  scopes: string[]; // Scopes being requested
1248
1283
  display?: {
1249
1284
  title?: string;
@@ -1422,7 +1457,7 @@ and the residual risk an operator carries.
1422
1457
 
1423
1458
  - Nonces MUST be cryptographically random (16 bytes minimum entropy)
1424
1459
  - Nonce cache MUST persist across server restarts (use external storage)
1425
- - Nonce cache TTL MUST exceed session TTL
1460
+ - Nonce cache retention MUST cover the timestamp acceptance window (§5.5); it need not reach the session TTL
1426
1461
  - Distributed deployments MUST use atomic check-and-set operations
1427
1462
 
1428
1463
  ### 11.3 Timestamp Skew Attacks
@@ -1684,7 +1719,11 @@ purpose/scope authorization out of band. Bundle contents cannot authorize their
1684
1719
  own signer or bootstrap their own trust root. A verifier MUST distinguish
1685
1720
  `valid`, `invalid`, and `indeterminate`, MUST keep authorization-as-observed
1686
1721
  separate from current authorization/revocation, and MUST NOT consume a live
1687
- nonce cache when verifying historical proof artifacts.
1722
+ nonce cache when verifying historical proof artifacts. A verifier MUST NOT
1723
+ ignore a verification-policy constraint (checkpoint-bounded key validity,
1724
+ required assurance profile, key revocation mode), and a constraint it cannot
1725
+ evaluate for the artifacts at hand MUST NOT leave the affected dimension
1726
+ `valid`.
1688
1727
 
1689
1728
  Sensitive payloads SHOULD be encrypted in a separate evidence provider and
1690
1729
  referenced by opaque randomized identifiers and ciphertext commitments. The
@@ -1784,6 +1823,35 @@ These test vectors enable interoperability testing across implementations.
1784
1823
  sha256:5057521f310b536837b619f0ac040ef8064f8c597da8ec22a56801b435744033
1785
1824
  ```
1786
1825
 
1826
+ **Covered request (§7.3).**
1827
+ `requestHash` covers a request's `method` and `params` minus `params._meta` and, on a `tools/call`, minus the `_kyaos*` control arguments; an absent `arguments` is covered as `{}`.
1828
+ Each of these requests covers to the input above and hashes to the same value:
1829
+
1830
+ ```json
1831
+ {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"echo","arguments":{"_kyaos_proof":{"jws":"...","meta":{}}},"_meta":{"traceparent":"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01"}}}
1832
+ ```
1833
+
1834
+ ```json
1835
+ {"method":"tools/call","params":{"name":"echo"}}
1836
+ ```
1837
+
1838
+ Business arguments stay covered:
1839
+
1840
+ **Input JSON:**
1841
+ ```json
1842
+ {"jsonrpc":"2.0","id":7,"method":"tools/call","params":{"name":"echo","arguments":{"msg":"hi","_kyaos_delegation":{"id":"urn:uuid:1111-aaaa"}},"_meta":{"progressToken":7}}}
1843
+ ```
1844
+
1845
+ **Covered request, JCS canonicalized:**
1846
+ ```json
1847
+ {"method":"tools/call","params":{"arguments":{"msg":"hi"},"name":"echo"}}
1848
+ ```
1849
+
1850
+ **KYA-OS Format:**
1851
+ ```
1852
+ sha256:c8f3d59959c9247211de8c76b94ef17f0c279f09362350ced67f69ecdb89d6c7
1853
+ ```
1854
+
1787
1855
  ### C.2 did:key Derivation
1788
1856
 
1789
1857
  **Ed25519 Public Key (32 bytes, hex):**
@@ -1813,7 +1881,7 @@ did:key:z6Mko6jQvza2BSKRcrbJwgwbL9KYDn1isCUV5Lnq7gSTTKJq
1813
1881
 
1814
1882
  **Verification Method ID:**
1815
1883
  ```
1816
- did:key:z6Mko6jQvza2BSKRcrbJwgwbL9KYDn1isCUV5Lnq7gSTTKJq#keys-1
1884
+ did:key:z6Mko6jQvza2BSKRcrbJwgwbL9KYDn1isCUV5Lnq7gSTTKJq#z6Mko6jQvza2BSKRcrbJwgwbL9KYDn1isCUV5Lnq7gSTTKJq
1817
1885
  ```
1818
1886
 
1819
1887
  ### C.3 JWS Structure
@@ -1824,7 +1892,7 @@ A valid detached proof JWS has the following structure:
1824
1892
  ```json
1825
1893
  {
1826
1894
  "alg": "EdDSA",
1827
- "kid": "did:key:z6Mk...#keys-1"
1895
+ "kid": "did:key:z6Mk...#z6Mk..."
1828
1896
  }
1829
1897
  ```
1830
1898
 
@@ -17,4 +17,3 @@ export declare class LegacyAuditSinkAdapter extends AuditLogProvider {
17
17
  logAuditRecord(context: AuditContext): Promise<void>;
18
18
  logEvent(context: AuditEventContext): Promise<void>;
19
19
  }
20
- //# sourceMappingURL=legacy-audit-log.d.ts.map
@@ -102,4 +102,3 @@ export declare class McpAuditEventAdapter {
102
102
  }): Promise<void>;
103
103
  private context;
104
104
  }
105
- //# sourceMappingURL=mcp.d.ts.map
@@ -1,5 +1,16 @@
1
- function boundedReference(value, maxLength = 256) {
2
- return value.slice(0, maxLength);
1
+ import { boundedAuditReference } from './references.js';
2
+ /** Bounds every caller-supplied reference so a hostile one cannot keep the event out of the ledger. */
3
+ async function boundedAuthorization(authorization) {
4
+ const bounded = { ...authorization };
5
+ for (const field of ['scopeId', 'delegationRef', 'grantRef', 'policyId', 'policyVersion']) {
6
+ const value = authorization[field];
7
+ if (value !== undefined)
8
+ bounded[field] = await boundedAuditReference(value);
9
+ }
10
+ if (authorization.verificationCode !== undefined) {
11
+ bounded.verificationCode = await boundedAuditReference(authorization.verificationCode, 128);
12
+ }
13
+ return bounded;
3
14
  }
4
15
  /** Privacy-minimal translation from MCP lifecycle signals to binding-neutral events. */
5
16
  export class McpAuditEventAdapter {
@@ -12,7 +23,7 @@ export class McpAuditEventAdapter {
12
23
  async session(phase, input) {
13
24
  await this.trail.record({
14
25
  eventType: `session.${phase}`,
15
- ...this.context(input.context),
26
+ ...(await this.context(input.context)),
16
27
  action: { category: 'session' },
17
28
  outcome: input.succeeded ? 'succeeded' : 'failed',
18
29
  ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
@@ -26,11 +37,11 @@ export class McpAuditEventAdapter {
26
37
  async tool(phase, input) {
27
38
  await this.trail.record({
28
39
  eventType: `tool.call.${phase}`,
29
- ...this.context(input.context),
40
+ ...(await this.context(input.context)),
30
41
  action: {
31
42
  category: 'tool.call',
32
43
  ...(this.options.includeToolNames
33
- ? { name: boundedReference(input.toolName) }
44
+ ? { name: await boundedAuditReference(input.toolName) }
34
45
  : {}),
35
46
  },
36
47
  outcome: input.outcome,
@@ -42,7 +53,7 @@ export class McpAuditEventAdapter {
42
53
  async proof(phase, input) {
43
54
  await this.trail.record({
44
55
  eventType: `proof.${phase}`,
45
- ...this.context(input.context),
56
+ ...(await this.context(input.context)),
46
57
  action: { category: 'proof' },
47
58
  outcome: input.outcome,
48
59
  evidence: [],
@@ -61,7 +72,7 @@ export class McpAuditEventAdapter {
61
72
  : `authorization.${phase}`;
62
73
  await this.trail.record({
63
74
  eventType,
64
- ...this.context(input.context),
75
+ ...(await this.context(input.context)),
65
76
  action: { category: 'authorization' },
66
77
  outcome: input.outcome,
67
78
  ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
@@ -71,24 +82,24 @@ export class McpAuditEventAdapter {
71
82
  ...(input.policyDigest === undefined ? {} : { policyDigest: input.policyDigest }),
72
83
  ...(input.grantRef === undefined
73
84
  ? {}
74
- : { grantRef: boundedReference(input.grantRef) }),
85
+ : { grantRef: await boundedAuditReference(input.grantRef) }),
75
86
  },
76
87
  });
77
88
  }
78
89
  async delegation(phase, input) {
79
90
  await this.trail.record({
80
91
  eventType: `delegation.${phase}`,
81
- ...this.context(input.context),
92
+ ...(await this.context(input.context)),
82
93
  action: { category: 'delegation' },
83
94
  outcome: input.outcome,
84
95
  ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
85
96
  evidence: [],
86
97
  details: {
87
98
  family: 'delegation', phase,
88
- delegationRef: boundedReference(input.delegationRef),
99
+ delegationRef: await boundedAuditReference(input.delegationRef),
89
100
  ...(input.parentRef === undefined
90
101
  ? {}
91
- : { parentRef: boundedReference(input.parentRef) }),
102
+ : { parentRef: await boundedAuditReference(input.parentRef) }),
92
103
  },
93
104
  });
94
105
  }
@@ -98,7 +109,7 @@ export class McpAuditEventAdapter {
98
109
  : `consent.${phase}`;
99
110
  await this.trail.record({
100
111
  eventType: eventType,
101
- ...this.context(input.context),
112
+ ...(await this.context(input.context)),
102
113
  action: { category: 'consent' },
103
114
  outcome: input.outcome,
104
115
  ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
@@ -107,7 +118,7 @@ export class McpAuditEventAdapter {
107
118
  family: 'consent', phase,
108
119
  ...(input.consentRef === undefined
109
120
  ? {}
110
- : { consentRef: boundedReference(input.consentRef) }),
121
+ : { consentRef: await boundedAuditReference(input.consentRef) }),
111
122
  },
112
123
  });
113
124
  }
@@ -120,7 +131,7 @@ export class McpAuditEventAdapter {
120
131
  };
121
132
  await this.trail.record({
122
133
  eventType: eventTypes[phase],
123
- ...this.context(input.context),
134
+ ...(await this.context(input.context)),
124
135
  action: { category: 'configuration' },
125
136
  outcome: input.outcome,
126
137
  ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
@@ -147,7 +158,7 @@ export class McpAuditEventAdapter {
147
158
  };
148
159
  await this.trail.record({
149
160
  eventType: eventTypes[phase],
150
- ...this.context(input.context),
161
+ ...(await this.context(input.context)),
151
162
  action: { category: 'audit.ledger' },
152
163
  outcome: input.outcome,
153
164
  ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
@@ -177,7 +188,7 @@ export class McpAuditEventAdapter {
177
188
  };
178
189
  await this.trail.record({
179
190
  eventType: eventTypes[phase],
180
- ...this.context(input.context),
191
+ ...(await this.context(input.context)),
181
192
  action: { category: 'audit.administration' },
182
193
  outcome: input.outcome,
183
194
  ...(input.reasonCode === undefined ? {} : { reason: { code: input.reasonCode } }),
@@ -194,7 +205,7 @@ export class McpAuditEventAdapter {
194
205
  },
195
206
  });
196
207
  }
197
- context(context) {
208
+ async context(context) {
198
209
  if (context === undefined)
199
210
  return {};
200
211
  return {
@@ -204,9 +215,13 @@ export class McpAuditEventAdapter {
204
215
  : { responsibleParty: context.responsibleParty }),
205
216
  ...(context.authorization === undefined
206
217
  ? {}
207
- : { authorization: context.authorization }),
208
- ...(context.correlationId === undefined ? {} : { correlationId: context.correlationId }),
209
- ...(context.causationId === undefined ? {} : { causationId: context.causationId }),
218
+ : { authorization: await boundedAuthorization(context.authorization) }),
219
+ ...(context.correlationId === undefined
220
+ ? {}
221
+ : { correlationId: await boundedAuditReference(context.correlationId) }),
222
+ ...(context.causationId === undefined
223
+ ? {}
224
+ : { causationId: await boundedAuditReference(context.causationId) }),
210
225
  };
211
226
  }
212
227
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/audit/adapters/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/audit/adapters/mcp.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAcxD,uGAAuG;AACvG,KAAK,UAAU,oBAAoB,CACjC,aAAoC;IAEpC,MAAM,OAAO,GAAG,EAAE,GAAG,aAAa,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,CAAU,EAAE,CAAC;QACnG,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,aAAa,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,CAAC,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,aAAa,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,wFAAwF;AACxF,MAAM,OAAO,oBAAoB;IAEZ;IACA;IAFnB,YACmB,KAAwC,EACxC,UAAuC,EAAE;QADzC,UAAK,GAAL,KAAK,CAAmC;QACxC,YAAO,GAAP,OAAO,CAAkC;IACzD,CAAC;IAEJ,KAAK,CAAC,OAAO,CACX,KAAiE,EACjE,KAA6E;QAE7E,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,WAAW,KAAK,EAA2B;YACtD,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC/B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;YACjD,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACjF,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,MAAM,EAAE,SAAS,EAAE,KAAK;gBACxB,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC5E;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CACR,KAA8D,EAC9D,KAMC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,aAAa,KAAK,EAA2B;YACxD,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,EAAE;gBACN,QAAQ,EAAE,WAAW;gBACrB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB;oBAC/B,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;oBACvD,CAAC,CAAC,EAAE,CAAC;aACR;YACD,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACjF,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,GAAG,EAAE;SAClE,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CACT,KAA+D,EAC/D,KAKC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,SAAS,KAAK,EAAuB;YAChD,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;YAC7B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,MAAM,EAAE,OAAO,EAAE,KAAK;gBACtB,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC9E,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;oBACtC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC;aAClD;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAAuE,EACvE,KAMC;QAED,MAAM,SAAS,GAAG,KAAK,KAAK,YAAY;YACtC,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,iBAAiB,KAAK,EAAW,CAAC;QACtC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS;YACT,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE;YACrC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACjF,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,MAAM,EAAE,eAAe,EAAE,KAAK;gBAC9B,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;gBACjF,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS;oBAC9B,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;aAC/D;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAoE,EACpE,KAMC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,cAAc,KAAK,EAA2B;YACzD,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE;YAClC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACjF,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,MAAM,EAAE,YAAY,EAAE,KAAK;gBAC3B,aAAa,EAAE,MAAM,qBAAqB,CAAC,KAAK,CAAC,aAAa,CAAC;gBAC/D,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;oBAC/B,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;aACjE;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAAiE,EACjE,KAKC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC;YAC/C,CAAC,CAAC,cAAc,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YACnD,CAAC,CAAC,WAAW,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,SAAgC;YAC3C,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACjF,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,MAAM,EAAE,SAAS,EAAE,KAAK;gBACxB,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;oBAChC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;aACnE;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CACP,KAA6D,EAC7D,KAOC;QAED,MAAM,UAAU,GAAG;YACjB,OAAO,EAAE,aAAa;YACtB,cAAc,EAAE,gBAAgB;YAChC,qBAAqB,EAAE,uBAAuB;YAC9C,4BAA4B,EAAE,8BAA8B;SACpD,CAAC;QACX,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC;YAC5B,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE;YACrC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACjF,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,MAAM,EAAE,KAAK,EAAE,KAAK;gBACpB,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvF,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC3E,GAAG,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS;oBACzC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC;aACxD;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAAgE,EAChE,KAQC;QAED,MAAM,UAAU,GAAG;YACjB,aAAa,EAAE,sBAAsB;YACrC,kBAAkB,EAAE,2BAA2B;YAC/C,kBAAkB,EAAE,oBAAoB;YACxC,mBAAmB,EAAE,qBAAqB;YAC1C,wBAAwB,EAAE,0BAA0B;YACpD,iBAAiB,EAAE,mBAAmB;YACtC,qBAAqB,EAAE,uBAAuB;SACtC,CAAC;QACX,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC;YAC5B,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE;YACpC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACjF,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,MAAM,EAAE,QAAQ,EAAE,KAAK;gBACvB,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;oBACtC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBACjD,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC1F,GAAG,CAAC,KAAK,CAAC,gCAAgC,KAAK,SAAS;oBACtD,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,gCAAgC,EAAE,KAAK,CAAC,gCAAgC,EAAE,CAAC;gBACjF,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;oBACvC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC;aACpD;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,KAAwE,EACxE,KAOC;QAED,MAAM,UAAU,GAAG;YACjB,iBAAiB,EAAE,yBAAyB;YAC5C,QAAQ,EAAE,gBAAgB;YAC1B,QAAQ,EAAE,gBAAgB;YAC1B,kBAAkB,EAAE,oBAAoB;YACxC,kBAAkB,EAAE,oBAAoB;SAChC,CAAC;QACX,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC;YAC5B,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,EAAE,EAAE,QAAQ,EAAE,sBAAsB,EAAE;YAC5C,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACjF,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,MAAM,EAAE,gBAAgB,EAAE,KAAK;gBAC/B,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClE,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS;oBACpC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC7C,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS;oBACrC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;aAChD;SACF,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAAoC;QACxD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACrC,OAAO;YACL,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAChE,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACnD,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS;gBACrC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS;gBACrC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS;gBACnC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;SACvE,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Caller-presented identifiers (credential IDs, grant and consent references,
3
+ * correlation IDs) are untrusted input. A non-empty, well-formed value within
4
+ * the schema bound is kept verbatim. Anything else is replaced by the SHA-256
5
+ * of its well-formed UTF-8 encoding: that form always canonicalizes and fits
6
+ * the bound, and unlike truncation it cannot be made to collide with a
7
+ * different reference that shares a long prefix.
8
+ */
9
+ export declare function boundedAuditReference(value: string, maxLength?: number): Promise<string>;
@@ -0,0 +1,22 @@
1
+ import { WebCryptoProvider } from '../../providers/web-crypto.js';
2
+ import { CryptoProviderAuditHasher } from '../crypto.js';
3
+ const encoder = new TextEncoder();
4
+ // Matches a high surrogate without its low half, or a low surrogate without its
5
+ // high half. No `u` flag, so the pattern sees UTF-16 code units.
6
+ const LONE_SURROGATE = /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/;
7
+ let referenceHasher;
8
+ /**
9
+ * Caller-presented identifiers (credential IDs, grant and consent references,
10
+ * correlation IDs) are untrusted input. A non-empty, well-formed value within
11
+ * the schema bound is kept verbatim. Anything else is replaced by the SHA-256
12
+ * of its well-formed UTF-8 encoding: that form always canonicalizes and fits
13
+ * the bound, and unlike truncation it cannot be made to collide with a
14
+ * different reference that shares a long prefix.
15
+ */
16
+ export async function boundedAuditReference(value, maxLength = 256) {
17
+ if (value.length > 0 && value.length <= maxLength && !LONE_SURROGATE.test(value))
18
+ return value;
19
+ referenceHasher ??= new CryptoProviderAuditHasher(new WebCryptoProvider());
20
+ return referenceHasher.sha256(encoder.encode(value));
21
+ }
22
+ //# sourceMappingURL=references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../../../src/audit/adapters/references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAoB,MAAM,cAAc,CAAC;AAE3E,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,gFAAgF;AAChF,iEAAiE;AACjE,MAAM,cAAc,GAAG,wEAAwE,CAAC;AAEhG,IAAI,eAAwC,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAAa,EAAE,SAAS,GAAG,GAAG;IACxE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/F,eAAe,KAAK,IAAI,yBAAyB,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;IAC3E,OAAO,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC"}
@@ -19,4 +19,3 @@ export declare const AUDIT_ASSURANCE_PROFILES: Readonly<Record<AuditAssurancePro
19
19
  }>>;
20
20
  /** Fail startup when advertised assurance exceeds configured mechanics. */
21
21
  export declare function assertAuditCapabilities(capabilities: AuditCapabilities): void;
22
- //# sourceMappingURL=assurance.d.ts.map
@@ -48,4 +48,3 @@ export declare class AuditCheckpointCoordinator {
48
48
  private publishWithRetry;
49
49
  private assertRequirements;
50
50
  }
51
- //# sourceMappingURL=checkpoint-coordinator.d.ts.map
@@ -32,6 +32,11 @@ export interface AuditCheckpointBuilderOptions {
32
32
  clock?: {
33
33
  now(): number;
34
34
  };
35
+ /**
36
+ * Lifecycle hook for a newly stored checkpoint. If it throws, this builder's
37
+ * next `createCheckpoint` call runs it again for that checkpoint, before any
38
+ * newer one, so it must be idempotent on the checkpoint digest.
39
+ */
35
40
  onCheckpointCreated?: (checkpoint: SignedAuditCheckpointV1) => Promise<void> | void;
36
41
  }
37
42
  /** Creates append-only RFC 9162 checkpoints from a stable journal high-water mark. */
@@ -39,8 +44,20 @@ export declare class AuditCheckpointBuilder {
39
44
  private readonly options;
40
45
  private readonly tree;
41
46
  private readonly clock;
47
+ private readonly ledgerTails;
48
+ /** Per ledger, stored checkpoints whose lifecycle hook has not completed, oldest first. */
49
+ private readonly failedHooks;
42
50
  constructor(options: AuditCheckpointBuilderOptions);
43
51
  createCheckpoint(ledger: AuditLedgerRef): Promise<SignedAuditCheckpointV1>;
52
+ private serialized;
53
+ private storeCheckpoint;
54
+ /**
55
+ * A journal that has grown since the latest checkpoint must still hold that
56
+ * checkpoint's exact tree as its prefix. Otherwise the history was rewritten
57
+ * or restored, and chaining a new checkpoint to it would sign a split view.
58
+ */
59
+ private assertExtends;
60
+ private signCheckpoint;
44
61
  inclusionProof(ledger: AuditLedgerRef, sequence: DecimalString, checkpoint: SignedAuditCheckpointV1): Promise<AuditMerkleInclusionProofV1>;
45
62
  consistencyProof(ledger: AuditLedgerRef, oldTreeSize: DecimalString, checkpoint: SignedAuditCheckpointV1): Promise<AuditMerkleConsistencyProofV1>;
46
63
  rootForRange(ledger: AuditLedgerRef, treeSize: DecimalString): Promise<Digest>;
@@ -56,4 +73,3 @@ export declare class AuditCheckpointBuilder {
56
73
  private readEntries;
57
74
  private assertCheckpointLedger;
58
75
  }
59
- //# sourceMappingURL=checkpoint.d.ts.map