@sourcey/catalog-verifier 1.0.0 → 1.1.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 (342) hide show
  1. package/README.md +1 -1
  2. package/SBOM.cdx.json +3 -3
  3. package/SOURCEY-CLOSURE.json +697 -217
  4. package/SOURCEY-LICENSE-POLICY.json +19 -1
  5. package/SOURCEY-TOOLCHAIN.json +1 -1
  6. package/THIRD_PARTY_NOTICES.json +1 -1
  7. package/dist/contracts/agent-readiness/src/declaration.d.ts +30 -30
  8. package/dist/contracts/agent-readiness/src/index.d.ts +82 -74
  9. package/dist/contracts/agent-readiness/src/index.d.ts.map +1 -1
  10. package/dist/contracts/agent-readiness/src/index.js +29 -8
  11. package/dist/contracts/agent-readiness/src/index.js.map +1 -1
  12. package/dist/contracts/agent-readiness/src/method-pack.d.ts +1 -0
  13. package/dist/contracts/agent-readiness/src/method-pack.d.ts.map +1 -1
  14. package/dist/contracts/agent-readiness/src/method-pack.js.map +1 -1
  15. package/dist/contracts/api/src/index.d.ts +11602 -6013
  16. package/dist/contracts/api/src/index.d.ts.map +1 -1
  17. package/dist/contracts/api/src/index.js +156 -16
  18. package/dist/contracts/api/src/index.js.map +1 -1
  19. package/dist/contracts/artifact/src/index.d.ts +114 -64
  20. package/dist/contracts/artifact/src/index.d.ts.map +1 -1
  21. package/dist/contracts/artifact/src/index.js +15 -4
  22. package/dist/contracts/artifact/src/index.js.map +1 -1
  23. package/dist/contracts/assets/src/index.d.ts +30 -0
  24. package/dist/contracts/assets/src/index.d.ts.map +1 -1
  25. package/dist/contracts/assets/src/index.js +16 -0
  26. package/dist/contracts/assets/src/index.js.map +1 -1
  27. package/dist/contracts/assurance/src/index.d.ts +149 -0
  28. package/dist/contracts/assurance/src/index.d.ts.map +1 -0
  29. package/dist/contracts/assurance/src/index.js +146 -0
  30. package/dist/contracts/assurance/src/index.js.map +1 -0
  31. package/dist/contracts/authoring/src/index.d.ts.map +1 -1
  32. package/dist/contracts/authoring/src/index.js +9 -1
  33. package/dist/contracts/authoring/src/index.js.map +1 -1
  34. package/dist/contracts/billing/src/index.d.ts +54 -0
  35. package/dist/contracts/billing/src/index.d.ts.map +1 -1
  36. package/dist/contracts/billing/src/index.js +77 -11
  37. package/dist/contracts/billing/src/index.js.map +1 -1
  38. package/dist/contracts/catalog-verifier/src/index.d.ts +49 -0
  39. package/dist/contracts/catalog-verifier/src/index.d.ts.map +1 -1
  40. package/dist/contracts/catalog-verifier/src/index.js +31 -3
  41. package/dist/contracts/catalog-verifier/src/index.js.map +1 -1
  42. package/dist/contracts/commercial-work/src/index.d.ts +1330 -392
  43. package/dist/contracts/commercial-work/src/index.d.ts.map +1 -1
  44. package/dist/contracts/commercial-work/src/index.js +554 -111
  45. package/dist/contracts/commercial-work/src/index.js.map +1 -1
  46. package/dist/contracts/datasets/src/index.d.ts +762 -0
  47. package/dist/contracts/datasets/src/index.d.ts.map +1 -0
  48. package/dist/contracts/datasets/src/index.js +80 -0
  49. package/dist/contracts/datasets/src/index.js.map +1 -0
  50. package/dist/contracts/events/src/index.d.ts +67 -56
  51. package/dist/contracts/events/src/index.d.ts.map +1 -1
  52. package/dist/contracts/events/src/index.js +100 -53
  53. package/dist/contracts/events/src/index.js.map +1 -1
  54. package/dist/contracts/evidence/src/index.d.ts +4 -0
  55. package/dist/contracts/evidence/src/index.d.ts.map +1 -1
  56. package/dist/contracts/evidence/src/index.js +1 -0
  57. package/dist/contracts/evidence/src/index.js.map +1 -1
  58. package/dist/contracts/funded-work/src/index.d.ts +2 -2
  59. package/dist/contracts/funded-work/src/index.js +1 -1
  60. package/dist/contracts/funded-work/src/index.js.map +1 -1
  61. package/dist/contracts/observations/src/index.d.ts +2 -2
  62. package/dist/contracts/observations/src/index.d.ts.map +1 -1
  63. package/dist/contracts/observations/src/index.js +2 -2
  64. package/dist/contracts/observations/src/index.js.map +1 -1
  65. package/dist/contracts/policies/src/index.d.ts.map +1 -1
  66. package/dist/contracts/policies/src/index.js +3 -0
  67. package/dist/contracts/policies/src/index.js.map +1 -1
  68. package/dist/contracts/publication/src/index.d.ts +2472 -7
  69. package/dist/contracts/publication/src/index.d.ts.map +1 -1
  70. package/dist/contracts/publication/src/index.js +73 -5
  71. package/dist/contracts/publication/src/index.js.map +1 -1
  72. package/dist/contracts/release/src/index.d.ts +109 -42
  73. package/dist/contracts/release/src/index.d.ts.map +1 -1
  74. package/dist/contracts/release/src/index.js +49 -1
  75. package/dist/contracts/release/src/index.js.map +1 -1
  76. package/dist/contracts/revisions/src/index.d.ts +16 -0
  77. package/dist/contracts/revisions/src/index.d.ts.map +1 -1
  78. package/dist/contracts/revisions/src/index.js +49 -1
  79. package/dist/contracts/revisions/src/index.js.map +1 -1
  80. package/dist/contracts/routes/src/index.d.ts +66 -0
  81. package/dist/contracts/routes/src/index.d.ts.map +1 -1
  82. package/dist/contracts/routes/src/index.js +102 -4
  83. package/dist/contracts/routes/src/index.js.map +1 -1
  84. package/dist/contracts/routes/src/public-route-allocations.generated.d.ts +1 -1
  85. package/dist/contracts/routes/src/public-route-allocations.generated.d.ts.map +1 -1
  86. package/dist/contracts/routes/src/public-route-allocations.generated.js +3 -0
  87. package/dist/contracts/routes/src/public-route-allocations.generated.js.map +1 -1
  88. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.js +2 -2
  89. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.js.map +1 -1
  90. package/dist/modules/agent-readiness-policy/src/current-policy-validation.d.ts +4 -0
  91. package/dist/modules/agent-readiness-policy/src/current-policy-validation.d.ts.map +1 -0
  92. package/dist/modules/agent-readiness-policy/src/current-policy-validation.js +11 -0
  93. package/dist/modules/agent-readiness-policy/src/current-policy-validation.js.map +1 -0
  94. package/dist/modules/agent-readiness-policy/src/current-policy.d.ts.map +1 -1
  95. package/dist/modules/agent-readiness-policy/src/current-policy.js +10 -15
  96. package/dist/modules/agent-readiness-policy/src/current-policy.js.map +1 -1
  97. package/dist/modules/agent-readiness-policy/src/grading.js +1 -1
  98. package/dist/modules/agent-readiness-policy/src/impact.d.ts +4 -3
  99. package/dist/modules/agent-readiness-policy/src/impact.d.ts.map +1 -1
  100. package/dist/modules/agent-readiness-policy/src/impact.js +5 -6
  101. package/dist/modules/agent-readiness-policy/src/impact.js.map +1 -1
  102. package/dist/modules/agent-readiness-policy/src/index.d.ts +3 -0
  103. package/dist/modules/agent-readiness-policy/src/index.d.ts.map +1 -1
  104. package/dist/modules/agent-readiness-policy/src/index.js +14 -4
  105. package/dist/modules/agent-readiness-policy/src/index.js.map +1 -1
  106. package/dist/modules/agent-readiness-policy/src/offer-relations.d.ts +6 -0
  107. package/dist/modules/agent-readiness-policy/src/offer-relations.d.ts.map +1 -1
  108. package/dist/modules/agent-readiness-policy/src/offer-relations.js +6 -0
  109. package/dist/modules/agent-readiness-policy/src/offer-relations.js.map +1 -1
  110. package/dist/modules/agent-readiness-policy/src/policy-validation.d.ts +0 -1
  111. package/dist/modules/agent-readiness-policy/src/policy-validation.d.ts.map +1 -1
  112. package/dist/modules/agent-readiness-policy/src/policy-validation.js +3 -23
  113. package/dist/modules/agent-readiness-policy/src/policy-validation.js.map +1 -1
  114. package/dist/modules/agent-readiness-policy/src/standard-mapping.d.ts.map +1 -1
  115. package/dist/modules/agent-readiness-policy/src/standard-mapping.js +2 -1
  116. package/dist/modules/agent-readiness-policy/src/standard-mapping.js.map +1 -1
  117. package/dist/modules/agent-readiness-repository/src/change.js +2 -2
  118. package/dist/modules/agent-readiness-repository/src/change.js.map +1 -1
  119. package/dist/modules/artifact/src/index.d.ts +9 -3
  120. package/dist/modules/artifact/src/index.d.ts.map +1 -1
  121. package/dist/modules/artifact/src/index.js +50 -65
  122. package/dist/modules/artifact/src/index.js.map +1 -1
  123. package/dist/modules/artifact/src/policy-closure.d.ts +12 -0
  124. package/dist/modules/artifact/src/policy-closure.d.ts.map +1 -0
  125. package/dist/modules/artifact/src/policy-closure.js +52 -0
  126. package/dist/modules/artifact/src/policy-closure.js.map +1 -0
  127. package/dist/modules/{release → artifact}/src/release-directory-files.d.ts +2 -0
  128. package/dist/modules/artifact/src/release-directory-files.d.ts.map +1 -0
  129. package/dist/modules/artifact/src/release-directory-files.js +38 -0
  130. package/dist/modules/artifact/src/release-directory-files.js.map +1 -0
  131. package/dist/modules/assets/src/authority-bundle.d.ts +13 -0
  132. package/dist/modules/assets/src/authority-bundle.d.ts.map +1 -1
  133. package/dist/modules/assets/src/authority-bundle.js +38 -9
  134. package/dist/modules/assets/src/authority-bundle.js.map +1 -1
  135. package/dist/modules/assets/src/index.d.ts.map +1 -1
  136. package/dist/modules/assets/src/index.js +13 -4
  137. package/dist/modules/assets/src/index.js.map +1 -1
  138. package/dist/modules/assurance/src/index.d.ts +22 -0
  139. package/dist/modules/assurance/src/index.d.ts.map +1 -0
  140. package/dist/modules/assurance/src/index.js +73 -0
  141. package/dist/modules/assurance/src/index.js.map +1 -0
  142. package/dist/modules/authority/src/index.d.ts +9 -2
  143. package/dist/modules/authority/src/index.d.ts.map +1 -1
  144. package/dist/modules/authority/src/index.js +32 -2
  145. package/dist/modules/authority/src/index.js.map +1 -1
  146. package/dist/modules/authority/src/retained-capture-receipt.d.ts +95 -0
  147. package/dist/modules/authority/src/retained-capture-receipt.d.ts.map +1 -0
  148. package/dist/modules/authority/src/retained-capture-receipt.js +76 -0
  149. package/dist/modules/authority/src/retained-capture-receipt.js.map +1 -0
  150. package/dist/modules/authority-state/src/index.d.ts +1 -1
  151. package/dist/modules/authority-state/src/index.d.ts.map +1 -1
  152. package/dist/modules/authority-state/src/index.js +5 -9
  153. package/dist/modules/authority-state/src/index.js.map +1 -1
  154. package/dist/modules/catalog-admission/src/admission-conflicts.d.ts +60 -16
  155. package/dist/modules/catalog-admission/src/admission-conflicts.d.ts.map +1 -1
  156. package/dist/modules/catalog-admission/src/admission-conflicts.js +95 -40
  157. package/dist/modules/catalog-admission/src/admission-conflicts.js.map +1 -1
  158. package/dist/modules/catalog-admission/src/change-analysis.d.ts +50 -0
  159. package/dist/modules/catalog-admission/src/change-analysis.d.ts.map +1 -0
  160. package/dist/modules/catalog-admission/src/change-analysis.js +113 -0
  161. package/dist/modules/catalog-admission/src/change-analysis.js.map +1 -0
  162. package/dist/modules/catalog-admission/src/index.d.ts +11 -37
  163. package/dist/modules/catalog-admission/src/index.d.ts.map +1 -1
  164. package/dist/modules/catalog-admission/src/index.js +20 -56
  165. package/dist/modules/catalog-admission/src/index.js.map +1 -1
  166. package/dist/modules/catalog-admission/src/machine-admission.d.ts +1215 -0
  167. package/dist/modules/catalog-admission/src/machine-admission.d.ts.map +1 -1
  168. package/dist/modules/catalog-admission/src/machine-admission.js +156 -12
  169. package/dist/modules/catalog-admission/src/machine-admission.js.map +1 -1
  170. package/dist/modules/catalog-admission/src/publication-authorities.d.ts +6 -0
  171. package/dist/modules/catalog-admission/src/publication-authorities.d.ts.map +1 -0
  172. package/dist/modules/catalog-admission/src/publication-authorities.js +28 -0
  173. package/dist/modules/catalog-admission/src/publication-authorities.js.map +1 -0
  174. package/dist/modules/catalog-admission/src/publication-composition.d.ts +421 -0
  175. package/dist/modules/catalog-admission/src/publication-composition.d.ts.map +1 -0
  176. package/dist/modules/catalog-admission/src/publication-composition.js +290 -0
  177. package/dist/modules/catalog-admission/src/publication-composition.js.map +1 -0
  178. package/dist/modules/catalog-admission/src/publication-dependencies.d.ts +25 -1
  179. package/dist/modules/catalog-admission/src/publication-dependencies.d.ts.map +1 -1
  180. package/dist/modules/catalog-admission/src/publication-dependencies.js +31 -1
  181. package/dist/modules/catalog-admission/src/publication-dependencies.js.map +1 -1
  182. package/dist/modules/catalog-admission/src/publication-recomposition.d.ts +2 -2
  183. package/dist/modules/catalog-admission/src/publication-state.d.ts +19 -0
  184. package/dist/modules/catalog-admission/src/publication-state.d.ts.map +1 -0
  185. package/dist/modules/catalog-admission/src/publication-state.js +97 -0
  186. package/dist/modules/catalog-admission/src/publication-state.js.map +1 -0
  187. package/dist/modules/catalog-admission/src/publication.d.ts +26 -24
  188. package/dist/modules/catalog-admission/src/publication.d.ts.map +1 -1
  189. package/dist/modules/catalog-admission/src/publication.js +47 -106
  190. package/dist/modules/catalog-admission/src/publication.js.map +1 -1
  191. package/dist/modules/catalog-admission/src/submission-input.d.ts +44 -0
  192. package/dist/modules/catalog-admission/src/submission-input.d.ts.map +1 -0
  193. package/dist/modules/catalog-admission/src/submission-input.js +174 -0
  194. package/dist/modules/catalog-admission/src/submission-input.js.map +1 -0
  195. package/dist/modules/catalog-admission/src/submission-state.d.ts +9 -0
  196. package/dist/modules/catalog-admission/src/submission-state.d.ts.map +1 -0
  197. package/dist/modules/catalog-admission/src/submission-state.js +24 -0
  198. package/dist/modules/catalog-admission/src/submission-state.js.map +1 -0
  199. package/dist/modules/catalog-admission/src/submission.d.ts +99 -19
  200. package/dist/modules/catalog-admission/src/submission.d.ts.map +1 -1
  201. package/dist/modules/catalog-admission/src/submission.js +160 -111
  202. package/dist/modules/catalog-admission/src/submission.js.map +1 -1
  203. package/dist/modules/catalog-model/src/index.d.ts +10 -0
  204. package/dist/modules/catalog-model/src/index.d.ts.map +1 -1
  205. package/dist/modules/catalog-model/src/index.js +11 -3
  206. package/dist/modules/catalog-model/src/index.js.map +1 -1
  207. package/dist/modules/catalog-query/src/contracts.d.ts +13 -0
  208. package/dist/modules/catalog-query/src/contracts.d.ts.map +1 -0
  209. package/dist/modules/catalog-query/src/contracts.js +13 -0
  210. package/dist/modules/catalog-query/src/contracts.js.map +1 -0
  211. package/dist/modules/catalog-read-port/src/index.d.ts +34 -0
  212. package/dist/modules/catalog-read-port/src/index.d.ts.map +1 -0
  213. package/dist/modules/catalog-read-port/src/index.js +2 -0
  214. package/dist/modules/catalog-read-port/src/index.js.map +1 -0
  215. package/dist/modules/deterministic-release-archive/src/files.d.ts +8 -0
  216. package/dist/modules/deterministic-release-archive/src/files.d.ts.map +1 -0
  217. package/dist/modules/deterministic-release-archive/src/files.js +23 -0
  218. package/dist/modules/deterministic-release-archive/src/files.js.map +1 -0
  219. package/dist/modules/evidence-operations/src/configuration.d.ts +283 -0
  220. package/dist/modules/evidence-operations/src/configuration.d.ts.map +1 -0
  221. package/dist/modules/evidence-operations/src/configuration.js +213 -0
  222. package/dist/modules/evidence-operations/src/configuration.js.map +1 -0
  223. package/dist/modules/evidence-operations/src/evidence-authority.d.ts +2552 -0
  224. package/dist/modules/evidence-operations/src/evidence-authority.d.ts.map +1 -0
  225. package/dist/modules/evidence-operations/src/evidence-authority.js +545 -0
  226. package/dist/modules/evidence-operations/src/evidence-authority.js.map +1 -0
  227. package/dist/modules/evidence-operations/src/evidence-normalization.d.ts +5 -0
  228. package/dist/modules/evidence-operations/src/evidence-normalization.d.ts.map +1 -1
  229. package/dist/modules/evidence-operations/src/evidence-normalization.js +11 -2
  230. package/dist/modules/evidence-operations/src/evidence-normalization.js.map +1 -1
  231. package/dist/modules/evidence-operations/src/proof-graph.d.ts +4 -7
  232. package/dist/modules/evidence-operations/src/proof-graph.d.ts.map +1 -1
  233. package/dist/modules/evidence-operations/src/proof-graph.js +6 -7
  234. package/dist/modules/evidence-operations/src/proof-graph.js.map +1 -1
  235. package/dist/modules/evidence-operations/src/retained-revision.d.ts +6 -0
  236. package/dist/modules/evidence-operations/src/retained-revision.d.ts.map +1 -0
  237. package/dist/modules/evidence-operations/src/retained-revision.js +29 -0
  238. package/dist/modules/evidence-operations/src/retained-revision.js.map +1 -0
  239. package/dist/modules/evidence-operations/src/submission-verifier.d.ts +5 -2
  240. package/dist/modules/evidence-operations/src/submission-verifier.d.ts.map +1 -1
  241. package/dist/modules/evidence-operations/src/submission-verifier.js.map +1 -1
  242. package/dist/modules/git-input/src/index.d.ts +31 -0
  243. package/dist/modules/git-input/src/index.d.ts.map +1 -0
  244. package/dist/modules/git-input/src/index.js +158 -0
  245. package/dist/modules/git-input/src/index.js.map +1 -0
  246. package/dist/modules/policy-identity/src/index.d.ts +7 -0
  247. package/dist/modules/policy-identity/src/index.d.ts.map +1 -0
  248. package/dist/modules/policy-identity/src/index.js +23 -0
  249. package/dist/modules/policy-identity/src/index.js.map +1 -0
  250. package/dist/modules/primitives/src/index.d.ts +2 -0
  251. package/dist/modules/primitives/src/index.d.ts.map +1 -1
  252. package/dist/modules/primitives/src/index.js +20 -2
  253. package/dist/modules/primitives/src/index.js.map +1 -1
  254. package/dist/modules/projection-identity/src/index.d.ts +14 -0
  255. package/dist/modules/projection-identity/src/index.d.ts.map +1 -0
  256. package/dist/modules/projection-identity/src/index.js +23 -0
  257. package/dist/modules/projection-identity/src/index.js.map +1 -0
  258. package/dist/modules/provenance/src/index.d.ts +7 -3
  259. package/dist/modules/provenance/src/index.d.ts.map +1 -1
  260. package/dist/modules/provenance/src/index.js +52 -68
  261. package/dist/modules/provenance/src/index.js.map +1 -1
  262. package/dist/modules/release/src/agent-readiness-publication-inputs.d.ts +12 -0
  263. package/dist/modules/release/src/agent-readiness-publication-inputs.d.ts.map +1 -0
  264. package/dist/modules/release/src/agent-readiness-publication-inputs.js +48 -0
  265. package/dist/modules/release/src/agent-readiness-publication-inputs.js.map +1 -0
  266. package/dist/modules/release/src/agent-readiness-regrade-evidence.d.ts +223 -0
  267. package/dist/modules/release/src/agent-readiness-regrade-evidence.d.ts.map +1 -0
  268. package/dist/modules/release/src/agent-readiness-regrade-evidence.js +192 -0
  269. package/dist/modules/release/src/agent-readiness-regrade-evidence.js.map +1 -0
  270. package/dist/modules/release/src/changes.d.ts.map +1 -1
  271. package/dist/modules/release/src/changes.js +21 -25
  272. package/dist/modules/release/src/changes.js.map +1 -1
  273. package/dist/modules/release/src/evidence-admission.d.ts +59 -0
  274. package/dist/modules/release/src/evidence-admission.d.ts.map +1 -0
  275. package/dist/modules/release/src/evidence-admission.js +539 -0
  276. package/dist/modules/release/src/evidence-admission.js.map +1 -0
  277. package/dist/modules/release/src/evidence-bundle-tree.d.ts +14 -0
  278. package/dist/modules/release/src/evidence-bundle-tree.d.ts.map +1 -0
  279. package/dist/modules/release/src/evidence-bundle-tree.js +58 -0
  280. package/dist/modules/release/src/evidence-bundle-tree.js.map +1 -0
  281. package/dist/modules/release/src/identity.d.ts +4 -4
  282. package/dist/modules/release/src/identity.d.ts.map +1 -1
  283. package/dist/modules/release/src/identity.js +43 -1
  284. package/dist/modules/release/src/identity.js.map +1 -1
  285. package/dist/modules/release/src/inputs.d.ts +15 -7
  286. package/dist/modules/release/src/inputs.d.ts.map +1 -1
  287. package/dist/modules/release/src/inputs.js +15 -21
  288. package/dist/modules/release/src/inputs.js.map +1 -1
  289. package/dist/modules/release/src/publication-authorities.d.ts +267 -0
  290. package/dist/modules/release/src/publication-authorities.d.ts.map +1 -0
  291. package/dist/modules/release/src/publication-authorities.js +56 -0
  292. package/dist/modules/release/src/publication-authorities.js.map +1 -0
  293. package/dist/modules/release/src/publication-inputs.d.ts +2 -6
  294. package/dist/modules/release/src/publication-inputs.d.ts.map +1 -1
  295. package/dist/modules/release/src/publication-inputs.js +29 -15
  296. package/dist/modules/release/src/publication-inputs.js.map +1 -1
  297. package/dist/modules/release/src/publication-parent-guard.d.ts +17 -0
  298. package/dist/modules/release/src/publication-parent-guard.d.ts.map +1 -0
  299. package/dist/modules/release/src/publication-parent-guard.js +18 -0
  300. package/dist/modules/release/src/publication-parent-guard.js.map +1 -0
  301. package/dist/modules/release/src/publication-parent-relations.d.ts +24 -0
  302. package/dist/modules/release/src/publication-parent-relations.d.ts.map +1 -0
  303. package/dist/modules/release/src/publication-parent-relations.js +104 -0
  304. package/dist/modules/release/src/publication-parent-relations.js.map +1 -0
  305. package/dist/modules/release/src/submission-verification.d.ts +20 -0
  306. package/dist/modules/release/src/submission-verification.d.ts.map +1 -0
  307. package/dist/modules/release/src/submission-verification.js +39 -0
  308. package/dist/modules/release/src/submission-verification.js.map +1 -0
  309. package/dist/modules/release/src/transition.d.ts.map +1 -1
  310. package/dist/modules/release/src/transition.js +17 -10
  311. package/dist/modules/release/src/transition.js.map +1 -1
  312. package/dist/modules/release/src/verification-changes.d.ts +6 -0
  313. package/dist/modules/release/src/verification-changes.d.ts.map +1 -0
  314. package/dist/modules/release/src/verification-changes.js +56 -0
  315. package/dist/modules/release/src/verification-changes.js.map +1 -0
  316. package/dist/modules/release/src/verification-policies.d.ts +22 -0
  317. package/dist/modules/release/src/verification-policies.d.ts.map +1 -1
  318. package/dist/modules/release/src/verification-policies.js +6 -0
  319. package/dist/modules/release/src/verification-policies.js.map +1 -1
  320. package/dist/modules/release/src/verification-transitions.d.ts +14 -1
  321. package/dist/modules/release/src/verification-transitions.d.ts.map +1 -1
  322. package/dist/modules/release/src/verification-transitions.js +55 -1
  323. package/dist/modules/release/src/verification-transitions.js.map +1 -1
  324. package/dist/modules/release/src/verifier.d.ts +5 -3
  325. package/dist/modules/release/src/verifier.d.ts.map +1 -1
  326. package/dist/modules/release/src/verifier.js +71 -80
  327. package/dist/modules/release/src/verifier.js.map +1 -1
  328. package/dist/packages/catalog-verifier/src/application.d.ts +2 -0
  329. package/dist/packages/catalog-verifier/src/application.d.ts.map +1 -1
  330. package/dist/packages/catalog-verifier/src/application.js +10 -9
  331. package/dist/packages/catalog-verifier/src/application.js.map +1 -1
  332. package/dist/packages/catalog-verifier/src/index.d.ts +3 -0
  333. package/dist/packages/catalog-verifier/src/index.d.ts.map +1 -1
  334. package/dist/packages/catalog-verifier/src/index.js +3 -0
  335. package/dist/packages/catalog-verifier/src/index.js.map +1 -1
  336. package/dist/packages/catalog-verifier/src/program.d.ts.map +1 -1
  337. package/dist/packages/catalog-verifier/src/program.js +13 -10
  338. package/dist/packages/catalog-verifier/src/program.js.map +1 -1
  339. package/package.json +1 -1
  340. package/dist/modules/release/src/release-directory-files.d.ts.map +0 -1
  341. package/dist/modules/release/src/release-directory-files.js +0 -49
  342. package/dist/modules/release/src/release-directory-files.js.map +0 -1
