@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
@@ -51,23 +51,25 @@ export declare const ProofPublicJwkSchema: z.ZodUnion<readonly [z.ZodObject<{
51
51
  }, z.core.$strict>]>;
52
52
  /**
53
53
  * Deliberately NON-strict: the JSON Schema marks `CapabilityAttestation` as
54
- * `additionalProperties: true`, so extra keys alongside `vc` are permitted here.
54
+ * `additionalProperties: true`, so extra keys alongside `vc` are permitted here — and PRESERVED.
55
+ * A plain `z.object` strips unknown keys, which would hand the capability verifier an attestation
56
+ * missing sidecar members it may need (a `credentialStatus`, say).
55
57
  */
56
58
  export declare const CapabilityAttestationSchema: z.ZodObject<{
57
59
  vc: z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
58
- }, z.core.$strip>;
60
+ }, z.core.$loose>;
59
61
  export declare const Level2CapabilitySchema: z.ZodObject<{
60
62
  name: z.ZodString;
61
63
  attestations: z.ZodArray<z.ZodObject<{
62
64
  vc: z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
63
- }, z.core.$strip>>;
65
+ }, z.core.$loose>>;
64
66
  }, z.core.$strict>;
65
67
  /** L1 bare-string name, or an L2 object carrying attestations. */
66
68
  export declare const CapabilitySchema: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
67
69
  name: z.ZodString;
68
70
  attestations: z.ZodArray<z.ZodObject<{
69
71
  vc: z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
70
- }, z.core.$strip>>;
72
+ }, z.core.$loose>>;
71
73
  }, z.core.$strict>]>;
72
74
  export declare const AttestationSchema: z.ZodObject<{
73
75
  type: z.ZodEnum<{
@@ -136,7 +138,7 @@ export declare const EntityCardSchema: z.ZodObject<{
136
138
  name: z.ZodString;
137
139
  attestations: z.ZodArray<z.ZodObject<{
138
140
  vc: z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
139
- }, z.core.$strip>>;
141
+ }, z.core.$loose>>;
140
142
  }, z.core.$strict>]>>>;
