agent-passport-system 4.3.0 → 4.4.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 (323) hide show
  1. package/README.md +6 -6
  2. package/dist/src/adapters/crewai.js +2 -2
  3. package/dist/src/adapters/crewai.js.map +1 -1
  4. package/dist/src/adapters/gonka.js +5 -5
  5. package/dist/src/adapters/gonka.js.map +1 -1
  6. package/dist/src/adapters/ibac.js +2 -2
  7. package/dist/src/adapters/ibac.js.map +1 -1
  8. package/dist/src/adapters/langchain.js +2 -2
  9. package/dist/src/adapters/langchain.js.map +1 -1
  10. package/dist/src/adapters/mcp.js +2 -2
  11. package/dist/src/adapters/mcp.js.map +1 -1
  12. package/dist/src/adapters/oauth-id-jag/import-v1.js +4 -4
  13. package/dist/src/adapters/oauth-id-jag/import-v1.js.map +1 -1
  14. package/dist/src/adapters/oauth-id-jag/index.js +4 -4
  15. package/dist/src/adapters/oauth-id-jag/index.js.map +1 -1
  16. package/dist/src/cli/index.js +50 -5
  17. package/dist/src/cli/index.js.map +1 -1
  18. package/dist/src/core/a2a.js +2 -2
  19. package/dist/src/core/a2a.js.map +1 -1
  20. package/dist/src/core/action-ref.d.ts +7 -28
  21. package/dist/src/core/action-ref.d.ts.map +1 -1
  22. package/dist/src/core/action-ref.js +20 -6
  23. package/dist/src/core/action-ref.js.map +1 -1
  24. package/dist/src/core/agora.js +2 -2
  25. package/dist/src/core/agora.js.map +1 -1
  26. package/dist/src/core/aps-txt.d.ts.map +1 -1
  27. package/dist/src/core/aps-txt.js +4 -3
  28. package/dist/src/core/aps-txt.js.map +1 -1
  29. package/dist/src/core/attestation.d.ts +8 -0
  30. package/dist/src/core/attestation.d.ts.map +1 -1
  31. package/dist/src/core/attestation.js +13 -3
  32. package/dist/src/core/attestation.js.map +1 -1
  33. package/dist/src/core/behavioral-fingerprint.js +2 -2
  34. package/dist/src/core/behavioral-fingerprint.js.map +1 -1
  35. package/dist/src/core/behavioral-memory-receipt.js +2 -2
  36. package/dist/src/core/behavioral-memory-receipt.js.map +1 -1
  37. package/dist/src/core/behavioral-memory.js +3 -3
  38. package/dist/src/core/behavioral-memory.js.map +1 -1
  39. package/dist/src/core/bilateral-receipt.d.ts.map +1 -1
  40. package/dist/src/core/bilateral-receipt.js +34 -8
  41. package/dist/src/core/bilateral-receipt.js.map +1 -1
  42. package/dist/src/core/canonical-jcs.d.ts +36 -2
  43. package/dist/src/core/canonical-jcs.d.ts.map +1 -1
  44. package/dist/src/core/canonical-jcs.js +96 -7
  45. package/dist/src/core/canonical-jcs.js.map +1 -1
  46. package/dist/src/core/canonical.d.ts +26 -0
  47. package/dist/src/core/canonical.d.ts.map +1 -1
  48. package/dist/src/core/canonical.js +64 -0
  49. package/dist/src/core/canonical.js.map +1 -1
  50. package/dist/src/core/charter.d.ts.map +1 -1
  51. package/dist/src/core/charter.js +25 -17
  52. package/dist/src/core/charter.js.map +1 -1
  53. package/dist/src/core/commerce.js +2 -2
  54. package/dist/src/core/commerce.js.map +1 -1
  55. package/dist/src/core/completion.js +2 -2
  56. package/dist/src/core/completion.js.map +1 -1
  57. package/dist/src/core/coordination.js +10 -10
  58. package/dist/src/core/coordination.js.map +1 -1
  59. package/dist/src/core/credential-request.js +2 -2
  60. package/dist/src/core/credential-request.js.map +1 -1
  61. package/dist/src/core/cross-chain.d.ts +8 -0
  62. package/dist/src/core/cross-chain.d.ts.map +1 -1
  63. package/dist/src/core/cross-chain.js +23 -9
  64. package/dist/src/core/cross-chain.js.map +1 -1
  65. package/dist/src/core/data-lifecycle.js +7 -7
  66. package/dist/src/core/data-lifecycle.js.map +1 -1
  67. package/dist/src/core/data-source-attribution.js +3 -3
  68. package/dist/src/core/data-source-attribution.js.map +1 -1
  69. package/dist/src/core/data-source.js +5 -5
  70. package/dist/src/core/data-source.js.map +1 -1
  71. package/dist/src/core/decision-semantics.d.ts +9 -9
  72. package/dist/src/core/decision-semantics.d.ts.map +1 -1
  73. package/dist/src/core/decision-semantics.js +20 -6
  74. package/dist/src/core/decision-semantics.js.map +1 -1
  75. package/dist/src/core/delegation.d.ts.map +1 -1
  76. package/dist/src/core/delegation.js +3 -2
  77. package/dist/src/core/delegation.js.map +1 -1
  78. package/dist/src/core/did.js +2 -2
  79. package/dist/src/core/did.js.map +1 -1
  80. package/dist/src/core/encrypted-messaging.js +5 -5
  81. package/dist/src/core/encrypted-messaging.js.map +1 -1
  82. package/dist/src/core/escalation.js +4 -4
  83. package/dist/src/core/escalation.js.map +1 -1
  84. package/dist/src/core/evaluation-context.js +3 -3
  85. package/dist/src/core/evaluation-context.js.map +1 -1
  86. package/dist/src/core/evidence-bundle.d.ts +8 -0
  87. package/dist/src/core/evidence-bundle.d.ts.map +1 -1
  88. package/dist/src/core/evidence-bundle.js +13 -3
  89. package/dist/src/core/evidence-bundle.js.map +1 -1
  90. package/dist/src/core/execution-attestation.js +7 -7
  91. package/dist/src/core/execution-attestation.js.map +1 -1
  92. package/dist/src/core/execution-envelope.js +7 -7
  93. package/dist/src/core/execution-envelope.js.map +1 -1
  94. package/dist/src/core/federation.js +3 -3
  95. package/dist/src/core/federation.js.map +1 -1
  96. package/dist/src/core/fidelity-probe.js +2 -2
  97. package/dist/src/core/fidelity-probe.js.map +1 -1
  98. package/dist/src/core/governance-block.d.ts.map +1 -1
  99. package/dist/src/core/governance-block.js +8 -5
  100. package/dist/src/core/governance-block.js.map +1 -1
  101. package/dist/src/core/governance-consumer.d.ts.map +1 -1
  102. package/dist/src/core/governance-consumer.js +4 -1
  103. package/dist/src/core/governance-consumer.js.map +1 -1
  104. package/dist/src/core/governance.js +3 -3
  105. package/dist/src/core/governance.js.map +1 -1
  106. package/dist/src/core/identity.js +5 -5
  107. package/dist/src/core/identity.js.map +1 -1
  108. package/dist/src/core/intent.js +5 -5
  109. package/dist/src/core/intent.js.map +1 -1
  110. package/dist/src/core/key-rotation.d.ts.map +1 -1
  111. package/dist/src/core/key-rotation.js +12 -2
  112. package/dist/src/core/key-rotation.js.map +1 -1
  113. package/dist/src/core/messaging-audit.js +2 -2
  114. package/dist/src/core/messaging-audit.js.map +1 -1
  115. package/dist/src/core/obligations.js +6 -6
  116. package/dist/src/core/obligations.js.map +1 -1
  117. package/dist/src/core/oracle-witness.js +2 -2
  118. package/dist/src/core/oracle-witness.js.map +1 -1
  119. package/dist/src/core/passport.js +3 -3
  120. package/dist/src/core/passport.js.map +1 -1
  121. package/dist/src/core/policy.d.ts.map +1 -1
  122. package/dist/src/core/policy.js +12 -11
  123. package/dist/src/core/policy.js.map +1 -1
  124. package/dist/src/core/precedent.js +2 -2
  125. package/dist/src/core/precedent.js.map +1 -1
  126. package/dist/src/core/principal.js +3 -3
  127. package/dist/src/core/principal.js.map +1 -1
  128. package/dist/src/core/probe-identity.js +2 -2
  129. package/dist/src/core/probe-identity.js.map +1 -1
  130. package/dist/src/core/reserve.js +2 -2
  131. package/dist/src/core/reserve.js.map +1 -1
  132. package/dist/src/core/reversibility-fold.d.ts +8 -0
  133. package/dist/src/core/reversibility-fold.d.ts.map +1 -1
  134. package/dist/src/core/reversibility-fold.js +13 -3
  135. package/dist/src/core/reversibility-fold.js.map +1 -1
  136. package/dist/src/core/routing.js +6 -6
  137. package/dist/src/core/routing.js.map +1 -1
  138. package/dist/src/core/tool-integrity.d.ts.map +1 -1
  139. package/dist/src/core/tool-integrity.js +18 -8
  140. package/dist/src/core/tool-integrity.js.map +1 -1
  141. package/dist/src/core/transactional.js +4 -4
  142. package/dist/src/core/transactional.js.map +1 -1
  143. package/dist/src/core/values.js +3 -3
  144. package/dist/src/core/values.js.map +1 -1
  145. package/dist/src/core/vc-wrapper.js +2 -2
  146. package/dist/src/core/vc-wrapper.js.map +1 -1
  147. package/dist/src/core/vc.js +2 -2
  148. package/dist/src/core/vc.js.map +1 -1
  149. package/dist/src/core/write-policy.d.ts +37 -0
  150. package/dist/src/core/write-policy.d.ts.map +1 -0
  151. package/dist/src/core/write-policy.js +100 -0
  152. package/dist/src/core/write-policy.js.map +1 -0
  153. package/dist/src/decisionReceipt.d.ts +9 -1
  154. package/dist/src/decisionReceipt.d.ts.map +1 -1
  155. package/dist/src/decisionReceipt.js +40 -6
  156. package/dist/src/decisionReceipt.js.map +1 -1
  157. package/dist/src/interop/agent-json-bridge.js +2 -2
  158. package/dist/src/interop/agent-json-bridge.js.map +1 -1
  159. package/dist/src/profiles/a2a/identity-v1.js +2 -2
  160. package/dist/src/profiles/a2a/identity-v1.js.map +1 -1
  161. package/dist/src/storage/receipt-bundle.d.ts.map +1 -1
  162. package/dist/src/storage/receipt-bundle.js +12 -4
  163. package/dist/src/storage/receipt-bundle.js.map +1 -1
  164. package/dist/src/storage/volatile-backend.js +4 -4
  165. package/dist/src/storage/volatile-backend.js.map +1 -1
  166. package/dist/src/types/policy.d.ts +1 -1
  167. package/dist/src/types/policy.d.ts.map +1 -1
  168. package/dist/src/v2/accountability/construct/action.js +3 -3
  169. package/dist/src/v2/accountability/construct/action.js.map +1 -1
  170. package/dist/src/v2/accountability/construct/authority-boundary.js +3 -3
  171. package/dist/src/v2/accountability/construct/authority-boundary.js.map +1 -1
  172. package/dist/src/v2/accountability/construct/bundle.d.ts.map +1 -1
  173. package/dist/src/v2/accountability/construct/bundle.js +5 -3
  174. package/dist/src/v2/accountability/construct/bundle.js.map +1 -1
  175. package/dist/src/v2/accountability/construct/contestability.js +4 -4
  176. package/dist/src/v2/accountability/construct/contestability.js.map +1 -1
  177. package/dist/src/v2/accountability/construct/custody.js +3 -3
  178. package/dist/src/v2/accountability/construct/custody.js.map +1 -1
  179. package/dist/src/v2/accountability/verify/bundle.d.ts.map +1 -1
  180. package/dist/src/v2/accountability/verify/bundle.js +4 -2
  181. package/dist/src/v2/accountability/verify/bundle.js.map +1 -1
  182. package/dist/src/v2/attribution-consent/create.d.ts +12 -1
  183. package/dist/src/v2/attribution-consent/create.d.ts.map +1 -1
  184. package/dist/src/v2/attribution-consent/create.js +18 -6
  185. package/dist/src/v2/attribution-consent/create.js.map +1 -1
  186. package/dist/src/v2/attribution-consent/sign.js +2 -2
  187. package/dist/src/v2/attribution-consent/sign.js.map +1 -1
  188. package/dist/src/v2/attribution-primitive/canonical.d.ts +17 -2
  189. package/dist/src/v2/attribution-primitive/canonical.d.ts.map +1 -1
  190. package/dist/src/v2/attribution-primitive/canonical.js +27 -3
  191. package/dist/src/v2/attribution-primitive/canonical.js.map +1 -1
  192. package/dist/src/v2/attribution-primitive/construct.d.ts +0 -15
  193. package/dist/src/v2/attribution-primitive/construct.d.ts.map +1 -1
  194. package/dist/src/v2/attribution-primitive/construct.js +24 -11
  195. package/dist/src/v2/attribution-primitive/construct.js.map +1 -1
  196. package/dist/src/v2/attribution-primitive/merkle.d.ts +7 -3
  197. package/dist/src/v2/attribution-primitive/merkle.d.ts.map +1 -1
  198. package/dist/src/v2/attribution-primitive/merkle.js +18 -6
  199. package/dist/src/v2/attribution-primitive/merkle.js.map +1 -1
  200. package/dist/src/v2/attribution-primitive/residual.js +2 -2
  201. package/dist/src/v2/attribution-primitive/residual.js.map +1 -1
  202. package/dist/src/v2/attribution-settlement/aggregate.d.ts +8 -0
  203. package/dist/src/v2/attribution-settlement/aggregate.d.ts.map +1 -1
  204. package/dist/src/v2/attribution-settlement/aggregate.js +16 -6
  205. package/dist/src/v2/attribution-settlement/aggregate.js.map +1 -1
  206. package/dist/src/v2/attribution-settlement/merkle.d.ts +8 -0
  207. package/dist/src/v2/attribution-settlement/merkle.d.ts.map +1 -1
  208. package/dist/src/v2/attribution-settlement/merkle.js +11 -1
  209. package/dist/src/v2/attribution-settlement/merkle.js.map +1 -1
  210. package/dist/src/v2/attribution-settlement/sign.d.ts +9 -3
  211. package/dist/src/v2/attribution-settlement/sign.d.ts.map +1 -1
  212. package/dist/src/v2/attribution-settlement/sign.js +18 -4
  213. package/dist/src/v2/attribution-settlement/sign.js.map +1 -1
  214. package/dist/src/v2/authority-delegation/canonical.d.ts +14 -0
  215. package/dist/src/v2/authority-delegation/canonical.d.ts.map +1 -1
  216. package/dist/src/v2/authority-delegation/canonical.js +28 -2
  217. package/dist/src/v2/authority-delegation/canonical.js.map +1 -1
  218. package/dist/src/v2/authority-delegation/issue.js +2 -2
  219. package/dist/src/v2/authority-delegation/issue.js.map +1 -1
  220. package/dist/src/v2/behavioral_drift_window/envelope.d.ts +8 -0
  221. package/dist/src/v2/behavioral_drift_window/envelope.d.ts.map +1 -1
  222. package/dist/src/v2/behavioral_drift_window/envelope.js +13 -2
  223. package/dist/src/v2/behavioral_drift_window/envelope.js.map +1 -1
  224. package/dist/src/v2/bridge.d.ts +8 -0
  225. package/dist/src/v2/bridge.d.ts.map +1 -1
  226. package/dist/src/v2/bridge.js +13 -2
  227. package/dist/src/v2/bridge.js.map +1 -1
  228. package/dist/src/v2/cognitive-attestation/envelope.d.ts +9 -7
  229. package/dist/src/v2/cognitive-attestation/envelope.d.ts.map +1 -1
  230. package/dist/src/v2/cognitive-attestation/envelope.js +18 -4
  231. package/dist/src/v2/cognitive-attestation/envelope.js.map +1 -1
  232. package/dist/src/v2/cognitive_attestation/envelope.d.ts +8 -0
  233. package/dist/src/v2/cognitive_attestation/envelope.d.ts.map +1 -1
  234. package/dist/src/v2/cognitive_attestation/envelope.js +13 -2
  235. package/dist/src/v2/cognitive_attestation/envelope.js.map +1 -1
  236. package/dist/src/v2/context-provenance/cpa.d.ts +8 -0
  237. package/dist/src/v2/context-provenance/cpa.d.ts.map +1 -1
  238. package/dist/src/v2/context-provenance/cpa.js +22 -8
  239. package/dist/src/v2/context-provenance/cpa.js.map +1 -1
  240. package/dist/src/v2/context-provenance/merkle.d.ts +21 -18
  241. package/dist/src/v2/context-provenance/merkle.d.ts.map +1 -1
  242. package/dist/src/v2/context-provenance/merkle.js +38 -5
  243. package/dist/src/v2/context-provenance/merkle.js.map +1 -1
  244. package/dist/src/v2/context-provenance/types.d.ts +1 -1
  245. package/dist/src/v2/cross_issuer_attestation/envelope.d.ts +8 -0
  246. package/dist/src/v2/cross_issuer_attestation/envelope.d.ts.map +1 -1
  247. package/dist/src/v2/cross_issuer_attestation/envelope.js +13 -2
  248. package/dist/src/v2/cross_issuer_attestation/envelope.js.map +1 -1
  249. package/dist/src/v2/hash-pointer/profile.d.ts.map +1 -1
  250. package/dist/src/v2/hash-pointer/profile.js +11 -3
  251. package/dist/src/v2/hash-pointer/profile.js.map +1 -1
  252. package/dist/src/v2/human-escalation.d.ts +10 -0
  253. package/dist/src/v2/human-escalation.d.ts.map +1 -1
  254. package/dist/src/v2/human-escalation.js +15 -1
  255. package/dist/src/v2/human-escalation.js.map +1 -1
  256. package/dist/src/v2/human-oversight/index.d.ts +9 -9
  257. package/dist/src/v2/human-oversight/index.d.ts.map +1 -1
  258. package/dist/src/v2/human-oversight/index.js +18 -4
  259. package/dist/src/v2/human-oversight/index.js.map +1 -1
  260. package/dist/src/v2/instruction-provenance/canonicalize.d.ts +17 -5
  261. package/dist/src/v2/instruction-provenance/canonicalize.d.ts.map +1 -1
  262. package/dist/src/v2/instruction-provenance/canonicalize.js +28 -3
  263. package/dist/src/v2/instruction-provenance/canonicalize.js.map +1 -1
  264. package/dist/src/v2/instruction-provenance/envelope.js +3 -3
  265. package/dist/src/v2/instruction-provenance/envelope.js.map +1 -1
  266. package/dist/src/v2/memory_provenance/envelope.d.ts +8 -0
  267. package/dist/src/v2/memory_provenance/envelope.d.ts.map +1 -1
  268. package/dist/src/v2/memory_provenance/envelope.js +13 -2
  269. package/dist/src/v2/memory_provenance/envelope.js.map +1 -1
  270. package/dist/src/v2/mutual-auth/certificate.d.ts.map +1 -1
  271. package/dist/src/v2/mutual-auth/certificate.js +6 -4
  272. package/dist/src/v2/mutual-auth/certificate.js.map +1 -1
  273. package/dist/src/v2/mutual-auth/handshake.js +3 -3
  274. package/dist/src/v2/mutual-auth/handshake.js.map +1 -1
  275. package/dist/src/v2/mutual-auth/trust-bundle.d.ts.map +1 -1
  276. package/dist/src/v2/mutual-auth/trust-bundle.js +4 -3
  277. package/dist/src/v2/mutual-auth/trust-bundle.js.map +1 -1
  278. package/dist/src/v2/mutual-auth/types.d.ts +3 -3
  279. package/dist/src/v2/mutual-auth/types.d.ts.map +1 -1
  280. package/dist/src/v2/payment-rails/acp/index.d.ts.map +1 -1
  281. package/dist/src/v2/payment-rails/acp/index.js +52 -11
  282. package/dist/src/v2/payment-rails/acp/index.js.map +1 -1
  283. package/dist/src/v2/payment-rails/acp/types.d.ts +4 -4
  284. package/dist/src/v2/payment-rails/acp/types.d.ts.map +1 -1
  285. package/dist/src/v2/payment-rails/ap2/index.js +2 -2
  286. package/dist/src/v2/payment-rails/ap2/index.js.map +1 -1
  287. package/dist/src/v2/payment-rails/canonicalize.d.ts +32 -0
  288. package/dist/src/v2/payment-rails/canonicalize.d.ts.map +1 -1
  289. package/dist/src/v2/payment-rails/canonicalize.js +41 -1
  290. package/dist/src/v2/payment-rails/canonicalize.js.map +1 -1
  291. package/dist/src/v2/payment-rails/cycles/index.d.ts.map +1 -1
  292. package/dist/src/v2/payment-rails/cycles/index.js +10 -7
  293. package/dist/src/v2/payment-rails/cycles/index.js.map +1 -1
  294. package/dist/src/v2/payment-rails/cycles/types.d.ts +1 -1
  295. package/dist/src/v2/payment-rails/cycles/types.d.ts.map +1 -1
  296. package/dist/src/v2/payment-rails/hooks.d.ts.map +1 -1
  297. package/dist/src/v2/payment-rails/hooks.js +5 -5
  298. package/dist/src/v2/payment-rails/hooks.js.map +1 -1
  299. package/dist/src/v2/payment-rails/mpp/index.d.ts.map +1 -1
  300. package/dist/src/v2/payment-rails/mpp/index.js +11 -7
  301. package/dist/src/v2/payment-rails/mpp/index.js.map +1 -1
  302. package/dist/src/v2/payment-rails/mpp/types.d.ts +4 -4
  303. package/dist/src/v2/payment-rails/mpp/types.d.ts.map +1 -1
  304. package/dist/src/v2/policy-bundle/bundle.d.ts.map +1 -1
  305. package/dist/src/v2/policy-bundle/bundle.js +5 -3
  306. package/dist/src/v2/policy-bundle/bundle.js.map +1 -1
  307. package/dist/src/v2/provisional-statement/create.d.ts +13 -2
  308. package/dist/src/v2/provisional-statement/create.d.ts.map +1 -1
  309. package/dist/src/v2/provisional-statement/create.js +18 -6
  310. package/dist/src/v2/provisional-statement/create.js.map +1 -1
  311. package/dist/src/v2/read_fidelity_receipt/receipt.d.ts +8 -0
  312. package/dist/src/v2/read_fidelity_receipt/receipt.d.ts.map +1 -1
  313. package/dist/src/v2/read_fidelity_receipt/receipt.js +13 -2
  314. package/dist/src/v2/read_fidelity_receipt/receipt.js.map +1 -1
  315. package/dist/src/v2/revocation-enforcement/observation.js +2 -2
  316. package/dist/src/v2/revocation-enforcement/observation.js.map +1 -1
  317. package/dist/src/v2/trust-policy/policy.d.ts.map +1 -1
  318. package/dist/src/v2/trust-policy/policy.js +51 -3
  319. package/dist/src/v2/trust-policy/policy.js.map +1 -1
  320. package/dist/src/v2/wallet-binding/bind.d.ts.map +1 -1
  321. package/dist/src/v2/wallet-binding/bind.js +29 -9
  322. package/dist/src/v2/wallet-binding/bind.js.map +1 -1
  323. package/package.json +7 -6
