@xemahq/xema 0.59.0 → 0.60.1

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 (850) hide show
  1. package/README.md +1 -2
  2. package/dist/appliance-owner.d.ts.map +1 -1
  3. package/dist/appliance-owner.js +6 -6
  4. package/dist/appliance-owner.js.map +1 -1
  5. package/dist/assets/appliance-base/authorization.lock.json +5186 -0
  6. package/dist/assets/appliance-base/distribution.lock.json +760 -279
  7. package/dist/assets/appliance-base/images.lock.json +576 -513
  8. package/dist/assets/appliance-lean/authorization.lock.json +4648 -0
  9. package/dist/assets/appliance-lean/distribution.lock.json +641 -186
  10. package/dist/assets/appliance-lean/images.lock.json +574 -512
  11. package/dist/assets/boot-graph.json +33 -14
  12. package/dist/assets/distribution-assets.manifest.json +23 -20
  13. package/dist/cli.d.ts.map +1 -1
  14. package/dist/cli.js +7 -9
  15. package/dist/cli.js.map +1 -1
  16. package/dist/commands/biome-dev.d.ts.map +1 -1
  17. package/dist/commands/biome-dev.js +41 -137
  18. package/dist/commands/biome-dev.js.map +1 -1
  19. package/dist/commands/biome-lifecycle.d.ts +24 -0
  20. package/dist/commands/biome-lifecycle.d.ts.map +1 -0
  21. package/dist/commands/biome-lifecycle.js +253 -0
  22. package/dist/commands/biome-lifecycle.js.map +1 -0
  23. package/dist/commands/biome.d.ts +2 -4
  24. package/dist/commands/biome.d.ts.map +1 -1
  25. package/dist/commands/biome.js +61 -46
  26. package/dist/commands/biome.js.map +1 -1
  27. package/dist/commands/config.d.ts.map +1 -1
  28. package/dist/commands/config.js +96 -8
  29. package/dist/commands/config.js.map +1 -1
  30. package/dist/commands/doctor.d.ts.map +1 -1
  31. package/dist/commands/doctor.js +13 -20
  32. package/dist/commands/doctor.js.map +1 -1
  33. package/dist/commands/down.d.ts.map +1 -1
  34. package/dist/commands/down.js +14 -21
  35. package/dist/commands/down.js.map +1 -1
  36. package/dist/commands/init.d.ts.map +1 -1
  37. package/dist/commands/init.js +6 -3
  38. package/dist/commands/init.js.map +1 -1
  39. package/dist/commands/installation-tenancy.d.ts +11 -0
  40. package/dist/commands/installation-tenancy.d.ts.map +1 -0
  41. package/dist/commands/installation-tenancy.js +308 -0
  42. package/dist/commands/installation-tenancy.js.map +1 -0
  43. package/dist/commands/installation.d.ts.map +1 -1
  44. package/dist/commands/installation.js +19 -5
  45. package/dist/commands/installation.js.map +1 -1
  46. package/dist/commands/logs.d.ts +2 -0
  47. package/dist/commands/logs.d.ts.map +1 -1
  48. package/dist/commands/logs.js +41 -8
  49. package/dist/commands/logs.js.map +1 -1
  50. package/dist/commands/{dev.d.ts → mirror.d.ts} +1 -1
  51. package/dist/commands/mirror.d.ts.map +1 -0
  52. package/dist/commands/mirror.js +132 -0
  53. package/dist/commands/mirror.js.map +1 -0
  54. package/dist/commands/source.d.ts.map +1 -1
  55. package/dist/commands/source.js +3 -2
  56. package/dist/commands/source.js.map +1 -1
  57. package/dist/commands/status.d.ts.map +1 -1
  58. package/dist/commands/status.js +40 -21
  59. package/dist/commands/status.js.map +1 -1
  60. package/dist/commands/up.d.ts.map +1 -1
  61. package/dist/commands/up.js +36 -4
  62. package/dist/commands/up.js.map +1 -1
  63. package/dist/dev/infra-preflight.d.ts.map +1 -1
  64. package/dist/dev/infra-preflight.js +0 -4
  65. package/dist/dev/infra-preflight.js.map +1 -1
  66. package/dist/lib/confirm.d.ts +3 -0
  67. package/dist/lib/confirm.d.ts.map +1 -0
  68. package/dist/lib/confirm.js +19 -0
  69. package/dist/lib/confirm.js.map +1 -0
  70. package/dist/lib/output-format.d.ts +6 -0
  71. package/dist/lib/output-format.d.ts.map +1 -0
  72. package/dist/lib/output-format.js +20 -0
  73. package/dist/lib/output-format.js.map +1 -0
  74. package/dist/mirror/config/mirror-config-document.d.ts +18 -0
  75. package/dist/mirror/config/mirror-config-document.d.ts.map +1 -0
  76. package/dist/mirror/config/mirror-config-document.js +57 -0
  77. package/dist/mirror/config/mirror-config-document.js.map +1 -0
  78. package/dist/mirror/config/mirror-config-schema.d.ts +54 -0
  79. package/dist/mirror/config/mirror-config-schema.d.ts.map +1 -0
  80. package/dist/mirror/config/mirror-config-schema.js +80 -0
  81. package/dist/mirror/config/mirror-config-schema.js.map +1 -0
  82. package/dist/mirror/kit/delta.d.ts +4 -0
  83. package/dist/mirror/kit/delta.d.ts.map +1 -0
  84. package/dist/mirror/kit/delta.js +41 -0
  85. package/dist/mirror/kit/delta.js.map +1 -0
  86. package/dist/mirror/kit/export-kit.d.ts +16 -0
  87. package/dist/mirror/kit/export-kit.d.ts.map +1 -0
  88. package/dist/mirror/kit/export-kit.js +112 -0
  89. package/dist/mirror/kit/export-kit.js.map +1 -0
  90. package/dist/mirror/kit/import-kit.d.ts +9 -0
  91. package/dist/mirror/kit/import-kit.d.ts.map +1 -0
  92. package/dist/mirror/kit/import-kit.js +166 -0
  93. package/dist/mirror/kit/import-kit.js.map +1 -0
  94. package/dist/mirror/kit/kit-archive.d.ts +4 -0
  95. package/dist/mirror/kit/kit-archive.d.ts.map +1 -0
  96. package/dist/mirror/kit/kit-archive.js +38 -0
  97. package/dist/mirror/kit/kit-archive.js.map +1 -0
  98. package/dist/mirror/kit/kit-layout.d.ts +10 -0
  99. package/dist/mirror/kit/kit-layout.d.ts.map +1 -0
  100. package/dist/mirror/kit/kit-layout.js +19 -0
  101. package/dist/mirror/kit/kit-layout.js.map +1 -0
  102. package/dist/mirror/kit/kit-sums.d.ts +5 -0
  103. package/dist/mirror/kit/kit-sums.d.ts.map +1 -0
  104. package/dist/mirror/kit/kit-sums.js +63 -0
  105. package/dist/mirror/kit/kit-sums.js.map +1 -0
  106. package/dist/mirror/kit/layout-sync.d.ts +8 -0
  107. package/dist/mirror/kit/layout-sync.d.ts.map +1 -0
  108. package/dist/mirror/kit/layout-sync.js +58 -0
  109. package/dist/mirror/kit/layout-sync.js.map +1 -0
  110. package/dist/mirror/plan/bundle-content.d.ts +10 -0
  111. package/dist/mirror/plan/bundle-content.d.ts.map +1 -0
  112. package/dist/mirror/plan/bundle-content.js +61 -0
  113. package/dist/mirror/plan/bundle-content.js.map +1 -0
  114. package/dist/mirror/plan/declaration-file.d.ts +9 -0
  115. package/dist/mirror/plan/declaration-file.d.ts.map +1 -0
  116. package/dist/mirror/plan/declaration-file.js +27 -0
  117. package/dist/mirror/plan/declaration-file.js.map +1 -0
  118. package/dist/mirror/plan/edition-inputs.d.ts +57 -0
  119. package/dist/mirror/plan/edition-inputs.d.ts.map +1 -0
  120. package/dist/mirror/plan/edition-inputs.js +44 -0
  121. package/dist/mirror/plan/edition-inputs.js.map +1 -0
  122. package/dist/mirror/plan/edition-reader.d.ts +9 -0
  123. package/dist/mirror/plan/edition-reader.d.ts.map +1 -0
  124. package/dist/mirror/plan/edition-reader.js +47 -0
  125. package/dist/mirror/plan/edition-reader.js.map +1 -0
  126. package/dist/mirror/plan/image-content.d.ts +30 -0
  127. package/dist/mirror/plan/image-content.d.ts.map +1 -0
  128. package/dist/mirror/plan/image-content.js +120 -0
  129. package/dist/mirror/plan/image-content.js.map +1 -0
  130. package/dist/mirror/plan/npm-lockfile.d.ts +12 -0
  131. package/dist/mirror/plan/npm-lockfile.d.ts.map +1 -0
  132. package/dist/mirror/plan/npm-lockfile.js +106 -0
  133. package/dist/mirror/plan/npm-lockfile.js.map +1 -0
  134. package/dist/mirror/plan/oci-reads.d.ts +22 -0
  135. package/dist/mirror/plan/oci-reads.d.ts.map +1 -0
  136. package/dist/mirror/plan/oci-reads.js +43 -0
  137. package/dist/mirror/plan/oci-reads.js.map +1 -0
  138. package/dist/mirror/plan/plan-command.d.ts +22 -0
  139. package/dist/mirror/plan/plan-command.d.ts.map +1 -0
  140. package/dist/mirror/plan/plan-command.js +81 -0
  141. package/dist/mirror/plan/plan-command.js.map +1 -0
  142. package/dist/mirror/plan/plan-file.d.ts +13 -0
  143. package/dist/mirror/plan/plan-file.d.ts.map +1 -0
  144. package/dist/mirror/plan/plan-file.js +63 -0
  145. package/dist/mirror/plan/plan-file.js.map +1 -0
  146. package/dist/mirror/plan/resolve-content-set.d.ts +16 -0
  147. package/dist/mirror/plan/resolve-content-set.d.ts.map +1 -0
  148. package/dist/mirror/plan/resolve-content-set.js +90 -0
  149. package/dist/mirror/plan/resolve-content-set.js.map +1 -0
  150. package/dist/mirror/preflight/glob.d.ts +2 -0
  151. package/dist/mirror/preflight/glob.d.ts.map +1 -0
  152. package/dist/mirror/preflight/glob.js +59 -0
  153. package/dist/mirror/preflight/glob.js.map +1 -0
  154. package/dist/mirror/preflight/harbor-api.d.ts +27 -0
  155. package/dist/mirror/preflight/harbor-api.d.ts.map +1 -0
  156. package/dist/mirror/preflight/harbor-api.js +39 -0
  157. package/dist/mirror/preflight/harbor-api.js.map +1 -0
  158. package/dist/mirror/preflight/preflight.d.ts +18 -0
  159. package/dist/mirror/preflight/preflight.d.ts.map +1 -0
  160. package/dist/mirror/preflight/preflight.js +41 -0
  161. package/dist/mirror/preflight/preflight.js.map +1 -0
  162. package/dist/mirror/preflight/tag-moves.d.ts +16 -0
  163. package/dist/mirror/preflight/tag-moves.d.ts.map +1 -0
  164. package/dist/mirror/preflight/tag-moves.js +28 -0
  165. package/dist/mirror/preflight/tag-moves.js.map +1 -0
  166. package/dist/mirror/preflight/write-probe.d.ts +10 -0
  167. package/dist/mirror/preflight/write-probe.d.ts.map +1 -0
  168. package/dist/mirror/preflight/write-probe.js +36 -0
  169. package/dist/mirror/preflight/write-probe.js.map +1 -0
  170. package/dist/mirror/target/extras.d.ts +16 -0
  171. package/dist/mirror/target/extras.d.ts.map +1 -0
  172. package/dist/mirror/target/extras.js +47 -0
  173. package/dist/mirror/target/extras.js.map +1 -0
  174. package/dist/mirror/target/npm-registry.d.ts +20 -0
  175. package/dist/mirror/target/npm-registry.d.ts.map +1 -0
  176. package/dist/mirror/target/npm-registry.js +67 -0
  177. package/dist/mirror/target/npm-registry.js.map +1 -0
  178. package/dist/mirror/target/npm-sync.d.ts +15 -0
  179. package/dist/mirror/target/npm-sync.d.ts.map +1 -0
  180. package/dist/mirror/target/npm-sync.js +44 -0
  181. package/dist/mirror/target/npm-sync.js.map +1 -0
  182. package/dist/mirror/target/oci-items.d.ts +27 -0
  183. package/dist/mirror/target/oci-items.d.ts.map +1 -0
  184. package/dist/mirror/target/oci-items.js +79 -0
  185. package/dist/mirror/target/oci-items.js.map +1 -0
  186. package/dist/mirror/target/oci-sync.d.ts +20 -0
  187. package/dist/mirror/target/oci-sync.d.ts.map +1 -0
  188. package/dist/mirror/target/oci-sync.js +93 -0
  189. package/dist/mirror/target/oci-sync.js.map +1 -0
  190. package/dist/mirror/target/receipt-store.d.ts +13 -0
  191. package/dist/mirror/target/receipt-store.d.ts.map +1 -0
  192. package/dist/mirror/target/receipt-store.js +61 -0
  193. package/dist/mirror/target/receipt-store.js.map +1 -0
  194. package/dist/mirror/target/receipt.d.ts +13 -0
  195. package/dist/mirror/target/receipt.d.ts.map +1 -0
  196. package/dist/mirror/target/receipt.js +25 -0
  197. package/dist/mirror/target/receipt.js.map +1 -0
  198. package/dist/mirror/target/seed-push.d.ts +15 -0
  199. package/dist/mirror/target/seed-push.d.ts.map +1 -0
  200. package/dist/mirror/target/seed-push.js +20 -0
  201. package/dist/mirror/target/seed-push.js.map +1 -0
  202. package/dist/mirror/target/target-access.d.ts +7 -0
  203. package/dist/mirror/target/target-access.d.ts.map +1 -0
  204. package/dist/mirror/target/target-access.js +17 -0
  205. package/dist/mirror/target/target-access.js.map +1 -0
  206. package/dist/mirror/target/target-commands.d.ts +21 -0
  207. package/dist/mirror/target/target-commands.d.ts.map +1 -0
  208. package/dist/mirror/target/target-commands.js +134 -0
  209. package/dist/mirror/target/target-commands.js.map +1 -0
  210. package/dist/mirror/target/target-context.d.ts +11 -0
  211. package/dist/mirror/target/target-context.d.ts.map +1 -0
  212. package/dist/mirror/target/target-context.js +31 -0
  213. package/dist/mirror/target/target-context.js.map +1 -0
  214. package/dist/mirror/target/target-ports.d.ts +18 -0
  215. package/dist/mirror/target/target-ports.d.ts.map +1 -0
  216. package/dist/mirror/target/target-ports.js +49 -0
  217. package/dist/mirror/target/target-ports.js.map +1 -0
  218. package/dist/mirror/target/target-state.d.ts +22 -0
  219. package/dist/mirror/target/target-state.d.ts.map +1 -0
  220. package/dist/mirror/target/target-state.js +41 -0
  221. package/dist/mirror/target/target-state.js.map +1 -0
  222. package/dist/runtime/biome-dev.d.ts +0 -16
  223. package/dist/runtime/biome-dev.d.ts.map +1 -1
  224. package/dist/runtime/biome-dev.js +0 -53
  225. package/dist/runtime/biome-dev.js.map +1 -1
  226. package/dist/runtime/biome-host/biome-directory-packer.d.ts +3 -0
  227. package/dist/runtime/biome-host/biome-directory-packer.d.ts.map +1 -0
  228. package/dist/runtime/biome-host/biome-directory-packer.js +12 -0
  229. package/dist/runtime/biome-host/biome-directory-packer.js.map +1 -0
  230. package/dist/runtime/biome-host/bundle-packer.d.ts +8 -0
  231. package/dist/runtime/biome-host/bundle-packer.d.ts.map +1 -0
  232. package/dist/runtime/biome-host/bundle-packer.js +3 -0
  233. package/dist/runtime/biome-host/bundle-packer.js.map +1 -0
  234. package/dist/runtime/biome-host/from-spec.d.ts +33 -0
  235. package/dist/runtime/biome-host/from-spec.d.ts.map +1 -0
  236. package/dist/runtime/biome-host/from-spec.js +70 -0
  237. package/dist/runtime/biome-host/from-spec.js.map +1 -0
  238. package/dist/runtime/biome-host/lifecycle-client.d.ts +20 -0
  239. package/dist/runtime/biome-host/lifecycle-client.d.ts.map +1 -0
  240. package/dist/runtime/biome-host/lifecycle-client.js +197 -0
  241. package/dist/runtime/biome-host/lifecycle-client.js.map +1 -0
  242. package/dist/runtime/biome-host/lifecycle-contract.d.ts +95 -0
  243. package/dist/runtime/biome-host/lifecycle-contract.d.ts.map +1 -0
  244. package/dist/runtime/biome-host/lifecycle-contract.js +61 -0
  245. package/dist/runtime/biome-host/lifecycle-contract.js.map +1 -0
  246. package/dist/runtime/biome-host/lifecycle-flow.d.ts +29 -0
  247. package/dist/runtime/biome-host/lifecycle-flow.d.ts.map +1 -0
  248. package/dist/runtime/biome-host/lifecycle-flow.js +106 -0
  249. package/dist/runtime/biome-host/lifecycle-flow.js.map +1 -0
  250. package/dist/runtime/biome-host/plan-sources.d.ts +4 -0
  251. package/dist/runtime/biome-host/plan-sources.d.ts.map +1 -0
  252. package/dist/runtime/biome-host/plan-sources.js +26 -0
  253. package/dist/runtime/biome-host/plan-sources.js.map +1 -0
  254. package/dist/runtime/biome-host/relay/bundle-fetch.d.ts +12 -0
  255. package/dist/runtime/biome-host/relay/bundle-fetch.d.ts.map +1 -0
  256. package/dist/runtime/biome-host/relay/bundle-fetch.js +76 -0
  257. package/dist/runtime/biome-host/relay/bundle-fetch.js.map +1 -0
  258. package/dist/runtime/biome-host/relay/declared-scheme.d.ts +3 -0
  259. package/dist/runtime/biome-host/relay/declared-scheme.d.ts.map +1 -0
  260. package/dist/runtime/biome-host/relay/declared-scheme.js +14 -0
  261. package/dist/runtime/biome-host/relay/declared-scheme.js.map +1 -0
  262. package/dist/runtime/biome-host/relay/npm-token.d.ts +4 -0
  263. package/dist/runtime/biome-host/relay/npm-token.d.ts.map +1 -0
  264. package/dist/runtime/biome-host/relay/npm-token.js +16 -0
  265. package/dist/runtime/biome-host/relay/npm-token.js.map +1 -0
  266. package/dist/runtime/biome-host/relay/relay-flow.d.ts +16 -0
  267. package/dist/runtime/biome-host/relay/relay-flow.d.ts.map +1 -0
  268. package/dist/runtime/biome-host/relay/relay-flow.js +48 -0
  269. package/dist/runtime/biome-host/relay/relay-flow.js.map +1 -0
  270. package/dist/runtime/biome-host/source-staging.d.ts +17 -0
  271. package/dist/runtime/biome-host/source-staging.d.ts.map +1 -0
  272. package/dist/runtime/biome-host/source-staging.js +80 -0
  273. package/dist/runtime/biome-host/source-staging.js.map +1 -0
  274. package/dist/runtime/biome-host/sse.d.ts +2 -0
  275. package/dist/runtime/biome-host/sse.d.ts.map +1 -0
  276. package/dist/runtime/biome-host/sse.js +33 -0
  277. package/dist/runtime/biome-host/sse.js.map +1 -0
  278. package/dist/runtime/biome-local-install.js +1 -1
  279. package/dist/runtime/biome-local-install.js.map +1 -1
  280. package/dist/runtime/browser-origins.d.ts +9 -0
  281. package/dist/runtime/browser-origins.d.ts.map +1 -1
  282. package/dist/runtime/browser-origins.js +10 -0
  283. package/dist/runtime/browser-origins.js.map +1 -1
  284. package/dist/runtime/config/config-document.d.ts +10 -0
  285. package/dist/runtime/config/config-document.d.ts.map +1 -0
  286. package/dist/runtime/config/config-document.js +56 -0
  287. package/dist/runtime/config/config-document.js.map +1 -0
  288. package/dist/runtime/config/config-migrations.d.ts +21 -0
  289. package/dist/runtime/config/config-migrations.d.ts.map +1 -0
  290. package/dist/runtime/config/config-migrations.js +102 -0
  291. package/dist/runtime/config/config-migrations.js.map +1 -0
  292. package/dist/runtime/config/config-paths.d.ts +3 -0
  293. package/dist/runtime/config/config-paths.d.ts.map +1 -0
  294. package/dist/runtime/config/config-paths.js +9 -0
  295. package/dist/runtime/config/config-paths.js.map +1 -0
  296. package/dist/runtime/config/dev-mode.d.ts +0 -1
  297. package/dist/runtime/config/dev-mode.d.ts.map +1 -1
  298. package/dist/runtime/config/dev-mode.js +11 -27
  299. package/dist/runtime/config/dev-mode.js.map +1 -1
  300. package/dist/runtime/config/init-presets.js +5 -9
  301. package/dist/runtime/config/init-presets.js.map +1 -1
  302. package/dist/runtime/config/launch-config-help.d.ts +4 -0
  303. package/dist/runtime/config/launch-config-help.d.ts.map +1 -0
  304. package/dist/runtime/config/launch-config-help.js +42 -0
  305. package/dist/runtime/config/launch-config-help.js.map +1 -0
  306. package/dist/runtime/config/launch-config.d.ts +60 -0
  307. package/dist/runtime/config/launch-config.d.ts.map +1 -0
  308. package/dist/runtime/config/launch-config.js +123 -0
  309. package/dist/runtime/config/launch-config.js.map +1 -0
  310. package/dist/runtime/config/launch-schema.d.ts +18 -0
  311. package/dist/runtime/config/launch-schema.d.ts.map +1 -0
  312. package/dist/runtime/config/launch-schema.js +31 -0
  313. package/dist/runtime/config/launch-schema.js.map +1 -0
  314. package/dist/runtime/config/loader.d.ts.map +1 -1
  315. package/dist/runtime/config/loader.js +4 -14
  316. package/dist/runtime/config/loader.js.map +1 -1
  317. package/dist/runtime/config/schema.d.ts +43 -38
  318. package/dist/runtime/config/schema.d.ts.map +1 -1
  319. package/dist/runtime/config/schema.js +17 -46
  320. package/dist/runtime/config/schema.js.map +1 -1
  321. package/dist/runtime/config/sources-config.d.ts +0 -2
  322. package/dist/runtime/config/sources-config.d.ts.map +1 -1
  323. package/dist/runtime/config/sources-config.js +10 -29
  324. package/dist/runtime/config/sources-config.js.map +1 -1
  325. package/dist/runtime/config/versioned-document.d.ts +26 -0
  326. package/dist/runtime/config/versioned-document.d.ts.map +1 -0
  327. package/dist/runtime/config/versioned-document.js +87 -0
  328. package/dist/runtime/config/versioned-document.js.map +1 -0
  329. package/dist/runtime/directory-changes.d.ts +12 -0
  330. package/dist/runtime/directory-changes.d.ts.map +1 -0
  331. package/dist/runtime/directory-changes.js +62 -0
  332. package/dist/runtime/directory-changes.js.map +1 -0
  333. package/dist/runtime/foreground.d.ts +2 -0
  334. package/dist/runtime/foreground.d.ts.map +1 -1
  335. package/dist/runtime/foreground.js +5 -20
  336. package/dist/runtime/foreground.js.map +1 -1
  337. package/dist/runtime/infra/infra-runner.js +5 -5
  338. package/dist/runtime/infra/infra-runner.js.map +1 -1
  339. package/dist/runtime/infra/keycloak-realm.d.ts +3 -19
  340. package/dist/runtime/infra/keycloak-realm.d.ts.map +1 -1
  341. package/dist/runtime/infra/keycloak-realm.js +12 -133
  342. package/dist/runtime/infra/keycloak-realm.js.map +1 -1
  343. package/dist/runtime/installation/current-launcher-renderer.js.map +1 -1
  344. package/dist/runtime/installation/from-current-config.d.ts.map +1 -1
  345. package/dist/runtime/installation/from-current-config.js +24 -47
  346. package/dist/runtime/installation/from-current-config.js.map +1 -1
  347. package/dist/runtime/installation/index.d.ts +1 -0
  348. package/dist/runtime/installation/index.d.ts.map +1 -1
  349. package/dist/runtime/installation/index.js +1 -0
  350. package/dist/runtime/installation/index.js.map +1 -1
  351. package/dist/runtime/installation/installation-file.d.ts +3 -0
  352. package/dist/runtime/installation/installation-file.d.ts.map +1 -0
  353. package/dist/runtime/installation/installation-file.js +9 -0
  354. package/dist/runtime/installation/installation-file.js.map +1 -0
  355. package/dist/runtime/installation/readiness.d.ts +6 -7
  356. package/dist/runtime/installation/readiness.d.ts.map +1 -1
  357. package/dist/runtime/installation/readiness.js +82 -132
  358. package/dist/runtime/installation/readiness.js.map +1 -1
  359. package/dist/runtime/installation/state-store.d.ts +4 -0
  360. package/dist/runtime/installation/state-store.d.ts.map +1 -1
  361. package/dist/runtime/installation/state-store.js +22 -1
  362. package/dist/runtime/installation/state-store.js.map +1 -1
  363. package/dist/runtime/installation/to-current-config.d.ts +4 -1
  364. package/dist/runtime/installation/to-current-config.d.ts.map +1 -1
  365. package/dist/runtime/installation/to-current-config.js +10 -36
  366. package/dist/runtime/installation/to-current-config.js.map +1 -1
  367. package/dist/runtime/launch-plan-format.d.ts.map +1 -1
  368. package/dist/runtime/launch-plan-format.js +31 -6
  369. package/dist/runtime/launch-plan-format.js.map +1 -1
  370. package/dist/runtime/launch-result.d.ts +15 -0
  371. package/dist/runtime/launch-result.d.ts.map +1 -0
  372. package/dist/runtime/launch-result.js +3 -0
  373. package/dist/runtime/launch-result.js.map +1 -0
  374. package/dist/runtime/launch.d.ts +16 -5
  375. package/dist/runtime/launch.d.ts.map +1 -1
  376. package/dist/runtime/launch.js +151 -315
  377. package/dist/runtime/launch.js.map +1 -1
  378. package/dist/runtime/license/helm-pull-secret.d.ts +1 -1
  379. package/dist/runtime/license/helm-pull-secret.d.ts.map +1 -1
  380. package/dist/runtime/license/helm-pull-secret.js +2 -2
  381. package/dist/runtime/license/helm-pull-secret.js.map +1 -1
  382. package/dist/runtime/lifecycle-progress/index.d.ts +9 -0
  383. package/dist/runtime/lifecycle-progress/index.d.ts.map +1 -0
  384. package/dist/runtime/lifecycle-progress/index.js +30 -0
  385. package/dist/runtime/lifecycle-progress/index.js.map +1 -0
  386. package/dist/runtime/lifecycle-progress/json-renderer.d.ts +3 -0
  387. package/dist/runtime/lifecycle-progress/json-renderer.d.ts.map +1 -0
  388. package/dist/runtime/lifecycle-progress/json-renderer.js +27 -0
  389. package/dist/runtime/lifecycle-progress/json-renderer.js.map +1 -0
  390. package/dist/runtime/lifecycle-progress/text-renderer.d.ts +5 -0
  391. package/dist/runtime/lifecycle-progress/text-renderer.d.ts.map +1 -0
  392. package/dist/runtime/lifecycle-progress/text-renderer.js +83 -0
  393. package/dist/runtime/lifecycle-progress/text-renderer.js.map +1 -0
  394. package/dist/runtime/lifecycle-progress/types.d.ts +79 -0
  395. package/dist/runtime/lifecycle-progress/types.d.ts.map +1 -0
  396. package/dist/runtime/lifecycle-progress/types.js +32 -0
  397. package/dist/runtime/lifecycle-progress/types.js.map +1 -0
  398. package/dist/runtime/lock-loader.d.ts +13 -3
  399. package/dist/runtime/lock-loader.d.ts.map +1 -1
  400. package/dist/runtime/lock-loader.js +28 -8
  401. package/dist/runtime/lock-loader.js.map +1 -1
  402. package/dist/runtime/paths.d.ts +2 -0
  403. package/dist/runtime/paths.d.ts.map +1 -1
  404. package/dist/runtime/paths.js +17 -4
  405. package/dist/runtime/paths.js.map +1 -1
  406. package/dist/runtime/roster.d.ts +6 -5
  407. package/dist/runtime/roster.d.ts.map +1 -1
  408. package/dist/runtime/roster.js +0 -21
  409. package/dist/runtime/roster.js.map +1 -1
  410. package/dist/runtime/runner/container-preflight.d.ts +3 -2
  411. package/dist/runtime/runner/container-preflight.d.ts.map +1 -1
  412. package/dist/runtime/runner/container-preflight.js +5 -5
  413. package/dist/runtime/runner/container-preflight.js.map +1 -1
  414. package/dist/runtime/runner/container-runner.d.ts +0 -22
  415. package/dist/runtime/runner/container-runner.d.ts.map +1 -1
  416. package/dist/runtime/runner/container-runner.js +0 -112
  417. package/dist/runtime/runner/container-runner.js.map +1 -1
  418. package/dist/runtime/runner/docker-cli.d.ts +1 -0
  419. package/dist/runtime/runner/docker-cli.d.ts.map +1 -1
  420. package/dist/runtime/runner/docker-cli.js +19 -0
  421. package/dist/runtime/runner/docker-cli.js.map +1 -1
  422. package/dist/runtime/runner/helm-cli.d.ts +1 -0
  423. package/dist/runtime/runner/helm-cli.d.ts.map +1 -1
  424. package/dist/runtime/runner/helm-cli.js +5 -1
  425. package/dist/runtime/runner/helm-cli.js.map +1 -1
  426. package/dist/runtime/runner/helm-pre-install.d.ts +3 -2
  427. package/dist/runtime/runner/helm-pre-install.d.ts.map +1 -1
  428. package/dist/runtime/runner/helm-pre-install.js +3 -3
  429. package/dist/runtime/runner/helm-pre-install.js.map +1 -1
  430. package/dist/runtime/runner/helm-runner.d.ts +29 -4
  431. package/dist/runtime/runner/helm-runner.d.ts.map +1 -1
  432. package/dist/runtime/runner/helm-runner.js +44 -14
  433. package/dist/runtime/runner/helm-runner.js.map +1 -1
  434. package/dist/runtime/runner/kube-cli.d.ts +1 -0
  435. package/dist/runtime/runner/kube-cli.d.ts.map +1 -1
  436. package/dist/runtime/runner/kube-cli.js +24 -2
  437. package/dist/runtime/runner/kube-cli.js.map +1 -1
  438. package/dist/runtime/secrets/managed-local-key-provider.d.ts +2 -0
  439. package/dist/runtime/secrets/managed-local-key-provider.d.ts.map +1 -1
  440. package/dist/runtime/secrets/managed-local-key-provider.js +17 -8
  441. package/dist/runtime/secrets/managed-local-key-provider.js.map +1 -1
  442. package/dist/runtime/seed/closure-container.d.ts +8 -0
  443. package/dist/runtime/seed/closure-container.d.ts.map +1 -0
  444. package/dist/runtime/seed/closure-container.js +23 -0
  445. package/dist/runtime/seed/closure-container.js.map +1 -0
  446. package/dist/runtime/seed/closure-helm.d.ts +9 -0
  447. package/dist/runtime/seed/closure-helm.d.ts.map +1 -0
  448. package/dist/runtime/seed/closure-helm.js +16 -0
  449. package/dist/runtime/seed/closure-helm.js.map +1 -0
  450. package/dist/runtime/seed/closure-names.d.ts +4 -0
  451. package/dist/runtime/seed/closure-names.d.ts.map +1 -0
  452. package/dist/runtime/seed/closure-names.js +29 -0
  453. package/dist/runtime/seed/closure-names.js.map +1 -0
  454. package/dist/runtime/seed/closure-native.d.ts +3 -0
  455. package/dist/runtime/seed/closure-native.d.ts.map +1 -0
  456. package/dist/runtime/seed/closure-native.js +18 -0
  457. package/dist/runtime/seed/closure-native.js.map +1 -0
  458. package/dist/runtime/seed/installation-tar.d.ts +5 -0
  459. package/dist/runtime/seed/installation-tar.d.ts.map +1 -0
  460. package/dist/runtime/seed/installation-tar.js +30 -0
  461. package/dist/runtime/seed/installation-tar.js.map +1 -0
  462. package/dist/runtime/seed/launch-env.d.ts +42 -0
  463. package/dist/runtime/seed/launch-env.d.ts.map +1 -0
  464. package/dist/runtime/seed/launch-env.js +150 -0
  465. package/dist/runtime/seed/launch-env.js.map +1 -0
  466. package/dist/runtime/seed/seed-container.d.ts +13 -0
  467. package/dist/runtime/seed/seed-container.d.ts.map +1 -0
  468. package/dist/runtime/seed/seed-container.js +175 -0
  469. package/dist/runtime/seed/seed-container.js.map +1 -0
  470. package/dist/runtime/seed/seed-delivery-env.d.ts +39 -0
  471. package/dist/runtime/seed/seed-delivery-env.d.ts.map +1 -0
  472. package/dist/runtime/seed/seed-delivery-env.js +47 -0
  473. package/dist/runtime/seed/seed-delivery-env.js.map +1 -0
  474. package/dist/runtime/seed/seed-down.d.ts +2 -0
  475. package/dist/runtime/seed/seed-down.d.ts.map +1 -0
  476. package/dist/runtime/seed/seed-down.js +52 -0
  477. package/dist/runtime/seed/seed-down.js.map +1 -0
  478. package/dist/runtime/seed/seed-env-file.d.ts +3 -0
  479. package/dist/runtime/seed/seed-env-file.d.ts.map +1 -0
  480. package/dist/runtime/seed/seed-env-file.js +24 -0
  481. package/dist/runtime/seed/seed-env-file.js.map +1 -0
  482. package/dist/runtime/seed/seed-env-secret.d.ts +18 -0
  483. package/dist/runtime/seed/seed-env-secret.d.ts.map +1 -0
  484. package/dist/runtime/seed/seed-env-secret.js +62 -0
  485. package/dist/runtime/seed/seed-env-secret.js.map +1 -0
  486. package/dist/runtime/seed/seed-environment.d.ts +12 -0
  487. package/dist/runtime/seed/seed-environment.d.ts.map +1 -0
  488. package/dist/runtime/seed/seed-environment.js +66 -0
  489. package/dist/runtime/seed/seed-environment.js.map +1 -0
  490. package/dist/runtime/seed/seed-facts.d.ts +22 -0
  491. package/dist/runtime/seed/seed-facts.d.ts.map +1 -0
  492. package/dist/runtime/seed/seed-facts.js +40 -0
  493. package/dist/runtime/seed/seed-facts.js.map +1 -0
  494. package/dist/runtime/seed/seed-helm.d.ts +10 -0
  495. package/dist/runtime/seed/seed-helm.d.ts.map +1 -0
  496. package/dist/runtime/seed/seed-helm.js +74 -0
  497. package/dist/runtime/seed/seed-helm.js.map +1 -0
  498. package/dist/runtime/seed/seed-image-user.d.ts +6 -0
  499. package/dist/runtime/seed/seed-image-user.d.ts.map +1 -0
  500. package/dist/runtime/seed/seed-image-user.js +14 -0
  501. package/dist/runtime/seed/seed-image-user.js.map +1 -0
  502. package/dist/runtime/seed/seed-installation-files.d.ts +23 -0
  503. package/dist/runtime/seed/seed-installation-files.d.ts.map +1 -0
  504. package/dist/runtime/seed/seed-installation-files.js +51 -0
  505. package/dist/runtime/seed/seed-installation-files.js.map +1 -0
  506. package/dist/runtime/seed/seed-installation.d.ts +20 -0
  507. package/dist/runtime/seed/seed-installation.d.ts.map +1 -0
  508. package/dist/runtime/seed/seed-installation.js +36 -0
  509. package/dist/runtime/seed/seed-installation.js.map +1 -0
  510. package/dist/runtime/seed/seed-launcher.d.ts +14 -0
  511. package/dist/runtime/seed/seed-launcher.d.ts.map +1 -0
  512. package/dist/runtime/seed/seed-launcher.js +155 -0
  513. package/dist/runtime/seed/seed-launcher.js.map +1 -0
  514. package/dist/runtime/seed/seed-options.d.ts +22 -0
  515. package/dist/runtime/seed/seed-options.d.ts.map +1 -0
  516. package/dist/runtime/seed/seed-options.js +57 -0
  517. package/dist/runtime/seed/seed-options.js.map +1 -0
  518. package/dist/runtime/seed/seed-platform-endpoints.d.ts +8 -0
  519. package/dist/runtime/seed/seed-platform-endpoints.d.ts.map +1 -0
  520. package/dist/runtime/seed/seed-platform-endpoints.js +55 -0
  521. package/dist/runtime/seed/seed-platform-endpoints.js.map +1 -0
  522. package/dist/runtime/seed/seed-process.d.ts +22 -0
  523. package/dist/runtime/seed/seed-process.d.ts.map +1 -0
  524. package/dist/runtime/seed/seed-process.js +79 -0
  525. package/dist/runtime/seed/seed-process.js.map +1 -0
  526. package/dist/runtime/seed/seed-record.d.ts +101 -0
  527. package/dist/runtime/seed/seed-record.d.ts.map +1 -0
  528. package/dist/runtime/seed/seed-record.js +141 -0
  529. package/dist/runtime/seed/seed-record.js.map +1 -0
  530. package/dist/runtime/seed/seed-resolved-deployment.d.ts +14 -0
  531. package/dist/runtime/seed/seed-resolved-deployment.d.ts.map +1 -0
  532. package/dist/runtime/seed/seed-resolved-deployment.js +52 -0
  533. package/dist/runtime/seed/seed-resolved-deployment.js.map +1 -0
  534. package/dist/runtime/seed/substrate-facts.d.ts +52 -0
  535. package/dist/runtime/seed/substrate-facts.d.ts.map +1 -0
  536. package/dist/runtime/seed/substrate-facts.js +92 -0
  537. package/dist/runtime/seed/substrate-facts.js.map +1 -0
  538. package/dist/runtime/seed/supervisor-contract.d.ts +9 -0
  539. package/dist/runtime/seed/supervisor-contract.d.ts.map +1 -0
  540. package/dist/runtime/seed/supervisor-contract.js +68 -0
  541. package/dist/runtime/seed/supervisor-contract.js.map +1 -0
  542. package/dist/runtime/seed/workload-identity-facts.d.ts +17 -0
  543. package/dist/runtime/seed/workload-identity-facts.d.ts.map +1 -0
  544. package/dist/runtime/seed/workload-identity-facts.js +53 -0
  545. package/dist/runtime/seed/workload-identity-facts.js.map +1 -0
  546. package/dist/runtime/sources/schema.d.ts +2 -0
  547. package/dist/runtime/sources/schema.d.ts.map +1 -1
  548. package/dist/runtime/sources/schema.js +10 -9
  549. package/dist/runtime/sources/schema.js.map +1 -1
  550. package/dist/runtime/store-client.d.ts +0 -10
  551. package/dist/runtime/store-client.d.ts.map +1 -1
  552. package/dist/runtime/store-client.js +0 -5
  553. package/dist/runtime/store-client.js.map +1 -1
  554. package/dist/runtime/tenancy/identity-installer.d.ts +11 -0
  555. package/dist/runtime/tenancy/identity-installer.d.ts.map +1 -0
  556. package/dist/runtime/tenancy/identity-installer.js +39 -0
  557. package/dist/runtime/tenancy/identity-installer.js.map +1 -0
  558. package/dist/runtime/tenancy/import-cache.d.ts +5 -0
  559. package/dist/runtime/tenancy/import-cache.d.ts.map +1 -0
  560. package/dist/runtime/tenancy/import-cache.js +27 -0
  561. package/dist/runtime/tenancy/import-cache.js.map +1 -0
  562. package/dist/runtime/tenancy/openfga.d.ts +4 -0
  563. package/dist/runtime/tenancy/openfga.d.ts.map +1 -0
  564. package/dist/runtime/tenancy/openfga.js +29 -0
  565. package/dist/runtime/tenancy/openfga.js.map +1 -0
  566. package/dist/runtime/tenancy/servers.d.ts +18 -0
  567. package/dist/runtime/tenancy/servers.d.ts.map +1 -0
  568. package/dist/runtime/tenancy/servers.js +102 -0
  569. package/dist/runtime/tenancy/servers.js.map +1 -0
  570. package/dist/runtime/tenancy/session.d.ts +19 -0
  571. package/dist/runtime/tenancy/session.d.ts.map +1 -0
  572. package/dist/runtime/tenancy/session.js +79 -0
  573. package/dist/runtime/tenancy/session.js.map +1 -0
  574. package/dist/runtime/tenancy/specs.d.ts +27 -0
  575. package/dist/runtime/tenancy/specs.d.ts.map +1 -0
  576. package/dist/runtime/tenancy/specs.js +129 -0
  577. package/dist/runtime/tenancy/specs.js.map +1 -0
  578. package/examples/01-local-native.yaml +1 -3
  579. package/examples/02-local-container-full.yaml +0 -2
  580. package/examples/03-byo-infra.yaml +1 -5
  581. package/examples/06-biome-sources.yaml +1 -3
  582. package/package.json +32 -37
  583. package/xema.config.example.yaml +1 -10
  584. package/dist/assets/keycloak/realm-xema.json +0 -397
  585. package/dist/commands/dev.d.ts.map +0 -1
  586. package/dist/commands/dev.js +0 -196
  587. package/dist/commands/dev.js.map +0 -1
  588. package/dist/commands/edition.d.ts +0 -3
  589. package/dist/commands/edition.d.ts.map +0 -1
  590. package/dist/commands/edition.js +0 -54
  591. package/dist/commands/edition.js.map +0 -1
  592. package/dist/commands/serve.d.ts +0 -3
  593. package/dist/commands/serve.d.ts.map +0 -1
  594. package/dist/commands/serve.js +0 -114
  595. package/dist/commands/serve.js.map +0 -1
  596. package/dist/dev/carved-installs.d.ts +0 -3
  597. package/dist/dev/carved-installs.d.ts.map +0 -1
  598. package/dist/dev/carved-installs.js +0 -63
  599. package/dist/dev/carved-installs.js.map +0 -1
  600. package/dist/dev/env-defaults.d.ts +0 -15
  601. package/dist/dev/env-defaults.d.ts.map +0 -1
  602. package/dist/dev/env-defaults.js +0 -178
  603. package/dist/dev/env-defaults.js.map +0 -1
  604. package/dist/dev/forked-worker-bootstrap-protocol.d.ts +0 -17
  605. package/dist/dev/forked-worker-bootstrap-protocol.d.ts.map +0 -1
  606. package/dist/dev/forked-worker-bootstrap-protocol.js +0 -35
  607. package/dist/dev/forked-worker-bootstrap-protocol.js.map +0 -1
  608. package/dist/dev/forked-worker-bootstrap.d.ts +0 -18
  609. package/dist/dev/forked-worker-bootstrap.d.ts.map +0 -1
  610. package/dist/dev/forked-worker-bootstrap.js +0 -84
  611. package/dist/dev/forked-worker-bootstrap.js.map +0 -1
  612. package/dist/dev/forked-worker.d.ts +0 -43
  613. package/dist/dev/forked-worker.d.ts.map +0 -1
  614. package/dist/dev/forked-worker.js +0 -358
  615. package/dist/dev/forked-worker.js.map +0 -1
  616. package/dist/edition/verify-image-evidence.bundle.mjs +0 -70456
  617. package/dist/edition/verify-image-evidence.bundle.provenance.json +0 -3957
  618. package/dist/runtime/backing-registration.d.ts +0 -11
  619. package/dist/runtime/backing-registration.d.ts.map +0 -1
  620. package/dist/runtime/backing-registration.js +0 -94
  621. package/dist/runtime/backing-registration.js.map +0 -1
  622. package/dist/runtime/edition/run-entry.d.ts +0 -9
  623. package/dist/runtime/edition/run-entry.d.ts.map +0 -1
  624. package/dist/runtime/edition/run-entry.js +0 -36
  625. package/dist/runtime/edition/run-entry.js.map +0 -1
  626. package/dist/runtime/edition/verb-map.d.ts +0 -70
  627. package/dist/runtime/edition/verb-map.d.ts.map +0 -1
  628. package/dist/runtime/edition/verb-map.js +0 -166
  629. package/dist/runtime/edition/verb-map.js.map +0 -1
  630. package/dist/runtime/env-seeder.d.ts +0 -26
  631. package/dist/runtime/env-seeder.d.ts.map +0 -1
  632. package/dist/runtime/env-seeder.js +0 -340
  633. package/dist/runtime/env-seeder.js.map +0 -1
  634. package/dist/runtime/port-map.d.ts +0 -3
  635. package/dist/runtime/port-map.d.ts.map +0 -1
  636. package/dist/runtime/port-map.js +0 -25
  637. package/dist/runtime/port-map.js.map +0 -1
  638. package/dist/runtime/run-manifest.d.ts +0 -52
  639. package/dist/runtime/run-manifest.d.ts.map +0 -1
  640. package/dist/runtime/run-manifest.js +0 -585
  641. package/dist/runtime/run-manifest.js.map +0 -1
  642. package/dist/runtime/runner/native-runner.d.ts +0 -13
  643. package/dist/runtime/runner/native-runner.d.ts.map +0 -1
  644. package/dist/runtime/runner/native-runner.js +0 -94
  645. package/dist/runtime/runner/native-runner.js.map +0 -1
  646. package/dist/runtime/runner/service-runner.d.ts +0 -28
  647. package/dist/runtime/runner/service-runner.d.ts.map +0 -1
  648. package/dist/runtime/runner/service-runner.js +0 -10
  649. package/dist/runtime/runner/service-runner.js.map +0 -1
  650. package/dist/runtime/secrets/generated-platform-secrets.d.ts +0 -16
  651. package/dist/runtime/secrets/generated-platform-secrets.d.ts.map +0 -1
  652. package/dist/runtime/secrets/generated-platform-secrets.js +0 -115
  653. package/dist/runtime/secrets/generated-platform-secrets.js.map +0 -1
  654. package/dist/runtime/secrets/resolver.d.ts +0 -23
  655. package/dist/runtime/secrets/resolver.d.ts.map +0 -1
  656. package/dist/runtime/secrets/resolver.js +0 -266
  657. package/dist/runtime/secrets/resolver.js.map +0 -1
  658. package/dist/runtime/supervisor.d.ts +0 -67
  659. package/dist/runtime/supervisor.d.ts.map +0 -1
  660. package/dist/runtime/supervisor.js +0 -227
  661. package/dist/runtime/supervisor.js.map +0 -1
  662. package/edition/README.md +0 -293
  663. package/edition/adapter-bundled-versions.mjs +0 -108
  664. package/edition/adapter-host-versions.mjs +0 -41
  665. package/edition/assemble-producer-input.mjs +0 -1414
  666. package/edition/assemble-third-party-input.mjs +0 -336
  667. package/edition/authored-source-check.mjs +0 -135
  668. package/edition/authorization-base.mjs +0 -357
  669. package/edition/biome-content.mjs +0 -327
  670. package/edition/build-biome-index.mjs +0 -180
  671. package/edition/build-ledger-completeness.mjs +0 -67
  672. package/edition/build-ledger.mjs +0 -107
  673. package/edition/build-platform-service-index.mjs +0 -292
  674. package/edition/build-runtime-image-source-index.mjs +0 -1187
  675. package/edition/built-verifier.mjs +0 -55
  676. package/edition/candidate-edition.mjs +0 -697
  677. package/edition/canonical-evidence-json.mjs +0 -82
  678. package/edition/canonical-repository-url.mjs +0 -47
  679. package/edition/catalogue-edition.mjs +0 -49
  680. package/edition/catalogue-evidence.mjs +0 -228
  681. package/edition/catalogue-fetch.mjs +0 -124
  682. package/edition/catalogue-lock-field.mjs +0 -41
  683. package/edition/catalogue-pin.mjs +0 -71
  684. package/edition/catalogue.mjs +0 -223
  685. package/edition/chart-set-source-commit.mjs +0 -97
  686. package/edition/check-committed-image-evidence.mjs +0 -412
  687. package/edition/checkout-indexed-source-repositories.mjs +0 -283
  688. package/edition/collected-refusals.mjs +0 -59
  689. package/edition/comment-blanker.mjs +0 -75
  690. package/edition/connector-source-authority.mjs +0 -60
  691. package/edition/contract-authority.mjs +0 -122
  692. package/edition/cosign-certificate-constraints.mjs +0 -50
  693. package/edition/cross-repo-build-inputs.mjs +0 -158
  694. package/edition/customer-definition.mjs +0 -174
  695. package/edition/customer-edition-verbs.mjs +0 -617
  696. package/edition/customer-flags.mjs +0 -15
  697. package/edition/develop-catalogue-free-resolve.mjs +0 -280
  698. package/edition/develop-chart-roster.mjs +0 -96
  699. package/edition/develop-chart-set.mjs +0 -147
  700. package/edition/develop-coverage-readers.mjs +0 -217
  701. package/edition/develop-coverage-run.mjs +0 -50
  702. package/edition/develop-coverage-verdict.mjs +0 -153
  703. package/edition/develop-coverage.mjs +0 -131
  704. package/edition/develop-current-resolution.mjs +0 -29
  705. package/edition/develop-edition-invariants.mjs +0 -142
  706. package/edition/develop-edition-resolve.mjs +0 -211
  707. package/edition/develop-edition.mjs +0 -379
  708. package/edition/develop-engine-image.mjs +0 -95
  709. package/edition/develop-follow.mjs +0 -491
  710. package/edition/develop-freeze.mjs +0 -289
  711. package/edition/develop-git-bundles.mjs +0 -255
  712. package/edition/develop-graph.mjs +0 -28
  713. package/edition/develop-image-coordinate.mjs +0 -54
  714. package/edition/develop-image-probe.mjs +0 -120
  715. package/edition/develop-image-record.mjs +0 -194
  716. package/edition/develop-record-ancestry.mjs +0 -144
  717. package/edition/develop-record-verify.mjs +0 -216
  718. package/edition/develop-resolve-report.mjs +0 -159
  719. package/edition/develop-select-records.mjs +0 -172
  720. package/edition/develop-selection-line.mjs +0 -30
  721. package/edition/develop-selection-pins.mjs +0 -36
  722. package/edition/develop-snapshot-inputs.mjs +0 -93
  723. package/edition/develop-verify-image-record.mjs +0 -109
  724. package/edition/dispatched-runtime-components.mjs +0 -172
  725. package/edition/dist-check.mjs +0 -1137
  726. package/edition/distribution-evidence-set.mjs +0 -1064
  727. package/edition/distribution-paths.mjs +0 -191
  728. package/edition/edition-artifact.mjs +0 -529
  729. package/edition/edition-biome-manifests.mjs +0 -85
  730. package/edition/edition-ceiling.mjs +0 -180
  731. package/edition/edition-channel.mjs +0 -20
  732. package/edition/edition-chart-set.mjs +0 -104
  733. package/edition/edition-config.mjs +0 -374
  734. package/edition/edition-constants.mjs +0 -110
  735. package/edition/edition-contract-parse.mjs +0 -179
  736. package/edition/edition-contract.json +0 -100
  737. package/edition/edition-image-seal.mjs +0 -110
  738. package/edition/edition-kind.mjs +0 -10
  739. package/edition/edition-list.mjs +0 -35
  740. package/edition/edition-locks.mjs +0 -79
  741. package/edition/edition-pin-verbs.mjs +0 -183
  742. package/edition/edition-pin.mjs +0 -17
  743. package/edition/edition-pinned-inputs.mjs +0 -116
  744. package/edition/edition-protocol.mjs +0 -277
  745. package/edition/edition-publisher.mjs +0 -21
  746. package/edition/edition-seal.mjs +0 -257
  747. package/edition/edition-source-pins.mjs +0 -211
  748. package/edition/edition-unpin.mjs +0 -16
  749. package/edition/edition-workspace.mjs +0 -204
  750. package/edition/evidence-checkout.mjs +0 -439
  751. package/edition/evidence-grammars.mjs +0 -18
  752. package/edition/evidence-input-mode.mjs +0 -136
  753. package/edition/evidence-trust-pin.mjs +0 -380
  754. package/edition/evidence-trust-policy.mjs +0 -374
  755. package/edition/external-source-walk.mjs +0 -485
  756. package/edition/first-party-source-ids.mjs +0 -62
  757. package/edition/fleet-coordinate-finality.mjs +0 -363
  758. package/edition/fulcio-certificate-extensions.mjs +0 -231
  759. package/edition/git-json.mjs +0 -54
  760. package/edition/git-source-auth.mjs +0 -131
  761. package/edition/image-delivery-entitlement-descriptor.mjs +0 -106
  762. package/edition/image-evidence-replay-state.mjs +0 -242
  763. package/edition/image-evidence.mjs +0 -1404
  764. package/edition/image-lock-service-rows.mjs +0 -26
  765. package/edition/image-subject-identity.mjs +0 -24
  766. package/edition/images-from-record.mjs +0 -298
  767. package/edition/indexes-at-pins.mjs +0 -13
  768. package/edition/kernel-capability-domain.mjs +0 -30
  769. package/edition/kernel-contract-authority.mjs +0 -517
  770. package/edition/kernel-contract-source-path-set.mjs +0 -94
  771. package/edition/kernel-package.mjs +0 -206
  772. package/edition/kernel-protocol-choice.mjs +0 -239
  773. package/edition/kernel-signer-kind.mjs +0 -23
  774. package/edition/lib.mjs +0 -3303
  775. package/edition/locked-bundle-signer.mjs +0 -297
  776. package/edition/map-with-concurrency.mjs +0 -19
  777. package/edition/no-follow-file.mjs +0 -94
  778. package/edition/oci-evidence-verbs.mjs +0 -419
  779. package/edition/oci-image-source-evidence.mjs +0 -364
  780. package/edition/operation-grant-admission.mjs +0 -285
  781. package/edition/operation-requirements.mjs +0 -282
  782. package/edition/oras-process.mjs +0 -35
  783. package/edition/oras.mjs +0 -742
  784. package/edition/pin-source.mjs +0 -242
  785. package/edition/pinned-cosign.mjs +0 -70
  786. package/edition/plan-image-evidence-refresh.mjs +0 -427
  787. package/edition/platform-lock-readability.mjs +0 -901
  788. package/edition/platform-service-class.mjs +0 -85
  789. package/edition/platform-service-ownership.mjs +0 -88
  790. package/edition/platform-service-source-authority.mjs +0 -105
  791. package/edition/positive-closure.mjs +0 -162
  792. package/edition/previous-seal-registry.mjs +0 -149
  793. package/edition/produce-distribution-completeness-evidence.mjs +0 -318
  794. package/edition/produce-edition-catalogue-evidence.mjs +0 -252
  795. package/edition/produce-image-delivery-entitlement-evidence.mjs +0 -304
  796. package/edition/produce-image-source-evidence.mjs +0 -788
  797. package/edition/producer-evidence-bundle.mjs +0 -201
  798. package/edition/producer-evidence-index-file.mjs +0 -4
  799. package/edition/record-refused.mjs +0 -12
  800. package/edition/registry-credentials.mjs +0 -225
  801. package/edition/release-catalogue.mjs +0 -47
  802. package/edition/release-channel-guard.mjs +0 -108
  803. package/edition/release-edition-artifact.mjs +0 -152
  804. package/edition/release-edition.mjs +0 -54
  805. package/edition/remedy-command.mjs +0 -89
  806. package/edition/repin-evidence-trust.mjs +0 -109
  807. package/edition/required-resource-provider.mjs +0 -58
  808. package/edition/resolve-chart-set.mjs +0 -376
  809. package/edition/resolve-customer-edition.mjs +0 -374
  810. package/edition/resolve-distribution.mjs +0 -2639
  811. package/edition/resolve-edition.mjs +0 -192
  812. package/edition/resolve-images.mjs +0 -2294
  813. package/edition/seal-image-digests.mjs +0 -954
  814. package/edition/sealed-distribution-lock.mjs +0 -22
  815. package/edition/sealed-evidence-accept.mjs +0 -82
  816. package/edition/shallow-checkout.mjs +0 -18
  817. package/edition/sigstore-bundle-media-type.mjs +0 -4
  818. package/edition/source-authority.mjs +0 -713
  819. package/edition/source-closure.mjs +0 -115
  820. package/edition/store-publisher-trust.mjs +0 -40
  821. package/edition/strict-json.mjs +0 -121
  822. package/edition/string-order.mjs +0 -5
  823. package/edition/third-party-admission.mjs +0 -91
  824. package/edition/third-party-bundle-registry.mjs +0 -242
  825. package/edition/third-party-certificate-extensions.mjs +0 -21
  826. package/edition/third-party-image-pins.mjs +0 -41
  827. package/edition/third-party-pins-trusted.mjs +0 -24
  828. package/edition/third-party-producer-evidence.mjs +0 -76
  829. package/edition/third-party-source-check.mjs +0 -28
  830. package/edition/third-party-source-context.mjs +0 -41
  831. package/edition/third-party-source-evidence.mjs +0 -287
  832. package/edition/third-party-source-flags.mjs +0 -134
  833. package/edition/third-party-source-pins.mjs +0 -259
  834. package/edition/third-party-source-uniqueness.mjs +0 -54
  835. package/edition/third-party-source-walk.mjs +0 -115
  836. package/edition/third-party-source-writer.mjs +0 -213
  837. package/edition/third-party-subjects.mjs +0 -128
  838. package/edition/trust-policy-arming-verb.mjs +0 -60
  839. package/edition/trust-policy-arming.mjs +0 -144
  840. package/edition/trust-policy-image-ownership.mjs +0 -85
  841. package/edition/trusted-executable.mjs +0 -166
  842. package/edition/verifier-binding.mjs +0 -45
  843. package/edition/verifier-files.mjs +0 -8
  844. package/edition/verifier-kernel-schemas.mjs +0 -22
  845. package/edition/verifier-provenance.mjs +0 -64
  846. package/edition/verify-catalogue-evidence.mjs +0 -247
  847. package/edition/verify-image-evidence.mjs +0 -475
  848. package/edition/verify-image-platforms.mjs +0 -523
  849. package/edition/why.mjs +0 -56
  850. package/edition/workspace-sections.mjs +0 -276
