@sourcey/catalog-verifier 1.0.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 (402) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/LICENSE +21 -0
  3. package/README.md +64 -0
  4. package/SBOM.cdx.json +177 -0
  5. package/SECURITY.md +8 -0
  6. package/SOURCEY-CLOSURE.json +1559 -0
  7. package/SOURCEY-DISTRIBUTION.json +24 -0
  8. package/SOURCEY-LICENSE-POLICY.json +5 -0
  9. package/SOURCEY-TOOLCHAIN.json +8 -0
  10. package/SUPPORT.md +5 -0
  11. package/THIRD_PARTY_NOTICES.json +69 -0
  12. package/dist/contracts/agent-readiness/src/declaration-acquisition.d.ts +548 -0
  13. package/dist/contracts/agent-readiness/src/declaration-acquisition.d.ts.map +1 -0
  14. package/dist/contracts/agent-readiness/src/declaration-acquisition.js +159 -0
  15. package/dist/contracts/agent-readiness/src/declaration-acquisition.js.map +1 -0
  16. package/dist/contracts/agent-readiness/src/declaration-reference.d.ts +48 -0
  17. package/dist/contracts/agent-readiness/src/declaration-reference.d.ts.map +1 -0
  18. package/dist/contracts/agent-readiness/src/declaration-reference.js +42 -0
  19. package/dist/contracts/agent-readiness/src/declaration-reference.js.map +1 -0
  20. package/dist/contracts/agent-readiness/src/declaration.d.ts +1357 -0
  21. package/dist/contracts/agent-readiness/src/declaration.d.ts.map +1 -0
  22. package/dist/contracts/agent-readiness/src/declaration.js +659 -0
  23. package/dist/contracts/agent-readiness/src/declaration.js.map +1 -0
  24. package/dist/contracts/agent-readiness/src/evidence.d.ts +146 -0
  25. package/dist/contracts/agent-readiness/src/evidence.d.ts.map +1 -0
  26. package/dist/contracts/agent-readiness/src/evidence.js +154 -0
  27. package/dist/contracts/agent-readiness/src/evidence.js.map +1 -0
  28. package/dist/contracts/agent-readiness/src/index.d.ts +6487 -0
  29. package/dist/contracts/agent-readiness/src/index.d.ts.map +1 -0
  30. package/dist/contracts/agent-readiness/src/index.js +1487 -0
  31. package/dist/contracts/agent-readiness/src/index.js.map +1 -0
  32. package/dist/contracts/agent-readiness/src/interaction.d.ts +26 -0
  33. package/dist/contracts/agent-readiness/src/interaction.d.ts.map +1 -0
  34. package/dist/contracts/agent-readiness/src/interaction.js +24 -0
  35. package/dist/contracts/agent-readiness/src/interaction.js.map +1 -0
  36. package/dist/contracts/agent-readiness/src/method-pack.d.ts +391 -0
  37. package/dist/contracts/agent-readiness/src/method-pack.d.ts.map +1 -0
  38. package/dist/contracts/agent-readiness/src/method-pack.js +181 -0
  39. package/dist/contracts/agent-readiness/src/method-pack.js.map +1 -0
  40. package/dist/contracts/agent-readiness/src/shared.d.ts +119 -0
  41. package/dist/contracts/agent-readiness/src/shared.d.ts.map +1 -0
  42. package/dist/contracts/agent-readiness/src/shared.js +144 -0
  43. package/dist/contracts/agent-readiness/src/shared.js.map +1 -0
  44. package/dist/contracts/api/src/index.d.ts +48463 -0
  45. package/dist/contracts/api/src/index.d.ts.map +1 -0
  46. package/dist/contracts/api/src/index.js +1150 -0
  47. package/dist/contracts/api/src/index.js.map +1 -0
  48. package/dist/contracts/artifact/src/index.d.ts +1467 -0
  49. package/dist/contracts/artifact/src/index.d.ts.map +1 -0
  50. package/dist/contracts/artifact/src/index.js +325 -0
  51. package/dist/contracts/artifact/src/index.js.map +1 -0
  52. package/dist/contracts/assets/src/index.d.ts +1397 -0
  53. package/dist/contracts/assets/src/index.d.ts.map +1 -0
  54. package/dist/contracts/assets/src/index.js +560 -0
  55. package/dist/contracts/assets/src/index.js.map +1 -0
  56. package/dist/contracts/authoring/src/index.d.ts +1084 -0
  57. package/dist/contracts/authoring/src/index.d.ts.map +1 -0
  58. package/dist/contracts/authoring/src/index.js +211 -0
  59. package/dist/contracts/authoring/src/index.js.map +1 -0
  60. package/dist/contracts/authority/src/index.d.ts +135 -0
  61. package/dist/contracts/authority/src/index.d.ts.map +1 -0
  62. package/dist/contracts/authority/src/index.js +130 -0
  63. package/dist/contracts/authority/src/index.js.map +1 -0
  64. package/dist/contracts/billing/src/index.d.ts +587 -0
  65. package/dist/contracts/billing/src/index.d.ts.map +1 -0
  66. package/dist/contracts/billing/src/index.js +322 -0
  67. package/dist/contracts/billing/src/index.js.map +1 -0
  68. package/dist/contracts/catalog-verifier/src/index.d.ts +390 -0
  69. package/dist/contracts/catalog-verifier/src/index.d.ts.map +1 -0
  70. package/dist/contracts/catalog-verifier/src/index.js +222 -0
  71. package/dist/contracts/catalog-verifier/src/index.js.map +1 -0
  72. package/dist/contracts/commercial-work/src/index.d.ts +835 -0
  73. package/dist/contracts/commercial-work/src/index.d.ts.map +1 -0
  74. package/dist/contracts/commercial-work/src/index.js +510 -0
  75. package/dist/contracts/commercial-work/src/index.js.map +1 -0
  76. package/dist/contracts/events/src/index.d.ts +700 -0
  77. package/dist/contracts/events/src/index.d.ts.map +1 -0
  78. package/dist/contracts/events/src/index.js +553 -0
  79. package/dist/contracts/events/src/index.js.map +1 -0
  80. package/dist/contracts/evidence/src/index.d.ts +487 -0
  81. package/dist/contracts/evidence/src/index.d.ts.map +1 -0
  82. package/dist/contracts/evidence/src/index.js +342 -0
  83. package/dist/contracts/evidence/src/index.js.map +1 -0
  84. package/dist/contracts/feed/src/index.d.ts +159 -0
  85. package/dist/contracts/feed/src/index.d.ts.map +1 -0
  86. package/dist/contracts/feed/src/index.js +79 -0
  87. package/dist/contracts/feed/src/index.js.map +1 -0
  88. package/dist/contracts/funded-work/src/index.d.ts +64 -0
  89. package/dist/contracts/funded-work/src/index.d.ts.map +1 -0
  90. package/dist/contracts/funded-work/src/index.js +67 -0
  91. package/dist/contracts/funded-work/src/index.js.map +1 -0
  92. package/dist/contracts/observations/src/index.d.ts +134 -0
  93. package/dist/contracts/observations/src/index.d.ts.map +1 -0
  94. package/dist/contracts/observations/src/index.js +112 -0
  95. package/dist/contracts/observations/src/index.js.map +1 -0
  96. package/dist/contracts/policies/src/index.d.ts +151 -0
  97. package/dist/contracts/policies/src/index.d.ts.map +1 -0
  98. package/dist/contracts/policies/src/index.js +121 -0
  99. package/dist/contracts/policies/src/index.js.map +1 -0
  100. package/dist/contracts/publication/src/index.d.ts +4066 -0
  101. package/dist/contracts/publication/src/index.d.ts.map +1 -0
  102. package/dist/contracts/publication/src/index.js +535 -0
  103. package/dist/contracts/publication/src/index.js.map +1 -0
  104. package/dist/contracts/release/src/index.d.ts +2032 -0
  105. package/dist/contracts/release/src/index.d.ts.map +1 -0
  106. package/dist/contracts/release/src/index.js +252 -0
  107. package/dist/contracts/release/src/index.js.map +1 -0
  108. package/dist/contracts/revisions/src/index.d.ts +1405 -0
  109. package/dist/contracts/revisions/src/index.d.ts.map +1 -0
  110. package/dist/contracts/revisions/src/index.js +493 -0
  111. package/dist/contracts/revisions/src/index.js.map +1 -0
  112. package/dist/contracts/routes/src/index.d.ts +103 -0
  113. package/dist/contracts/routes/src/index.d.ts.map +1 -0
  114. package/dist/contracts/routes/src/index.js +163 -0
  115. package/dist/contracts/routes/src/index.js.map +1 -0
  116. package/dist/contracts/routes/src/public-route-allocations.generated.d.ts +2 -0
  117. package/dist/contracts/routes/src/public-route-allocations.generated.d.ts.map +1 -0
  118. package/dist/contracts/routes/src/public-route-allocations.generated.js +56 -0
  119. package/dist/contracts/routes/src/public-route-allocations.generated.js.map +1 -0
  120. package/dist/contracts/standards/src/index.d.ts +1482 -0
  121. package/dist/contracts/standards/src/index.d.ts.map +1 -0
  122. package/dist/contracts/standards/src/index.js +626 -0
  123. package/dist/contracts/standards/src/index.js.map +1 -0
  124. package/dist/contracts/taxonomy/src/index.d.ts +7 -0
  125. package/dist/contracts/taxonomy/src/index.d.ts.map +1 -0
  126. package/dist/contracts/taxonomy/src/index.js +25 -0
  127. package/dist/contracts/taxonomy/src/index.js.map +1 -0
  128. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.d.ts +20 -0
  129. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.d.ts.map +1 -0
  130. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.js +604 -0
  131. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.js.map +1 -0
  132. package/dist/modules/agent-readiness-policy/src/current-policy.d.ts +249 -0
  133. package/dist/modules/agent-readiness-policy/src/current-policy.d.ts.map +1 -0
  134. package/dist/modules/agent-readiness-policy/src/current-policy.js +470 -0
  135. package/dist/modules/agent-readiness-policy/src/current-policy.js.map +1 -0
  136. package/dist/modules/agent-readiness-policy/src/grading.d.ts +39 -0
  137. package/dist/modules/agent-readiness-policy/src/grading.d.ts.map +1 -0
  138. package/dist/modules/agent-readiness-policy/src/grading.js +40 -0
  139. package/dist/modules/agent-readiness-policy/src/grading.js.map +1 -0
  140. package/dist/modules/agent-readiness-policy/src/impact.d.ts +103 -0
  141. package/dist/modules/agent-readiness-policy/src/impact.d.ts.map +1 -0
  142. package/dist/modules/agent-readiness-policy/src/impact.js +249 -0
  143. package/dist/modules/agent-readiness-policy/src/impact.js.map +1 -0
  144. package/dist/modules/agent-readiness-policy/src/index.d.ts +811 -0
  145. package/dist/modules/agent-readiness-policy/src/index.d.ts.map +1 -0
  146. package/dist/modules/agent-readiness-policy/src/index.js +499 -0
  147. package/dist/modules/agent-readiness-policy/src/index.js.map +1 -0
  148. package/dist/modules/agent-readiness-policy/src/offer-relations.d.ts +12 -0
  149. package/dist/modules/agent-readiness-policy/src/offer-relations.d.ts.map +1 -0
  150. package/dist/modules/agent-readiness-policy/src/offer-relations.js +65 -0
  151. package/dist/modules/agent-readiness-policy/src/offer-relations.js.map +1 -0
  152. package/dist/modules/agent-readiness-policy/src/policy-validation.d.ts +4 -0
  153. package/dist/modules/agent-readiness-policy/src/policy-validation.d.ts.map +1 -0
  154. package/dist/modules/agent-readiness-policy/src/policy-validation.js +59 -0
  155. package/dist/modules/agent-readiness-policy/src/policy-validation.js.map +1 -0
  156. package/dist/modules/agent-readiness-policy/src/projection-lineage.d.ts +3 -0
  157. package/dist/modules/agent-readiness-policy/src/projection-lineage.d.ts.map +1 -0
  158. package/dist/modules/agent-readiness-policy/src/projection-lineage.js +12 -0
  159. package/dist/modules/agent-readiness-policy/src/projection-lineage.js.map +1 -0
  160. package/dist/modules/agent-readiness-policy/src/revision.d.ts +4 -0
  161. package/dist/modules/agent-readiness-policy/src/revision.d.ts.map +1 -0
  162. package/dist/modules/agent-readiness-policy/src/revision.js +46 -0
  163. package/dist/modules/agent-readiness-policy/src/revision.js.map +1 -0
  164. package/dist/modules/agent-readiness-policy/src/standard-mapping.d.ts +7 -0
  165. package/dist/modules/agent-readiness-policy/src/standard-mapping.d.ts.map +1 -0
  166. package/dist/modules/agent-readiness-policy/src/standard-mapping.js +13 -0
  167. package/dist/modules/agent-readiness-policy/src/standard-mapping.js.map +1 -0
  168. package/dist/modules/agent-readiness-policy/src/surface-selection.d.ts +36 -0
  169. package/dist/modules/agent-readiness-policy/src/surface-selection.d.ts.map +1 -0
  170. package/dist/modules/agent-readiness-policy/src/surface-selection.js +214 -0
  171. package/dist/modules/agent-readiness-policy/src/surface-selection.js.map +1 -0
  172. package/dist/modules/agent-readiness-repository/src/admission.d.ts +35 -0
  173. package/dist/modules/agent-readiness-repository/src/admission.d.ts.map +1 -0
  174. package/dist/modules/agent-readiness-repository/src/admission.js +56 -0
  175. package/dist/modules/agent-readiness-repository/src/admission.js.map +1 -0
  176. package/dist/modules/agent-readiness-repository/src/change.d.ts +62 -0
  177. package/dist/modules/agent-readiness-repository/src/change.d.ts.map +1 -0
  178. package/dist/modules/agent-readiness-repository/src/change.js +218 -0
  179. package/dist/modules/agent-readiness-repository/src/change.js.map +1 -0
  180. package/dist/modules/agent-readiness-repository/src/declaration-blob.d.ts +29 -0
  181. package/dist/modules/agent-readiness-repository/src/declaration-blob.d.ts.map +1 -0
  182. package/dist/modules/agent-readiness-repository/src/declaration-blob.js +126 -0
  183. package/dist/modules/agent-readiness-repository/src/declaration-blob.js.map +1 -0
  184. package/dist/modules/agent-readiness-repository/src/index.d.ts +102 -0
  185. package/dist/modules/agent-readiness-repository/src/index.d.ts.map +1 -0
  186. package/dist/modules/agent-readiness-repository/src/index.js +208 -0
  187. package/dist/modules/agent-readiness-repository/src/index.js.map +1 -0
  188. package/dist/modules/artifact/src/agent-readiness-closure.d.ts +24 -0
  189. package/dist/modules/artifact/src/agent-readiness-closure.d.ts.map +1 -0
  190. package/dist/modules/artifact/src/agent-readiness-closure.js +98 -0
  191. package/dist/modules/artifact/src/agent-readiness-closure.js.map +1 -0
  192. package/dist/modules/artifact/src/asset-closure.d.ts +12 -0
  193. package/dist/modules/artifact/src/asset-closure.d.ts.map +1 -0
  194. package/dist/modules/artifact/src/asset-closure.js +40 -0
  195. package/dist/modules/artifact/src/asset-closure.js.map +1 -0
  196. package/dist/modules/artifact/src/authoring-closure.d.ts +4 -0
  197. package/dist/modules/artifact/src/authoring-closure.d.ts.map +1 -0
  198. package/dist/modules/artifact/src/authoring-closure.js +19 -0
  199. package/dist/modules/artifact/src/authoring-closure.js.map +1 -0
  200. package/dist/modules/artifact/src/index.d.ts +46 -0
  201. package/dist/modules/artifact/src/index.d.ts.map +1 -0
  202. package/dist/modules/artifact/src/index.js +563 -0
  203. package/dist/modules/artifact/src/index.js.map +1 -0
  204. package/dist/modules/artifact/src/trust-history.d.ts +3 -0
  205. package/dist/modules/artifact/src/trust-history.d.ts.map +1 -0
  206. package/dist/modules/artifact/src/trust-history.js +134 -0
  207. package/dist/modules/artifact/src/trust-history.js.map +1 -0
  208. package/dist/modules/assets/src/authority-bundle.d.ts +36 -0
  209. package/dist/modules/assets/src/authority-bundle.d.ts.map +1 -0
  210. package/dist/modules/assets/src/authority-bundle.js +206 -0
  211. package/dist/modules/assets/src/authority-bundle.js.map +1 -0
  212. package/dist/modules/assets/src/delta.d.ts +18 -0
  213. package/dist/modules/assets/src/delta.d.ts.map +1 -0
  214. package/dist/modules/assets/src/delta.js +183 -0
  215. package/dist/modules/assets/src/delta.js.map +1 -0
  216. package/dist/modules/assets/src/disposition.d.ts +3 -0
  217. package/dist/modules/assets/src/disposition.d.ts.map +1 -0
  218. package/dist/modules/assets/src/disposition.js +30 -0
  219. package/dist/modules/assets/src/disposition.js.map +1 -0
  220. package/dist/modules/assets/src/index.d.ts +25 -0
  221. package/dist/modules/assets/src/index.d.ts.map +1 -0
  222. package/dist/modules/assets/src/index.js +234 -0
  223. package/dist/modules/assets/src/index.js.map +1 -0
  224. package/dist/modules/assets/src/ingestion.d.ts +69 -0
  225. package/dist/modules/assets/src/ingestion.d.ts.map +1 -0
  226. package/dist/modules/assets/src/ingestion.js +169 -0
  227. package/dist/modules/assets/src/ingestion.js.map +1 -0
  228. package/dist/modules/authority/src/index.d.ts +47 -0
  229. package/dist/modules/authority/src/index.d.ts.map +1 -0
  230. package/dist/modules/authority/src/index.js +349 -0
  231. package/dist/modules/authority/src/index.js.map +1 -0
  232. package/dist/modules/authority-state/src/index.d.ts +43 -0
  233. package/dist/modules/authority-state/src/index.d.ts.map +1 -0
  234. package/dist/modules/authority-state/src/index.js +194 -0
  235. package/dist/modules/authority-state/src/index.js.map +1 -0
  236. package/dist/modules/catalog-admission/src/admission-conflicts.d.ts +424 -0
  237. package/dist/modules/catalog-admission/src/admission-conflicts.d.ts.map +1 -0
  238. package/dist/modules/catalog-admission/src/admission-conflicts.js +369 -0
  239. package/dist/modules/catalog-admission/src/admission-conflicts.js.map +1 -0
  240. package/dist/modules/catalog-admission/src/index.d.ts +248 -0
  241. package/dist/modules/catalog-admission/src/index.d.ts.map +1 -0
  242. package/dist/modules/catalog-admission/src/index.js +601 -0
  243. package/dist/modules/catalog-admission/src/index.js.map +1 -0
  244. package/dist/modules/catalog-admission/src/machine-admission.d.ts +1273 -0
  245. package/dist/modules/catalog-admission/src/machine-admission.d.ts.map +1 -0
  246. package/dist/modules/catalog-admission/src/machine-admission.js +529 -0
  247. package/dist/modules/catalog-admission/src/machine-admission.js.map +1 -0
  248. package/dist/modules/catalog-admission/src/publication-assets.d.ts +5 -0
  249. package/dist/modules/catalog-admission/src/publication-assets.d.ts.map +1 -0
  250. package/dist/modules/catalog-admission/src/publication-assets.js +26 -0
  251. package/dist/modules/catalog-admission/src/publication-assets.js.map +1 -0
  252. package/dist/modules/catalog-admission/src/publication-dependencies.d.ts +96 -0
  253. package/dist/modules/catalog-admission/src/publication-dependencies.d.ts.map +1 -0
  254. package/dist/modules/catalog-admission/src/publication-dependencies.js +177 -0
  255. package/dist/modules/catalog-admission/src/publication-dependencies.js.map +1 -0
  256. package/dist/modules/catalog-admission/src/publication-entities.d.ts +9 -0
  257. package/dist/modules/catalog-admission/src/publication-entities.d.ts.map +1 -0
  258. package/dist/modules/catalog-admission/src/publication-entities.js +48 -0
  259. package/dist/modules/catalog-admission/src/publication-entities.js.map +1 -0
  260. package/dist/modules/catalog-admission/src/publication-recomposition.d.ts +42 -0
  261. package/dist/modules/catalog-admission/src/publication-recomposition.d.ts.map +1 -0
  262. package/dist/modules/catalog-admission/src/publication-recomposition.js +163 -0
  263. package/dist/modules/catalog-admission/src/publication-recomposition.js.map +1 -0
  264. package/dist/modules/catalog-admission/src/publication.d.ts +92 -0
  265. package/dist/modules/catalog-admission/src/publication.d.ts.map +1 -0
  266. package/dist/modules/catalog-admission/src/publication.js +605 -0
  267. package/dist/modules/catalog-admission/src/publication.js.map +1 -0
  268. package/dist/modules/catalog-admission/src/submission.d.ts +47 -0
  269. package/dist/modules/catalog-admission/src/submission.d.ts.map +1 -0
  270. package/dist/modules/catalog-admission/src/submission.js +289 -0
  271. package/dist/modules/catalog-admission/src/submission.js.map +1 -0
  272. package/dist/modules/catalog-authoring-validation/src/index.d.ts +46 -0
  273. package/dist/modules/catalog-authoring-validation/src/index.d.ts.map +1 -0
  274. package/dist/modules/catalog-authoring-validation/src/index.js +98 -0
  275. package/dist/modules/catalog-authoring-validation/src/index.js.map +1 -0
  276. package/dist/modules/catalog-model/src/index.d.ts +26 -0
  277. package/dist/modules/catalog-model/src/index.d.ts.map +1 -0
  278. package/dist/modules/catalog-model/src/index.js +80 -0
  279. package/dist/modules/catalog-model/src/index.js.map +1 -0
  280. package/dist/modules/cli/src/index.d.ts +10 -0
  281. package/dist/modules/cli/src/index.d.ts.map +1 -0
  282. package/dist/modules/cli/src/index.js +31 -0
  283. package/dist/modules/cli/src/index.js.map +1 -0
  284. package/dist/modules/compiler/src/index.d.ts +23 -0
  285. package/dist/modules/compiler/src/index.d.ts.map +1 -0
  286. package/dist/modules/compiler/src/index.js +75 -0
  287. package/dist/modules/compiler/src/index.js.map +1 -0
  288. package/dist/modules/evidence-operations/src/dependency-versions.d.ts +2 -0
  289. package/dist/modules/evidence-operations/src/dependency-versions.d.ts.map +1 -0
  290. package/dist/modules/evidence-operations/src/dependency-versions.js +17 -0
  291. package/dist/modules/evidence-operations/src/dependency-versions.js.map +1 -0
  292. package/dist/modules/evidence-operations/src/evidence-normalization.d.ts +111 -0
  293. package/dist/modules/evidence-operations/src/evidence-normalization.d.ts.map +1 -0
  294. package/dist/modules/evidence-operations/src/evidence-normalization.js +309 -0
  295. package/dist/modules/evidence-operations/src/evidence-normalization.js.map +1 -0
  296. package/dist/modules/evidence-operations/src/proof-graph.d.ts +22 -0
  297. package/dist/modules/evidence-operations/src/proof-graph.d.ts.map +1 -0
  298. package/dist/modules/evidence-operations/src/proof-graph.js +188 -0
  299. package/dist/modules/evidence-operations/src/proof-graph.js.map +1 -0
  300. package/dist/modules/evidence-operations/src/source-authority.d.ts +31 -0
  301. package/dist/modules/evidence-operations/src/source-authority.d.ts.map +1 -0
  302. package/dist/modules/evidence-operations/src/source-authority.js +60 -0
  303. package/dist/modules/evidence-operations/src/source-authority.js.map +1 -0
  304. package/dist/modules/evidence-operations/src/submission-verifier.d.ts +318 -0
  305. package/dist/modules/evidence-operations/src/submission-verifier.d.ts.map +1 -0
  306. package/dist/modules/evidence-operations/src/submission-verifier.js +392 -0
  307. package/dist/modules/evidence-operations/src/submission-verifier.js.map +1 -0
  308. package/dist/modules/evidence-operations/src/url-canonicalization.d.ts +3 -0
  309. package/dist/modules/evidence-operations/src/url-canonicalization.d.ts.map +1 -0
  310. package/dist/modules/evidence-operations/src/url-canonicalization.js +7 -0
  311. package/dist/modules/evidence-operations/src/url-canonicalization.js.map +1 -0
  312. package/dist/modules/primitives/src/index.d.ts +40 -0
  313. package/dist/modules/primitives/src/index.d.ts.map +1 -0
  314. package/dist/modules/primitives/src/index.js +154 -0
  315. package/dist/modules/primitives/src/index.js.map +1 -0
  316. package/dist/modules/provenance/src/evidence-bindings.d.ts +10 -0
  317. package/dist/modules/provenance/src/evidence-bindings.d.ts.map +1 -0
  318. package/dist/modules/provenance/src/evidence-bindings.js +49 -0
  319. package/dist/modules/provenance/src/evidence-bindings.js.map +1 -0
  320. package/dist/modules/provenance/src/evidence-coverage.d.ts +35 -0
  321. package/dist/modules/provenance/src/evidence-coverage.d.ts.map +1 -0
  322. package/dist/modules/provenance/src/evidence-coverage.js +131 -0
  323. package/dist/modules/provenance/src/evidence-coverage.js.map +1 -0
  324. package/dist/modules/provenance/src/index.d.ts +68 -0
  325. package/dist/modules/provenance/src/index.d.ts.map +1 -0
  326. package/dist/modules/provenance/src/index.js +536 -0
  327. package/dist/modules/provenance/src/index.js.map +1 -0
  328. package/dist/modules/provenance/src/material-claims.d.ts +381 -0
  329. package/dist/modules/provenance/src/material-claims.d.ts.map +1 -0
  330. package/dist/modules/provenance/src/material-claims.js +375 -0
  331. package/dist/modules/provenance/src/material-claims.js.map +1 -0
  332. package/dist/modules/provenance/src/prospective-evidence.d.ts +6 -0
  333. package/dist/modules/provenance/src/prospective-evidence.d.ts.map +1 -0
  334. package/dist/modules/provenance/src/prospective-evidence.js +61 -0
  335. package/dist/modules/provenance/src/prospective-evidence.js.map +1 -0
  336. package/dist/modules/release/src/asset-delta-verifier.d.ts +12 -0
  337. package/dist/modules/release/src/asset-delta-verifier.d.ts.map +1 -0
  338. package/dist/modules/release/src/asset-delta-verifier.js +82 -0
  339. package/dist/modules/release/src/asset-delta-verifier.js.map +1 -0
  340. package/dist/modules/release/src/changes.d.ts +23 -0
  341. package/dist/modules/release/src/changes.d.ts.map +1 -0
  342. package/dist/modules/release/src/changes.js +389 -0
  343. package/dist/modules/release/src/changes.js.map +1 -0
  344. package/dist/modules/release/src/identity.d.ts +17 -0
  345. package/dist/modules/release/src/identity.d.ts.map +1 -0
  346. package/dist/modules/release/src/identity.js +433 -0
  347. package/dist/modules/release/src/identity.js.map +1 -0
  348. package/dist/modules/release/src/inputs.d.ts +89 -0
  349. package/dist/modules/release/src/inputs.d.ts.map +1 -0
  350. package/dist/modules/release/src/inputs.js +514 -0
  351. package/dist/modules/release/src/inputs.js.map +1 -0
  352. package/dist/modules/release/src/publication-inputs.d.ts +9 -0
  353. package/dist/modules/release/src/publication-inputs.d.ts.map +1 -0
  354. package/dist/modules/release/src/publication-inputs.js +67 -0
  355. package/dist/modules/release/src/publication-inputs.js.map +1 -0
  356. package/dist/modules/release/src/release-directory-files.d.ts +7 -0
  357. package/dist/modules/release/src/release-directory-files.d.ts.map +1 -0
  358. package/dist/modules/release/src/release-directory-files.js +49 -0
  359. package/dist/modules/release/src/release-directory-files.js.map +1 -0
  360. package/dist/modules/release/src/release-revision-parser.d.ts +5 -0
  361. package/dist/modules/release/src/release-revision-parser.d.ts.map +1 -0
  362. package/dist/modules/release/src/release-revision-parser.js +19 -0
  363. package/dist/modules/release/src/release-revision-parser.js.map +1 -0
  364. package/dist/modules/release/src/transition.d.ts +36 -0
  365. package/dist/modules/release/src/transition.d.ts.map +1 -0
  366. package/dist/modules/release/src/transition.js +263 -0
  367. package/dist/modules/release/src/transition.js.map +1 -0
  368. package/dist/modules/release/src/verification-policies.d.ts +278 -0
  369. package/dist/modules/release/src/verification-policies.d.ts.map +1 -0
  370. package/dist/modules/release/src/verification-policies.js +38 -0
  371. package/dist/modules/release/src/verification-policies.js.map +1 -0
  372. package/dist/modules/release/src/verification-transitions.d.ts +14 -0
  373. package/dist/modules/release/src/verification-transitions.d.ts.map +1 -0
  374. package/dist/modules/release/src/verification-transitions.js +26 -0
  375. package/dist/modules/release/src/verification-transitions.js.map +1 -0
  376. package/dist/modules/release/src/verifier.d.ts +41 -0
  377. package/dist/modules/release/src/verifier.d.ts.map +1 -0
  378. package/dist/modules/release/src/verifier.js +577 -0
  379. package/dist/modules/release/src/verifier.js.map +1 -0
  380. package/dist/modules/standard-adapter-runtime/src/index.d.ts +16 -0
  381. package/dist/modules/standard-adapter-runtime/src/index.d.ts.map +1 -0
  382. package/dist/modules/standard-adapter-runtime/src/index.js +43 -0
  383. package/dist/modules/standard-adapter-runtime/src/index.js.map +1 -0
  384. package/dist/modules/standard-evidence/src/index.d.ts +33 -0
  385. package/dist/modules/standard-evidence/src/index.d.ts.map +1 -0
  386. package/dist/modules/standard-evidence/src/index.js +149 -0
  387. package/dist/modules/standard-evidence/src/index.js.map +1 -0
  388. package/dist/packages/catalog-verifier/src/application.d.ts +89 -0
  389. package/dist/packages/catalog-verifier/src/application.d.ts.map +1 -0
  390. package/dist/packages/catalog-verifier/src/application.js +363 -0
  391. package/dist/packages/catalog-verifier/src/application.js.map +1 -0
  392. package/dist/packages/catalog-verifier/src/index.d.ts +7 -0
  393. package/dist/packages/catalog-verifier/src/index.d.ts.map +1 -0
  394. package/dist/packages/catalog-verifier/src/index.js +7 -0
  395. package/dist/packages/catalog-verifier/src/index.js.map +1 -0
  396. package/dist/packages/catalog-verifier/src/program.d.ts +4 -0
  397. package/dist/packages/catalog-verifier/src/program.d.ts.map +1 -0
  398. package/dist/packages/catalog-verifier/src/program.js +203 -0
  399. package/dist/packages/catalog-verifier/src/program.js.map +1 -0
  400. package/package.json +63 -0
  401. package/sourcey-catalog-verify.js +7 -0
  402. package/taxonomy.json +29 -0