@@ -1 +1 @@
1
- {"version":3,"file":"contestability.js","sourceRoot":"","sources":["../../../../../src/v2/accountability/construct/contestability.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,uCAAuC;AACvC,qEAAqE;AACrE,uEAAuE;AACvE,8DAA8D;AAC9D,oEAAoE;AACpE,EAAE;AACF,8DAA8D;AAC9D,mEAAmE;AACnE,kEAAkE;AAClE,sEAAsE;AACtE,mEAAmE;AACnE,cAAc;AACd,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAmBpE,MAAM,UAAU,2BAA2B,CACzC,KAAuC,EACvC,oBAA4B;IAE5B,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,CAAC;QACnE,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc,KAAK,EAAE,CAAC,EACzF,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,CAAA;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAE7D,MAAM,KAAK,GAA0B;QACnC,UAAU,EAAE,uBAAuB;QACnC,UAAU,EAAE,EAAE;QACd,SAAS;QACT,UAAU;QACV,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,SAAS,EAAE,EAAE;KACd,CAAA;IACD,mEAAmE;IACnE,mEAAmE;IACnE,+BAA+B;IAC/B,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACtC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;IAC3C,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;SACpC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;SACtC,MAAM,CAAC,KAAK,CAAC,CAAA;IAEhB,MAAM,MAAM,GAA0B,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,CAAA;IAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAA;IAErE,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAA;AACjC,CAAC;AAOD,MAAM,UAAU,wBAAwB,CACtC,OAA8B,EAC9B,QAAiC,EACjC,oBAA4B;IAE5B,8DAA8D;IAC9D,iEAAiE;IACjE,MAAM,aAAa,GAAqC;QACtD,GAAG,QAAQ;QACX,kBAAkB,EAAE,EAAE;KACvB,CAAA;IACD,MAAM,YAAY,GAA0B;QAC1C,GAAG,OAAO;QACV,mBAAmB,EAAE,aAAa;KACnC,CAAA;IACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC,CAAA;IAEpF,OAAO;QACL,GAAG,OAAO;QACV,mBAAmB,EAAE,EAAE,GAAG,QAAQ,EAAE,kBAAkB,EAAE;KACzD,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"contestability.js","sourceRoot":"","sources":["../../../../../src/v2/accountability/construct/contestability.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,uCAAuC;AACvC,qEAAqE;AACrE,uEAAuE;AACvE,8DAA8D;AAC9D,oEAAoE;AACpE,EAAE;AACF,8DAA8D;AAC9D,mEAAmE;AACnE,kEAAkE;AAClE,sEAAsE;AACtE,mEAAmE;AACnE,cAAc;AACd,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAmB,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACzF,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAmBpE,MAAM,UAAU,2BAA2B,CACzC,KAAuC,EACvC,oBAA4B;IAE5B,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,CAAC;QACnE,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc,KAAK,EAAE,CAAC,EACzF,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,CAAA;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAE7D,MAAM,KAAK,GAA0B;QACnC,UAAU,EAAE,uBAAuB;QACnC,UAAU,EAAE,EAAE;QACd,SAAS;QACT,UAAU;QACV,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,SAAS,EAAE,EAAE;KACd,CAAA;IACD,mEAAmE;IACnE,mEAAmE;IACnE,+BAA+B;IAC/B,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACtC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;IAC3C,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;SACpC,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;SAC9C,MAAM,CAAC,KAAK,CAAC,CAAA;IAEhB,MAAM,MAAM,GAA0B,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,CAAA;IAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAA;IAE7E,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAA;AACjC,CAAC;AAOD,MAAM,UAAU,wBAAwB,CACtC,OAA8B,EAC9B,QAAiC,EACjC,oBAA4B;IAE5B,8DAA8D;IAC9D,iEAAiE;IACjE,MAAM,aAAa,GAAqC;QACtD,GAAG,QAAQ;QACX,kBAAkB,EAAE,EAAE;KACvB,CAAA;IACD,MAAM,YAAY,GAA0B;QAC1C,GAAG,OAAO;QACV,mBAAmB,EAAE,aAAa;KACnC,CAAA;IACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC,CAAA;IAE5F,OAAO;QACL,GAAG,OAAO;QACV,mBAAmB,EAAE,EAAE,GAAG,QAAQ,EAAE,kBAAkB,EAAE;KACzD,CAAA;AACH,CAAC"}
@@ -9,7 +9,7 @@
9
9
  // receipt_id, so any post-signing receipt_id tampering breaks the sig.
10
10
  // ══════════════════════════════════════════════════════════════════
11
11
  import { createHash } from 'node:crypto';
12
- import { canonicalizeJCS } from '../../../core/canonical-jcs.js';
12
+ import { canonicalizeJCSForWrite } from '../../../core/canonical-jcs.js';
13
13
  import { sign, publicKeyFromPrivate } from '../../../crypto/keys.js';
14
14
  export function createCustodyReceipt(input, custodianPrivateKey) {
15
15
  const signer_did = publicKeyFromPrivate(custodianPrivateKey);
@@ -33,10 +33,10 @@ export function createCustodyReceipt(input, custodianPrivateKey) {
33
33
  signature: '',
34
34
  };
35
35
  const receipt_id = createHash('sha256')
36
- .update(canonicalizeJCS(draft), 'utf8')
36
+ .update(canonicalizeJCSForWrite(draft), 'utf8')
37
37
  .digest('hex');
38
38
  const signed = { ...draft, receipt_id };
39
- const signature = sign(canonicalizeJCS(signed), custodianPrivateKey);
39
+ const signature = sign(canonicalizeJCSForWrite(signed), custodianPrivateKey);
40
40
  return { ...signed, signature };
41
41
  }
42
42
  //# sourceMappingURL=custody.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"custody.js","sourceRoot":"","sources":["../../../../../src/v2/accountability/construct/custody.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,gCAAgC;AAChC,qEAAqE;AACrE,oEAAoE;AACpE,wEAAwE;AACxE,kEAAkE;AAClE,uEAAuE;AACvE,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAWpE,MAAM,UAAU,oBAAoB,CAClC,KAAgC,EAChC,mBAA2B;IAE3B,MAAM,UAAU,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;IAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAE7D,MAAM,KAAK,GAAmB;QAC5B,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,EAAE;QACd,SAAS;QACT,UAAU;QACV,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,GAAG,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE;YACpD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE;YAClD,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,EAAE;KACd,CAAA;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;SACpC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;SACtC,MAAM,CAAC,KAAK,CAAC,CAAA;IAEhB,MAAM,MAAM,GAAmB,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,CAAA;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAEpE,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"custody.js","sourceRoot":"","sources":["../../../../../src/v2/accountability/construct/custody.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,gCAAgC;AAChC,qEAAqE;AACrE,oEAAoE;AACpE,wEAAwE;AACxE,kEAAkE;AAClE,uEAAuE;AACvE,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAmB,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACzF,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAWpE,MAAM,UAAU,oBAAoB,CAClC,KAAgC,EAChC,mBAA2B;IAE3B,MAAM,UAAU,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;IAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAE7D,MAAM,KAAK,GAAmB;QAC5B,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,EAAE;QACd,SAAS;QACT,UAAU;QACV,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,GAAG,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE;YACpD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE;YAClD,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,EAAE;KACd,CAAA;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;SACpC,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;SAC9C,MAAM,CAAC,KAAK,CAAC,CAAA;IAEhB,MAAM,MAAM,GAAmB,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,CAAA;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAE5E,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAA;AACjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../../../src/v2/accountability/verify/bundle.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,MAAM,qBAAqB,GAC7B,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,GACvB,qBAAqB,GACrB,mBAAmB,CAAA;AAEvB,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,qBAAqB,CAAA;CAC/B;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,qBAAqB,CA2BxE"}
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../../../src/v2/accountability/verify/bundle.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,MAAM,qBAAqB,GAC7B,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,GACvB,qBAAqB,GACrB,mBAAmB,CAAA;AAEvB,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,qBAAqB,CAAA;CAC/B;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,qBAAqB,CA6BxE"}
@@ -25,11 +25,13 @@ export function verifyAPSBundle(bundle) {
25
25
  if (!Number.isInteger(bundle.receipt_count) || bundle.receipt_count < 0) {
26
26
  return { valid: false, reason: 'INVALID_RECEIPT_COUNT' };
27
27
  }
28
- const idCheck = sha256Hex(canonicalizeJCS({ ...bundle, receipt_id: '', signature: undefined }));
28
+ // explicit null: keeps the shipped preimage bytes (#101); omission would change signatures
29
+ const idCheck = sha256Hex(canonicalizeJCS({ ...bundle, receipt_id: '', signature: null }));
29
30
  if (idCheck !== bundle.receipt_id) {
30
31
  return { valid: false, reason: 'RECEIPT_ID_MISMATCH' };
31
32
  }
32
- const sigPayload = canonicalizeJCS({ ...bundle, signature: undefined });
33
+ // explicit null: keeps the shipped preimage bytes (#101); omission would change signatures
34
+ const sigPayload = canonicalizeJCS({ ...bundle, signature: null });
33
35
  if (!edVerifyHex(sigPayload, bundle.signature, bundle.signer_did)) {
34
36
  return { valid: false, reason: 'SIGNATURE_INVALID' };
35
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../../../src/v2/accountability/verify/bundle.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,2BAA2B;AAC3B,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAe/D,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAClE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,0EAA0E;IAC1E,yCAAyC;IACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;IACvD,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;IACvD,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC/E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;IACxD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QACxE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAA;IAC1D,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;IAC/F,IAAI,OAAO,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;IACxD,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAA;IACvE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAA;IACtD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC"}
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../../../src/v2/accountability/verify/bundle.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,2BAA2B;AAC3B,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAe/D,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAClE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,0EAA0E;IAC1E,yCAAyC;IACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;IACvD,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;IACvD,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC/E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;IACxD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QACxE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAA;IAC1D,CAAC;IAED,2FAA2F;IAC3F,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC1F,IAAI,OAAO,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;IACxD,CAAC;IAED,2FAA2F;IAC3F,MAAM,UAAU,GAAG,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAClE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAA;IACtD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC"}
@@ -2,7 +2,17 @@ import type { HybridTimestamp } from '../../types/time.js';
2
2
  import type { AgentDID, AttributionReceipt, ContextID, PrincipalDID } from './types.js';
3
3
  /** The canonical unsigned core of a receipt. Both citer and cited principal
4
4
  * sign exactly this payload, and the receipt id is sha256(core). */
5
- export declare function receiptCore(receipt: AttributionReceipt | Omit<AttributionReceipt, 'id' | 'citer_signature' | 'cited_principal_signature'>): string;
5
+ type ReceiptCoreInput = AttributionReceipt | Omit<AttributionReceipt, 'id' | 'citer_signature' | 'cited_principal_signature'>;
6
+ export declare function receiptCore(receipt: ReceiptCoreInput): string;
7
+ /** Write-boundary twin of receiptCore().
8
+ *
9
+ * Shares one implementation body with receiptCore() so the two can never drift apart
10
+ * on the field list. Emits the same bytes for every value it accepts; the only
11
+ * difference is that an integer-valued number outside the interoperable IEEE 754
12
+ * range is refused instead of serialized. Use at signing and new-write boundaries
13
+ * ONLY: receiptCore() stays unrestricted so an artifact signed before this rule keeps
14
+ * verifying. */
15
+ export declare function receiptCoreForWrite(receipt: ReceiptCoreInput): string;
6
16
  export interface CreateAttributionReceiptParams {
7
17
  citer: AgentDID;
8
18
  citer_public_key: string;
@@ -18,4 +28,5 @@ export interface CreateAttributionReceiptParams {
18
28
  * consent signature is still absent — verifyAttributionConsent() will
19
29
  * reject this receipt until signAttributionConsent() runs. */
20
30
  export declare function createAttributionReceipt(params: CreateAttributionReceiptParams): AttributionReceipt;
31
+ export {};
21
32
  //# sourceMappingURL=create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-consent/create.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAClB,SAAS,EACT,YAAY,EACb,MAAM,YAAY,CAAA;AAEnB;qEACqE;AACrE,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAC/E,IAAI,GAAG,iBAAiB,GAAG,2BAA2B,CAAC,GAAG,MAAM,CAYjE;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,QAAQ,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,eAAe,EAAE,YAAY,CAAA;IAC7B,0BAA0B,EAAE,MAAM,CAAA;IAClC,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,SAAS,CAAA;IAC1B,UAAU,EAAE,eAAe,CAAA;IAC3B,UAAU,EAAE,eAAe,CAAA;CAC5B;AAED;;+DAE+D;AAC/D,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,8BAA8B,GACrC,kBAAkB,CA6BpB"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-consent/create.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAClB,SAAS,EACT,YAAY,EACb,MAAM,YAAY,CAAA;AAEnB;qEACqE;AACrE,KAAK,gBAAgB,GAAG,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAClE,IAAI,GAAG,iBAAiB,GAAG,2BAA2B,CAAC,CAAA;AAgBzD,wBAAgB,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAE7D;AAED;;;;;;;iBAOiB;AACjB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAErE;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,QAAQ,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,eAAe,EAAE,YAAY,CAAA;IAC7B,0BAA0B,EAAE,MAAM,CAAA;IAClC,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,SAAS,CAAA;IAC1B,UAAU,EAAE,eAAe,CAAA;IAC3B,UAAU,EAAE,eAAe,CAAA;CAC5B;AAED;;+DAE+D;AAC/D,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,8BAA8B,GACrC,kBAAkB,CA6BpB"}
@@ -3,11 +3,9 @@
3
3
  // Attribution Consent — construct + sign (citer-side)
4
4
  import { createHash } from 'node:crypto';
5
5
  import { sign } from '../../crypto/keys.js';
6
- import { canonicalize } from '../../core/canonical.js';
7
- /** The canonical unsigned core of a receipt. Both citer and cited principal
8
- * sign exactly this payload, and the receipt id is sha256(core). */
9
- export function receiptCore(receipt) {
10
- return canonicalize({
6
+ import { canonicalize, canonicalizeForWrite } from '../../core/canonical.js';
7
+ function receiptCoreImpl(receipt, canon) {
8
+ return canon({
11
9
  version: receipt.version,
12
10
  citer: receipt.citer,
13
11
  citer_public_key: receipt.citer_public_key,
@@ -19,6 +17,20 @@ export function receiptCore(receipt) {
19
17
  expires_at: receipt.expires_at,
20
18
  });
21
19
  }
20
+ export function receiptCore(receipt) {
21
+ return receiptCoreImpl(receipt, canonicalize);
22
+ }
23
+ /** Write-boundary twin of receiptCore().
24
+ *
25
+ * Shares one implementation body with receiptCore() so the two can never drift apart
26
+ * on the field list. Emits the same bytes for every value it accepts; the only
27
+ * difference is that an integer-valued number outside the interoperable IEEE 754
28
+ * range is refused instead of serialized. Use at signing and new-write boundaries
29
+ * ONLY: receiptCore() stays unrestricted so an artifact signed before this rule keeps
30
+ * verifying. */
31
+ export function receiptCoreForWrite(receipt) {
32
+ return receiptCoreImpl(receipt, canonicalizeForWrite);
33
+ }
22
34
  /** Build an AttributionReceipt signed by the citer. The cited principal's
23
35
  * consent signature is still absent — verifyAttributionConsent() will
24
36
  * reject this receipt until signAttributionConsent() runs. */
@@ -40,7 +52,7 @@ export function createAttributionReceipt(params) {
40
52
  created_at: params.created_at,
41
53
  expires_at: params.expires_at,
42
54
  };
43
- const core = receiptCore(unsigned);
55
+ const core = receiptCoreForWrite(unsigned);
44
56
  const id = createHash('sha256').update(core).digest('hex');
45
57
  const citer_signature = sign(core, params.citer_private_key);
46
58
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/v2/attribution-consent/create.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,sDAAsD;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAStD;qEACqE;AACrE,MAAM,UAAU,WAAW,CAAC,OAC6B;IACvD,OAAO,YAAY,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,0BAA0B,EAAE,OAAO,CAAC,0BAA0B;QAC9D,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAA;AACJ,CAAC;AAcD;;+DAE+D;AAC/D,MAAM,UAAU,wBAAwB,CACtC,MAAsC;IAEtC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;IAC1F,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,OAAO,EAAE,KAAc;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,0BAA0B,EAAE,MAAM,CAAC,0BAA0B;QAC7D,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAA;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;IAClC,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAE5D,OAAO;QACL,EAAE;QACF,GAAG,QAAQ;QACX,eAAe;KAChB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/v2/attribution-consent/create.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,sDAAsD;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAc5E,SAAS,eAAe,CAAC,OAAyB,EAAE,KAA6B;IAC/E,OAAO,KAAK,CAAC;QACX,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,0BAA0B,EAAE,OAAO,CAAC,0BAA0B;QAC9D,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAyB;IACnD,OAAO,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AAC/C,CAAC;AAED;;;;;;;iBAOiB;AACjB,MAAM,UAAU,mBAAmB,CAAC,OAAyB;IAC3D,OAAO,eAAe,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAA;AACvD,CAAC;AAcD;;+DAE+D;AAC/D,MAAM,UAAU,wBAAwB,CACtC,MAAsC;IAEtC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;IAC1F,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,OAAO,EAAE,KAAc;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,0BAA0B,EAAE,MAAM,CAAC,0BAA0B;QAC7D,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAA;IAED,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC1C,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAE5D,OAAO;QACL,EAAE;QACF,GAAG,QAAQ;QACX,eAAe;KAChB,CAAA;AACH,CAAC"}
@@ -2,12 +2,12 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  // Attribution Consent — cited-principal consent signing
4
4
  import { sign, verify } from '../../crypto/keys.js';
5
- import { receiptCore } from './create.js';
5
+ import { receiptCoreForWrite } from './create.js';
6
6
  /** Add the cited principal's consent signature. The private key must match
7
7
  * cited_principal_public_key on the receipt or this throws. Does not
8
8
  * mutate the input receipt. */
9
9
  export function signAttributionConsent(receipt, cited_principal_private_key) {
10
- const core = receiptCore(receipt);
10
+ const core = receiptCoreForWrite(receipt);
11
11
  const cited_principal_signature = sign(core, cited_principal_private_key);
12
12
  if (!verify(core, cited_principal_signature, receipt.cited_principal_public_key)) {
13
13
  throw new Error('signAttributionConsent: consent signature does not verify against cited_principal_public_key — wrong private key?');
@@ -1 +1 @@
1
- {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../../src/v2/attribution-consent/sign.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,wDAAwD;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAGzC;;gCAEgC;AAChC,MAAM,UAAU,sBAAsB,CACpC,OAA2B,EAC3B,2BAAmC;IAEnC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IACjC,MAAM,yBAAyB,GAAG,IAAI,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;IAEzE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,yBAAyB,EAAE,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAA;IACH,CAAC;IAED,OAAO,EAAE,GAAG,OAAO,EAAE,yBAAyB,EAAE,CAAA;AAClD,CAAC"}
1
+ {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../../src/v2/attribution-consent/sign.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,wDAAwD;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD;;gCAEgC;AAChC,MAAM,UAAU,sBAAsB,CACpC,OAA2B,EAC3B,2BAAmC;IAEnC,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACzC,MAAM,yBAAyB,GAAG,IAAI,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;IAEzE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,yBAAyB,EAAE,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAA;IACH,CAAC;IAED,OAAO,EAAE,GAAG,OAAO,EAAE,yBAAyB,EAAE,CAAA;AAClD,CAAC"}
@@ -32,14 +32,29 @@ export declare function orderGovernanceAxis(items: GovernanceAxisEntry[]): Gover
32
32
  export declare function normalizeAxes(axes: AttributionAxes): AttributionAxes;
33
33
  /** SHA-256(canonical(axis_content)) as raw 32 bytes. §2.1. */
34
34
  export declare function hashAxisLeaf(axis: unknown): Buffer;
35
+ /** Write-boundary twin of hashAxisLeaf().
36
+ *
37
+ * Emits the same bytes as hashAxisLeaf() for every value it accepts. The only difference
38
+ * is that an integer-valued number outside the interoperable IEEE 754 range is
39
+ * refused instead of serialized. Use at signing and new-write boundaries ONLY:
40
+ * hashAxisLeaf() stays unrestricted so an artifact signed before this rule keeps
41
+ * verifying. */
42
+ export declare function hashAxisLeafForWrite(axis: unknown): Buffer;
35
43
  /** Internal Merkle node: SHA-256(left_bytes || right_bytes). §2.1. */
36
44
  export declare function hashNode(left: Buffer, right: Buffer): Buffer;
37
45
  /** Hex sha256 of canonicalize(envelope). Used for signing and for deriving
38
46
  * action_ref from the action tuple. */
39
47
  export declare function canonicalHashHex(obj: unknown): string;
40
- /** The canonical envelope §2.3 that Ed25519 signs. Returned as a string so
41
- * Python and TypeScript sign/verify exactly the same bytes. */
42
48
  export declare function envelopeBytes(env: AttributionEnvelope): string;
49
+ /** Write-boundary twin of envelopeBytes().
50
+ *
51
+ * Shares one implementation body with envelopeBytes() so the two can never drift apart
52
+ * on the field list. Emits the same bytes for every value it accepts; the only
53
+ * difference is that an integer-valued number outside the interoperable IEEE 754
54
+ * range is refused instead of serialized. Use at signing and new-write boundaries
55
+ * ONLY: envelopeBytes() stays unrestricted so an artifact signed before this rule keeps
56
+ * verifying. */
57
+ export declare function envelopeBytesForWrite(env: AttributionEnvelope): string;
43
58
  /** Type-safe enumeration of axis tags, for iteration. */
44
59
  export declare const ATTRIBUTION_AXIS_TAGS: ReadonlyArray<AttributionAxisTag>;
45
60
  //# sourceMappingURL=canonical.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/canonical.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEjB,MAAM,YAAY,CAAA;AAKnB;;2CAE2C;AAC3C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAgB7D;AAED;2EAC2E;AAC3E,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAMzD;AAED;;0BAE0B;AAC1B,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM,CAIjE;AAYD;;;;;;;;;;4CAU4C;AAC5C,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAQlE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAY9E;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAU3E;AAED;2DAC2D;AAC3D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAUvF;AAED;0EAC0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAOpE;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAElD;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;wCACwC;AACxC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAErD;AAED;gEACgE;AAChE,wBAAgB,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAQ9D;AAED,yDAAyD;AACzD,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,kBAAkB,CAAwB,CAAA"}
1
+ {"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/canonical.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEjB,MAAM,YAAY,CAAA;AAKnB;;2CAE2C;AAC3C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAgB7D;AAED;2EAC2E;AAC3E,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAMzD;AAED;;0BAE0B;AAC1B,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM,CAIjE;AAYD;;;;;;;;;;4CAU4C;AAC5C,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAQlE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAY9E;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAU3E;AAED;2DAC2D;AAC3D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAUvF;AAED;0EAC0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAOpE;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAElD;AACD;;;;;;iBAMiB;AACjB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAE1D;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;wCACwC;AACxC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAErD;AAcD,wBAAgB,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAE9D;AAED;;;;;;;iBAOiB;AACjB,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAEtE;AAED,yDAAyD;AACzD,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,kBAAkB,CAAwB,CAAA"}
@@ -8,7 +8,7 @@
8
8
  // §3.4) holds for schema-valid inputs.
9
9
  // ══════════════════════════════════════════════════════════════════
10
10
  import { createHash } from 'node:crypto';
11
- import { canonicalize } from '../../core/canonical.js';
11
+ import { canonicalize, canonicalizeForWrite } from '../../core/canonical.js';
12
12
  const WEIGHT_PATTERN = /^\d+\.\d{6}$/;
13
13
  const ISO_8601_MS_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
14
14
  /** Format a numeric weight or decimal-string input as the canonical
@@ -118,6 +118,16 @@ export function normalizeAxes(axes) {
118
118
  export function hashAxisLeaf(axis) {
119
119
  return createHash('sha256').update(canonicalize(axis)).digest();
120
120
  }
121
+ /** Write-boundary twin of hashAxisLeaf().
122
+ *
123
+ * Emits the same bytes as hashAxisLeaf() for every value it accepts. The only difference
124
+ * is that an integer-valued number outside the interoperable IEEE 754 range is
125
+ * refused instead of serialized. Use at signing and new-write boundaries ONLY:
126
+ * hashAxisLeaf() stays unrestricted so an artifact signed before this rule keeps
127
+ * verifying. */
128
+ export function hashAxisLeafForWrite(axis) {
129
+ return createHash('sha256').update(canonicalizeForWrite(axis)).digest();
130
+ }
121
131
  /** Internal Merkle node: SHA-256(left_bytes || right_bytes). §2.1. */
122
132
  export function hashNode(left, right) {
123
133
  return createHash('sha256').update(Buffer.concat([left, right])).digest();
@@ -129,15 +139,29 @@ export function canonicalHashHex(obj) {
129
139
  }
130
140
  /** The canonical envelope §2.3 that Ed25519 signs. Returned as a string so
131
141
  * Python and TypeScript sign/verify exactly the same bytes. */
132
- export function envelopeBytes(env) {
142
+ function envelopeBytesImpl(env, canon) {
133
143
  assertCanonicalTimestamp(env.timestamp);
134
- return canonicalize({
144
+ return canon({
135
145
  action_ref: env.action_ref,
136
146
  merkle_root: env.merkle_root,
137
147
  issuer: env.issuer,
138
148
  timestamp: env.timestamp,
139
149
  });
140
150
  }
151
+ export function envelopeBytes(env) {
152
+ return envelopeBytesImpl(env, canonicalize);
153
+ }
154
+ /** Write-boundary twin of envelopeBytes().
155
+ *
156
+ * Shares one implementation body with envelopeBytes() so the two can never drift apart
157
+ * on the field list. Emits the same bytes for every value it accepts; the only
158
+ * difference is that an integer-valued number outside the interoperable IEEE 754
159
+ * range is refused instead of serialized. Use at signing and new-write boundaries
160
+ * ONLY: envelopeBytes() stays unrestricted so an artifact signed before this rule keeps
161
+ * verifying. */
162
+ export function envelopeBytesForWrite(env) {
163
+ return envelopeBytesImpl(env, canonicalizeForWrite);
164
+ }
141
165
  /** Type-safe enumeration of axis tags, for iteration. */
142
166
  export const ATTRIBUTION_AXIS_TAGS = ['D', 'P', 'G', 'C'];
143
167
  //# sourceMappingURL=canonical.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/canonical.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/canonical.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,qEAAqE;AACrE,qEAAqE;AACrE,yEAAyE;AACzE,uEAAuE;AACvE,uCAAuC;AACvC,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAY5E,MAAM,cAAc,GAAG,cAAc,CAAA;AACrC,MAAM,mBAAmB,GAAG,+CAA+C,CAAA;AAE3E;;2CAE2C;AAC3C,MAAM,UAAU,cAAc,CAAC,KAAsB;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,yCAAyC,KAAK,uCAAuC,CACtF,CAAA;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,qDAAqD,KAAK,EAAE,CAAC,CAAA;IAC/E,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,wDAAwD,KAAK,EAAE,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACzB,CAAC;AAED;2EAC2E;AAC3E,MAAM,UAAU,wBAAwB,CAAC,EAAU;IACjD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,qCAAqC,EAAE,yEAAyE,CACjH,CAAA;IACH,CAAC;AACH,CAAC;AAED;;0BAE0B;AAC1B,MAAM,UAAU,kBAAkB,CAAC,GAAG,GAAS,IAAI,IAAI,EAAE;IACvD,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IAC3B,wBAAwB,CAAC,CAAC,CAAC,CAAA;IAC3B,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,UAAU,CAAC,CAAU;IAC5B,OAAO,CACL,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,KAAK,IAAI;QACV,aAAa,IAAK,CAAY;QAC9B,OAAQ,CAAoB,CAAC,WAAW,KAAK,QAAQ;QACpD,CAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAC1D,CAAA;AACH,CAAC;AAED;;;;;;;;;;4CAU4C;AAC5C,MAAM,UAAU,YAAY,CAAC,KAAqB;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAqB,CAAA;IAC9D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;IAC3F,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAA4C,CAAA;IAC/F,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjG,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAyB;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAqB,CAAA;IAC9D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;IAC3F,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAgD,CAAA;IACnG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,cAAc,EAAE,CAAA;QACpD,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,cAAc,EAAE,CAAA;QACpD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAwB;IACtD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAqB,CAAA;IAC9D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;IAC3F,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAA+C,CAAA;IAClG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACrB,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/E,CAAA;IACD,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAA;AACpC,CAAC;AAED;2DAC2D;AAC3D,MAAM,UAAU,mBAAmB,CAAC,KAA4B;IAC9D,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;IAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,8DAA8D,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CACjF,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;0EAC0E;AAC1E,MAAM,UAAU,aAAa,CAAC,IAAqB;IACjD,OAAO;QACL,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3B,CAAA;AACH,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;AACjE,CAAC;AACD;;;;;;iBAMiB;AACjB,MAAM,UAAU,oBAAoB,CAAC,IAAa;IAChD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;AACzE,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,KAAa;IAClD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;AAC3E,CAAC;AAED;wCACwC;AACxC,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACrE,CAAC;AAED;gEACgE;AAChE,SAAS,iBAAiB,CAAC,GAAwB,EAAE,KAA6B;IAChF,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACvC,OAAO,KAAK,CAAC;QACX,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAwB;IACpD,OAAO,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;AAC7C,CAAC;AAED;;;;;;;iBAOiB;AACjB,MAAM,UAAU,qBAAqB,CAAC,GAAwB;IAC5D,OAAO,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;AACrD,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,qBAAqB,GAAsC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA"}
@@ -1,19 +1,4 @@
1
1
  import type { AttributionAction, AttributionAxes, AttributionPrimitive } from './types.js';
2
- /** Derive action_ref from the action tuple. §1.2 / §3.4.
3
- *
4
- * The spec pseudocode in §2.7 uses string concatenation (`agentId || type
5
- * || canonical(params) || nonce`), but Theorem 1's reduction relies on
6
- * canonical(T) being injective (A1). Plain string concatenation is not
7
- * self-delimiting, so two distinct tuples could produce the same byte
8
- * string. We adopt canonical(T) on the full tuple, which is injective by
9
- * construction and matches the security argument.
10
- *
11
- * Canonicalization uses strict RFC 8785 JCS (canonicalHashJCS), not the
12
- * legacy null-stripping APS variant. ATTRIBUTION-PRIMITIVE-v1.1 §1.6
13
- * pins all hashing to RFC 8785, and Theorem 1's Assumption A1
14
- * (canonicalization injectivity) requires that semantically distinct
15
- * action tuples produce distinct canonical bytes — which null-stripping
16
- * would violate ({k:null, v:1} and {v:1} would collide). */
17
2
  export declare function computeAttributionActionRef(action: AttributionAction): string;
18
3
  export interface ConstructAttributionParams {
19
4
  /** The action being attested. Used to derive action_ref. */
@@ -1 +1 @@
1
- {"version":3,"file":"construct.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/construct.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACrB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;;;;;;6DAc6D;AAC7D,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAa7E;AAED,MAAM,WAAW,0BAA0B;IACzC,4DAA4D;IAC5D,MAAM,EAAE,iBAAiB,CAAA;IACzB;2BACuB;IACvB,IAAI,EAAE,eAAe,CAAA;IACrB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAA;IACd;0DACsD;IACtD,gBAAgB,EAAE,MAAM,CAAA;IACxB;uEACmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,4DAA4D;AAC5D,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,0BAA0B,GACjC,oBAAoB,CA0BtB;AAED;;;mEAGmE;AACnE,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,oBAAoB,EAC/B,gBAAgB,EAAE,MAAM,EACxB,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAChF,oBAAoB,CAiBtB"}
1
+ {"version":3,"file":"construct.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/construct.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACrB,MAAM,YAAY,CAAA;AAmCnB,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAE7E;AAaD,MAAM,WAAW,0BAA0B;IACzC,4DAA4D;IAC5D,MAAM,EAAE,iBAAiB,CAAA;IACzB;2BACuB;IACvB,IAAI,EAAE,eAAe,CAAA;IACrB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAA;IACd;0DACsD;IACtD,gBAAgB,EAAE,MAAM,CAAA;IACxB;uEACmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,4DAA4D;AAC5D,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,0BAA0B,GACjC,oBAAoB,CA0BtB;AAED;;;mEAGmE;AACnE,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,oBAAoB,EAC/B,gBAAgB,EAAE,MAAM,EACxB,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAChF,oBAAoB,CAiBtB"}
@@ -11,9 +11,9 @@
11
11
  // policy per §7.1.
12
12
  // ══════════════════════════════════════════════════════════════════
13
13
  import { sign } from '../../crypto/keys.js';
14
- import { canonicalHashJCS } from '../../core/canonical-jcs.js';
15
- import { assertCanonicalTimestamp, canonicalTimestamp, envelopeBytes, } from './canonical.js';
16
- import { buildMerkleFrame } from './merkle.js';
14
+ import { canonicalHashJCS, canonicalHashJCSForWrite } from '../../core/canonical-jcs.js';
15
+ import { assertCanonicalTimestamp, canonicalTimestamp, envelopeBytesForWrite, } from './canonical.js';
16
+ import { buildMerkleFrameForWrite } from './merkle.js';
17
17
  /** Derive action_ref from the action tuple. §1.2 / §3.4.
18
18
  *
19
19
  * The spec pseudocode in §2.7 uses string concatenation (`agentId || type
@@ -29,7 +29,7 @@ import { buildMerkleFrame } from './merkle.js';
29
29
  * (canonicalization injectivity) requires that semantically distinct
30
30
  * action tuples produce distinct canonical bytes — which null-stripping
31
31
  * would violate ({k:null, v:1} and {v:1} would collide). */
32
- export function computeAttributionActionRef(action) {
32
+ function computeAttributionActionRefImpl(action, hash) {
33
33
  if (!action.agentId)
34
34
  throw new Error('attribution-primitive: action.agentId required');
35
35
  if (!action.actionType)
@@ -39,25 +39,38 @@ export function computeAttributionActionRef(action) {
39
39
  if (typeof action.params !== 'object' || action.params === null) {
40
40
  throw new Error('attribution-primitive: action.params must be an object');
41
41
  }
42
- return canonicalHashJCS({
42
+ return hash({
43
43
  agentId: action.agentId,
44
44
  actionType: action.actionType,
45
45
  params: action.params,
46
46
  nonce: action.nonce,
47
47
  });
48
48
  }
49
+ export function computeAttributionActionRef(action) {
50
+ return computeAttributionActionRefImpl(action, canonicalHashJCS);
51
+ }
52
+ /** Write-boundary twin of computeAttributionActionRef().
53
+ *
54
+ * Module-internal on purpose: it is deliberately absent from the package barrel, so
55
+ * this adds no public API. The exported computeAttributionActionRef() stays
56
+ * unrestricted, because an external verifier re-deriving the action_ref of a primitive
57
+ * signed before this rule must still get the same value. Mirrors the Python SDK's
58
+ * _compute_attribution_action_ref_for_write. */
59
+ function computeAttributionActionRefForWrite(action) {
60
+ return computeAttributionActionRefImpl(action, canonicalHashJCSForWrite);
61
+ }
49
62
  /** Build and sign a complete AttributionPrimitive. §2.7. */
50
63
  export function constructAttributionPrimitive(params) {
51
64
  if (!params.issuer)
52
65
  throw new Error('attribution-primitive: issuer required');
53
66
  if (!params.issuerPrivateKey)
54
67
  throw new Error('attribution-primitive: issuerPrivateKey required');
55
- const action_ref = computeAttributionActionRef(params.action);
56
- const frame = buildMerkleFrame(params.axes);
68
+ const action_ref = computeAttributionActionRefForWrite(params.action);
69
+ const frame = buildMerkleFrameForWrite(params.axes);
57
70
  const merkle_root = frame.root.toString('hex');
58
71
  const timestamp = params.timestamp ?? canonicalTimestamp();
59
72
  assertCanonicalTimestamp(timestamp);
60
- const envelope = envelopeBytes({
73
+ const envelope = envelopeBytesForWrite({
61
74
  action_ref,
62
75
  merkle_root,
63
76
  issuer: params.issuer,
@@ -80,13 +93,13 @@ export function constructAttributionPrimitive(params) {
80
93
  export function resignAttributionPrimitive(primitive, issuerPrivateKey, opts) {
81
94
  const axes = opts?.axes ?? primitive.axes;
82
95
  const action_ref = opts?.action
83
- ? computeAttributionActionRef(opts.action)
96
+ ? computeAttributionActionRefForWrite(opts.action)
84
97
  : primitive.action_ref;
85
- const frame = buildMerkleFrame(axes);
98
+ const frame = buildMerkleFrameForWrite(axes);
86
99
  const merkle_root = frame.root.toString('hex');
87
100
  const timestamp = opts?.timestamp ?? canonicalTimestamp();
88
101
  assertCanonicalTimestamp(timestamp);
89
- const envelope = envelopeBytes({
102
+ const envelope = envelopeBytesForWrite({
90
103
  action_ref,
91
104
  merkle_root,
92
105
  issuer: primitive.issuer,
@@ -1 +1 @@
1
- {"version":3,"file":"construct.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/construct.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"construct.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/construct.ts"],"names":[],"mappings":"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"}
@@ -14,10 +14,14 @@ export interface MerkleFrame {
14
14
  };
15
15
  root: Buffer;
16
16
  }
17
- /** Build the full tree for a set of axes. Callers pass the raw (possibly
18
- * unsorted) axes; we normalize before hashing so the caller can't produce
19
- * two different canonical representations of the same logical content. */
20
17
  export declare function buildMerkleFrame(rawAxes: AttributionAxes): MerkleFrame;
18
+ /** Write-boundary twin of buildMerkleFrame().
19
+ *
20
+ * Reaches a canonicalizer only indirectly, through hashAxisLeaf, so a call-site
21
+ * census over canonicalizer usage cannot see it. Use when CONSTRUCTING a primitive;
22
+ * projection and verification keep calling buildMerkleFrame() so a primitive built
23
+ * before this rule still reconstructs. */
24
+ export declare function buildMerkleFrameForWrite(rawAxes: AttributionAxes): MerkleFrame;
21
25
  /** The sibling path for a projection, in the order §2.2 specifies:
22
26
  * [sibling_leaf_within_pair_hex, sibling_internal_node_hex]. */
23
27
  export declare function projectionPath(frame: MerkleFrame, axis: AttributionAxisTag): [string, string];
@@ -1 +1 @@
1
- {"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/merkle.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAErE,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,IAAI,EAAE,eAAe,CAAA;IACrB,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACtD,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;IAClD,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;2EAE2E;AAC3E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CAetE;AAED;iEACiE;AACjE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,kBAAkB,GACvB,CAAC,MAAM,EAAE,MAAM,CAAC,CAelB;AAED;;iEAEiE;AACjE,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACtB,IAAI,EAAE,kBAAkB,GACvB,MAAM,CA2BR"}
1
+ {"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/merkle.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAErE,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,IAAI,EAAE,eAAe,CAAA;IACrB,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACtD,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;IAClD,IAAI,EAAE,MAAM,CAAA;CACb;AAyBD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CAEtE;AAED;;;;;2CAK2C;AAC3C,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CAE9E;AAED;iEACiE;AACjE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,kBAAkB,GACvB,CAAC,MAAM,EAAE,MAAM,CAAC,CAelB;AAED;;iEAEiE;AACjE,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACtB,IAAI,EAAE,kBAAkB,GACvB,MAAM,CA2BR"}
@@ -7,16 +7,16 @@
7
7
  // left, authority-infrastructure pair (G, C) on the right, balanced above.
8
8
  // All projections share a path length of two.
9
9
  // ══════════════════════════════════════════════════════════════════
10
- import { hashAxisLeaf, hashNode, normalizeAxes } from './canonical.js';
10
+ import { hashAxisLeaf, hashAxisLeafForWrite, hashNode, normalizeAxes } from './canonical.js';
11
11
  /** Build the full tree for a set of axes. Callers pass the raw (possibly
12
12
  * unsorted) axes; we normalize before hashing so the caller can't produce
13
13
  * two different canonical representations of the same logical content. */
14
- export function buildMerkleFrame(rawAxes) {
14
+ function buildMerkleFrameImpl(rawAxes, leaf) {
15
15
  const axes = normalizeAxes(rawAxes);
16
- const leafD = hashAxisLeaf(axes.D);
17
- const leafP = hashAxisLeaf(axes.P);
18
- const leafG = hashAxisLeaf(axes.G);
19
- const leafC = hashAxisLeaf(axes.C);
16
+ const leafD = leaf(axes.D);
17
+ const leafP = leaf(axes.P);
18
+ const leafG = leaf(axes.G);
19
+ const leafC = leaf(axes.C);
20
20
  const nContent = hashNode(leafD, leafP);
21
21
  const nAuthInfra = hashNode(leafG, leafC);
22
22
  const root = hashNode(nContent, nAuthInfra);
@@ -27,6 +27,18 @@ export function buildMerkleFrame(rawAxes) {
27
27
  root,
28
28
  };
29
29
  }
30
+ export function buildMerkleFrame(rawAxes) {
31
+ return buildMerkleFrameImpl(rawAxes, hashAxisLeaf);
32
+ }
33
+ /** Write-boundary twin of buildMerkleFrame().
34
+ *
35
+ * Reaches a canonicalizer only indirectly, through hashAxisLeaf, so a call-site
36
+ * census over canonicalizer usage cannot see it. Use when CONSTRUCTING a primitive;
37
+ * projection and verification keep calling buildMerkleFrame() so a primitive built
38
+ * before this rule still reconstructs. */
39
+ export function buildMerkleFrameForWrite(rawAxes) {
40
+ return buildMerkleFrameImpl(rawAxes, hashAxisLeafForWrite);
41
+ }
30
42
  /** The sibling path for a projection, in the order §2.2 specifies:
31
43
  * [sibling_leaf_within_pair_hex, sibling_internal_node_hex]. */
32
44
  export function projectionPath(frame, axis) {
@@ -1 +1 @@
1
- {"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/merkle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/merkle.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  // gateway-side — not in this module.
16
16
  // ══════════════════════════════════════════════════════════════════
17
17
  import { createHash } from 'node:crypto';
18
- import { canonicalize } from '../../core/canonical.js';
18
+ import { canonicalizeForWrite } from '../../core/canonical.js';
19
19
  import { toWeightString } from './canonical.js';
20
20
  export const DEFAULT_MIN_WEIGHT = 0.001;
21
21
  function isResidual(x) {
@@ -40,7 +40,7 @@ function weightNumber(w) {
40
40
  * For the reference implementation we commit to the canonicalized list. */
41
41
  function pooledContributorsHash(entries) {
42
42
  const sorted = [...entries].sort((a, b) => (a.did < b.did ? -1 : a.did > b.did ? 1 : 0));
43
- return createHash('sha256').update(canonicalize(sorted)).digest('hex');
43
+ return createHash('sha256').update(canonicalizeForWrite(sorted)).digest('hex');
44
44
  }
45
45
  /** Apply the §4.1 threshold to a list of data-axis contributors. Returns
46
46
  * the retained entries plus a residual bucket (or null). Input entries
@@ -1 +1 @@
1
- {"version":3,"file":"residual.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/residual.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"residual.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/residual.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,14 @@ export declare function contributorLeafHashHex(c: SettlementContributor): string
7
7
  /** Residual-bucket leaf hash for the per-axis tree. Canonicalizes the
8
8
  * full bucket object. */
9
9
  export declare function residualLeafHashHex(r: SettlementResidualBucket): string;
10
+ /** Write-boundary twin of residualLeafHashHex().
11
+ *
12
+ * Emits the same bytes as residualLeafHashHex() for every value it accepts. The only difference
13
+ * is that an integer-valued number outside the interoperable IEEE 754 range is
14
+ * refused instead of serialized. Use at signing and new-write boundaries ONLY:
15
+ * residualLeafHashHex() stays unrestricted so an artifact signed before this rule keeps
16
+ * verifying. */
17
+ export declare function residualLeafHashHexForWrite(r: SettlementResidualBucket): string;
10
18
  /** 6-digit decimal form for settlement weights. Unlike Build A's
11
19
  * `toWeightString`, settlement weights can exceed 1.0 (they accumulate
12
20
  * over many actions); the 6-digit precision is preserved. Rejects
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-settlement/aggregate.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAEV,oBAAoB,EASrB,MAAM,mCAAmC,CAAA;AAE1C,OAAO,KAAK,EAEV,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,YAAY,CAAA;AA8BnB;;4DAE4D;AAC5D,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAEvE;AAED;0BAC0B;AAC1B,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAEvE;AA6GD;;;qCAGqC;AACrC,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQxD;AA4ED,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAA;IACnB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;8DAE0D;IAC1D,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;;qEAGqE;AACrE,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,oBAAoB,EAAE,EAChC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CA6ErC"}
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-settlement/aggregate.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAEV,oBAAoB,EASrB,MAAM,mCAAmC,CAAA;AAE1C,OAAO,KAAK,EAEV,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,YAAY,CAAA;AA8BnB;;4DAE4D;AAC5D,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAEvE;AAED;0BAC0B;AAC1B,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAEvE;AACD;;;;;;iBAMiB;AACjB,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAE/E;AA6GD;;;qCAGqC;AACrC,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQxD;AA4ED,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAA;IACnB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;8DAE0D;IAC1D,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;;qEAGqE;AACrE,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,oBAAoB,EAAE,EAChC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CA6ErC"}