@@ -0,0 +1,267 @@
1
+ import type { CatalogEvent, CatalogEventIntent } from "../../../contracts/events/src/index.js";
2
+ import type { CatalogPublicationProposal } from "../../../contracts/publication/src/index.js";
3
+ import type { EvidenceCatalogProposal } from "../../evidence-operations/src/evidence-authority.js";
4
+ export type ReadinessPublicationProposal = Pick<EvidenceCatalogProposal, "agent_readiness_profile_input" | "agent_readiness_declaration_revision" | "agent_readiness_offer_relation_inputs">;
5
+ /** Public canonical input only; private review and model material stay private. */
6
+ export declare function agentReadinessPublicationInput(proposal: ReadinessPublicationProposal): {
7
+ release_input_contract: "sourcey.agent-readiness-release-input/v1alpha1";
8
+ profile_input: {
9
+ evidence_bindings: {
10
+ stage: "evaluate" | "sign_up" | "pay" | "provision" | "operate";
11
+ signal_code: string;
12
+ evidence_event_ids: string[];
13
+ observation_ids: string[];
14
+ }[];
15
+ agent_readiness_profile_id: string;
16
+ entity_id: string;
17
+ scope: {
18
+ product: {
19
+ key: string;
20
+ name: string;
21
+ };
22
+ funnel: {
23
+ key: string;
24
+ name: string;
25
+ };
26
+ };
27
+ catalog_binding: {
28
+ base_release_id: string;
29
+ entity_revision_digest: string;
30
+ };
31
+ declaration_revision_digest: string;
32
+ declaration: {
33
+ status: "none";
34
+ } | {
35
+ declaration_id: string;
36
+ provenance: {
37
+ repository: "sourcey/agent-ready-services";
38
+ commit: string;
39
+ path: string;
40
+ git_blob_oid: string;
41
+ blob_digest: string;
42
+ };
43
+ status: "community_declared" | "entity_attested";
44
+ };
45
+ lifecycle: "active" | "ended" | "withdrawn";
46
+ effective_from: string;
47
+ signals: {
48
+ stage: "evaluate" | "sign_up" | "pay" | "provision" | "operate";
49
+ signal_code: string;
50
+ selector_group_id: string;
51
+ value: "unknown" | "yes" | "no" | "partial" | "not_applicable";
52
+ observed_at: string;
53
+ tested_surfaces: {
54
+ node_kind: "resource" | "endpoint" | "interface" | "surface_exclusion";
55
+ node_id: string;
56
+ }[];
57
+ assessment_method: {
58
+ name: string;
59
+ version: string;
60
+ method_digest: string;
61
+ };
62
+ determination_bases: ({
63
+ locators: {
64
+ artifact_digest: string;
65
+ start_byte: number;
66
+ end_byte: number;
67
+ value_digest: string;
68
+ }[];
69
+ captures: {
70
+ retained_capture_digest: string;
71
+ capture_rung: "http" | "headless" | "archive" | "manual";
72
+ }[];
73
+ artifact_digests: string[];
74
+ kind: "direct_observation";
75
+ } | {
76
+ coverage_scope: "exact_resource" | "tested_surfaces" | "exact_funnel";
77
+ covered_surfaces: {
78
+ node_kind: "resource" | "endpoint" | "interface" | "surface_exclusion";
79
+ node_id: string;
80
+ }[];
81
+ covered_branches: number;
82
+ captures: {
83
+ retained_capture_digest: string;
84
+ capture_rung: "http" | "headless" | "archive" | "manual";
85
+ }[];
86
+ artifact_digests: string[];
87
+ kind: "bounded_absence";
88
+ } | {
89
+ source_surface: {
90
+ node_kind: "resource" | "endpoint" | "interface" | "surface_exclusion";
91
+ node_id: string;
92
+ };
93
+ locators: {
94
+ artifact_digest: string;
95
+ start_byte: number;
96
+ end_byte: number;
97
+ value_digest: string;
98
+ }[];
99
+ captures: {
100
+ retained_capture_digest: string;
101
+ capture_rung: "http" | "headless" | "archive" | "manual";
102
+ }[];
103
+ artifact_digests: string[];
104
+ kind: "explicit_first_party_declaration";
105
+ } | {
106
+ kind: "standard_requirement";
107
+ adapter_digest: string;
108
+ evidence_record_digest: string;
109
+ requirement: {
110
+ namespace: string;
111
+ version: string;
112
+ requirement_id: string;
113
+ relation: "tests" | "informational-reference";
114
+ };
115
+ artifact_digests: string[];
116
+ } | {
117
+ kind: "certification_receipt";
118
+ certification_receipt_digest: string;
119
+ })[];
120
+ note?: string | undefined;
121
+ }[];
122
+ input_contract: "sourcey.agent-readiness-input/v1alpha1";
123
+ effective_until?: string | undefined;
124
+ };
125
+ declaration_revision: {
126
+ revision_contract: "sourcey.agent-readiness-declaration-revision/v1alpha1";
127
+ entity_id: string;
128
+ declaration: {
129
+ scope: {
130
+ product: {
131
+ key: string;
132
+ name: string;
133
+ };
134
+ funnel: {
135
+ key: string;
136
+ name: string;
137
+ };
138
+ };
139
+ resources: {
140
+ resource_id: string;
141
+ uri: string;
142
+ roles: ("policy" | "discovery" | "status" | "pricing" | "eligibility" | "access" | "terms" | "checkout" | "provisioning" | "operations" | "recovery" | "authentication" | "descriptor" | "documentation")[];
143
+ operated_by_participant_id: string;
144
+ standard_bindings: {
145
+ namespace: string;
146
+ version: string;
147
+ relation: "declares" | "describes" | "implements" | "uses";
148
+ }[];
149
+ allowed_redirect_hosts?: string[] | undefined;
150
+ }[];
151
+ relations: {
152
+ relation_id: string;
153
+ kind: "describes" | "authenticates" | "requires" | "alternative_to" | "precedes";
154
+ from: {
155
+ node_kind: "resource" | "endpoint" | "interface" | "surface_exclusion";
156
+ node_id: string;
157
+ };
158
+ to: {
159
+ node_kind: "resource" | "endpoint" | "interface" | "surface_exclusion";
160
+ node_id: string;
161
+ };
162
+ }[];
163
+ declaration_id: string;
164
+ declared_at: string;
165
+ assessment_targets: {
166
+ target_id: string;
167
+ name: string;
168
+ interface_ids: string[];
169
+ }[];
170
+ participants: {
171
+ participant_id: string;
172
+ roles: ("subject" | "access_operator" | "identity_provider" | "payment_provider" | "provisioning_provider" | "operations_provider")[];
173
+ identity: {
174
+ entity_id: string;
175
+ } | {
176
+ origin_source_id: string;
177
+ };
178
+ }[];
179
+ endpoints: {
180
+ endpoint_id: string;
181
+ uri: string;
182
+ transport: "http" | "websocket" | "grpc";
183
+ roles: ("status" | "service" | "checkout" | "recovery" | "authorization" | "token" | "registration" | "protected_resource" | "webhook")[];
184
+ operated_by_participant_id: string;
185
+ standard_bindings: {
186
+ namespace: string;
187
+ version: string;
188
+ relation: "declares" | "describes" | "implements" | "uses";
189
+ }[];
190
+ allowed_redirect_hosts?: string[] | undefined;
191
+ }[];
192
+ interfaces: {
193
+ interface_id: string;
194
+ modality: "web_application" | "network_api" | "command_line" | "software_library" | "tool_server" | "agent_service";
195
+ functions: ("events" | "recovery" | "authentication" | "service_operation" | "commerce")[];
196
+ endpoint_ids: string[];
197
+ resource_ids: string[];
198
+ operated_by_participant_id: string;
199
+ standard_bindings: {
200
+ namespace: string;
201
+ version: string;
202
+ relation: "declares" | "describes" | "implements" | "uses";
203
+ }[];
204
+ }[];
205
+ surface_exclusions: {
206
+ exclusion_id: string;
207
+ role: "policy" | "discovery" | "status" | "pricing" | "eligibility" | "access" | "terms" | "checkout" | "provisioning" | "operations" | "recovery" | "authentication" | "descriptor" | "documentation";
208
+ rationale: string;
209
+ }[];
210
+ authority_intent: "entity" | "community";
211
+ source_bindings: {
212
+ target: {
213
+ node_kind: "relation" | "resource" | "endpoint" | "interface" | "surface_exclusion" | "declaration" | "participant" | "assessment_target";
214
+ node_id: string;
215
+ };
216
+ source_binding_id: string;
217
+ source_id: string;
218
+ field_paths: string[];
219
+ }[];
220
+ };
221
+ sources: {
222
+ source_id: string;
223
+ url: string;
224
+ }[];
225
+ revision_digest: string;
226
+ };
227
+ offer_relation_inputs: {
228
+ relation_input_contract: "sourcey.agent-readiness-offer-relation-input/v1alpha1";
229
+ agent_readiness_profile_id: string;
230
+ offer_id: string;
231
+ purpose: "application_path" | "redemption_path" | "operating_path";
232
+ applicable_stages: ("evaluate" | "sign_up" | "pay" | "provision" | "operate")[];
233
+ effective_from: string;
234
+ declaration_revision_digest: string;
235
+ offer_relation_proposal_id: string;
236
+ admitted_offer_revision_digest: string;
237
+ effective_until?: string | undefined;
238
+ }[];
239
+ } | null;
240
+ type ProposalReference = Pick<CatalogPublicationProposal["authority_proposals"][number], "proposal_digest">;
241
+ export interface PublicationAuthorityBundles {
242
+ readonly evidenceProposals: readonly (ProposalReference & ReadinessPublicationProposal & {
243
+ readonly event_intents: readonly CatalogEventIntent[];
244
+ })[];
245
+ readonly claimBundles: readonly {
246
+ readonly proposal: ProposalReference;
247
+ readonly events: readonly CatalogEvent[];
248
+ }[];
249
+ readonly assetBundles: readonly {
250
+ readonly proposals: readonly ProposalReference[];
251
+ readonly events: readonly CatalogEvent[];
252
+ }[];
253
+ readonly identityBundles: readonly {
254
+ readonly proposal: ProposalReference;
255
+ readonly events: readonly CatalogEvent[];
256
+ }[];
257
+ readonly assuranceBundles: readonly {
258
+ readonly action: {
259
+ readonly action_digest: string;
260
+ };
261
+ readonly events: readonly CatalogEvent[];
262
+ }[];
263
+ }
264
+ /** Every materialization remains admitted independently; only semantic references form a union. */
265
+ export declare function authorityProposalsForBundles(input: PublicationAuthorityBundles): CatalogPublicationProposal["authority_proposals"];
266
+ export {};
267
+ //# sourceMappingURL=publication-authorities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publication-authorities.d.ts","sourceRoot":"","sources":["../../../../modules/release/src/publication-authorities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC/F,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAG9F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAGnG,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAC7C,uBAAuB,EACrB,+BAA+B,GAC/B,sCAAsC,GACtC,uCAAuC,CAC1C,CAAC;AAEF,mFAAmF;AACnF,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAQpF;AAED,KAAK,iBAAiB,GAAG,IAAI,CAC3B,0BAA0B,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,EACzD,iBAAiB,CAClB,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,GACrD,4BAA4B,GAAG;QAC7B,QAAQ,CAAC,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAC;KACvD,CAAC,EAAE,CAAC;IACP,QAAQ,CAAC,YAAY,EAAE,SAAS;QAC9B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;QACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;KAC1C,EAAE,CAAC;IACJ,QAAQ,CAAC,YAAY,EAAE,SAAS;QAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;QACjD,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;KAC1C,EAAE,CAAC;IACJ,QAAQ,CAAC,eAAe,EAAE,SAAS;QACjC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;QACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;KAC1C,EAAE,CAAC;IACJ,QAAQ,CAAC,gBAAgB,EAAE,SAAS;QAClC,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;SAAE,CAAC;QACpD,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;KAC1C,EAAE,CAAC;CACL;AAED,mGAAmG;AACnG,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,2BAA2B,GACjC,0BAA0B,CAAC,qBAAqB,CAAC,CAoDnD"}
@@ -0,0 +1,56 @@
1
+ import { agentReadinessProfileReleaseInputSchema } from "../../../contracts/agent-readiness/src/index.js";
2
+ import { mergeCatalogPublicationAuthorityProposalLanes } from "../../catalog-admission/src/publication-authorities.js";
3
+ import { catalogPublicationEventDependencyKeys } from "../../catalog-admission/src/publication-dependencies.js";
4
+ import { digest } from "../../primitives/src/index.js";
5
+ /** Public canonical input only; private review and model material stay private. */
6
+ export function agentReadinessPublicationInput(proposal) {
7
+ if (!proposal.agent_readiness_profile_input)
8
+ return null;
9
+ return agentReadinessProfileReleaseInputSchema.parse({
10
+ release_input_contract: "sourcey.agent-readiness-release-input/v1alpha1",
11
+ profile_input: proposal.agent_readiness_profile_input,
12
+ declaration_revision: proposal.agent_readiness_declaration_revision,
13
+ offer_relation_inputs: proposal.agent_readiness_offer_relation_inputs,
14
+ });
15
+ }
16
+ /** Every materialization remains admitted independently; only semantic references form a union. */
17
+ export function authorityProposalsForBundles(input) {
18
+ return mergeCatalogPublicationAuthorityProposalLanes(...input.evidenceProposals.map((proposal) => {
19
+ const { proposal_digest, event_intents } = proposal;
20
+ const publicInput = agentReadinessPublicationInput(proposal);
21
+ const publicBinding = publicInput ? { public_input_digest: digest(publicInput) } : {};
22
+ const dependency_keys = catalogPublicationEventDependencyKeys(event_intents.map(({ core, event_id }) => ({ ...core, event_id })));
23
+ return [
24
+ { purpose: "catalog-capture", proposal_digest, dependency_keys },
25
+ {
26
+ purpose: "catalog-evidence",
27
+ proposal_digest,
28
+ dependency_keys,
29
+ ...publicBinding,
30
+ },
31
+ ];
32
+ }), ...input.claimBundles.map(({ proposal: { proposal_digest }, events }) => [...new Set(events.map((event) => event.protected.signature_purpose))].map((purpose) => ({
33
+ purpose,
34
+ proposal_digest,
35
+ dependency_keys: catalogPublicationEventDependencyKeys(events.filter((event) => event.protected.signature_purpose === purpose)),
36
+ }))), ...input.assetBundles.map(({ proposals }) => proposals.map(({ proposal_digest }) => ({
37
+ purpose: "catalog-identity",
38
+ proposal_digest,
39
+ // Asset dependencies come from the exact binding/proposal transitions,
40
+ // including candidates whose custody event has not been issued yet.
41
+ dependency_keys: [],
42
+ }))), ...input.identityBundles.map(({ proposal: { proposal_digest }, events }) => [
43
+ {
44
+ purpose: "catalog-identity",
45
+ proposal_digest,
46
+ dependency_keys: catalogPublicationEventDependencyKeys(events),
47
+ },
48
+ ]), ...input.assuranceBundles.map(({ action: { action_digest }, events }) => [
49
+ {
50
+ purpose: "catalog-verification",
51
+ proposal_digest: action_digest,
52
+ dependency_keys: catalogPublicationEventDependencyKeys(events),
53
+ },
54
+ ]));
55
+ }
56
+ //# sourceMappingURL=publication-authorities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publication-authorities.js","sourceRoot":"","sources":["../../../../modules/release/src/publication-authorities.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,5 @@
1
- import { type CatalogPublicationChangeSet, type CatalogPublicationProposal, type PublicationIngressReceipt } from "../../../contracts/publication/src/index.js";
1
+ import { type CatalogPublicationComposition } from "../../../contracts/publication/src/index.js";
2
2
  import type { CatalogDelta, CatalogReleaseBundle } from "../../../contracts/release/src/index.js";