@@ -1,412 +0,0 @@
1
- #!/usr/bin/env node
2
- // ═══════════════════════════════════════════════════════════════════════════
3
- // IS THE COMMITTED EVIDENCE BUNDLE FOR THIS EXACT PRODUCER INPUT STILL USABLE?
4
- //
5
- // node check-committed-image-evidence.mjs \
6
- // --input <producer-input.json> \
7
- // --repository-root <absolute-directory> \
8
- // [--github-output <path>] [--now <epoch-millis>]
9
- //
10
- // WHY THIS EXISTS
11
- //
12
- // Every producing workflow guarded its expensive signing step with
13
- //
14
- // if [ -d "${EVIDENCE_DIR}" ]; then exists=true; fi
15
- //
16
- // and then reported `::notice::… already produced; reusing it`. That step
17
- // verified NOTHING about what is on disk — this repository's most-repeated
18
- // defect, a check that reports green while executing nothing. Concretely it
19
- // let three separate broken states read as "covered":
20
- //
21
- // * a bundle from a PREVIOUS, half-committed run (statement present,
22
- // bundle truncated, descriptor index absent);
23
- // * a bundle whose statement describes a DIFFERENT subject or a different
24
- // source coordinate than the input about to be signed;
25
- // * an EXPIRED bundle. Producer evidence carries a hard `expiresAt` that
26
- // `image-evidence.mjs assertTimeWindow` enforces at verification, and the
27
- // directory-exists guard made expiry UNRECOVERABLE: every re-run of the
28
- // producing workflow saw the directory, skipped production, and the
29
- // distribution simply stayed undeliverable with a green CI.
30
- //
31
- // So the reuse decision is made HERE, by actually reading the bundle:
32
- // reusable ⇔ well-formed AND bound to this exact input AND unexpired with
33
- // enough remaining life to be worth keeping. Anything else re-produces.
34
- //
35
- // WHAT "BOUND TO THIS INPUT" MEANS (each is a real substitution this catches)
36
- //
37
- // * the descriptor index names exactly the input's subject set;
38
- // * every statement parses under the kernel's own
39
- // `parseImageProducerStatement` at the input's contract authority;
40
- // * statement digests match the descriptor, and the DSSE payload inside the
41
- // bundle is byte-identical to the statement (`validateProducedBundle`);
42
- // * the statement's artifact digest is the digest this run is evidencing —
43
- // the directory is NAMED after that digest, so a mismatch means the tree
44
- // was hand-edited or the naming convention moved;
45
- // * source identity (repo/path/commit/tree hash) equals the input's.
46
- //
47
- // EXIT CODES — the distinction is deliberate
48
- //
49
- // 0 a verdict was reached: `reusable=true|false` on stdout / --github-output.
50
- // An unusable or absent bundle is a NORMAL outcome; it means "produce".
51
- // 1 no verdict could be reached: bad arguments, an unreadable repository
52
- // root, kernel schemas that will not load. A tool that cannot decide must
53
- // never answer "reuse".
54
- // ═══════════════════════════════════════════════════════════════════════════
55
-
56
- import { appendFileSync, readFileSync, statSync } from 'node:fs';
57
- import { isAbsolute, join, resolve } from 'node:path';
58
-
59
- import {
60
- WorkspaceRoot,
61
- configureEditionWorkspaceFromArgv,
62
- dataRoot,
63
- isEntryModule,
64
- } from './edition-workspace.mjs';
65
- import {
66
- evidenceDirectoryForDigest,
67
- sha256Digest,
68
- } from './image-evidence.mjs';
69
- import { evidenceSubjectKey } from './image-subject-identity.mjs';
70
- import { loadKernelDistributionSchemas } from './lib.mjs';
71
- import {
72
- assertProducerInput,
73
- buildImageSourceStatements,
74
- readPinnedContractAuthority,
75
- validateProducedBundle,
76
- } from './produce-image-source-evidence.mjs';
77
- import { producerStatementMatchesInput } from './producer-evidence-bundle.mjs';
78
-
79
- /**
80
- * Remaining life below which a technically-valid bundle is re-produced anyway.
81
- *
82
- * A bundle that expires in ten minutes is not reusable in any meaningful sense:
83
- * the release, delivery or appliance install that will read it happens after
84
- * this workflow, not during it. Refusing to hand one forward is what makes the
85
- * refresh path actually reachable instead of theoretically reachable.
86
- *
87
- * Six hours is the smallest window that survives a full re-run of the slowest
88
- * producing lane (emulated arm64 build + merge + attest) plus the release step
89
- * that consumes the result, with room to spare.
90
- */
91
- export const MIN_REMAINING_TTL_SECONDS = 6 * 60 * 60;
92
-
93
- const MAX_EVIDENCE_FILE_BYTES = 4 * 1024 * 1024;
94
-
95
- function readBoundedFile(path) {
96
- const stat = statSync(path);
97
- if (!stat.isFile()) {
98
- throw new Error(`${path} is not a regular file`);
99
- }
100
- if (stat.size > MAX_EVIDENCE_FILE_BYTES) {
101
- throw new Error(
102
- `${path} is ${stat.size} bytes, over the ${MAX_EVIDENCE_FILE_BYTES}-byte evidence file bound`,
103
- );
104
- }
105
- return readFileSync(path);
106
- }
107
-
108
- /** A descriptor path is repository-relative, without traversal or absolutes. */
109
- function assertContainedRelativePath(value, label) {
110
- if (
111
- typeof value !== 'string' ||
112
- value.length === 0 ||
113
- value.startsWith('/') ||
114
- value
115
- .split('/')
116
- .some((segment) => segment === '' || segment === '.' || segment === '..')
117
- ) {
118
- throw new Error(`${label} is not a contained repository-relative path`);
119
- }
120
- return value;
121
- }
122
-
123
- /**
124
- * The reuse verdict for one producer input.
125
- *
126
- * @returns {{ evidenceDirectory: string, reusable: boolean, reason: string }}
127
- */
128
- /**
129
- * The key of an index entry: its subject's evidence identity, which for a composed artifact names the generation, so it is read
130
- * from the statement the entry points at (the index states only kind and id). An entry whose statement cannot be read keeps
131
- * `kind\0id`; the unusable statement is reported below.
132
- */
133
- export function entryKey(entry, absoluteDirectory) {
134
- try {
135
- const { predicate } = JSON.parse(
136
- readBoundedFile(join(absoluteDirectory, assertContainedRelativePath(entry.evidence.statementPath, 'statementPath'))).toString('utf8'),
137
- );
138
- return evidenceSubjectKey({
139
- kind: entry.subjectKind,
140
- id: entry.subjectId,
141
- imageRef: predicate.artifact.imageRepository,
142
- contentHash: predicate.source.sourceTreeHash,
143
- });
144
- } catch {
145
- return `${entry.subjectKind}\0${entry.subjectId}`;
146
- }
147
- }
148
-
149
- const printable = (key) => key.replaceAll('\0', ':');
150
-
151
- export async function assessCommittedEvidence({
152
- input,
153
- repositoryRoot,
154
- schemas,
155
- expectedContractAuthority,
156
- now = Date.now(),
157
- }) {
158
- // The input is validated FIRST and unconditionally: a verdict about the
159
- // committed tree is meaningless if the thing it is compared against is not
160
- // itself a well-formed producer input.
161
- assertProducerInput(input, expectedContractAuthority);
162
- const subjects = input.subjects;
163
- const digests = new Set(subjects.map((subject) => subject.manifestDigest));
164
- if (digests.size !== 1) {
165
- throw new Error(
166
- 'a producer input must evidence exactly one manifest digest; the ' +
167
- `committed evidence tree is keyed by it (got ${[...digests].join(', ')})`,
168
- );
169
- }
170
- const evidenceDirectory = evidenceDirectoryForDigest([...digests][0]);
171
- const absoluteDirectory = join(repositoryRoot, evidenceDirectory);
172
-
173
- const unusable = (reason) => ({ evidenceDirectory, reusable: false, reason });
174
-
175
- let stat;
176
- try {
177
- stat = statSync(absoluteDirectory);
178
- } catch {
179
- return unusable('no evidence has been committed for this digest yet');
180
- }
181
- if (!stat.isDirectory()) {
182
- return unusable(`${evidenceDirectory} exists but is not a directory`);
183
- }
184
-
185
- let indexDocument;
186
- try {
187
- indexDocument = JSON.parse(
188
- readBoundedFile(join(absoluteDirectory, 'producer-evidence.json')).toString(
189
- 'utf8',
190
- ),
191
- );
192
- } catch (error) {
193
- return unusable(
194
- `producer-evidence.json is missing or unreadable: ${error.message}`,
195
- );
196
- }
197
- if (
198
- indexDocument?.schemaVersion !== 1 ||
199
- !Array.isArray(indexDocument.producerEvidence)
200
- ) {
201
- return unusable('producer-evidence.json is not a schemaVersion 1 index');
202
- }
203
-
204
- // The expected statements are REBUILT from the input, so the comparison is
205
- // against exactly what a fresh production would sign — not against a
206
- // hand-written expectation that could drift from the producer.
207
- let expectedStatements;
208
- try {
209
- expectedStatements = buildImageSourceStatements(input, schemas, expectedContractAuthority);
210
- } catch (error) {
211
- throw new Error(
212
- `the producer input does not build a valid statement set: ${error.message}`,
213
- );
214
- }
215
- const expectedByKey = new Map(
216
- expectedStatements.map((statement) => [
217
- evidenceSubjectKey({
218
- kind: statement.predicate.source.kind,
219
- id: statement.predicate.source.id,
220
- imageRef: statement.predicate.artifact.imageRepository,
221
- contentHash: statement.predicate.source.sourceTreeHash,
222
- }),
223
- statement,
224
- ]),
225
- );
226
-
227
- const seen = new Set();
228
- for (const entry of indexDocument.producerEvidence) {
229
- if (entry === null || typeof entry !== 'object') {
230
- return unusable('producer-evidence.json carries a non-object entry');
231
- }
232
- const key = entryKey(entry, absoluteDirectory);
233
- if (seen.has(key)) {
234
- return unusable(`producer-evidence.json duplicates subject ${printable(key)}`);
235
- }
236
- seen.add(key);
237
- const expected = expectedByKey.get(key);
238
- if (expected === undefined) {
239
- return unusable(
240
- `committed evidence carries subject ${printable(key)}, which this input does not evidence`,
241
- );
242
- }
243
- const descriptor = entry.evidence;
244
- if (descriptor === null || typeof descriptor !== 'object') {
245
- return unusable(`subject ${printable(key)} has no evidence descriptor`);
246
- }
247
- let statementBytes;
248
- let bundleBytes;
249
- try {
250
- statementBytes = readBoundedFile(
251
- join(
252
- absoluteDirectory,
253
- assertContainedRelativePath(
254
- descriptor.statementPath,
255
- `subject ${printable(key)} statementPath`,
256
- ),
257
- ),
258
- );
259
- bundleBytes = readBoundedFile(
260
- join(
261
- absoluteDirectory,
262
- assertContainedRelativePath(
263
- descriptor.bundlePath,
264
- `subject ${printable(key)} bundlePath`,
265
- ),
266
- ),
267
- );
268
- } catch (error) {
269
- return unusable(`subject ${printable(key)} artifacts are unreadable: ${error.message}`);
270
- }
271
- if (
272
- sha256Digest(statementBytes) !== descriptor.statementDigest ||
273
- sha256Digest(bundleBytes) !== descriptor.bundleDigest
274
- ) {
275
- return unusable(
276
- `subject ${printable(key)} artifacts do not match the digests producer-evidence.json records`,
277
- );
278
- }
279
- try {
280
- validateProducedBundle(statementBytes, bundleBytes);
281
- } catch (error) {
282
- return unusable(`subject ${printable(key)} bundle is malformed: ${error.message}`);
283
- }
284
- let committed;
285
- try {
286
- committed = schemas.parseImageProducerStatement(
287
- JSON.parse(statementBytes.toString('utf8')),
288
- );
289
- } catch (error) {
290
- return unusable(
291
- `subject ${printable(key)} statement does not parse under the kernel schema: ${error.message}`,
292
- );
293
- }
294
- // producerRun is deliberately fresh on every execution (run id, attempt,
295
- // nonce and validity window). Requiring byte equality with a freshly built
296
- // statement made every retry look stale and caused the evidence commit
297
- // storm. Compare the immutable authority/source/build/artifact binding;
298
- // validate the existing run's own signature and lifetime independently.
299
- if (!producerStatementMatchesInput(committed, expected)) {
300
- return unusable(
301
- `subject ${printable(key)} committed statement is not bound to this producer input ` +
302
- '(authority, source, build, artifact or platform set changed)',
303
- );
304
- }
305
- const expiresAt = Date.parse(committed.predicate.producerRun.expiresAt);
306
- if (!Number.isFinite(expiresAt)) {
307
- return unusable(`subject ${printable(key)} statement has an unreadable expiresAt`);
308
- }
309
- const remainingSeconds = Math.floor((expiresAt - now) / 1000);
310
- if (remainingSeconds <= 0) {
311
- return unusable(
312
- `subject ${printable(key)} evidence EXPIRED at ${committed.predicate.producerRun.expiresAt} — ` +
313
- 'it can never verify again and must be re-produced',
314
- );
315
- }
316
- if (remainingSeconds < MIN_REMAINING_TTL_SECONDS) {
317
- return unusable(
318
- `subject ${printable(key)} evidence expires in ${remainingSeconds}s, under the ` +
319
- `${MIN_REMAINING_TTL_SECONDS}s reuse floor — refreshing it now`,
320
- );
321
- }
322
- }
323
-
324
- const missing = [...expectedByKey.keys()].filter((key) => !seen.has(key));
325
- if (missing.length > 0) {
326
- return unusable(
327
- `committed evidence omits subject(s) ${missing.join(', ')} that this input evidences`,
328
- );
329
- }
330
-
331
- return {
332
- evidenceDirectory,
333
- reusable: true,
334
- reason:
335
- `verified ${seen.size} committed subject bundle(s): well-formed, bound to ` +
336
- 'this exact producer input, and unexpired',
337
- };
338
- }
339
-
340
- function requireValue(flags, name) {
341
- const value = flags.get(name);
342
- if (value === undefined) {
343
- throw new Error(`--${name} is required`);
344
- }
345
- return value;
346
- }
347
-
348
- async function main() {
349
- const args = configureEditionWorkspaceFromArgv(process.argv.slice(2), [
350
- WorkspaceRoot.Data,
351
- WorkspaceRoot.Kernel,
352
- ]);
353
- const flags = new Map();
354
- for (let index = 0; index < args.length; index += 2) {
355
- const flag = args[index];
356
- if (!flag.startsWith('--')) {
357
- throw new Error(`unexpected argument "${flag}"`);
358
- }
359
- const name = flag.slice(2);
360
- const value = args[index + 1];
361
- if (value === undefined || value.startsWith('--')) {
362
- throw new Error(`--${name} requires a value`);
363
- }
364
- if (flags.has(name)) {
365
- throw new Error(`--${name} was given twice`);
366
- }
367
- flags.set(name, value);
368
- }
369
- for (const name of flags.keys()) {
370
- if (!['input', 'repository-root', 'github-output', 'now'].includes(name)) {
371
- throw new Error(`unknown option "--${name}"`);
372
- }
373
- }
374
- const repositoryRoot = resolve(requireValue(flags, 'repository-root'));
375
- if (!isAbsolute(repositoryRoot) || !statSync(repositoryRoot).isDirectory()) {
376
- throw new Error('--repository-root must be an absolute directory');
377
- }
378
- const input = JSON.parse(readFileSync(resolve(requireValue(flags, 'input')), 'utf8'));
379
- const now = flags.has('now') ? Number(flags.get('now')) : Date.now();
380
- if (!Number.isSafeInteger(now) || now <= 0) {
381
- throw new Error('--now must be a positive epoch-millisecond integer');
382
- }
383
- const schemas = await loadKernelDistributionSchemas();
384
- const verdict = await assessCommittedEvidence({
385
- input,
386
- repositoryRoot,
387
- schemas,
388
- expectedContractAuthority: readPinnedContractAuthority({ dataRoot: dataRoot(), schemas }),
389
- now,
390
- });
391
- const line = verdict.reusable
392
- ? `[check-committed-image-evidence] REUSE ${verdict.evidenceDirectory}: ${verdict.reason}`
393
- : `[check-committed-image-evidence] PRODUCE ${verdict.evidenceDirectory}: ${verdict.reason}`;
394
- console.log(line);
395
- const githubOutput = flags.get('github-output');
396
- if (githubOutput !== undefined) {
397
- appendFileSync(
398
- githubOutput,
399
- `reusable=${verdict.reusable}\n` +
400
- `evidence-directory=${verdict.evidenceDirectory}\n` +
401
- `reason=${verdict.reason.replaceAll('\n', ' ')}\n`,
402
- 'utf8',
403
- );
404
- }
405
- }
406
-
407
- if (isEntryModule(import.meta.url)) {
408
- main().catch((error) => {
409
- console.error(`[check-committed-image-evidence] ${error.message}`);
410
- process.exitCode = 1;
411
- });
412
- }
@@ -1,283 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { execFileSync } from 'node:child_process';
4
- import { existsSync, mkdirSync, readFileSync } from 'node:fs';
5
- import { dirname, resolve } from 'node:path';
6
-
7
- import { readCrossRepoBuildInputsRecord, splitCrossRepoInputKey } from './cross-repo-build-inputs.mjs';
8
- import { discoverDistributionIds } from './distribution-paths.mjs';
9
- import { editionWorkspaceConfig } from './edition-config.mjs';
10
- import { readEditionSourcePins } from './edition-source-pins.mjs';
11
- import { WorkspaceRoot, configureEditionWorkspaceFromProcess, configuredWorkspace, editionsRoot, isEntryModule, platformServiceIndexPath, runtimeImageSourceIndexPath, sourcesRoot } from './edition-workspace.mjs';
12
- import { holdSource, withSourceGitEnv } from './git-source-auth.mjs';
13
- import { applyPinSource, snapshotPinSource } from './pin-source.mjs';
14
- import { shallowCheckout, shallowFetch } from './shallow-checkout.mjs';
15
- import { readStrictJsonFile } from './strict-json.mjs';
16
-
17
- const REPO_PATH = /^(repos|submodules)\/([a-z0-9][a-z0-9-]*)$/;
18
- const SHA = /^[a-f0-9]{40}$/;
19
-
20
- export function sourceCheckoutPlan(index, { sourceRepositoryUrlPrefix }) {
21
- if (!Array.isArray(index?.repositoryPins) || index.repositoryPins.length === 0) {
22
- throw new Error('runtime image source index declares no repositoryPins');
23
- }
24
- const seen = new Set();
25
- return index.repositoryPins.map((pin) => {
26
- const match = REPO_PATH.exec(String(pin?.repo ?? ''));
27
- if (!match) {throw new Error(`invalid repository checkout path ${JSON.stringify(pin?.repo)}`);}
28
- if (seen.has(pin.repo)) {throw new Error(`duplicate repository pin ${pin.repo}`);}
29
- seen.add(pin.repo);
30
- const expectedUrl = `${sourceRepositoryUrlPrefix}${match[2]}.git`;
31
- const suffixlessExpectedUrl = expectedUrl.slice(0, -4);
32
- if (pin.repositoryUrl !== expectedUrl && pin.repositoryUrl !== suffixlessExpectedUrl) {
33
- throw new Error(
34
- `${pin.repo} repositoryUrl must be ${expectedUrl} (the equivalent suffixless GitHub URL is also accepted); got ${pin.repositoryUrl}`,
35
- );
36
- }
37
- if (!SHA.test(String(pin.sourceCommit ?? ''))) {
38
- throw new Error(`${pin.repo} sourceCommit is not exact lowercase 40-hex`);
39
- }
40
- if (!SHA.test(String(pin.vendoredSourceCommit ?? ''))) {
41
- throw new Error(`${pin.repo} vendoredSourceCommit is not exact lowercase 40-hex`);
42
- }
43
- return Object.freeze({
44
- repo: pin.repo,
45
- repositoryUrl: pin.repositoryUrl,
46
- sourceCommit: pin.sourceCommit,
47
- vendoredSourceCommit: pin.vendoredSourceCommit,
48
- });
49
- });
50
- }
51
-
52
- function git(args, env) {
53
- execFileSync('git', args, { env, stdio: 'inherit' });
54
- }
55
-
56
- /**
57
- * The SOURCE-axis commit a checkout must also hold when it differs from the
58
- * image-axis `sourceCommit`: dist-check, publish-editions, seal-image-digests and
59
- * store-publish read vendored and content-only bytes at `vendoredSourceCommit`.
60
- * Maps repo to that commit; repositories whose axes are equal are absent.
61
- */
62
- export function sourceAxisExtraCommits(plan) {
63
- return new Map(
64
- plan.filter((entry) => entry.vendoredSourceCommit !== entry.sourceCommit).map((entry) => [entry.repo, entry.vendoredSourceCommit]),
65
- );
66
- }
67
-
68
- /**
69
- * The extra commits each checkout must also hold: resolve reads every platform
70
- * service's manifest at the `sourceCommit` platform-service-index.json pins, and
71
- * that commit may differ from the repository's own pin. Maps repo to the
72
- * distinct such commits (excluding the pinned one). A platform service whose
73
- * repository has no pin is refused: there is no checkout to fetch into.
74
- */
75
- export function platformServiceExtraCommits(plan, platformServiceIndex) {
76
- if (!Array.isArray(platformServiceIndex?.services)) {
77
- throw new Error('platform-service-index.json declares no services array');
78
- }
79
- const pinned = new Map(plan.map((entry) => [entry.repo, entry.sourceCommit]));
80
- const extra = new Map();
81
- for (const service of platformServiceIndex.services) {
82
- if (!pinned.has(service?.repo)) {
83
- throw new Error(
84
- `platform service "${service?.name}" names repository ${JSON.stringify(service?.repo)}, which has no repository pin in the runtime image source index`,
85
- );
86
- }
87
- if (!SHA.test(String(service.sourceCommit ?? ''))) {
88
- throw new Error(`platform service "${service.name}" sourceCommit is not exact lowercase 40-hex`);
89
- }
90
- if (service.sourceCommit === pinned.get(service.repo)) {continue;}
91
- if (!extra.has(service.repo)) {extra.set(service.repo, new Set());}
92
- extra.get(service.repo).add(service.sourceCommit);
93
- }
94
- return new Map([...extra].map(([repo, commits]) => [repo, [...commits]]));
95
- }
96
-
97
- /**
98
- * The commits each checkout must also hold for the editions that hold a
99
- * repository (`sourcePins`): per repository, the distinct held commits other
100
- * than the repository's own pin. A held repository is also one whose published
101
- * history is needed, so containment in `origin/main` can be shown: those repos
102
- * are in the returned map even when every held commit is the pin itself.
103
- * A held repository without a repository pin is refused: there is no checkout
104
- * to fetch into.
105
- *
106
- * @param {{ repo: string, sourceCommit: string }[]} plan
107
- * @param {Map<string, { repo: string, ref: string }[]>} sourcePinsByEdition
108
- * @returns {Map<string, string[]>}
109
- */
110
- export function editionHeldCommits(plan, sourcePinsByEdition) {
111
- const pinned = new Map(plan.map((entry) => [entry.repo, entry.sourceCommit]));
112
- const held = new Map();
113
- for (const [id, sourcePins] of sourcePinsByEdition) {
114
- for (const { repo, ref } of sourcePins) {
115
- if (!pinned.has(repo)) {
116
- throw new Error(`edition "${id}" holds ${repo}, which has no repository pin in the runtime image source index`);
117
- }
118
- if (!held.has(repo)) {held.set(repo, new Set());}
119
- if (ref !== pinned.get(repo)) {held.get(repo).add(ref);}
120
- }
121
- }
122
- return new Map([...held].map(([repo, commits]) => [repo, [...commits]]));
123
- }
124
-
125
- /**
126
- * The commits each checkout must also hold because a consumer's cross-repo
127
- * build-input record vendors bytes from them. The resolve hashes those paths at
128
- * the record's commit (`resolveCrossRepoVendoredInputs`), and that commit lags
129
- * or leads the source repository's own pin. The record is read AT THE
130
- * CONSUMER'S PIN, by the same reader the resolve uses, from the consumer's
131
- * checkout under `workspaceRoot` (so every repository must already be checked
132
- * out). Maps source repo to the distinct such commits, excluding the commits
133
- * the checkout already holds. A consumer or source repository without a
134
- * repository pin is refused: there is no checkout to read or fetch into.
135
- *
136
- * @param {{ repo: string, sourceCommit: string, vendoredSourceCommit: string }[]} plan
137
- * @returns {Map<string, string[]>}
138
- */
139
- export function crossRepoVendoredCommits(plan, index, workspaceRoot) {
140
- const pins = new Map(plan.map((entry) => [entry.repo, entry]));
141
- const consumers = [...new Set((index.crossRepoBuildInputs ?? []).map((input) => input.consumerRepo))].sort();
142
- const extra = new Map();
143
- for (const consumerRepo of consumers) {
144
- const consumer = pins.get(consumerRepo);
145
- if (!consumer) {
146
- throw new Error(`cross-repo build inputs name consumer ${JSON.stringify(consumerRepo)}, which has no repository pin in the runtime image source index`);
147
- }
148
- const record = readCrossRepoBuildInputsRecord({
149
- consumerRepo,
150
- consumerRepoDir: resolve(workspaceRoot, consumerRepo),
151
- consumerCommit: consumer.sourceCommit,
152
- });
153
- for (const [key, commit] of record) {
154
- const [sourceRepo] = splitCrossRepoInputKey(key);
155
- const source = pins.get(sourceRepo);
156
- if (!source) {
157
- throw new Error(
158
- `${consumerRepo} at ${consumer.sourceCommit} vendors from ${JSON.stringify(sourceRepo)}, which has no repository pin in the runtime image source index`,
159
- );
160
- }
161
- if (!SHA.test(String(commit ?? ''))) {
162
- throw new Error(`${consumerRepo} at ${consumer.sourceCommit} vendors from ${sourceRepo} at a sourceCommit that is not exact lowercase 40-hex`);
163
- }
164
- if (commit === source.sourceCommit || commit === source.vendoredSourceCommit) {continue;}
165
- if (!extra.has(sourceRepo)) {extra.set(sourceRepo, new Set());}
166
- extra.get(sourceRepo).add(commit);
167
- }
168
- }
169
- return new Map([...extra].map(([repo, commits]) => [repo, [...commits].sort()]));
170
- }
171
-
172
- /** The `sourcePins` of every edition under the configured editions root. */
173
- export function readEditionsSourcePins() {
174
- return new Map(
175
- discoverDistributionIds(editionsRoot())
176
- .map((id) => [id, readEditionSourcePins(id)])
177
- .filter(([, sourcePins]) => sourcePins.length > 0),
178
- );
179
- }
180
-
181
- /**
182
- * Second pass, once every repository sits at its pin: fetch the commits the
183
- * consumers' cross-repo build-input records vendor from.
184
- */
185
- export function fetchCrossRepoVendoredCommits({ workspaceRoot, plan, index, workspace, env, runGit }) {
186
- const vendored = crossRepoVendoredCommits(plan, index, workspaceRoot);
187
- for (const entry of plan) {
188
- const commits = vendored.get(entry.repo);
189
- if (!commits) {continue;}
190
- withSourceGitEnv({ name: entry.repo, url: entry.repositoryUrl }, { workspace, env }, (gitEnv) => {
191
- for (const commit of commits) {
192
- shallowFetch({ runGit, gitEnv, target: resolve(workspaceRoot, entry.repo), commit });
193
- console.log(`[source-checkout] ${entry.repo} also holds cross-repo vendored commit ${commit}`);
194
- }
195
- });
196
- }
197
- }
198
-
199
- export function checkoutIndexedSources({ workspaceRoot, index, platformServiceIndex, editionSourcePins = new Map(), env = process.env, runGit = git }) {
200
- if (!workspaceRoot) {throw new Error('workspaceRoot is required');}
201
- const workspace = editionWorkspaceConfig();
202
- const plan = sourceCheckoutPlan(index, workspace);
203
- const extraCommits = platformServiceExtraCommits(plan, platformServiceIndex);
204
- const sourceAxisCommits = sourceAxisExtraCommits(plan);
205
- const heldCommits = editionHeldCommits(plan, editionSourcePins);
206
- for (const entry of plan) {holdSource({ name: entry.repo, url: entry.repositoryUrl }, workspace, env);}
207
- for (const entry of plan) {
208
- const target = resolve(workspaceRoot, entry.repo);
209
- if (existsSync(target)) {
210
- throw new Error(`${entry.repo} target already exists; refusing to reuse an unverified checkout`);
211
- }
212
- withSourceGitEnv({ name: entry.repo, url: entry.repositoryUrl }, { workspace, env }, (gitEnv) => {
213
- mkdirSync(dirname(target), { recursive: true });
214
- shallowCheckout({ runGit, gitEnv, target, url: entry.repositoryUrl, commit: entry.sourceCommit });
215
- const actual = execFileSync('git', ['-C', target, 'rev-parse', 'HEAD'], {
216
- env: gitEnv,
217
- encoding: 'utf8',
218
- }).trim();
219
- if (actual !== entry.sourceCommit) {
220
- throw new Error(`${entry.repo} resolved ${actual}, expected ${entry.sourceCommit}`);
221
- }
222
- if (sourceAxisCommits.has(entry.repo)) {
223
- const commit = sourceAxisCommits.get(entry.repo);
224
- shallowFetch({ runGit, gitEnv, target, commit });
225
- console.log(`[source-checkout] ${entry.repo} also holds source-axis commit ${commit}`);
226
- }
227
- for (const commit of extraCommits.get(entry.repo) ?? []) {
228
- shallowFetch({ runGit, gitEnv, target, commit });
229
- console.log(`[source-checkout] ${entry.repo} also holds platform-service commit ${commit}`);
230
- }
231
- // A repository an edition holds: its main history (containment in origin/main is checked from it,
232
- // with no depth), then each held commit.
233
- if (heldCommits.has(entry.repo)) {
234
- runGit(['-C', target, 'fetch', '--quiet', 'origin', '+refs/heads/main:refs/remotes/origin/main'], gitEnv);
235
- for (const commit of heldCommits.get(entry.repo)) {
236
- shallowFetch({ runGit, gitEnv, target, commit });
237
- console.log(`[source-checkout] ${entry.repo} also holds edition-held commit ${commit}`);
238
- }
239
- }
240
- });
241
- console.log(`[source-checkout] ${entry.repo} @ ${entry.sourceCommit}`);
242
- }
243
- fetchCrossRepoVendoredCommits({ workspaceRoot, plan, index, workspace, env, runGit });
244
- return plan.length;
245
- }
246
-
247
- const SNAPSHOT_PINS_FLAG = '--snapshot-pins';
248
-
249
- /**
250
- * `--snapshot-pins <file>` is the only argument: with it, the plan is the
251
- * develop graph (the data root's firstPartySources) at that snapshot (the
252
- * develop edition's frozen pins), never the committed index's repositoryPins;
253
- * without it, the committed index untouched.
254
- */
255
- export function indexForCheckout(committedIndex, argv) {
256
- if (argv.length === 0) {return committedIndex;}
257
- if (argv[0] !== SNAPSHOT_PINS_FLAG || argv.length !== 2 || argv[1].startsWith('--')) {
258
- throw new Error(`usage: checkout-indexed-source-repositories.mjs [${SNAPSHOT_PINS_FLAG} <pins.json>]`);
259
- }
260
- return applyPinSource(committedIndex, snapshotPinSource(readStrictJsonFile(argv[1])));
261
- }
262
-
263
- if (isEntryModule(import.meta.url)) {
264
- try {
265
- configureEditionWorkspaceFromProcess([WorkspaceRoot.Data, WorkspaceRoot.Sources]);
266
- // `--editions-root` is optional: given, the plan also holds every edition's held commits.
267
- const withEditions = configuredWorkspace()[WorkspaceRoot.Editions] !== undefined;
268
- if (withEditions && process.argv.length > 2) {
269
- throw new Error('--editions-root and --snapshot-pins do not combine: a snapshot replaces every pin, so no edition holds a repository');
270
- }
271
- const index = indexForCheckout(JSON.parse(readFileSync(runtimeImageSourceIndexPath(), 'utf8')), process.argv.slice(2));
272
- const count = checkoutIndexedSources({
273
- workspaceRoot: sourcesRoot(),
274
- index,
275
- editionSourcePins: withEditions ? readEditionsSourcePins() : new Map(),
276
- platformServiceIndex: JSON.parse(readFileSync(platformServiceIndexPath(), 'utf8')),
277
- });
278
- console.log(`[source-checkout] materialized ${count} indexed repositories at exact commits`);
279
- } catch (error) {
280
- console.error(`[source-checkout] ${error.message}`);
281
- process.exit(1);
282
- }
283
- }