@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,713 +0,0 @@
1
- import { execFileSync } from 'node:child_process';
2
- import {
3
- existsSync,
4
- mkdtempSync,
5
- readFileSync,
6
- realpathSync,
7
- rmSync,
8
- } from 'node:fs';
9
- import { tmpdir } from 'node:os';
10
- import { join, relative, resolve, sep } from 'node:path';
11
-
12
- import { BUILD_LEDGER_FILE, readBuildLedger } from './build-ledger.mjs';
13
- import { dataRoot, sourcesRoot } from './edition-workspace.mjs';
14
-
15
- export const PUBLISHED_SOURCE_REF = 'refs/remotes/origin/main';
16
-
17
- export const DistributionSourceMode = Object.freeze({
18
- Published: 'published',
19
- Workspace: 'workspace',
20
- });
21
-
22
- function git(directory, args, options = {}) {
23
- return execFileSync('git', ['-C', directory, ...args], {
24
- encoding: 'utf8',
25
- stdio: ['ignore', 'pipe', 'pipe'],
26
- ...options,
27
- }).trim();
28
- }
29
-
30
- function exactCommit(directory, ref, label) {
31
- try {
32
- return git(directory, ['rev-parse', '--verify', `${ref}^{commit}`]);
33
- } catch {
34
- throw new Error(`${label} has no exact Git commit at ${ref}`);
35
- }
36
- }
37
-
38
- /**
39
- * How far back to look for a built commit before refusing. Generous on purpose:
40
- * the fleet commits 150-353 times a day and builds 4-12 times, so the newest
41
- * built commit is routinely dozens of commits behind the tip.
42
- */
43
- const BUILT_COMMIT_SEARCH_LIMIT = 500;
44
-
45
- /**
46
- * Every commit this repository has PUBLISHED AN IMAGE FROM, read out of the
47
- * committed evidence tree.
48
- *
49
- * `predicate.source.sourceCommit` in each signed in-toto statement records the
50
- * exact commit its image was built from. That is a fact in git, at the ref being
51
- * resolved — no network, no registry credential, no clock. Keeping this resolver
52
- * pure-git is deliberate: it decides what every distribution lock names, so a
53
- * network dependency here would make the whole release plane fail differently
54
- * depending on whether ghcr answered.
55
- *
56
- * A repository with NO evidence tree publishes no images (it contributes
57
- * vendored content only, like xema-connectors). For those the tip is the right
58
- * answer and always was.
59
- */
60
- /**
61
- * The committed projection of "which commits of this repository have a
62
- * published image", written by `project-build-ledger.mjs` from the registry's
63
- * own tags.
64
- *
65
- * WHY A LEDGER AND NOT THE REGISTRY DIRECTLY. This resolver decides what every
66
- * distribution lock names, and the README states the property that depends on
67
- * it: locks contain only immutable inputs, so two runs over the same sources
68
- * produce byte-identical CONTENT and an identical `inputHash`.
69
- *
70
- * That sentence used to read "byte-identical files", and measured over two full
71
- * producer runs on 2026-09-06 it is false by exactly one field: every
72
- * `distribution.lock.json` carries a wall-clock `resolvedAt`, so all eight
73
- * differ on every run while their content and `inputHash` are stable, and
74
- * `images.lock.json` and the three indexes are byte-identical. The property
75
- * this paragraph is defending is unaffected — `resolvedAt` is provenance and
76
- * feeds no hash — but a determinism claim that a single `diff` disproves is
77
- * one nobody trusts the second time, so it is stated precisely instead.
78
- *
79
- * A live registry read would make lock
80
- * generation depend on registry state at that instant and on the token's
81
- * package visibility — the same sources would resolve differently on Tuesday
82
- * and Thursday, and differently again for a different credential. A committed
83
- * ledger is addressed by a ref, so it is part of "the same sources". It also
84
- * keeps this path pure-git, which is what lets it run with no network at all.
85
- *
86
- * WHY NOT THE EVIDENCE TREE ALONE. It was the only source until 2026-09-02, and
87
- * four of the five producing repositories had stopped writing it on 2026-08-25
88
- * when they moved to publishing OCI referrers — a change whose commit message
89
- * says nothing about evidence. So the reader and the producers spoke different
90
- * media, silently: measured that day, `xema-cultivars` resolved to an 2026-08-25
91
- * commit 153 behind its tip, and the tip WAS built and tagged in the registry.
92
- * A pin frozen eight days in the past is what kept a fix for a production
93
- * crashloop out of every image built from it.
94
- */
95
- export { BUILD_LEDGER_FILE };
96
-
97
- /**
98
- * Read the committed ledger. A caller that resolves many repositories should
99
- * read it ONCE and pass it in — the parameter exists for that, not for tests.
100
- *
101
- * A malformed ledger THROWS rather than degrading to "no builds recorded":
102
- * degrading would silently re-pin every repository to its bare tip, which is
103
- * precisely the defect the ledger exists to prevent. An ABSENT ledger is a
104
- * different fact and is allowed — it means this checkout has not projected one
105
- * yet, and the evidence tree still answers.
106
- */
107
- export function loadBuildLedger(
108
- distributionsDir = dataRoot(),
109
- ) {
110
- const ledger = readBuildLedger(distributionsDir);
111
- if (ledger === null) {return null;}
112
- return Object.fromEntries(
113
- Object.entries(ledger.repositories).map(([repo, entry]) => [repo, entry.commits]),
114
- );
115
- }
116
-
117
- /**
118
- * The committed record of which commit each source repository is pinned at.
119
- *
120
- * WHY THIS IS THE AUTHORITY AND NOT A CACHE — the argument is
121
- * {@link createPinnedSourceAuthority}'s and is not repeated here. What this
122
- * function adds is that the record is reachable WITHOUT `lib.mjs`, so a builder
123
- * can read it before anything that needs the kernel dist or the aggregator
124
- * layout, and so this module keeps its one dependency rule: `node:` builtins
125
- * only, resolvable from a bare checkout with no install.
126
- *
127
- * `runtime-image-source-index.json` OWNS these pins — it is the one artifact
128
- * whose job is to decide them. Every other derived artifact READS them. That is
129
- * the whole of "one authority": the decider resolves the world, and the
130
- * consumers resolve the decider.
131
- *
132
- * A MISSING or MALFORMED index THROWS rather than degrading to "no pins
133
- * recorded". Degrading would silently re-resolve every repository from its tip,
134
- * which is precisely the defect the pins exist to prevent — and it would do it
135
- * in the one situation nobody is watching, a checkout where the file failed to
136
- * read. `loadBuildLedger` takes the same posture for the same reason, and
137
- * differs on the ABSENT case only because an absent ledger is a real state
138
- * (this checkout has not projected one) while an absent pin index is not: no
139
- * edition can resolve without it.
140
- */
141
- export const RUNTIME_IMAGE_SOURCE_INDEX_FILE = 'runtime-image-source-index.json';
142
-
143
- export function committedRepositoryPins(
144
- distributionsDir = dataRoot(),
145
- ) {
146
- const path = join(distributionsDir, RUNTIME_IMAGE_SOURCE_INDEX_FILE);
147
- let raw;
148
- try {
149
- raw = JSON.parse(readFileSync(path, 'utf8'));
150
- } catch (error) {
151
- throw new Error(
152
- `Cannot read the committed source pins from ${path}: ${error.message}. ` +
153
- `Every derived artifact in this plane resolves each repository's commit ` +
154
- `through that record; there is no fallback to a live resolution, because ` +
155
- `falling back is how one repository's refresh silently re-pins every other.`,
156
- );
157
- }
158
- const pins = raw?.repositoryPins;
159
- if (!Array.isArray(pins) || pins.length === 0) {
160
- throw new Error(
161
- `${RUNTIME_IMAGE_SOURCE_INDEX_FILE} declares no repositoryPins`,
162
- );
163
- }
164
- return pins;
165
- }
166
-
167
- let defaultLedger;
168
-
169
- function ledgerCommits(repo, ledger) {
170
- let repositories = ledger;
171
- if (repositories === undefined) {
172
- if (defaultLedger === undefined) {defaultLedger = loadBuildLedger();}
173
- repositories = defaultLedger;
174
- }
175
- if (repositories === null) {return null;}
176
- const commits = repositories[repo];
177
- return Array.isArray(commits) && commits.length > 0 ? commits : null;
178
- }
179
-
180
- /**
181
- * Every commit this repository has published an image from, as the UNION of the
182
- * two records of that one fact: the committed evidence tree and the build
183
- * ledger. Union rather than precedence, because neither can produce a false
184
- * positive — each is a record that a build actually happened — while either
185
- * alone has been measured missing whole repositories.
186
- */
187
- export function builtCommits(directory, ref, repo, ledger) {
188
- const fromTree = evidenceTreeCommits(directory, ref);
189
- const fromLedger = ledgerCommits(repo, ledger);
190
- // Null from BOTH means neither record has ever heard of this repository, so
191
- // it publishes no images and its tip is right. An EMPTY union is a different
192
- // fact — something recorded this repository and named no usable commit — and
193
- // it must reach the refusal below rather than be read as "publishes nothing".
194
- // Collapsing the two would silently re-pin to the bare tip, which is the one
195
- // outcome this whole function exists to prevent.
196
- if (fromTree === null && fromLedger === null) {return null;}
197
- const union = new Set(fromTree ?? []);
198
- for (const commit of fromLedger ?? []) {
199
- if (/^[0-9a-f]{40}$/u.test(commit)) {union.add(commit);}
200
- }
201
- return union;
202
- }
203
-
204
- function evidenceTreeCommits(directory, ref) {
205
- let listing;
206
- try {
207
- listing = git(directory, ['ls-tree', '-r', '--name-only', ref, 'evidence/'], {
208
- maxBuffer: 64 * 1024 * 1024,
209
- });
210
- } catch {
211
- return null;
212
- }
213
- const statements = listing
214
- .split('\n')
215
- .filter((file) => /statements\/[^/]+\.json$/u.test(file));
216
- if (statements.length === 0) {return null;}
217
-
218
- const commits = new Set();
219
- for (const file of statements) {
220
- let statement;
221
- try {
222
- statement = JSON.parse(
223
- git(directory, ['show', `${ref}:${file}`], { maxBuffer: 16 * 1024 * 1024 }),
224
- );
225
- } catch {
226
- continue;
227
- }
228
- const commit = statement?.predicate?.source?.sourceCommit;
229
- if (typeof commit === 'string' && /^[0-9a-f]{40}$/u.test(commit)) {
230
- commits.add(commit);
231
- }
232
- }
233
- return commits.size > 0 ? commits : null;
234
- }
235
-
236
- /**
237
- * Resolve the immutable release source without consulting local HEAD.
238
- *
239
- * THIS RETURNS THE NEWEST *BUILT* COMMIT, NOT THE TIP, and the difference is the
240
- * whole point.
241
- *
242
- * It returned `refs/remotes/origin/main` verbatim until 2026-09-01, with nothing
243
- * checking that anything had ever been built there. Measured that day against
244
- * the last twelve `xema-base` commits, probing ghcr for a published `:<sha>`
245
- * tag: ONE had an image, and that one only because it had been hand-dispatched.
246
- * Builds run 4-12 a day against 150-353 commits, so an arbitrary tip is almost
247
- * never buildable — most of `main` is `evidence(base)` receipts, which are
248
- * authored by `github-actions[bot]` and therefore get no CI run under GitHub's
249
- * anti-recursion rule, hence no `workflow_run`, hence no build.
250
- *
251
- * The consequence was not subtle. A re-pin that landed on an unbuilt commit made
252
- * every distribution lock declare coordinates the registry answers
253
- * MANIFEST_UNKNOWN for — 41 of 43 after one such re-pin — and `Verify image
254
- * platforms` went red across every edition. The producer and the resolver held
255
- * two different definitions of "the release commit": a commit that was BUILT,
256
- * versus whatever is at the tip.
257
- *
258
- * Building the missing coordinate by hand clears the symptom at one commit and
259
- * leaves this mechanism intact, so the next re-pin reproduces it. This is the
260
- * mechanism.
261
- */
262
- /**
263
- * The published TIP of a source repository — the SOURCE-provenance axis.
264
- *
265
- * ── TWO AXES, ONE PUBLISHED FACT ──
266
- *
267
- * This and {@link publishedSourceCommit} read the SAME ref and differ only in
268
- * what they are allowed to SELECT from it, which is the whole distinction:
269
- *
270
- * - **image provenance** asks *"which commit did we actually build an image
271
- * from?"* and must therefore walk back to published image evidence;
272
- * - **source provenance** asks *"where do these vendored bytes come from?"*
273
- * and needs only a commit that is published and immutable.
274
- *
275
- * Answering the second question with the first answer is not conservative, it
276
- * is WRONG, and the way it fails is structural rather than occasional:
277
- *
278
- * a CONTENT-ONLY component — one with no `api/` directory, shipping no
279
- * service — can never produce an image, therefore never earns image
280
- * evidence, therefore can never be named by the image axis, therefore its
281
- * source changes CANNOT REACH A CONSUMER'S IMAGE AT ALL.
282
- *
283
- * Measured 2026-09-14: `biomes/platform/memory-maintenance` in `xema-cultivars`
284
- * is exactly that shape. Its agent frontmatter had migrated `modelClass` ->
285
- * `modelLane`; the fix sat on that repository's `main`, and the image-evidence
286
- * pin could only name a commit 130 behind it that still carried the retired
287
- * key. `biome-host-api` baked the stale file, its own strict parser refused it,
288
- * and the new ReplicaSet crashlooped in production while the previous one kept
289
- * serving — so the defect was invisible to every health signal.
290
- *
291
- * `publishedSourceCommit` already contained half of this distinction and could
292
- * not express it: its `built === null` arm returns the tip for a repository
293
- * that publishes no images at all. That arm is right, and it was keyed on the
294
- * REPOSITORY when the question belongs to the SUBJECT — a repository that
295
- * publishes some images still vendors content-only source out of it.
296
- *
297
- * ── THIS IS NOT A RETURN TO "WHATEVER HEAD HAPPENED TO BE" ──
298
- *
299
- * Nothing here reads local `HEAD` or a working tree, and the value is resolved
300
- * ONCE into a committed pin that the build then reads. The revision stays
301
- * DECLARED; only the menu it is declared from stops being restricted to
302
- * commits that happen to have shipped an image.
303
- */
304
- export function publishedSourceTip(directory, repo) {
305
- try {
306
- return exactCommit(
307
- directory,
308
- PUBLISHED_SOURCE_REF,
309
- `source repository "${repo}"`,
310
- );
311
- } catch {
312
- throw new Error(
313
- `source repository "${repo}" has no ${PUBLISHED_SOURCE_REF} — a distribution ` +
314
- `pin must name a published commit. Fetch the repository before regenerating.`,
315
- );
316
- }
317
- }
318
-
319
- export function publishedSourceCommit(directory, repo, { ledger } = {}) {
320
- const tip = publishedSourceTip(directory, repo);
321
-
322
- const built = builtCommits(directory, PUBLISHED_SOURCE_REF, repo, ledger);
323
- // Neither record knows this repository, so it publishes no images at all
324
- // (xema-connectors contributes vendored content only). Nothing about it can
325
- // be unbuildable and the tip is exactly right — as it always was.
326
- if (built === null) {return tip;}
327
-
328
- let walked;
329
- try {
330
- walked = git(directory, [
331
- 'rev-list',
332
- `--max-count=${BUILT_COMMIT_SEARCH_LIMIT}`,
333
- tip,
334
- ]).split('\n');
335
- } catch {
336
- throw new Error(
337
- `source repository "${repo}" could not be walked back from ${PUBLISHED_SOURCE_REF}`,
338
- );
339
- }
340
-
341
- for (const commit of walked) {
342
- if (built.has(commit)) {return commit;}
343
- }
344
-
345
- // Fail fast and loudly. Silently falling back to the tip is the defect this
346
- // function exists to remove, and a pin nobody can build is worse than a
347
- // refusal somebody can read.
348
- throw new Error(
349
- `source repository "${repo}" has no commit with published image evidence within ` +
350
- `${BUILT_COMMIT_SEARCH_LIMIT} commits of ${PUBLISHED_SOURCE_REF}. A distribution ` +
351
- `pin must name a commit an image was actually built from — pinning the bare tip ` +
352
- `is what made every lock declare coordinates the registry answers ` +
353
- `MANIFEST_UNKNOWN for. Build that repository at a recent commit, or widen ` +
354
- `BUILT_COMMIT_SEARCH_LIMIT if its release cadence is genuinely slower than that.`,
355
- );
356
- }
357
-
358
- function validateRepository(repoRoot, repo, knownRepositories) {
359
- if (!knownRepositories.has(repo)) {
360
- throw new Error(
361
- `source repository "${repo}" is not in the explicit distribution source repository set`,
362
- );
363
- }
364
- const directory = resolve(repoRoot, repo);
365
- const rel = relative(repoRoot, directory);
366
- if (rel === '' || rel === '..' || rel.startsWith(`..${sep}`)) {
367
- throw new Error(`source repository "${repo}" resolves outside the aggregator`);
368
- }
369
- if (!existsSync(directory)) {
370
- throw new Error(
371
- `source repository "${repo}" is missing at ${directory}; source resolution never falls back to another authority`,
372
- );
373
- }
374
- const actualTopLevel = realpathSync(
375
- git(directory, ['rev-parse', '--show-toplevel']),
376
- );
377
- if (actualTopLevel !== realpathSync(directory)) {
378
- throw new Error(
379
- `source repository "${repo}" resolves to ${directory}, but Git reports top-level ${actualTopLevel}`,
380
- );
381
- }
382
- return directory;
383
- }
384
-
385
- function workspaceSnapshotCommit(directory, repo) {
386
- const head = exactCommit(directory, 'HEAD', `workspace repository "${repo}"`);
387
- const temporary = mkdtempSync(join(tmpdir(), 'xema-distribution-source-'));
388
- const indexPath = join(temporary, 'index');
389
- const env = { ...process.env, GIT_INDEX_FILE: indexPath };
390
- try {
391
- git(directory, ['read-tree', head], { env });
392
- git(directory, ['add', '-A', '--', '.'], { env });
393
- const tree = git(directory, ['write-tree'], { env });
394
- const headTree = git(directory, ['rev-parse', `${head}^{tree}`]);
395
- if (tree === headTree) {return { commit: head, head, dirty: false };}
396
- const commit = execFileSync(
397
- 'git',
398
- ['-C', directory, 'commit-tree', tree, '-p', head],
399
- {
400
- encoding: 'utf8',
401
- input: 'xema local workspace source snapshot\n',
402
- stdio: ['pipe', 'pipe', 'pipe'],
403
- env: {
404
- ...process.env,
405
- GIT_AUTHOR_NAME: 'Xema Workspace Source',
406
- GIT_AUTHOR_EMAIL: 'workspace-source@xema.invalid',
407
- GIT_AUTHOR_DATE: '2000-01-01T00:00:00Z',
408
- GIT_COMMITTER_NAME: 'Xema Workspace Source',
409
- GIT_COMMITTER_EMAIL: 'workspace-source@xema.invalid',
410
- GIT_COMMITTER_DATE: '2000-01-01T00:00:00Z',
411
- },
412
- },
413
- ).trim();
414
- return { commit, head, dirty: true };
415
- } finally {
416
- rmSync(temporary, { recursive: true, force: true });
417
- }
418
- }
419
-
420
- export function parseSourceModeArgs(argv) {
421
- const remaining = [];
422
- let mode = DistributionSourceMode.Published;
423
- let declared = false;
424
- for (let index = 0; index < argv.length; index += 1) {
425
- if (argv[index] !== '--source') {
426
- remaining.push(argv[index]);
427
- continue;
428
- }
429
- if (declared) {throw new Error('--source may be declared only once');}
430
- const value = argv[index + 1];
431
- if (!Object.values(DistributionSourceMode).includes(value)) {
432
- throw new Error('--source requires exactly "published" or "workspace"');
433
- }
434
- mode = value;
435
- declared = true;
436
- index += 1;
437
- }
438
- return { mode, remaining };
439
- }
440
-
441
- /**
442
- * The delegate a pure-record authority is given: one that cannot answer.
443
- *
444
- * Its message names the repository AND says what asking would have cost, so a
445
- * reader meeting it in a stack trace does not have to find this file to learn
446
- * why a resolution that works everywhere else is refused here.
447
- */
448
- function refusingDelegate() {
449
- const refuse = (repo) => {
450
- throw new Error(
451
- `source repository "${repo}" reached a LIVE resolution from an artifact ` +
452
- `whose commits are decided by the committed pins. Nothing downstream of ` +
453
- `runtime-image-source-index.json may ask the world what a repository's ` +
454
- `commit is: that is a second authority, and it moves pins nobody asked ` +
455
- `to move. Refresh the pin itself (build-runtime-image-source-index.mjs ` +
456
- `--trusted-write --repo ${repo}), or declare the live resolution ` +
457
- `explicitly with --unpinned.`,
458
- );
459
- };
460
- return Object.freeze({
461
- mode: DistributionSourceMode.Published,
462
- commitForRepository: refuse,
463
- vendoredSourceCommitForRepository: refuse,
464
- });
465
- }
466
-
467
- /**
468
- * A source authority that RESOLVES exactly one repository and answers every
469
- * other from a set of pins already decided.
470
- *
471
- * ── WHY THE PIN SET IS THE AUTHORITY AND NOT A CACHE ──
472
- *
473
- * `commitForRepository` asks the world a live question — "what is the newest
474
- * commit of this repository with published image evidence?" — and the answer
475
- * moves whenever a build lands. Every derived artifact that calls it therefore
476
- * re-decides every repository's pin on every run, and two artifacts derived
477
- * minutes apart can disagree. `resolve-images` already refuses that
478
- * disagreement: it re-reads each biome manifest at the RUNTIME INDEX's pin and
479
- * fails when the biome index was built from a different commit.
480
- *
481
- * So the pins are not an optimisation. They are the DECISION, and a refresh
482
- * that means to move one of them must leave the rest exactly where they are —
483
- * otherwise shipping a fix in one repository silently re-pins every other,
484
- * and every subject derived from a moved pin becomes a coordinate the registry
485
- * must already be serving.
486
- *
487
- * A repository with neither a pin nor the refresh scope is a REFUSAL. Falling
488
- * through to a live resolution would reintroduce the drift by the back door,
489
- * in the one case nobody is looking at — a repository that JOINED the index
490
- * since the pins were written.
491
- */
492
- export function createPinnedSourceAuthority({
493
- delegate,
494
- refreshRepository,
495
- pins,
496
- }) {
497
- // A refresh scope is the ONLY thing that can reach the live resolver, so it is
498
- // the only thing that needs one. Omitting the delegate is the ordinary case
499
- // for a CONSUMER artifact — one whose commits are all decided already — and it
500
- // is substituted with a delegate that THROWS rather than left undefined.
501
- //
502
- // That substitution is the point rather than a convenience. "No repository was
503
- // resolved live" is otherwise a property of the CALL SITE, provable only by
504
- // reading it and re-provable after every edit; with a refusing delegate it is
505
- // a property of the OBJECT, and a future edit that reaches for a live answer
506
- // fails loudly at the moment it does. It is the positive control that proved
507
- // `biome-index.json` is already pin-derived, kept rather than thrown away.
508
- if (refreshRepository !== undefined && !delegate) {
509
- throw new Error(
510
- 'a pinned source authority with a refresh scope needs a delegate to resolve it',
511
- );
512
- }
513
- const live = delegate ?? refusingDelegate();
514
- const byRepo = new Map();
515
- for (const pin of pins ?? []) {byRepo.set(pin.repo, pin);}
516
- if (byRepo.size === 0) {
517
- throw new Error('a pinned source authority needs at least one pin');
518
- }
519
- if (refreshRepository !== undefined && !byRepo.has(refreshRepository)) {
520
- throw new Error(
521
- `refresh scope "${refreshRepository}" has no pin to refresh. A repository ` +
522
- `joining the index joins through build-runtime-image-source-index.mjs ` +
523
- `--trusted-write --repo ${refreshRepository}, which writes every index.`,
524
- );
525
- }
526
- const pinned = (repo, field) => {
527
- const pin = byRepo.get(repo);
528
- if (!pin) {
529
- throw new Error(
530
- `source repository "${repo}" has no committed pin and is not the ` +
531
- `refresh scope. Refusing to resolve it live: that is how a scoped ` +
532
- `refresh silently re-pins a repository nobody asked about.`,
533
- );
534
- }
535
- return pin[field];
536
- };
537
- return Object.freeze({
538
- // A record of pins carries no mode of its own, and only PUBLISHED mode can
539
- // have produced one: a workspace snapshot is local-only and unpublishable by
540
- // construction, so it is never written to this index. Stated rather than
541
- // defaulted — a reader asking a pure-record authority for its mode is asking
542
- // what produced the pins, and the answer is not "whatever the caller had".
543
- mode: delegate?.mode ?? DistributionSourceMode.Published,
544
- commitForRepository(repo) {
545
- if (repo === refreshRepository) {return live.commitForRepository(repo);}
546
- return pinned(repo, 'sourceCommit');
547
- },
548
- vendoredSourceCommitForRepository(repo) {
549
- if (repo === refreshRepository) {
550
- return live.vendoredSourceCommitForRepository(repo);
551
- }
552
- return pinned(repo, 'vendoredSourceCommit');
553
- },
554
- });
555
- }
556
-
557
- /**
558
- * Pin ONE repository at an EXACT named commit, and answer every other from the
559
- * delegate.
560
- *
561
- * WHY A NAMED COMMIT AND NOT "THE NEWEST BUILT ONE". `publishedSourceCommit`
562
- * asks the world a question whose answer moves whenever a build lands, so a
563
- * refresh that means to ship a SPECIFIC fix is a race against the fleet: the
564
- * operator names the commit that carries the fix, the resolver picks whatever is
565
- * newest at the instant it runs, and the two are the same value only until they
566
- * are not. The ruling this plane now follows says the pin is an EXACT SOURCE
567
- * REF; this is how an operator states one.
568
- *
569
- * It is a NARROWING, never a widening. The commit must exist, must be a real
570
- * commit object, and must be CONTAINED IN the published ref — so this cannot pin
571
- * a topic branch, a commit that was force-pushed away, or anything a consumer
572
- * could not fetch. What it can do is name a commit OLDER than the newest built
573
- * one, which is the whole point: that is a deliberate hold-back or a deliberate
574
- * choice of the commit that carries a fix.
575
- *
576
- * It does NOT verify the commit was built. `publishedSourceCommit` exists to
577
- * stop an ARBITRARY tip being pinned, and its refusal text explains what that
578
- * cost; an operator naming a commit by hand has taken that decision explicitly,
579
- * and the coordinate is proven by `dist:verify-platforms` against the real
580
- * registry either way. Substituting the resolver's judgement for the operator's
581
- * here would make the flag a suggestion.
582
- */
583
- export function createExactCommitSourceAuthority({
584
- delegate,
585
- repo,
586
- commit,
587
- repoRoot = sourcesRoot(),
588
- }) {
589
- if (!delegate) {throw new Error('an exact-commit authority needs a delegate');}
590
- if (!/^[0-9a-f]{40}$/u.test(String(commit ?? ''))) {
591
- throw new Error(
592
- `--at requires a full 40-character commit sha, not "${String(commit)}". ` +
593
- `An abbreviation is ambiguous across repositories and a ref is not exact.`,
594
- );
595
- }
596
- const directory = resolve(repoRoot, repo);
597
- let resolved;
598
- try {
599
- resolved = git(directory, ['rev-parse', '--verify', `${commit}^{commit}`]);
600
- } catch {
601
- throw new Error(
602
- `source repository "${repo}" has no commit ${commit}. Fetch it before pinning.`,
603
- );
604
- }
605
- if (resolved !== commit) {
606
- throw new Error(
607
- `${commit} resolves to ${resolved} in "${repo}" — pass the commit itself.`,
608
- );
609
- }
610
- try {
611
- git(directory, [
612
- 'merge-base',
613
- '--is-ancestor',
614
- commit,
615
- PUBLISHED_SOURCE_REF,
616
- ]);
617
- } catch {
618
- throw new Error(
619
- `${commit} is not contained in ${PUBLISHED_SOURCE_REF} of "${repo}". A ` +
620
- `distribution pin must name a PUBLISHED commit: anything else cannot be ` +
621
- `fetched by a consumer and can be force-pushed away under the lock.`,
622
- );
623
- }
624
- return Object.freeze({
625
- mode: delegate.mode,
626
- commitForRepository(target) {
627
- return target === repo ? commit : delegate.commitForRepository(target);
628
- },
629
- vendoredSourceCommitForRepository(target) {
630
- // BOTH axes. The two-axis split exists because a content-only biome can
631
- // never earn image evidence and so must be read at the SOURCE tip rather
632
- // than at a possibly-much-older image commit. An operator naming an exact
633
- // commit has answered both questions at once, and leaving the source axis
634
- // on the live tip would put a moving value back into a pin the operator
635
- // asked to be exact — half a race is still a race.
636
- return target === repo
637
- ? commit
638
- : delegate.vendoredSourceCommitForRepository(target);
639
- },
640
- });
641
- }
642
-
643
- export function createSourceAuthority({
644
- mode = DistributionSourceMode.Published,
645
- repoRoot = sourcesRoot(),
646
- knownRepositories,
647
- log = console.log,
648
- } = {}) {
649
- if (!Object.values(DistributionSourceMode).includes(mode)) {
650
- throw new Error(`unknown distribution source mode "${String(mode)}"`);
651
- }
652
- if (
653
- !knownRepositories ||
654
- typeof knownRepositories === 'string' ||
655
- typeof knownRepositories[Symbol.iterator] !== 'function'
656
- ) {
657
- throw new Error(
658
- 'source authority requires the caller to declare its source repositories',
659
- );
660
- }
661
- const known = new Set(knownRepositories);
662
- if (known.size === 0) {
663
- throw new Error('source authority repository declaration must not be empty');
664
- }
665
- const resolvedRoot = realpathSync(repoRoot);
666
- const identities = new Map();
667
- const vendored = new Map();
668
- return Object.freeze({
669
- mode,
670
- /**
671
- * The SOURCE-provenance revision — see {@link publishedSourceTip} for why
672
- * this is a different question from `commitForRepository`.
673
- *
674
- * In WORKSPACE mode the two deliberately coincide: a workspace snapshot is
675
- * local-only and unpublishable by construction, so there is no image-
676
- * evidence constraint to diverge from and no second fact to resolve.
677
- */
678
- vendoredSourceCommitForRepository(repo) {
679
- const cached = vendored.get(repo);
680
- if (cached) {return cached;}
681
- const directory = validateRepository(resolvedRoot, repo, known);
682
- if (mode !== DistributionSourceMode.Published) {
683
- return this.commitForRepository(repo);
684
- }
685
- const commit = publishedSourceTip(directory, repo);
686
- vendored.set(repo, commit);
687
- log(
688
- `[source-authority] vendored-source ${repo}@${commit} (${PUBLISHED_SOURCE_REF} tip)`,
689
- );
690
- return commit;
691
- },
692
- commitForRepository(repo) {
693
- const cached = identities.get(repo);
694
- if (cached) {return cached.commit;}
695
- const directory = validateRepository(resolvedRoot, repo, known);
696
- if (mode === DistributionSourceMode.Published) {
697
- const commit = publishedSourceCommit(directory, repo);
698
- identities.set(repo, { commit });
699
- log(
700
- `[source-authority] published ${repo}@${commit} (${PUBLISHED_SOURCE_REF})`,
701
- );
702
- return commit;
703
- }
704
- const snapshot = workspaceSnapshotCommit(directory, repo);
705
- identities.set(repo, snapshot);
706
- log(
707
- `[source-authority] workspace ${repo}@${snapshot.commit} ` +
708
- `(HEAD ${snapshot.head}; ${snapshot.dirty ? 'dirty snapshot — local only, do not publish' : 'clean'})`,
709
- );
710
- return snapshot.commit;
711
- },
712
- });
713
- }