141
143
  conformanceLevel: z.ZodOptional<z.ZodEnum<{
142
144
  L1: "L1";
@@ -182,4 +184,3 @@ export type BitstringStatusListEntry = z.infer<typeof BitstringStatusListEntrySc
182
184
  export type EntityCard = z.infer<typeof EntityCardSchema>;
183
185
  /** Flatten capabilities (bare strings or attested objects) to their names. */
184
186
  export declare function capabilityNames(caps: Capability[]): string[];
185
- //# sourceMappingURL=schema.d.ts.map
@@ -34,11 +34,15 @@ export const ProofPublicJwkSchema = z.union([Ed25519PublicJwkSchema, P256PublicJ
34
34
  const VcValue = z.union([z.string(), z.record(z.string(), z.unknown())]);
35
35
  /**
36
36
  * Deliberately NON-strict: the JSON Schema marks `CapabilityAttestation` as
37
- * `additionalProperties: true`, so extra keys alongside `vc` are permitted here.
37
+ * `additionalProperties: true`, so extra keys alongside `vc` are permitted here — and PRESERVED.
38
+ * A plain `z.object` strips unknown keys, which would hand the capability verifier an attestation
39
+ * missing sidecar members it may need (a `credentialStatus`, say).
38
40
  */
39
- export const CapabilityAttestationSchema = z.object({
41
+ export const CapabilityAttestationSchema = z
42
+ .object({
40
43
  vc: VcValue,
41
- });
44
+ })
45
+ .passthrough();
42
46
  export const Level2CapabilitySchema = z
43
47
  .object({
44
48
  name: z.string().min(1),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/card/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/card/schema.ts"],"names":[],"mappings":"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"}
@@ -141,4 +141,3 @@ export declare function verifyCard(card: EntityCard, deps: VerifyCardDeps): Prom
141
141
  * `true` so 2-arg calls still compile; a `false` (unreachable/stale list) demotes L3 → L2.
142
142
  */
143
143
  export declare function deriveConformanceLevel(check: CapabilityCheckResult, proofOk: boolean, revocationFresh?: boolean): ConformanceLevel;
144
- //# sourceMappingURL=verify.d.ts.map
@@ -6,4 +6,3 @@
6
6
  */
7
7
  import type { DelegationRecord } from '../types/protocol.js';
8
8
  export declare function verifyDelegationAudience(delegation: DelegationRecord, serverDid: string): boolean;
9
- //# sourceMappingURL=audience-validator.d.ts.map
@@ -42,4 +42,3 @@ export declare class BitstringManager {
42
42
  * reading as "not set".
43
43
  */
44
44
  export declare function isIndexSet(encodedList: string, index: number, decompressor: DecompressionFunction): Promise<boolean>;
45
- //# sourceMappingURL=bitstring.d.ts.map
@@ -34,12 +34,11 @@ export declare class CascadingRevocationManager {
34
34
  reason?: string;
35
35
  revokedAncestor?: string;
36
36
  }>;
37
+ private isStatusBitSet;
37
38
  getRevokedInSubtree(rootId: string): Promise<string[]>;
38
- private parseCredentialStatus;
39
39
  validateDelegation(delegationId: string): Promise<{
40
40
  valid: boolean;
41
41
  reason?: string;
42
42
  }>;
43
43
  }
44
44
  export declare function createCascadingRevocationManager(graph: DelegationGraphManager, statusList: StatusList2021Manager): CascadingRevocationManager;
45
- //# sourceMappingURL=cascading-revocation.d.ts.map
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * Related Spec: KYA-OS §4.4, Delegation Chains
8
8
  */
9
+ import { nodeStatusEntry } from './delegation-status-entry.js';
9
10
  export class CascadingRevocationManager {
10
11
  graph;
11
12
  statusList;
@@ -50,11 +51,21 @@ export class CascadingRevocationManager {
50
51
  if (dryRun) {
51
52
  return event;
52
53
  }
53
- if (node.credentialStatusId) {
54
- const credentialStatus = this.parseCredentialStatus(node.credentialStatusId);
55
- if (credentialStatus) {
56
- await this.statusList.updateStatus(credentialStatus, true);
57
- }
54
+ // Mark the graph first (SPEC.md §6.5 step 1): it holds even when the node
55
+ // has no status list entry to flip (no status id, or one such as
56
+ // urn:uuid:… that names no list and index), or when publishing the bit
57
+ // below fails.
58
+ const marked = await this.graph.setRevoked(node.id, true);
59
+ const credentialStatus = nodeStatusEntry(node);
60
+ // With no bit to flip, the mark is the only record. If the storage
61
+ // provider dropped it, reporting success would leave the delegation live.
62
+ if (!marked && !credentialStatus) {
63
+ throw new Error(`Revocation of delegation ${node.id} was not recorded: it has no status list entry, and the ` +
64
+ `graph storage provider did not persist DelegationNode.revoked. A DelegationGraphStorageProvider ` +
65
+ `must store the revoked field to revoke delegations without a status list entry.`);
66
+ }
67
+ if (credentialStatus) {
68
+ await this.statusList.updateStatus(credentialStatus, true);
58
69
  }
59
70
  return event;
60
71
  }
@@ -69,35 +80,36 @@ export class CascadingRevocationManager {
69
80
  timestamp: Date.now(),
70
81
  reason: 'Restored',
71
82
  };
72
- if (node.credentialStatusId) {
73
- const credentialStatus = this.parseCredentialStatus(node.credentialStatusId);
74
- if (credentialStatus) {
75
- await this.statusList.updateStatus(credentialStatus, false);
76
- }
83
+ // Clear the graph mark last: if clearing the status bit fails, the
84
+ // delegation still reads as revoked.
85
+ const credentialStatus = nodeStatusEntry(node);
86
+ if (credentialStatus) {
87
+ await this.statusList.updateStatus(credentialStatus, false);
77
88
  }
89
+ await this.graph.setRevoked(node.id, false);
78
90
  return event;
79
91
  }
80
92
  async isRevoked(delegationId) {
81
93
  // Walk root → target so ancestor revocation is detected before the
82
94
  // target's own (cascade-set) bit. getChain() already returns root-first order.
95
+ // A node counts as revoked when the graph marks it or its status bit is
96
+ // set; a node with no status list entry is read from the mark alone.
83
97
  const chain = await this.graph.getChain(delegationId);
84
98
  for (const node of chain) {
85
- if (node.credentialStatusId) {
86
- const credentialStatus = this.parseCredentialStatus(node.credentialStatusId);
87
- if (credentialStatus) {
88
- const isRevoked = await this.statusList.checkStatus(credentialStatus);
89
- if (isRevoked) {
90
- return {
91
- revoked: true,
92
- reason: node.id === delegationId ? 'Directly revoked' : 'Ancestor revoked',
93
- revokedAncestor: node.id === delegationId ? undefined : node.id,
94
- };
95
- }
96
- }
99
+ if (node.revoked || (await this.isStatusBitSet(node))) {
100
+ return {
101
+ revoked: true,
102
+ reason: node.id === delegationId ? 'Directly revoked' : 'Ancestor revoked',
103
+ revokedAncestor: node.id === delegationId ? undefined : node.id,
104
+ };
97
105
  }
98
106
  }
99
107
  return { revoked: false };
100
108
  }
109
+ async isStatusBitSet(node) {
110
+ const credentialStatus = nodeStatusEntry(node);
111
+ return credentialStatus ? this.statusList.checkStatus(credentialStatus) : false;
112
+ }
101
113
  async getRevokedInSubtree(rootId) {
102
114
  const descendants = await this.graph.getDescendants(rootId);
103
115
  const revoked = [];
@@ -113,20 +125,6 @@ export class CascadingRevocationManager {
113
125
  }
114
126
  return revoked;
115
127
  }
116
- parseCredentialStatus(credentialStatusId) {
117
- const match = credentialStatusId.match(/^(.+)#(\d+)$/);
118
- if (!match)
119
- return null;
120
- const [, statusListCredential, indexStr] = match;
121
- const index = parseInt(indexStr, 10);
122
- return {
123
- id: credentialStatusId,
124
- type: 'StatusList2021Entry',
125
- statusPurpose: 'revocation',
126
- statusListIndex: index.toString(),
127
- statusListCredential: statusListCredential,
128
- };
129
- }
130
128
  async validateDelegation(delegationId) {
131
129
  const revokedCheck = await this.isRevoked(delegationId);
132
130
  if (revokedCheck.revoked) {
@@ -1 +1 @@
1
- {"version":3,"file":"cascading-revocation.js","sourceRoot":"","sources":["../../src/delegation/cascading-revocation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cascading-revocation.js","sourceRoot":"","sources":["../../src/delegation/cascading-revocation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAoB/D,MAAM,OAAO,0BAA0B;IAE3B;IACA;IAFV,YACU,KAA6B,EAC7B,UAAiC;QADjC,UAAK,GAAL,KAAK,CAAwB;QAC7B,eAAU,GAAV,UAAU,CAAuB;IACxC,CAAC;IAEJ,KAAK,CAAC,gBAAgB,CACpB,YAAoB,EACpB,UAAsC,EAAE;QAExC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;QACzC,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,oBAAoB,QAAQ,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CACrC,UAAU,EACV,IAAI,EACJ,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,MAAM,CACf,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEvB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAElE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CACjC,UAAU,EACV,KAAK,EACL,iBAAiB,YAAY,EAAE,EAC/B,OAAO,CAAC,MAAM,EACd,YAAY,CACb,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,IAAoB,EACpB,MAAe,EACf,MAAe,EACf,MAAgB,EAChB,QAAiB;QAEjB,MAAM,KAAK,GAAoB;YAC7B,YAAY,EAAE,IAAI,CAAC,EAAE;YACrB,MAAM;YACN,QAAQ;YACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM;SACP,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,0EAA0E;QAC1E,iEAAiE;QACjE,uEAAuE;QACvE,eAAe;QACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1D,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/C,mEAAmE;QACnE,0EAA0E;QAC1E,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,CAAC,EAAE,0DAA0D;gBAC3F,kGAAkG;gBAClG,iFAAiF,CACpF,CAAC;QACJ,CAAC;QACD,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,YAAoB;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,KAAK,GAAoB;YAC7B,YAAY,EAAE,IAAI,CAAC,EAAE;YACrB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,UAAU;SACnB,CAAC;QAEF,mEAAmE;QACnE,qCAAqC;QACrC,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAE5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,YAAoB;QAKlC,mEAAmE;QACnE,+EAA+E;QAC/E,wEAAwE;QACxE,qEAAqE;QACrE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACtD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB;oBAC1E,eAAe,EAAE,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;iBAChE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,IAAoB;QAC/C,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,MAAc;QACtC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,YAAoB;QAC3C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,YAAY,CAAC,eAAe;oBAClC,CAAC,CAAC,YAAY,YAAY,CAAC,eAAe,aAAa;oBACvD,CAAC,CAAC,uBAAuB;aAC5B,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACrE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC3B,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,gCAAgC,CAC9C,KAA6B,EAC7B,UAAiC;IAEjC,OAAO,IAAI,0BAA0B,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC"}
@@ -15,9 +15,15 @@ import { type DelegationCredential } from "../types/protocol.js";
15
15
  /** Union of a credential's delegation scopes and its constraint scopes. */
16
16
  export declare function getDelegationScopes(credential: DelegationCredential): string[];
17
17
  /**
18
- * A child re-delegation may only narrow (attenuate) its parent's authority.
19
- * Enforces flat-scope subset AND crisp-matcher subset (by matcher+resource),
20
- * failing closed on any widening. Pure; never throws.
18
+ * A child re-delegation may only narrow (attenuate) its parent's authority
19
+ * (SPEC.md §6.4). Scope authority comes in two representations (SPEC.md §6.3):
20
+ * flat scopes, matched exactly, and CRISP scope matchers. Both credentials are
21
+ * read as one typed authority ({@link scopeAuthority}), and every flat scope and
22
+ * matcher the child grants must be proven inside the parent's authority
23
+ * ({@link authorityContains}), whichever representation either side uses;
24
+ * anything unprovable, including a malformed entry, fails closed. A credential
25
+ * with no scopes of either kind is not scope-restricted: such a parent accepts
26
+ * any child, and such a child never attenuates a restricted parent. Pure.
21
27
  */
22
28
  export declare function validateScopeAttenuation(parentCredential: DelegationCredential, childCredential: DelegationCredential): {
23
29
  valid: boolean;
@@ -67,10 +73,20 @@ export interface ChainEnforcementDeps {
67
73
  statusListConfigured: boolean;
68
74
  /** Optional graph-backed ancestor-revocation check (see {@link RevocationChecker}). */
69
75
  revocationChecker?: RevocationChecker;
76
+ /**
77
+ * DIDs allowed to sign the chain's root credential (its Responsible Party).
78
+ * When set, a root signed by any other DID is rejected. Omit to accept any
79
+ * root issuer.
80
+ */
81
+ trustedRootIssuers?: readonly string[];
70
82
  }
71
83
  export interface ChainValidationResult {
72
84
  valid: boolean;
73
85
  reason?: string;
86
+ /** Earliest verified credential/constraint expiry across the chain (ms epoch). */
87
+ expiresAt?: number;
88
+ /** Non-fatal inconsistencies worth logging, such as a root whose issuerDid is not its signer. */
89
+ warnings?: string[];
74
90
  }
75
91
  /**
76
92
  * Validate a delegation credential and (if re-delegated) its full chain:
@@ -78,9 +94,14 @@ export interface ChainValidationResult {
78
94
  * the §11.6 re-delegation audience-constraint requirement, parent↔child linkage
79
95
  * (parentId + issuerDid==parent.subjectDid), cycle detection, scope attenuation,
80
96
  * and — when a {@link RevocationChecker} is supplied — graph-backed ancestor
81
- * revocation. Never throws on a malformed input; returns `{ valid, reason }`.
97
+ * revocation. `skipSignature` applies only to the presented leaf whose JWT
98
+ * envelope the caller has verified; ancestors always require verification.
99
+ * Each child must also be signed by its parent's subject: the claimed
100
+ * `issuerDid` alone is not signed evidence of who issued it. When
101
+ * `trustedRootIssuers` is set, the root must be signed by one of them.
102
+ * Success includes the earliest applicable expiry for downstream grant storage.
103
+ * Never throws on a malformed input; returns `{ valid, reason }`.
82
104
  */
83
105
  export declare function validateDelegationChain(leafCredential: DelegationCredential, deps: ChainEnforcementDeps, options?: {
84
106
  skipSignature?: boolean;
85
107
  }): Promise<ChainValidationResult>;
86
- //# sourceMappingURL=chain-enforcement.d.ts.map
@@ -13,6 +13,8 @@
13
13
  */
14
14
  import { extractDelegationFromVC, } from "../types/protocol.js";
15
15
  import { verifyDelegationAudience } from "./audience-validator.js";
16
+ import { authorityContains, crispScopes, scopeAuthority } from "./scope-matcher.js";
17
+ import { credentialIssuerDid } from "./vc-jwt-verify.js";
16
18
  /** Union of a credential's delegation scopes and its constraint scopes. */
17
19
  export function getDelegationScopes(credential) {
18
20
  const scopes = new Set();
@@ -25,44 +27,46 @@ export function getDelegationScopes(credential) {
25
27
  return Array.from(scopes);
26
28
  }
27
29
  /**
28
- * A child re-delegation may only narrow (attenuate) its parent's authority.
29
- * Enforces flat-scope subset AND crisp-matcher subset (by matcher+resource),
30
- * failing closed on any widening. Pure; never throws.
30
+ * A child re-delegation may only narrow (attenuate) its parent's authority
31
+ * (SPEC.md §6.4). Scope authority comes in two representations (SPEC.md §6.3):
32
+ * flat scopes, matched exactly, and CRISP scope matchers. Both credentials are
33
+ * read as one typed authority ({@link scopeAuthority}), and every flat scope and
34
+ * matcher the child grants must be proven inside the parent's authority
35
+ * ({@link authorityContains}), whichever representation either side uses;
36
+ * anything unprovable, including a malformed entry, fails closed. A credential
37
+ * with no scopes of either kind is not scope-restricted: such a parent accepts
38
+ * any child, and such a child never attenuates a restricted parent. Pure.
31
39
  */
32
40
  export function validateScopeAttenuation(parentCredential, childCredential) {
33
- const parentScopes = getDelegationScopes(parentCredential);
41
+ const parentId = parentCredential.credentialSubject.delegation.id;
42
+ const childId = childCredential.credentialSubject.delegation.id;
43
+ const parentAuthority = scopeAuthority(parentCredential);
44
+ if (parentAuthority.length === 0) {
45
+ return { valid: true };
46
+ }
34
47
  const childScopes = getDelegationScopes(childCredential);
35
- const childDelegation = childCredential.credentialSubject.delegation;
36
- // CRISP matcher attenuation: getDelegationScopes does NOT see constraints.crisp.scopes,
37
- // so a re-delegation could otherwise widen authority by introducing a broad
38
- // prefix/regex matcher (e.g. resource:"" matches every scope). Require the child's
39
- // crisp matchers to be a subset of the parent's (by matcher+resource). Fail closed.
40
- const crispKey = (s) => `${s.matcher}\u0000${s.resource}`;
41
- const parentCrisp = new Set((parentCredential.credentialSubject.delegation.constraints.crisp?.scopes ?? []).map(crispKey));
42
- const widenedCrisp = (childDelegation.constraints.crisp?.scopes ?? []).filter((s) => !parentCrisp.has(crispKey(s)));
43
- if (widenedCrisp.length > 0) {
48
+ const childMatchers = crispScopes(childCredential);
49
+ if (childScopes.length === 0 && childMatchers.length === 0) {
44
50
  return {
45
51
  valid: false,
46
- reason: `Delegation ${childDelegation.id} introduces crisp scope matcher(s) absent from parent ${parentCredential.credentialSubject.delegation.id}: ${widenedCrisp
47
- .map((s) => `${s.matcher}:${s.resource}`)
48
- .join(", ")}`,
52
+ reason: `Delegation ${childId} omits scopes required to prove attenuation from parent ${parentId}`,
49
53
  };
50
54
  }
51
- if (parentScopes.length === 0) {
52
- return { valid: true };
53
- }
54
- if (childScopes.length === 0) {
55
+ const withinParent = authorityContains(parentAuthority);
56
+ const widenedMatchers = childMatchers.filter((scope) => !withinParent(scope));
57
+ if (widenedMatchers.length > 0) {
55
58
  return {
56
59
  valid: false,
57
- reason: `Delegation ${childDelegation.id} omits scopes required to prove attenuation from parent ${parentCredential.credentialSubject.delegation.id}`,
60
+ reason: `Delegation ${childId} introduces crisp scope matcher(s) outside parent ${parentId}: ${widenedMatchers
61
+ .map((s) => `${s?.matcher}:${s?.resource}`)
62
+ .join(", ")}`,
58
63
  };
59
64
  }
60
- const parentScopeSet = new Set(parentScopes);
61
- const widenedScopes = childScopes.filter((scope) => !parentScopeSet.has(scope));
65
+ const widenedScopes = childScopes.filter((scope) => !withinParent({ resource: scope, matcher: "exact" }));
62
66
  if (widenedScopes.length > 0) {
63
67
  return {
64
68
  valid: false,
65
- reason: `Delegation ${childDelegation.id} widens scopes beyond parent ${parentCredential.credentialSubject.delegation.id}: ${widenedScopes.join(", ")}`,
69
+ reason: `Delegation ${childId} widens scopes beyond parent ${parentId}: ${widenedScopes.join(", ")}`,
66
70
  };
67
71
  }
68
72
  return { valid: true };
@@ -73,7 +77,13 @@ export function validateScopeAttenuation(parentCredential, childCredential) {
73
77
  * the §11.6 re-delegation audience-constraint requirement, parent↔child linkage
74
78
  * (parentId + issuerDid==parent.subjectDid), cycle detection, scope attenuation,
75
79
  * and — when a {@link RevocationChecker} is supplied — graph-backed ancestor
76
- * revocation. Never throws on a malformed input; returns `{ valid, reason }`.
80
+ * revocation. `skipSignature` applies only to the presented leaf whose JWT
81
+ * envelope the caller has verified; ancestors always require verification.
82
+ * Each child must also be signed by its parent's subject: the claimed
83
+ * `issuerDid` alone is not signed evidence of who issued it. When
84
+ * `trustedRootIssuers` is set, the root must be signed by one of them.
85
+ * Success includes the earliest applicable expiry for downstream grant storage.
86
+ * Never throws on a malformed input; returns `{ valid, reason }`.
77
87
  */
78
88
  export async function validateDelegationChain(leafCredential, deps, options) {
79
89
  // Shape guard (validate* never-throw contract): a structurally malformed leaf
@@ -122,8 +132,15 @@ export async function validateDelegationChain(leafCredential, deps, options) {
122
132
  reason: `Resolved delegation chain for ${leafDelegation.id} must end with the leaf credential`,
123
133
  };
124
134
  }
125
- chain = leafIndex === -1 ? [...resolvedChain, leafCredential] : resolvedChain;
135
+ // Always validate the presented leaf. A resolver may return a copy, but it
136
+ // must not replace the credential whose JWT envelope was authenticated.
137
+ chain = [
138
+ ...(leafIndex === -1 ? resolvedChain : resolvedChain.slice(0, -1)),
139
+ leafCredential,
140
+ ];
126
141
  }
142
+ let expiresAt;
143
+ const warnings = [];
127
144
  const seenIds = new Set();
128
145
  let previousDelegation;
129
146
  let previousCredential;
@@ -143,7 +160,9 @@ export async function validateDelegationChain(leafCredential, deps, options) {
143
160
  };
144
161
  }
145
162
  const credentialVerification = await deps.verifier.verifyDelegationCredential(credential, {
146
- ...(options?.skipSignature ? { skipSignature: true } : {}),
163
+ ...(options?.skipSignature && credential === leafCredential
164
+ ? { skipSignature: true }
165
+ : {}),
147
166
  });
148
167
  if (!credentialVerification.valid) {
149
168
  return {
@@ -151,6 +170,19 @@ export async function validateDelegationChain(leafCredential, deps, options) {
151
170
  reason: `Delegation ${delegation.id} invalid: ${credentialVerification.reason}`,
152
171
  };
153
172
  }
173
+ // Use the already-verified walk so grant lifetime cannot outlive a shorter
174
+ // ancestor or constraint. Expiry/status are still rechecked on every call.
175
+ const deadlines = [
176
+ credential.expirationDate ? Date.parse(credential.expirationDate) : undefined,
177
+ delegation.constraints.notAfter !== undefined
178
+ ? delegation.constraints.notAfter * 1000
179
+ : undefined,
180
+ ];
181
+ for (const deadline of deadlines) {
182
+ if (deadline !== undefined && Number.isFinite(deadline)) {
183
+ expiresAt = Math.min(expiresAt ?? deadline, deadline);
184
+ }
185
+ }
154
186
  if (!verifyDelegationAudience(delegation, deps.serverDid)) {
155
187
  return {
156
188
  valid: false,
@@ -167,6 +199,10 @@ export async function validateDelegationChain(leafCredential, deps, options) {
167
199
  reason: `Delegation ${delegation.id} is a re-delegation (parentId: ${delegation.parentId}) but has no audience constraint. Re-delegations MUST include an audience constraint (KYA-OS §11.6)`,
168
200
  };
169
201
  }
202
+ // The DID whose key the verifier checked this credential against. Unlike
203
+ // `delegation.issuerDid`, which is only a claim inside the signed body,
204
+ // this is who actually issued it.
205
+ const signerDid = credentialIssuerDid(credential);
170
206
  if (!previousDelegation || !previousCredential) {
171
207
  if (delegation.parentId) {
172
208
  return {
@@ -174,6 +210,16 @@ export async function validateDelegationChain(leafCredential, deps, options) {
174
210
  reason: `Resolved delegation chain is incomplete: root delegation ${delegation.id} still references parent ${delegation.parentId}`,
175
211
  };
176
212
  }
213
+ if (deps.trustedRootIssuers &&
214
+ (signerDid === undefined || !deps.trustedRootIssuers.includes(signerDid))) {
215
+ return {
216
+ valid: false,
217
+ reason: `Root delegation ${delegation.id} is issued by ${signerDid ?? "an unidentified issuer"}, which is not a trusted root issuer`,
218
+ };
219
+ }
220
+ if (signerDid !== delegation.issuerDid) {
221
+ warnings.push(`Root delegation ${delegation.id} names issuerDid ${delegation.issuerDid} but is signed by ${signerDid ?? "an unidentified issuer"}`);
222
+ }
177
223
  previousDelegation = delegation;
178
224
  previousCredential = credential;
179
225
  continue;
@@ -190,6 +236,14 @@ export async function validateDelegationChain(leafCredential, deps, options) {
190
236
  reason: `Delegation ${delegation.id} issued by ${delegation.issuerDid} but parent subject is ${previousDelegation.subjectDid}`,
191
237
  };
192
238
  }
239
+ // Only the parent's delegate may re-delegate. Without this, anyone could
240
+ // sign a child that merely claims the parent's subject as its issuer.
241
+ if (signerDid !== previousDelegation.subjectDid) {
242
+ return {
243
+ valid: false,
244
+ reason: `Delegation ${delegation.id} is signed by ${signerDid ?? "an unidentified issuer"} but parent subject is ${previousDelegation.subjectDid}`,
245
+ };
246
+ }
193
247
  const scopeValidation = validateScopeAttenuation(previousCredential, credential);
194
248
  if (!scopeValidation.valid) {
195
249
  return scopeValidation;
@@ -206,19 +260,41 @@ export async function validateDelegationChain(leafCredential, deps, options) {
206
260
  }
207
261
  // E3.1: graph-backed ancestor revocation. Independent of how the chain above
208
262
  // was resolved — catches a cascade-revoked ANCESTOR even when the leaf's own
209
- // credentialStatus bit was never flipped. Opt-in: only runs when a checker is
210
- // wired, so existing callers are unaffected.
263
+ // credentialStatus bit was never flipped. Every credential in the verified
264
+ // chain is asked about, root first: a leaf minted after its ancestor was
265
+ // revoked was never registered, so the graph cannot reach the ancestor
266
+ // from the leaf's id alone. Opt-in: only runs when a checker is wired, so
267
+ // existing callers are unaffected.
211
268
  if (deps.revocationChecker) {
212
- const revocation = await deps.revocationChecker.isRevoked(leafDelegation.id);
213
- if (revocation.revoked) {
269
+ for (const credential of chain) {
270
+ const delegationId = credential.credentialSubject.delegation.id;
271
+ let revocation;
272
+ try {
273
+ revocation = await deps.revocationChecker.isRevoked(delegationId);
274
+ }
275
+ catch (error) {
276
+ return {
277
+ valid: false,
278
+ reason: `Revocation check failed for delegation ${delegationId}: ${error instanceof Error ? error.message : "Unknown error"}`,
279
+ };
280
+ }
281
+ if (!revocation.revoked) {
282
+ continue;
283
+ }
284
+ const revokedAncestor = revocation.revokedAncestor ??
285
+ (delegationId === leafDelegation.id ? undefined : delegationId);
214
286
  return {
215
287
  valid: false,
216
- reason: revocation.revokedAncestor
217
- ? `Delegation ${leafDelegation.id} is revoked via ancestor ${revocation.revokedAncestor}`
288
+ reason: revokedAncestor
289
+ ? `Delegation ${leafDelegation.id} is revoked via ancestor ${revokedAncestor}`
218
290
  : `Delegation ${leafDelegation.id} is revoked${revocation.reason ? `: ${revocation.reason}` : ""}`,
219
291
  };
220
292
  }
221
293
  }
222
- return { valid: true };
294
+ return {
295
+ valid: true,
296
+ ...(expiresAt !== undefined ? { expiresAt } : {}),
297
+ ...(warnings.length > 0 ? { warnings } : {}),
298
+ };
223
299
  }
224
300
  //# sourceMappingURL=chain-enforcement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chain-enforcement.js","sourceRoot":"","sources":["../../src/delegation/chain-enforcement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,uBAAuB,GAGxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,2EAA2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,UAAgC;IAClE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACzE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;QACtF,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,gBAAsC,EACtC,eAAqC;IAErC,MAAM,YAAY,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC;IAErE,wFAAwF;IACxF,4EAA4E;IAC5E,mFAAmF;IACnF,oFAAoF;IACpF,MAAM,QAAQ,GAAG,CAAC,CAAwC,EAAU,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzG,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAC9F,CAAC;IACF,MAAM,YAAY,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAC3E,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACrC,CAAC;IACF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,cAAc,eAAe,CAAC,EAAE,yDAAyD,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,KAAK,YAAY;iBAC/J,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;iBACxC,IAAI,CAAC,IAAI,CAAC,EAAE;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,cAAc,eAAe,CAAC,EAAE,2DAA2D,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,EAAE;SACtJ,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,cAAc,eAAe,CAAC,EAAE,gCAAgC,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACxJ,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAuDD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,cAAoC,EACpC,IAA0B,EAC1B,OAAqC;IAErC,8EAA8E;IAC9E,iFAAiF;IACjF,qDAAqD;IACrD,gFAAgF;IAChF,MAAM,iBAAiB,GACrB,cAAc,EAAE,iBAGjB,EAAE,UAAU,CAAC;IACd,IACE,CAAC,iBAAiB;QAClB,OAAO,iBAAiB,KAAK,QAAQ;QACrC,CAAC,iBAAiB,CAAC,WAAW;QAC9B,OAAO,iBAAiB,CAAC,WAAW,KAAK,QAAQ,EACjD,CAAC;QACD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EACJ,0FAA0F;SAC7F,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;IAC/D,IAAI,KAAK,GAA2B,CAAC,cAAc,CAAC,CAAC;IAErD,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACjC,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,cAAc,cAAc,CAAC,EAAE,sBAAsB,cAAc,CAAC,QAAQ,sDAAsD;aAC3I,CAAC;QACJ,CAAC;QAED,IAAI,aAAqC,CAAC;QAC1C,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;aAC1G,CAAC;QACJ,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,cAAc,cAAc,CAAC,EAAE,sBAAsB,cAAc,CAAC,QAAQ,kCAAkC;aACvH,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CACvC,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,KAAK,cAAc,CAAC,EAAE,CACnE,CAAC;QACF,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,iCAAiC,cAAc,CAAC,EAAE,oCAAoC;aAC/F,CAAC;QACJ,CAAC;QAED,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IAChF,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,kBAAgD,CAAC;IACrD,IAAI,kBAAoD,CAAC;IAEzD,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;QAEvD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,qDAAqD,UAAU,CAAC,EAAE,EAAE;aAC7E,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAE3B,IAAI,UAAU,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9D,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,cAAc,UAAU,CAAC,EAAE,+DAA+D;aACnG,CAAC;QACJ,CAAC;QAED,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAC3E,UAAU,EACV;YACE,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CACF,CAAC;QACF,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,cAAc,UAAU,CAAC,EAAE,aAAa,sBAAsB,CAAC,MAAM,EAAE;aAChF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1D,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,cAAc,UAAU,CAAC,EAAE,yCAAyC,IAAI,CAAC,SAAS,EAAE;aAC7F,CAAC;QACJ,CAAC;QAED,6EAA6E;QAC7E,4EAA4E;QAC5E,uEAAuE;QACvE,6CAA6C;QAC7C,IAAI,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC5D,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,cAAc,UAAU,CAAC,EAAE,kCAAkC,UAAU,CAAC,QAAQ,qGAAqG;aAC9L,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,kBAAkB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACxB,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,4DAA4D,UAAU,CAAC,EAAE,4BAA4B,UAAU,CAAC,QAAQ,EAAE;iBACnI,CAAC;YACJ,CAAC;YAED,kBAAkB,GAAG,UAAU,CAAC;YAChC,kBAAkB,GAAG,UAAU,CAAC;YAChC,SAAS;QACX,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,KAAK,kBAAkB,CAAC,EAAE,EAAE,CAAC;YAClD,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,cAAc,UAAU,CAAC,EAAE,sBAAsB,UAAU,CAAC,QAAQ,iBAAiB,kBAAkB,CAAC,EAAE,EAAE;aACrH,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,CAAC,SAAS,KAAK,kBAAkB,CAAC,UAAU,EAAE,CAAC;YAC3D,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,cAAc,UAAU,CAAC,EAAE,cAAc,UAAU,CAAC,SAAS,0BAA0B,kBAAkB,CAAC,UAAU,EAAE;aAC/H,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,wBAAwB,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QACjF,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC3B,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,kBAAkB,GAAG,UAAU,CAAC;QAChC,kBAAkB,GAAG,UAAU,CAAC;IAClC,CAAC;IAED,MAAM,eAAe,GAAG,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC;IAC1E,IAAI,eAAe,CAAC,EAAE,KAAK,cAAc,CAAC,EAAE,EAAE,CAAC;QAC7C,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,sCAAsC,eAAe,CAAC,EAAE,oBAAoB,cAAc,CAAC,EAAE,EAAE;SACxG,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,8EAA8E;IAC9E,6CAA6C;IAC7C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC7E,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,UAAU,CAAC,eAAe;oBAChC,CAAC,CAAC,cAAc,cAAc,CAAC,EAAE,4BAA4B,UAAU,CAAC,eAAe,EAAE;oBACzF,CAAC,CAAC,cAAc,cAAc,CAAC,EAAE,cAAc,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;aACrG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"chain-enforcement.js","sourceRoot":"","sources":["../../src/delegation/chain-enforcement.ts"],"names":[],"mappings":"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"}