3
- export interface VerifiedPublicationInputs {
4
- readonly proposal: CatalogPublicationProposal;
5
- readonly changeSet: CatalogPublicationChangeSet;
6
- readonly receipts: readonly PublicationIngressReceipt[];
7
- }
3
+ export type VerifiedPublicationInputs = CatalogPublicationComposition;
8
4
  export declare function verifyPublicationInputs(bundle: CatalogReleaseBundle, delta: CatalogDelta, files: ReadonlyMap<string, Buffer>): VerifiedPublicationInputs;
9
5
  //# sourceMappingURL=publication-inputs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"publication-inputs.d.ts","sourceRoot":"","sources":["../../../../modules/release/src/publication-inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAK/B,KAAK,yBAAyB,EAG/B,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAalG,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,2BAA2B,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,yBAAyB,EAAE,CAAC;CACzD;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,yBAAyB,CAgE3B"}
1
+ {"version":3,"file":"publication-inputs.d.ts","sourceRoot":"","sources":["../../../../modules/release/src/publication-inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,6BAA6B,EAOnC,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAclG,MAAM,MAAM,yBAAyB,GAAG,6BAA6B,CAAC;AAEtE,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,yBAAyB,CAsF3B"}
@@ -1,5 +1,5 @@
1
1
  import { catalogPublicationChangeSetCoreSchema, catalogPublicationChangeSetSchema, catalogPublicationProposalCoreSchema, catalogPublicationProposalSchema, publicationIngressReceiptCoreSchema, publicationIngressReceiptSchema, } from "../../../contracts/publication/src/index.js";
2
- import { catalogPublicationAdmittedInputDigests, verifyCatalogPublicationInputClosure, } from "../../catalog-admission/src/index.js";
2
+ import { catalogPublicationAdmittedInputDigests, catalogPublicationIngressUnion, verifyCatalogPublicationInputClosure, } from "../../catalog-admission/src/index.js";
3
3
  import { canonicalJson, compareCanonicalStrings, digest, digestFromPathSegment, } from "../../primitives/src/index.js";
4
4
  export function verifyPublicationInputs(bundle, delta, files) {
5
5
  const proposals = valuesUnder(files, "publication/proposals/").map(([path, input]) => {
@@ -22,32 +22,46 @@ export function verifyPublicationInputs(bundle, delta, files) {
22
22
  return receipt;
23
23
  })
24
24
  .sort((left, right) => compareCanonicalStrings(left.receipt_digest, right.receipt_digest));
25
- const proposal = proposals[0];
26
- const changeSet = changeSets[0];
27
- if (!proposal || proposals.length !== 1 || !changeSet || changeSets.length !== 1) {
28
- throw new Error("Catalog delta must close one canonical proposal and one Change Set.");
29
- }
30
25
  if (receipts.length === 0 || !delta.base) {
31
26
  throw new Error("Catalog delta must close ingress receipt provenance and an exact live base.");
32
27
  }
28
+ const proposalsByDigest = new Map(proposals.map((proposal) => [proposal.proposal_digest, proposal]));
29
+ const changeSetsByProposal = new Map(changeSets.map((changeSet) => [changeSet.proposal_digest, changeSet]));
30
+ if (proposalsByDigest.size !== proposals.length ||
31
+ changeSetsByProposal.size !== changeSets.length)
32
+ throw new Error("Catalog publication must retain exactly one Change Set for each addressed proposal.");
33
+ const ingresses = receipts.map((receipt) => {
34
+ const proposal = proposalsByDigest.get(receipt.proposal_digest);
35
+ const changeSet = changeSetsByProposal.get(receipt.proposal_digest);
36
+ if (!proposal || !changeSet)
37
+ throw new Error("Catalog ingress lacks its retained proposal or Change Set.");
38
+ return { proposal, change_set: changeSet, ingress_receipt: receipt };
39
+ });
40
+ const union = catalogPublicationIngressUnion(ingresses);
41
+ const proposal = proposalsByDigest.get(union.proposal_digest);
42
+ const changeSet = changeSetsByProposal.get(union.proposal_digest);
43
+ if (!proposal || !changeSet)
44
+ throw new Error("Catalog delta lacks its exact aggregate publication plan.");
33
45
  const publication = verifyCatalogPublicationInputClosure({
34
46
  proposal,
35
- changeSet,
36
- ingressReceipts: receipts,
47
+ change_set: changeSet,
48
+ ingresses,
37
49
  });
38
50
  if (publication.proposal.live_parent_release_id !== delta.base.release.release_id) {
39
51
  throw new Error("Catalog publication inputs do not share one proposal and live parent.");
40
52
  }
41
53
  const admittedInputs = catalogPublicationAdmittedInputDigests(publication);
42
- if (canonicalJson(admittedInputs) !== canonicalJson(bundle.admitted_input_digests) ||
54
+ const retainedInputs = [
55
+ ...proposals.map(({ proposal_digest }) => proposal_digest),
56
+ ...changeSets.map(({ change_set_digest }) => change_set_digest),
57
+ ...receipts.map(({ receipt_digest }) => receipt_digest),
58
+ ].sort(compareCanonicalStrings);
59
+ if (canonicalJson(admittedInputs) !== canonicalJson(retainedInputs) ||
60
+ canonicalJson(admittedInputs) !== canonicalJson(bundle.admitted_input_digests) ||
43
61
  canonicalJson(admittedInputs) !== canonicalJson(delta.admitted_input_digests)) {
44
62
  throw new Error("Catalog publication objects do not close the admitted input digest set.");
45
63
  }
46
- return {
47
- proposal: publication.proposal,
48
- changeSet: publication.changeSet,
49
- receipts: publication.ingressReceipts,
50
- };
64
+ return publication;
51
65
  }
52
66
  function valuesUnder(files, prefix) {
53
67
  return [...files.entries()]
@@ -60,7 +74,7 @@ function assertAddressed(path, declared, computed, label) {
60
74
  const address = filename?.endsWith(".json")
61
75
  ? digestFromPathSegment(filename.slice(0, -".json".length))
62
76
  : null;
63
- if (address !== declared || computed !== declared) {
77
+ if (path.split("/").length !== 3 || address !== declared || computed !== declared) {
64
78
  throw new Error(`Catalog publication ${label} ${path} is not content-addressed.`);
65
79
  }
66
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"publication-inputs.js","sourceRoot":"","sources":["../../../../modules/release/src/publication-inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,qCAAqC,EACrC,iCAAiC,EACjC,oCAAoC,EACpC,gCAAgC,EAEhC,mCAAmC,EACnC,+BAA+B,GAChC,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACL,sCAAsC,EACtC,oCAAoC,GACrC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,uBAAuB,EAEvB,MAAM,EACN,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AAQvC,MAAM,UAAU,uBAAuB,CACrC,MAA4B,EAC5B,KAAmB,EACnB,KAAkC;IAElC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACnF,MAAM,QAAQ,GAAG,gCAAgC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;QAC9D,eAAe,CACb,IAAI,EACJ,cAAc,EACd,MAAM,CAAC,oCAAoC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EACxD,UAAU,CACX,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACtF,MAAM,SAAS,GAAG,iCAAiC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC;QAClE,eAAe,CACb,IAAI,EACJ,eAAe,EACf,MAAM,CAAC,qCAAqC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EACzD,YAAY,CACb,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,sBAAsB,CAAC;SACxD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,+BAA+B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAC3D,eAAe,CACb,IAAI,EACJ,aAAa,EACb,MAAM,CAAC,mCAAmC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EACvD,iBAAiB,CAClB,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,WAAW,GAAG,oCAAoC,CAAC;QACvD,QAAQ;QACR,SAAS;QACT,eAAe,EAAE,QAAQ;KAC1B,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,QAAQ,CAAC,sBAAsB,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,cAAc,GAAG,sCAAsC,CAAC,WAAW,CAAC,CAAC;IAC3E,IACE,aAAa,CAAC,cAAc,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,sBAAsB,CAAC;QAC9E,aAAa,CAAC,cAAc,CAAC,KAAK,aAAa,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAC7E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,QAAQ,EAAE,WAAW,CAAC,eAAe;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,KAAkC,EAClC,MAAc;IAEd,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;SAC3C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC/D,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAU,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,QAAgB,EAAE,QAAgB,EAAE,KAAa;IACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;QACzC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3D,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,OAAO,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,IAAI,IAAI,4BAA4B,CAAC,CAAC;IACpF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"publication-inputs.js","sourceRoot":"","sources":["../../../../modules/release/src/publication-inputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { PublicationDependencyRegistration } from "../../../contracts/publication/src/index.js";
2
+ import { catalogPublicationParentRelationGuard } from "./publication-parent-relations.js";
3
+ /** Executable validation stays with the exact verifier that admitted the bundle.
4
+ * The host supplies current parent rows under its activation lock, not rules. */
5
+ export declare function catalogPublicationParentGuard(delta: Parameters<typeof catalogPublicationParentRelationGuard>[0]): {
6
+ relations: {
7
+ selectors: {
8
+ relationIds: string[];
9
+ profileIds: string[];
10
+ offerIds: string[];
11
+ };
12
+ verify(parent: import("./publication-parent-relations.js").CatalogPublicationParentRelations): void;
13
+ };
14
+ verifyImpact(registrations: readonly PublicationDependencyRegistration[]): void;
15
+ };
16
+ export type CatalogPublicationParentGuard = ReturnType<typeof catalogPublicationParentGuard>;
17
+ //# sourceMappingURL=publication-parent-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publication-parent-guard.d.ts","sourceRoot":"","sources":["../../../../modules/release/src/publication-parent-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,6CAA6C,CAAC;AAGrG,OAAO,EAAE,qCAAqC,EAAE,MAAM,mCAAmC,CAAC;AAE1F;iFACiF;AACjF,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,UAAU,CAAC,OAAO,qCAAqC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;gCAIpC,SAAS,iCAAiC,EAAE,GAAG,IAAI;EAelF;AAED,MAAM,MAAM,6BAA6B,GAAG,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { resolveCatalogPublicationImpact } from "../../catalog-admission/src/publication.js";
2
+ import { CatalogPublicationImpactIndex } from "../../catalog-admission/src/publication-dependencies.js";
3
+ import { catalogPublicationParentRelationGuard } from "./publication-parent-relations.js";
4
+ /** Executable validation stays with the exact verifier that admitted the bundle.
5
+ * The host supplies current parent rows under its activation lock, not rules. */
6
+ export function catalogPublicationParentGuard(delta) {
7
+ return {
8
+ relations: catalogPublicationParentRelationGuard(delta),
9
+ verifyImpact(registrations) {
10
+ const changeSet = delta.publicationChangeSet;
11
+ const index = new CatalogPublicationImpactIndex(registrations, changeSet.changed_dependency_keys);
12
+ if (resolveCatalogPublicationImpact(changeSet, index).change_set_digest !==
13
+ changeSet.change_set_digest)
14
+ throw new Error("Catalog publication impact differs from its exact current dependency closure.");
15
+ },
16
+ };
17
+ }
18
+ //# sourceMappingURL=publication-parent-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publication-parent-guard.js","sourceRoot":"","sources":["../../../../modules/release/src/publication-parent-guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,6BAA6B,EAAE,MAAM,yDAAyD,CAAC;AACxG,OAAO,EAAE,qCAAqC,EAAE,MAAM,mCAAmC,CAAC;AAE1F;iFACiF;AACjF,MAAM,UAAU,6BAA6B,CAC3C,KAAkE;IAElE,OAAO;QACL,SAAS,EAAE,qCAAqC,CAAC,KAAK,CAAC;QACvD,YAAY,CAAC,aAA2D;YACtE,MAAM,SAAS,GAAG,KAAK,CAAC,oBAAoB,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAI,6BAA6B,CAC7C,aAAa,EACb,SAAS,CAAC,uBAAuB,CAClC,CAAC;YACF,IACE,+BAA+B,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,iBAAiB;gBACnE,SAAS,CAAC,iBAAiB;gBAE3B,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;QACN,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { AgentReadinessOfferRelationRevision, AgentReadinessProjection } from "../../../contracts/agent-readiness/src/index.js";
2
+ import type { VerifiedCatalogDelta } from "./verifier.js";
3
+ type Delta = Pick<VerifiedCatalogDelta, "publicationProposal" | "publicationChangeSet" | "agentReadinessObjects" | "agentReadinessOfferRelationObjects" | "files">;
4
+ export interface CatalogPublicationParentRelations {
5
+ readonly relations: readonly AgentReadinessOfferRelationRevision[];
6
+ readonly profiles: readonly Pick<AgentReadinessProjection, "agent_readiness_profile_id" | "revision_digest" | "declaration_revision_digest">[];
7
+ readonly offers: readonly {
8
+ readonly offer_id: string;
9
+ readonly revision_digest: string;
10
+ }[];
11
+ }
12
+ /** The bundle proves admitted changes, not which associations existed in its
13
+ * parent. Storage supplies this exact bounded slice under the live-head lock.
14
+ * Selection never trusts the producer's affected_dependents list. */
15
+ export declare function catalogPublicationParentRelationGuard(delta: Delta): {
16
+ selectors: {
17
+ relationIds: string[];
18
+ profileIds: string[];
19
+ offerIds: string[];
20
+ };
21
+ verify(parent: CatalogPublicationParentRelations): void;
22
+ };
23
+ export {};
24
+ //# sourceMappingURL=publication-parent-relations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publication-parent-relations.d.ts","sourceRoot":"","sources":["../../../../modules/release/src/publication-parent-relations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mCAAmC,EACnC,wBAAwB,EACzB,MAAM,iDAAiD,CAAC;AAQzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,KAAK,KAAK,GAAG,IAAI,CACf,oBAAoB,EAClB,qBAAqB,GACrB,sBAAsB,GACtB,uBAAuB,GACvB,oCAAoC,GACpC,OAAO,CACV,CAAC;AAEF,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,SAAS,EAAE,SAAS,mCAAmC,EAAE,CAAC;IACnE,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,CAC9B,wBAAwB,EACxB,4BAA4B,GAAG,iBAAiB,GAAG,6BAA6B,CACjF,EAAE,CAAC;IACJ,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7F;AAED;;qEAEqE;AACrE,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,KAAK;;;;;;mBA8C/C,iCAAiC,GAAG,IAAI;EAgE1D"}
@@ -0,0 +1,104 @@
1
+ import { agentReadinessOfferRelationRequiresWithdrawal, compileAgentReadinessOfferRelationRevision, } from "../../agent-readiness-policy/src/offer-relations.js";
2
+ import { orderedUnique } from "../../catalog-admission/src/publication-dependencies.js";
3
+ import { canonicalJson } from "../../primitives/src/index.js";
4
+ import { verifyAgentReadinessPublicationInputs } from "./agent-readiness-publication-inputs.js";
5
+ /** The bundle proves admitted changes, not which associations existed in its
6
+ * parent. Storage supplies this exact bounded slice under the live-head lock.
7
+ * Selection never trusts the producer's affected_dependents list. */
8
+ export function catalogPublicationParentRelationGuard(delta) {
9
+ const objects = delta.agentReadinessOfferRelationObjects;
10
+ const admitted = verifyAgentReadinessPublicationInputs({
11
+ files: delta.files,
12
+ proposal: delta.publicationProposal,
13
+ profiles: delta.agentReadinessObjects,
14
+ });
15
+ const desired = new Map([...admitted].map(([id, input]) => [
16
+ id,
17
+ new Map(input.offer_relation_inputs.map((input) => {
18
+ const relation = compileAgentReadinessOfferRelationRevision(input);
19
+ return [relation.relation_id, relation];
20
+ })),
21
+ ]));
22
+ const changedOffers = new Map(delta.publicationChangeSet.revision_changes.flatMap((change) => change.kind === "offer"
23
+ ? [[change.target_id, change.candidate_revision_digest]]
24
+ : []));
25
+ const profileIds = orderedUnique([
26
+ ...delta.agentReadinessObjects.keys(),
27
+ ...[...objects.values()].map((object) => relationSubject(object).agent_readiness_profile_id),
28
+ ]);
29
+ const selectors = {
30
+ relationIds: orderedUnique([...objects.keys()]),
31
+ profileIds,
32
+ offerIds: orderedUnique([
33
+ ...changedOffers.keys(),
34
+ ...[...desired.values()].flatMap((relations) => [...relations.values()].map((relation) => relation.offer_id)),
35
+ ...[...objects.values()].flatMap((object) => [object.relation, object.prior_relation].flatMap((relation) => relation ? [relation.offer_id] : [])),
36
+ ]),
37
+ };
38
+ return {
39
+ selectors,
40
+ verify(parent) {
41
+ const current = new Map(parent.relations.map((relation) => [relation.relation_id, relation]));
42
+ if (current.size !== parent.relations.length)
43
+ throw new Error("Catalog relation parent repeats an association.");
44
+ const profiles = new Map(parent.profiles.map((profile) => [profile.agent_readiness_profile_id, profile]));
45
+ const offers = new Map(parent.offers.map((offer) => [offer.offer_id, offer.revision_digest]));
46
+ const assertCurrentOffer = (relation) => {
47
+ const revision = changedOffers.has(relation.offer_id)
48
+ ? changedOffers.get(relation.offer_id)
49
+ : offers.get(relation.offer_id);
50
+ if (revision !== relation.admitted_offer_revision_digest)
51
+ throw new Error(`Catalog Offer relation ${relation.relation_id} does not bind the current Offer.`);
52
+ };
53
+ for (const [id, object] of objects) {
54
+ if (canonicalJson(current.get(id) ?? null) !== canonicalJson(object.prior_relation))
55
+ throw new Error(`Catalog Offer relation ${id} does not match its exact current base.`);
56
+ const profileId = relationSubject(object).agent_readiness_profile_id;
57
+ const transition = delta.agentReadinessObjects.get(profileId);
58
+ // A retirement's withdrawal binds the old profile; a replacement binds
59
+ // the admitted successor. An unchanged profile must still be live.
60
+ const profile = transition?.projection ?? profiles.get(profileId);
61
+ if (!profile ||
62
+ profile.revision_digest !== object.catalog_context.profile_revision_digest ||
63
+ profile.declaration_revision_digest !==
64
+ object.catalog_context.declaration_revision.revision_digest)
65
+ throw new Error(`Catalog Offer relation ${id} lacks its current profile closure.`);
66
+ if (object.relation)
67
+ assertCurrentOffer(object.relation);
68
+ }
69
+ for (const relation of current.values()) {
70
+ const profileId = relation.agent_readiness_profile_id;
71
+ const profile = delta.agentReadinessObjects.get(profileId);
72
+ const replacement = desired.get(profileId);
73
+ const expected = replacement
74
+ ? (replacement.get(relation.relation_id) ?? null)
75
+ : agentReadinessOfferRelationRequiresWithdrawal({
76
+ relation,
77
+ changedOfferRevisionDigest: changedOffers.get(relation.offer_id),
78
+ profileRetired: profile?.projection === null,
79
+ })
80
+ ? null
81
+ : relation;
82
+ const change = objects.get(relation.relation_id);
83
+ const actual = change ? change.relation : relation;
84
+ if (canonicalJson(actual) !== canonicalJson(expected))
85
+ throw new Error(`Catalog publication omits the required transition for Offer relation ${relation.relation_id}.`);
86
+ }
87
+ for (const relations of desired.values()) {
88
+ for (const [id, relation] of relations) {
89
+ assertCurrentOffer(relation);
90
+ const actual = objects.has(id) ? objects.get(id)?.relation : current.get(id);
91
+ if (canonicalJson(actual ?? null) !== canonicalJson(relation))
92
+ throw new Error(`Catalog publication omits admitted Offer relation ${id}.`);
93
+ }
94
+ }
95
+ },
96
+ };
97
+ }
98
+ function relationSubject(object) {
99
+ const relation = object.relation ?? object.prior_relation;
100
+ if (!relation)
101
+ throw new Error(`Offer relation ${object.relation_id} has no transition subject.`);
102
+ return relation;
103
+ }
104
+ //# sourceMappingURL=publication-parent-relations.js.map