@@ -0,0 +1,601 @@
1
+ import { execFile } from "node:child_process";
2
+ import { mkdtemp, readFile, rm } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { isAbsolute, join, relative, resolve, sep } from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { parse } from "yaml";
7
+ import { retainedEntityAuthoringSchema, } from "../../../contracts/authoring/src/index.js";
8
+ import { catalogTaxonomySchema, } from "../../../contracts/taxonomy/src/index.js";
9
+ import { assertCatalogTaxonomy } from "../../catalog-authoring-validation/src/index.js";
10
+ import { compileEntity } from "../../catalog-model/src/index.js";
11
+ import { compileAuthoringFiles } from "../../compiler/src/index.js";
12
+ import { canonicalJson, compareCanonicalStrings } from "../../primitives/src/index.js";
13
+ import { analyzeCatalogCandidateChanges, buildPublicationIngressReceipt, planCatalogPublication, } from "./publication.js";
14
+ const execFileAsync = promisify(execFile);
15
+ export { validateCatalogCandidateSources } from "../../catalog-authoring-validation/src/index.js";
16
+ export * from "./admission-conflicts.js";
17
+ export * from "./machine-admission.js";
18
+ export * from "./publication.js";
19
+ export * from "./submission.js";
20
+ export const CATALOG_ENTITY_ROOT = "entities";
21
+ export async function readCatalogTaxonomy(path) {
22
+ return catalogTaxonomySchema.parse(JSON.parse(await readFile(resolve(path), "utf8")));
23
+ }
24
+ /**
25
+ * Resolve a deterministic Git tree containing only the exact changed Entity
26
+ * files. This is the admission identity: unrelated repository and Catalog
27
+ * changes cannot invalidate an independently reviewed pull request.
28
+ */
29
+ export async function resolveCatalogChangeTree(input) {
30
+ assertGitRevision(input.revision, "change-tree");
31
+ if (input.entityFiles.length === 0) {
32
+ throw new Error("Catalog change tree requires at least one changed Entity file.");
33
+ }
34
+ const repositoryRoot = resolve(input.repositoryRoot);
35
+ const files = [...new Set(input.entityFiles)].sort(compareCanonicalStrings);
36
+ const temporaryRoot = await mkdtemp(join(tmpdir(), "sourcey-catalog-change-tree-"));
37
+ const environment = { ...process.env, GIT_INDEX_FILE: join(temporaryRoot, "index") };
38
+ try {
39
+ await execFileAsync("git", ["read-tree", "--empty"], {
40
+ cwd: repositoryRoot,
41
+ env: environment,
42
+ });
43
+ for (const file of files) {
44
+ const repositoryFile = `${CATALOG_ENTITY_ROOT}/${file}`;
45
+ const { stdout } = await execFileAsync("git", ["rev-parse", `${input.revision}:${repositoryFile}`], {
46
+ cwd: repositoryRoot,
47
+ encoding: "utf8",
48
+ maxBuffer: 4 * 1024 * 1024,
49
+ });
50
+ const blob = stdout.trim();
51
+ assertGitRevision(blob, "changed Entity blob");
52
+ await execFileAsync("git", ["update-index", "--add", "--cacheinfo", `100644,${blob},${file}`], { cwd: repositoryRoot, env: environment });
53
+ }
54
+ const { stdout } = await execFileAsync("git", ["write-tree"], {
55
+ cwd: repositoryRoot,
56
+ env: environment,
57
+ encoding: "utf8",
58
+ maxBuffer: 4 * 1024 * 1024,
59
+ });
60
+ const tree = stdout.trim();
61
+ assertGitRevision(tree, "change-tree");
62
+ return tree;
63
+ }
64
+ finally {
65
+ await rm(temporaryRoot, { recursive: true, force: true });
66
+ }
67
+ }
68
+ export async function validateCatalogPrTree(input) {
69
+ const analysis = await analyzeCatalogPrTree(input);
70
+ return {
71
+ entities: analysis.entities,
72
+ programs: analysis.programs,
73
+ offers: analysis.offers,
74
+ };
75
+ }
76
+ /**
77
+ * Validate explicit non-Git candidate bytes through the same compiler,
78
+ * taxonomy, path, and role-closure rules used by changed-repository intake.
79
+ * Transport-specific Git checks remain in validateCatalogPrTree.
80
+ */
81
+ export async function inspectCatalogPrTree(input) {
82
+ const baseRevision = await catalogPullRequestComparisonBase(input);
83
+ const { changes, changedAuthoring } = await catalogChangedHeadClosure({ ...input, baseRevision }, true);
84
+ return {
85
+ baseRevision,
86
+ entityFiles: changes.entityFiles,
87
+ entities: changedAuthoring.entities.length,
88
+ programs: changedAuthoring.entities.flatMap((entity) => entity.programs).length,
89
+ offers: changedAuthoring.entities.flatMap((entity) => entity.offers).length,
90
+ };
91
+ }
92
+ /**
93
+ * The one exact pull-request analysis used by changed-closure validation,
94
+ * private review preparation, and tree-bound admission. It reads only the
95
+ * changed Entity files, their identity dependencies, and the corresponding
96
+ * base versions of those same files.
97
+ */
98
+ export async function analyzeCatalogPrTree(input) {
99
+ const baseRevision = await catalogPullRequestComparisonBase(input);
100
+ return analyzeCatalogTree({ ...input, baseRevision }, true);
101
+ }
102
+ /**
103
+ * Release construction uses the same changed-file and revision analysis as PR
104
+ * validation while permitting unrelated documentation and workflow commits
105
+ * that do not belong to Catalog data.
106
+ */
107
+ export async function analyzeCatalogReleaseTree(input) {
108
+ return analyzeCatalogTree(input, false);
109
+ }
110
+ /**
111
+ * Analyze a data PR for admission against the release that is actually live.
112
+ *
113
+ * The PR comparison remains authoritative for its mutation boundary: it must
114
+ * be data-only and identify every vendor the contributor changed. When main is
115
+ * ahead of the live release, the release-relative comparison supplies the
116
+ * complete final revisions that will be admitted. This permits a follow-up PR
117
+ * to correct an unshipped version of the same vendor and permits independently
118
+ * admitted vendor paths to advance without expanding this PR's authority.
119
+ */
120
+ export async function analyzeCatalogPrAdmissionTree(input) {
121
+ const comparisonBase = await catalogPullRequestComparisonBase({
122
+ repositoryRoot: input.repositoryRoot,
123
+ baseRevision: input.pullRequestBaseRevision,
124
+ headRevision: input.pullRequestHeadRevision,
125
+ });
126
+ await validateCatalogPrReleaseBase(input);
127
+ if (!(await gitIsAncestor(input.repositoryRoot, input.liveRevision, comparisonBase))) {
128
+ return analyzeCatalogPrTree({
129
+ repositoryRoot: input.repositoryRoot,
130
+ baseRevision: input.pullRequestBaseRevision,
131
+ headRevision: input.pullRequestHeadRevision,
132
+ taxonomy: input.taxonomy,
133
+ });
134
+ }
135
+ const pullRequestChanges = await catalogChangedPaths({
136
+ repositoryRoot: input.repositoryRoot,
137
+ baseRevision: comparisonBase,
138
+ headRevision: input.pullRequestHeadRevision,
139
+ });
140
+ if (pullRequestChanges.entityFiles.length > 0 && pullRequestChanges.otherFiles.length > 0) {
141
+ throw new Error(`Catalog data changes cannot be mixed with other repository paths: ${pullRequestChanges.otherFiles.join(", ")}.`);
142
+ }
143
+ return analyzeSelectedCatalogTree({
144
+ repositoryRoot: input.repositoryRoot,
145
+ baseRevision: input.liveRevision,
146
+ headRevision: input.pullRequestHeadRevision,
147
+ entityFiles: pullRequestChanges.entityFiles,
148
+ taxonomy: input.taxonomy,
149
+ });
150
+ }
151
+ /**
152
+ * Git is one immutable ingress adapter over the canonical publication port.
153
+ * Repository objects remain receipt metadata; they do not alter semantic
154
+ * proposal or Change Set bytes produced by another ingress for the same state.
155
+ */
156
+ export async function planCatalogGitPublication(input) {
157
+ const analysis = await analyzeCatalogReleaseTree({
158
+ repositoryRoot: input.repositoryRoot,
159
+ baseRevision: input.liveRevision,
160
+ headRevision: input.headRevision,
161
+ taxonomy: input.taxonomy,
162
+ });
163
+ const targetEntityIds = [
164
+ ...new Set([
165
+ ...analysis.changedEntities.map(({ currentAuthoring }) => currentAuthoring.entity.entity_id),
166
+ ...(input.candidateAssetProposals ?? []).map(({ entity_id: entityId }) => entityId),
167
+ ]),
168
+ ].sort(compareCanonicalStrings);
169
+ const suppliedCurrentEntityIds = input.currentEntities
170
+ .map(({ entity: { entity_id: entityId } }) => entityId)
171
+ .sort(compareCanonicalStrings);
172
+ if (suppliedCurrentEntityIds.some((entityId) => !targetEntityIds.includes(entityId))) {
173
+ throw new Error("Git publication current state exceeds its exact changed Entity slice.");
174
+ }
175
+ const plan = planCatalogPublication({
176
+ liveParentReleaseId: input.liveParentReleaseId,
177
+ currentEntities: input.currentEntities,
178
+ candidateEntities: analysis.changedEntities.map(({ currentAuthoring }) => currentAuthoring),
179
+ currentAssetBindings: input.currentAssetBindings ?? [],
180
+ candidateAssetProposals: input.candidateAssetProposals ?? [],
181
+ ...(input.authorityProposals ? { authorityProposals: input.authorityProposals } : {}),
182
+ currentPolicies: input.currentPolicies,
183
+ targetPolicies: input.targetPolicies,
184
+ currentContractAuthorityDigest: input.currentContractAuthorityDigest,
185
+ targetContractAuthorityDigest: input.targetContractAuthorityDigest,
186
+ ...(input.impactIndex ? { impactIndex: input.impactIndex } : {}),
187
+ });
188
+ const [headTree, changedTree] = await Promise.all([
189
+ gitRevision(input.repositoryRoot, `${input.headRevision}^{tree}`),
190
+ resolveCatalogChangeTree({
191
+ repositoryRoot: input.repositoryRoot,
192
+ revision: input.headRevision,
193
+ entityFiles: analysis.entityFiles,
194
+ }),
195
+ ]);
196
+ return {
197
+ ...plan,
198
+ analysis,
199
+ ingressReceipt: buildPublicationIngressReceipt(plan.proposal, {
200
+ kind: "git",
201
+ repository_id: input.repositoryId,
202
+ base_commit: input.liveRevision,
203
+ head_commit: input.headRevision,
204
+ head_tree: headTree,
205
+ changed_tree: changedTree,
206
+ }),
207
+ };
208
+ }
209
+ async function analyzeCatalogTree(input, rejectMixedPullRequest) {
210
+ const repositoryRoot = resolve(input.repositoryRoot);
211
+ const { changes, changedAuthoring, identityClosure } = await catalogChangedHeadClosure(input, rejectMixedPullRequest);
212
+ const changedEntities = await changedRevisionClosure({
213
+ repositoryRoot,
214
+ baseRevision: input.baseRevision,
215
+ changedAuthoring,
216
+ });
217
+ return {
218
+ baseRevision: input.baseRevision,
219
+ entityFiles: changes.entityFiles,
220
+ changedEntities,
221
+ changedRevisions: catalogChangedRevisions(changedEntities),
222
+ closure: identityClosure,
223
+ entities: changedAuthoring.entities.length,
224
+ programs: changedAuthoring.entities.flatMap((entity) => entity.programs).length,
225
+ offers: changedAuthoring.entities.flatMap((entity) => entity.offers).length,
226
+ };
227
+ }
228
+ async function analyzeSelectedCatalogTree(input) {
229
+ const repositoryRoot = resolve(input.repositoryRoot);
230
+ const { changedAuthoring, identityClosure, dependencyFiles } = await catalogChangedHeadClosure(input, false, input.entityFiles);
231
+ await assertStableIdentityDependencies({
232
+ repositoryRoot,
233
+ liveRevision: input.baseRevision,
234
+ dependencyFiles,
235
+ identityClosure,
236
+ });
237
+ const changedEntities = await changedRevisionClosure({
238
+ repositoryRoot,
239
+ baseRevision: input.baseRevision,
240
+ changedAuthoring,
241
+ });
242
+ return {
243
+ baseRevision: input.baseRevision,
244
+ entityFiles: [...input.entityFiles],
245
+ changedEntities,
246
+ changedRevisions: catalogChangedRevisions(changedEntities),
247
+ closure: identityClosure,
248
+ entities: changedAuthoring.entities.length,
249
+ programs: changedAuthoring.entities.flatMap((entity) => entity.programs).length,
250
+ offers: changedAuthoring.entities.flatMap((entity) => entity.offers).length,
251
+ };
252
+ }
253
+ async function catalogChangedHeadClosure(input, rejectMixedPullRequest, selectedVendorFiles) {
254
+ const repositoryRoot = resolve(input.repositoryRoot);
255
+ const authoringRoot = resolveInside(repositoryRoot, CATALOG_ENTITY_ROOT);
256
+ const changes = await catalogChangedPaths({
257
+ repositoryRoot,
258
+ baseRevision: input.baseRevision,
259
+ headRevision: input.headRevision,
260
+ });
261
+ if (rejectMixedPullRequest && changes.entityFiles.length > 0 && changes.otherFiles.length > 0) {
262
+ throw new Error(`Catalog data changes cannot be mixed with other repository paths: ${changes.otherFiles.join(", ")}.`);
263
+ }
264
+ const changedFiles = selectedVendorFiles ?? changes.entityFiles;
265
+ const changedAuthoring = await compileAuthoringFiles(authoringRoot, changedFiles, {
266
+ allowExternalRoleEntities: true,
267
+ });
268
+ assertCatalogTaxonomy(changedAuthoring.authoring, input.taxonomy);
269
+ const dependencyFiles = await identityDependencyFiles({
270
+ repositoryRoot,
271
+ authoringRoot,
272
+ headRevision: input.headRevision,
273
+ changedFiles,
274
+ changedAuthoring,
275
+ });
276
+ const identityClosure = await compileAuthoringFiles(authoringRoot, [...changedFiles, ...dependencyFiles], { allowExternalRoleEntities: true });
277
+ assertChangedRoleClosure(changedAuthoring, identityClosure);
278
+ return { changes, changedAuthoring, identityClosure, dependencyFiles };
279
+ }
280
+ export async function catalogPullRequestComparisonBase(input) {
281
+ assertGitRevision(input.baseRevision, "base");
282
+ assertGitRevision(input.headRevision, "head");
283
+ const { stdout } = await execFileAsync("git", ["merge-base", input.baseRevision, input.headRevision], {
284
+ cwd: resolve(input.repositoryRoot),
285
+ encoding: "utf8",
286
+ maxBuffer: 4 * 1024 * 1024,
287
+ });
288
+ const revision = stdout.trim();
289
+ assertGitRevision(revision, "pull-request comparison base");
290
+ return revision;
291
+ }
292
+ export function catalogChangedRevisions(changes) {
293
+ return changes.flatMap(({ entity, entityChanged, changedProgramIds, changedOfferIds }) => [
294
+ ...(entityChanged
295
+ ? [
296
+ {
297
+ owner: entity,
298
+ kind: "entity",
299
+ targetId: entity.revision.entity_id,
300
+ revisionDigest: entity.revision.revision_digest,
301
+ title: entity.revision.content.name,
302
+ accessUrl: entity.revision.content.links.site,
303
+ termsUrl: null,
304
+ sourceIds: entity.sources.map(({ source_id: sourceId }) => sourceId),
305
+ },
306
+ ]
307
+ : []),
308
+ ...entity.programs
309
+ .filter(({ revision }) => changedProgramIds.includes(revision.program_id))
310
+ .map((program) => ({
311
+ owner: entity,
312
+ kind: "program",
313
+ targetId: program.revision.program_id,
314
+ revisionDigest: program.revision.revision_digest,
315
+ title: program.revision.content.title,
316
+ accessUrl: null,
317
+ termsUrl: null,
318
+ sourceIds: program.sourceIds,
319
+ })),
320
+ ...entity.offers
321
+ .filter(({ revision }) => changedOfferIds.includes(revision.offer_id))
322
+ .map((offer) => ({
323
+ owner: entity,
324
+ kind: "offer",
325
+ targetId: offer.revision.offer_id,
326
+ revisionDigest: offer.revision.revision_digest,
327
+ title: offer.revision.content.title,
328
+ accessUrl: offer.revision.content.access.url ?? null,
329
+ termsUrl: offer.revision.content.terms_url ?? null,
330
+ sourceIds: offer.sourceIds,
331
+ })),
332
+ ]);
333
+ }
334
+ export async function catalogChangedPaths(input) {
335
+ assertGitRevision(input.baseRevision, "base");
336
+ assertGitRevision(input.headRevision, "head");
337
+ const authoringRoot = resolveInside(resolve(input.repositoryRoot), CATALOG_ENTITY_ROOT);
338
+ const authoringPath = repositoryPath(input.repositoryRoot, authoringRoot);
339
+ const { stdout } = await execFileAsync("git", ["diff", "--name-status", "-z", "--find-renames", input.baseRevision, input.headRevision], { cwd: input.repositoryRoot, encoding: "buffer", maxBuffer: 16 * 1024 * 1024 });
340
+ const fields = stdout.toString("utf8").split("\0");
341
+ if (fields.at(-1) === "")
342
+ fields.pop();
343
+ const entityFiles = new Set();
344
+ const otherFiles = new Set();
345
+ for (let index = 0; index < fields.length;) {
346
+ const status = fields[index++];
347
+ if (!status)
348
+ throw new Error("Git produced an incomplete catalog change record.");
349
+ const kind = status.slice(0, 1);
350
+ const oldPath = fields[index++];
351
+ const path = kind === "R" || kind === "C" ? fields[index++] : oldPath;
352
+ if (!path)
353
+ throw new Error("Git produced an incomplete catalog change path.");
354
+ const touchesEntityRoot = [oldPath, path].some((candidate) => candidate === authoringPath || candidate?.startsWith(`${authoringPath}/`));
355
+ if (touchesEntityRoot && kind === "D") {
356
+ throw new Error(`Catalog deletion ${path} requires an explicit lifecycle or identity transition.`);
357
+ }
358
+ if (touchesEntityRoot) {
359
+ if (!["A", "M"].includes(kind)) {
360
+ throw new Error(`Unsupported Entity change status ${status} for ${path}.`);
361
+ }
362
+ entityFiles.add(repositoryPath(authoringRoot, resolve(input.repositoryRoot, path)));
363
+ continue;
364
+ }
365
+ otherFiles.add(path);
366
+ }
367
+ return {
368
+ entityFiles: [...entityFiles].sort(compareCanonicalStrings),
369
+ otherFiles: [...otherFiles].sort(compareCanonicalStrings),
370
+ };
371
+ }
372
+ /**
373
+ * A PR may independently trail the live release when its changed vendor paths
374
+ * do not overlap intervening live changes. A base ahead of live may contain
375
+ * independently admitted Entity changes; they do not enter this PR's changed
376
+ * tree. An unpublished predecessor is permitted when the PR explicitly
377
+ * changes that same vendor again, so review covers its final state relative to
378
+ * live.
379
+ */
380
+ export async function validateCatalogPrReleaseBase(input) {
381
+ assertGitRevision(input.liveRevision, "live");
382
+ assertGitRevision(input.pullRequestBaseRevision, "pull-request base");
383
+ assertGitRevision(input.pullRequestHeadRevision, "pull-request head");
384
+ const comparisonBase = await catalogPullRequestComparisonBase({
385
+ repositoryRoot: input.repositoryRoot,
386
+ baseRevision: input.pullRequestBaseRevision,
387
+ headRevision: input.pullRequestHeadRevision,
388
+ });
389
+ if (await gitIsAncestor(input.repositoryRoot, input.liveRevision, comparisonBase)) {
390
+ return;
391
+ }
392
+ if (!(await gitIsAncestor(input.repositoryRoot, comparisonBase, input.liveRevision))) {
393
+ throw new Error("Catalog pull-request base and live source revision have diverged.");
394
+ }
395
+ const [pullRequestChanges, liveChanges] = await Promise.all([
396
+ catalogChangedPaths({
397
+ repositoryRoot: input.repositoryRoot,
398
+ baseRevision: comparisonBase,
399
+ headRevision: input.pullRequestHeadRevision,
400
+ }),
401
+ catalogChangedPaths({
402
+ repositoryRoot: input.repositoryRoot,
403
+ baseRevision: comparisonBase,
404
+ headRevision: input.liveRevision,
405
+ }),
406
+ ]);
407
+ const liveVendorFiles = new Set(liveChanges.entityFiles);
408
+ const overlaps = pullRequestChanges.entityFiles.filter((file) => liveVendorFiles.has(file));
409
+ if (overlaps.length > 0) {
410
+ throw new Error(`Catalog pull request overlaps live Entity changes: ${overlaps.join(", ")}.`);
411
+ }
412
+ }
413
+ async function gitIsAncestor(root, ancestor, descendant) {
414
+ try {
415
+ await execFileAsync("git", ["merge-base", "--is-ancestor", ancestor, descendant], {
416
+ cwd: resolve(root),
417
+ encoding: "utf8",
418
+ maxBuffer: 4 * 1024 * 1024,
419
+ });
420
+ return true;
421
+ }
422
+ catch (error) {
423
+ if (error.code === 1)
424
+ return false;
425
+ throw error;
426
+ }
427
+ }
428
+ async function changedRevisionClosure(input) {
429
+ const pairs = [];
430
+ for (const entity of input.changedAuthoring.entities) {
431
+ const sourceFile = input.changedAuthoring.sourceFiles.get(entity.revision.entity_id);
432
+ if (!sourceFile)
433
+ throw new Error("Changed Catalog entity has no source file.");
434
+ const currentAuthoring = retainedEntityAuthoringSchema.parse(parse(await readFile(resolveInside(input.repositoryRoot, `${CATALOG_ENTITY_ROOT}/${sourceFile}`), "utf8")));
435
+ const priorAuthoring = await entityAuthoringAtRevision({
436
+ repositoryRoot: input.repositoryRoot,
437
+ revision: input.baseRevision,
438
+ sourceFile,
439
+ });
440
+ const prior = priorAuthoring ? compileEntity(priorAuthoring) : null;
441
+ if (prior && prior.revision.entity_id !== entity.revision.entity_id) {
442
+ throw new Error(`Entity file ${sourceFile} cannot replace Entity '${prior.revision.entity_id}' with '${entity.revision.entity_id}'.`);
443
+ }
444
+ pairs.push({ entity, currentAuthoring, priorAuthoring });
445
+ }
446
+ const semantic = analyzeCatalogCandidateChanges({
447
+ currentEntities: pairs.flatMap(({ priorAuthoring }) => priorAuthoring ? [priorAuthoring] : []),
448
+ candidateEntities: pairs.map(({ currentAuthoring }) => currentAuthoring),
449
+ });
450
+ return pairs.map(({ entity, currentAuthoring, priorAuthoring }) => {
451
+ const changes = semantic.revisionChanges.filter(({ entity_id: entityId }) => entityId === entity.revision.entity_id);
452
+ return {
453
+ entity,
454
+ currentAuthoring,
455
+ priorAuthoring,
456
+ entityChanged: changes.some(({ kind }) => kind === "entity"),
457
+ changedProgramIds: changes
458
+ .filter(({ kind }) => kind === "program")
459
+ .map(({ target_id: targetId }) => targetId),
460
+ changedOfferIds: changes
461
+ .filter(({ kind }) => kind === "offer")
462
+ .map(({ target_id: targetId }) => targetId),
463
+ };
464
+ });
465
+ }
466
+ async function compiledEntityAtRevision(input) {
467
+ const authoring = await entityAuthoringAtRevision(input);
468
+ return authoring ? compileEntity(authoring) : null;
469
+ }
470
+ async function entityAuthoringAtRevision(input) {
471
+ const path = `${CATALOG_ENTITY_ROOT}/${input.sourceFile}`;
472
+ try {
473
+ const { stdout } = await execFileAsync("git", ["show", `${input.revision}:${path}`], {
474
+ cwd: input.repositoryRoot,
475
+ encoding: "utf8",
476
+ maxBuffer: 4 * 1024 * 1024,
477
+ });
478
+ return retainedEntityAuthoringSchema.parse(parse(stdout));
479
+ }
480
+ catch (error) {
481
+ if (error.code === 128)
482
+ return null;
483
+ throw error;
484
+ }
485
+ }
486
+ async function assertStableIdentityDependencies(input) {
487
+ for (const sourceFile of input.dependencyFiles) {
488
+ const current = input.identityClosure.entities.find((entity) => input.identityClosure.sourceFiles.get(entity.revision.entity_id) === sourceFile);
489
+ if (!current)
490
+ throw new Error(`Catalog identity dependency ${sourceFile} is unavailable.`);
491
+ const live = await compiledEntityAtRevision({
492
+ repositoryRoot: input.repositoryRoot,
493
+ revision: input.liveRevision,
494
+ sourceFile,
495
+ });
496
+ if (!live || canonicalJson(live) !== canonicalJson(current)) {
497
+ throw new Error(`Catalog identity dependency changed outside this pull request: ${sourceFile}.`);
498
+ }
499
+ }
500
+ }
501
+ async function identityDependencyFiles(input) {
502
+ const needles = identityNeedles(input.changedAuthoring);
503
+ if (needles.length === 0)
504
+ return [];
505
+ const authoringPath = repositoryPath(input.repositoryRoot, input.authoringRoot);
506
+ const arguments_ = [
507
+ "grep",
508
+ "-l",
509
+ "-F",
510
+ ...needles.flatMap((value) => ["-e", value]),
511
+ input.headRevision,
512
+ "--",
513
+ authoringPath,
514
+ ];
515
+ let stdout = "";
516
+ try {
517
+ ({ stdout } = await execFileAsync("git", arguments_, {
518
+ cwd: input.repositoryRoot,
519
+ encoding: "utf8",
520
+ maxBuffer: 16 * 1024 * 1024,
521
+ }));
522
+ }
523
+ catch (error) {
524
+ if (error.code !== 1)
525
+ throw error;
526
+ }
527
+ const changed = new Set(input.changedFiles);
528
+ const revisionPrefix = `${input.headRevision}:`;
529
+ return stdout
530
+ .split("\n")
531
+ .filter(Boolean)
532
+ .map((path) => {
533
+ if (!path.startsWith(revisionPrefix)) {
534
+ throw new Error("Git identity lookup returned a path outside the requested revision.");
535
+ }
536
+ return repositoryPath(input.authoringRoot, resolve(input.repositoryRoot, path.slice(revisionPrefix.length)));
537
+ })
538
+ .filter((path) => !changed.has(path))
539
+ .sort(compareCanonicalStrings);
540
+ }
541
+ function identityNeedles(facts) {
542
+ return [
543
+ ...new Set(facts.entities.flatMap((entity) => [
544
+ entity.revision.entity_id,
545
+ entity.slug,
546
+ ...entity.slugAliases,
547
+ ...entity.revision.content.domains
548
+ .filter((domain) => domain.valid_until === undefined)
549
+ .map((domain) => domain.value.toLowerCase()),
550
+ ...entity.programs.map((program) => program.revision.program_id),
551
+ ...entity.offers.flatMap((offer) => [
552
+ offer.revision.offer_id,
553
+ offer.revision.content.roles.terms_authority_entity_id,
554
+ offer.revision.content.roles.access_operator_entity_id,
555
+ ]),
556
+ ])),
557
+ ].sort(compareCanonicalStrings);
558
+ }
559
+ function assertChangedRoleClosure(changed, closure) {
560
+ const entityIds = new Set(closure.entities.map((entity) => entity.revision.entity_id));
561
+ for (const entity of changed.entities) {
562
+ for (const offer of entity.offers) {
563
+ for (const roleEntityId of [
564
+ offer.revision.content.roles.terms_authority_entity_id,
565
+ offer.revision.content.roles.access_operator_entity_id,
566
+ ]) {
567
+ if (!entityIds.has(roleEntityId)) {
568
+ throw new Error(`Offer '${offer.revision.offer_id}' references unknown role entity '${roleEntityId}'.`);
569
+ }
570
+ }
571
+ }
572
+ }
573
+ }
574
+ function repositoryPath(repositoryRoot, path) {
575
+ return relative(repositoryRoot, path).split(sep).join("/");
576
+ }
577
+ function resolveInside(root, path) {
578
+ if (isAbsolute(path))
579
+ throw new Error(`Catalog input must be repository-relative: ${path}.`);
580
+ const resolved = resolve(root, path);
581
+ if (!resolved.startsWith(`${root}${sep}`)) {
582
+ throw new Error(`Catalog input escapes the repository: ${path}.`);
583
+ }
584
+ return resolved;
585
+ }
586
+ async function gitRevision(root, revision) {
587
+ const { stdout } = await execFileAsync("git", ["rev-parse", revision], {
588
+ cwd: resolve(root),
589
+ encoding: "utf8",
590
+ maxBuffer: 4 * 1024 * 1024,
591
+ });
592
+ const value = stdout.trim();
593
+ assertGitRevision(value, "resolved");
594
+ return value;
595
+ }
596
+ function assertGitRevision(value, label) {
597
+ if (!/^[a-f0-9]{40,64}$/.test(value)) {
598
+ throw new Error(`Catalog ${label} revision is not an exact Git object ID.`);
599
+ }
600
+ }
601
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../modules/catalog-admission/src/index.ts"],"names":[],"mappings":"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"}