@xemahq/xema 0.59.1 → 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 -1423
  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 -2351
  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,491 +0,0 @@
1
- // develop-follow — the body of `xema edition develop follow`: the pins a dev deployment's follow policy selects.
2
- //
3
- // A dev deployment follows a reviewed distribution DEFINITION at its develop head: `--definition-at
4
- // <owner>/<repo>,<path>,<dataRoot>` names the repository, the distribution directory and the data root inside it,
5
- // each repository-relative. `follow` writes the COMPLETE frozen pin set a `develop resolve` reads, once (wx), and reads
6
- // no edition and no catalogue. It reuses, and never restates, two existing rules:
7
- //
8
- // members every develop-graph member at the newest commit of its signed build records (select-records'
9
- // selectRecords / newestCommitOnDevelop), with the pins of the CURRENT input (--current-pins) as the
10
- // published pins: a member whose records are not ahead of its current pin keeps it, one whose records
11
- // diverged from it is refused by name (DivergedFromPublishedError).
12
- // tooling the data and kernel pins and the editions root keep freeze-graph's rules unchanged (freezeGraph):
13
- // each checked-out root is pinned at what is checked out, and the kernel commit must declare an edition
14
- // protocol this CLI supports; the deploy pin is chosen as below. The members enter freezeGraph as its
15
- // member pins (freeze-graph --member-pins: a member that keeps its current resolution is pinned at its
16
- // develop head, never selected). From current pins, each root is then classified against its current pin by ancestry in the root's OWN
17
- // checkout (classifyToolingRoot): equal is kept, a descendant advanced, an ancestor refused
18
- // (ToolingRootBehindError), an unrelated commit refused (ToolingRootDivergedError), and a current pin the
19
- // checkout does not hold refused (ToolingRootHistoryMissingError: never fetched, never guessed; the follow
20
- // job checks the roots out with full history). A first follow has nothing to classify against and says so.
21
- // deploy --deploy-sha is an UPPER BOUND, never the pin (the engine publishes on workflow_run after the deploy
22
- // root's CI, so the head can be ahead of its engine): the pin is the newest first-parent commit of the deploy
23
- // checkout at or below it whose engine `<--engine-repository>:sha-<12 hex>` the registry already serves.
24
- // An unpublished commit is skipped; none published within ENGINE_WALK_LIMIT commits is refused by name
25
- // (NoPublishedEngineError); any registry answer but 404 is operational, never a skip. The walk is
26
- // deterministic: the same checkout and registry choose the same commit. The summary names it and the
27
- // skip count. A walk that ends short of the limit at a shallow boundary or an absent parent is refused
28
- // (ToolingRootHistoryMissingError), never read as "no engine published". The chosen commit is then classified against the current deploy pin like every tooling
29
- // root, so a walk that lands behind it is refused (ToolingRootBehindError). Only existence is judged
30
- // here; the engine's signature stays the apply's check.
31
- // sources every source the definition's chain declares, at its develop head (freezeSources), then newer-wins
32
- // against its current pin by the same ancestry rule (newestCommitOnDevelop; a head equal to the pin
33
- // fetches nothing); a diverged source is refused by name, and a current pin absent from the develop
34
- // history of the source's declared URL is refused as a URL change (FollowSourceUrlChangedError).
35
- //
36
- // seals the previous seals the resolve carries generations forward from, frozen so a retry reads no "newest":
37
- // the OFFERING's newest signed develop edition, read ONCE here from its edition repository through
38
- // previous-seal-registry.mjs (--previous-seal-signer, verified offline with the pinned cosign), its
39
- // images.lock bytes and sha256; and the CUSTOMER edition's own previous seal, a follow input passed through
40
- // (--previous-lock <file> --previous-lock-sha256 <hex>, held to its sha256, or --first-seal). They are
41
- // written once into --seals-out: offering.images.lock.json, customer.images.lock.json (absent on a first
42
- // seal) and seals.json naming each file and its sha256 (followSealsDocument). The catalogue-free resolve
43
- // takes the offering's as --offering-previous-lock and the customer's as --previous-lock.
44
- //
45
- // The data root checkout IS the definition's repository, held for consistency with the caller's checkout (the
46
- // declared repository URL is read from a file inside that checkout, so this is no trust boundary): the data root
47
- // declares the definition's repository, the checkout is clean (untracked files included) at --data-sha, the data root
48
- // and the distribution directory are the definition's dataRoot and path, and the editions root is that same
49
- // repository (there is no --editions-root-url). The kernel checkout is at --kernel-sha. A follow starts from exactly
50
- // one of `--first` (a FIRST follow, and the summary it prints says so) or `--current-pins <file>`.
51
-
52
- import { execFileSync, spawnSync } from 'node:child_process';
53
- import { existsSync, mkdirSync, realpathSync, writeFileSync } from 'node:fs';
54
- import { basename, join, normalize, relative } from 'node:path';
55
-
56
- import { canonicalPublicHttpsRepositoryUrl } from './canonical-repository-url.mjs';
57
- import { headResolver, writeOnce } from './customer-edition-verbs.mjs';
58
- import { DEFINITION_AT_FLAG } from './customer-flags.mjs';
59
- import { engineTagOf } from './develop-engine-image.mjs';
60
- import { freezeGraph, freezeSources } from './develop-freeze.mjs';
61
- import { developGraphMembers } from './develop-graph.mjs';
62
- import { PUBLISHED_PIN_TAG, RecordCommitNotOnDevelopError, newestCommitOnDevelop } from './develop-record-ancestry.mjs';
63
- import { declaredDataRootRepositoryUrl, withRecordVerifier } from './develop-record-verify.mjs';
64
- import { selectRecords } from './develop-select-records.mjs';
65
- import { assertCommitPins } from './develop-selection-pins.mjs';
66
- import { VERIFY_IMAGE_RECORD_BRANCH as DEVELOP_RECORD_BRANCH } from './develop-verify-image-record.mjs';
67
- import { assertCanonicalDistributionId } from './distribution-paths.mjs';
68
- import { editionRepository } from './edition-artifact.mjs';
69
- import { editionWorkspaceConfig } from './edition-config.mjs';
70
- import { EditionChannel } from './edition-constants.mjs';
71
- import { dataRoot, deployRoot, editionsRoot, kernelRepoDir } from './edition-workspace.mjs';
72
- import { assertKernelCommitSupported } from './kernel-protocol-choice.mjs';
73
- import { compareStrings, loadKernelDistributionSchemas, serializeJson } from './lib.mjs';
74
- import { SnapshotPinNamespace, dataPinKey, deployPinKey, kernelPinKey, snapshotPinNamespace, snapshotPinSource, sortedSnapshotPins } from './pin-source.mjs';
75
- import { PREVIOUS_SEAL_SIGNER_FLAG, previousSealFromRegistry } from './previous-seal-registry.mjs';
76
- import { splitImageRef } from './registry-credentials.mjs';
77
- import { composeEdition } from './resolve-distribution.mjs';
78
- import { readPreviousLockBytes } from './resolve-images.mjs';
79
- import { isNotPublishedYet } from './seal-image-digests.mjs';
80
- import { readStrictJsonFile } from './strict-json.mjs';
81
-
82
- const REPOSITORY_PATTERN = /^[A-Za-z0-9][A-Za-z0-9-]*\/[A-Za-z0-9._-]+$/;
83
- const RELATIVE_SEGMENT = /^[A-Za-z0-9._-]+$/;
84
- const SHA_PATTERN = /^[0-9a-f]{40}$/;
85
- // A repository, never a tag or a digest: `<registry>[:port]/<path>`.
86
- const ENGINE_REPOSITORY_PATTERN = /^[a-z0-9.-]+(:[0-9]+)?(\/[a-z0-9._-]+)+$/;
87
-
88
- /** How many first-parent commits of the deploy checkout, the upper bound included, the engine walk reads. */
89
- export const ENGINE_WALK_LIMIT = 50;
90
-
91
- /** No commit at or below the upper bound has a published engine within the walk. */
92
- export class NoPublishedEngineError extends Error {
93
- constructor({ upperBound, engineRepository, walked }) {
94
- super(`no deploy-root commit at or below --deploy-sha ${upperBound} has a published engine in ${engineRepository} within ${walked} first-parent commit(s) (limit ${ENGINE_WALK_LIMIT}): publish the engine for a develop commit (the deploy root's CI) and follow again`);
95
- this.name = 'NoPublishedEngineError';
96
- }
97
- }
98
-
99
- /**
100
- * The newest commit of `commits` (first-parent order, newest first, the upper bound first) whose engine tag the
101
- * registry serves: `{ deploySha, upperBound, skipped }`. A 404 skips the commit; any other failure throws.
102
- */
103
- export async function selectPublishedEngineCommit({ commits, upperBound, engineRepository, client }) {
104
- if (commits[0] !== upperBound) {
105
- throw new Error(`the deploy walk starts at ${commits[0] ?? 'nothing'}, not at --deploy-sha ${upperBound}`);
106
- }
107
- for (const [skipped, commit] of commits.slice(0, ENGINE_WALK_LIMIT).entries()) {
108
- try {
109
- await client.getManifestByTag(engineRepository, engineTagOf(commit));
110
- return { deploySha: commit, upperBound, skipped };
111
- } catch (error) {
112
- if (!isNotPublishedYet(error)) {
113
- throw new Error(`follow: the registry did not answer for the engine ${engineRepository}:${engineTagOf(commit)}: ${error.message}`);
114
- }
115
- }
116
- }
117
- throw new NoPublishedEngineError({ upperBound, engineRepository, walked: Math.min(commits.length, ENGINE_WALK_LIMIT) });
118
- }
119
-
120
- /**
121
- * The first-parent commits of the deploy checkout from `upperBound` back, newest first, at most the walk limit, read
122
- * from the local object store only (never a lazy fetch). A walk that ends short of the limit must end at the root
123
- * commit: a shallow checkout, or a commit of the walk whose object is absent (an absent --deploy-sha or an absent first
124
- * parent, where git refuses the walk), is ToolingRootHistoryMissingError, never a short walk read as "no engine
125
- * published".
126
- */
127
- export function deployCommitsAtOrBelow(upperBound, git = runLocalGitText) {
128
- if (!SHA_PATTERN.test(upperBound ?? '')) {throw new Error(`--deploy-sha is not a 40-hex commit SHA: ${JSON.stringify(upperBound)}`);}
129
- const dir = deployRoot();
130
- let listed;
131
- try {
132
- listed = git(['rev-list', '--first-parent', `--max-count=${ENGINE_WALK_LIMIT}`, upperBound], dir);
133
- } catch (error) {
134
- throw absentCommitOfWalk(upperBound, dir, git) ?? error;
135
- }
136
- const commits = listed.split('\n').filter(Boolean);
137
- if (commits.length < ENGINE_WALK_LIMIT && git(['rev-parse', '--is-shallow-repository'], dir) === 'true') {
138
- throw new ToolingRootHistoryMissingError(deployPinKey(), commits.at(-1) ?? upperBound, dir, 'history below the shallow boundary');
139
- }
140
- return commits;
141
- }
142
-
143
- /** The ToolingRootHistoryMissingError for the first commit of the first-parent walk from `upperBound` the checkout does not hold, or undefined. */
144
- function absentCommitOfWalk(upperBound, dir, git) {
145
- const holds = (commit) => {
146
- try {
147
- git(['cat-file', '-e', `${commit}^{commit}`], dir);
148
- return true;
149
- } catch {
150
- return false;
151
- }
152
- };
153
- let commit = upperBound;
154
- for (let walked = 0; walked < ENGINE_WALK_LIMIT; walked += 1) {
155
- if (!holds(commit)) {
156
- return new ToolingRootHistoryMissingError(deployPinKey(), commit, dir, walked === 0 ? '--deploy-sha' : 'first parent of the walk\'s last commit');
157
- }
158
- // the commit object's own header: rev-list would need the parent object to name it
159
- const firstParent = /^parent ([0-9a-f]{40})$/m.exec(git(['cat-file', 'commit', commit], dir).split('\n\n')[0])?.[1];
160
- if (firstParent === undefined) {return undefined;}
161
- commit = firstParent;
162
- }
163
- return undefined;
164
- }
165
-
166
- /** How a follow started: from no input (first) or from the pins of the current input. */
167
- export const FollowStart = Object.freeze({ First: 'first', FromCurrent: 'from-current' });
168
-
169
- /** The flag naming the followed definition triple (freeze-sources' and resolve's `--definition` is a file). */
170
- export const FOLLOW_DEFINITION_FLAG = DEFINITION_AT_FLAG;
171
-
172
- /** A repository-relative path: `.` or `/`-separated plain segments, never absolute, never `..`. */
173
- function relativePath(text, what, flag) {
174
- if (text === '.') {return '.';}
175
- const segments = text.split('/');
176
- if (text === '' || segments.some((segment) => !RELATIVE_SEGMENT.test(segment) || segment === '.' || segment === '..')) {
177
- throw new Error(`${flag} ${what} ${JSON.stringify(text)} is not a repository-relative path ("." or plain segments joined by "/")`);
178
- }
179
- return segments.join('/');
180
- }
181
-
182
- /** `<owner>/<repo>,<path>,<dataRoot>` (of `flag`: follow's --definition-at, or the catalogue-free resolve's --offering) -> `{ repository, path, dataRoot }`. */
183
- export function parseFollowDefinition(text, flag = FOLLOW_DEFINITION_FLAG) {
184
- const parts = typeof text === 'string' ? text.split(',') : [];
185
- if (parts.length !== 3) {
186
- throw new Error(`${flag} is <owner>/<repo>,<path>,<dataRoot>, got ${JSON.stringify(text)}`);
187
- }
188
- const [repository, path, root] = parts;
189
- if (!REPOSITORY_PATTERN.test(repository)) {
190
- throw new Error(`${flag} repository ${JSON.stringify(repository)} is not <owner>/<repo>`);
191
- }
192
- const definition = { repository, path: relativePath(path, 'path', flag), dataRoot: relativePath(root, 'dataRoot', flag) };
193
- if (definition.path === '.') {throw new Error(`${flag} path names the distribution directory, never the repository root`);}
194
- assertCanonicalDistributionId(basename(definition.path));
195
- return definition;
196
- }
197
-
198
- /** The `--current-pins` file (a follow's own output, a bare pin map): key -> 40-hex commit, every key in a snapshot pin namespace. */
199
- export function readCurrentPins(path) {
200
- const pins = readStrictJsonFile(path);
201
- if (pins === null || typeof pins !== 'object' || Array.isArray(pins)) {
202
- throw new Error(`--current-pins ${path} must be an object mapping pin key -> 40-hex commit`);
203
- }
204
- for (const key of Object.keys(pins)) {snapshotPinNamespace(key);}
205
- return assertCommitPins(pins, `--current-pins ${path}`);
206
- }
207
-
208
- const runGitText = (args, cwd) => execFileSync('git', args, { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }).trim();
209
- /** runGitText that never lazily fetches a missing object (a partial clone answers from what it holds). */
210
- const runLocalGitText = (args, cwd) => execFileSync('git', args, { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], env: { ...process.env, GIT_NO_LAZY_FETCH: '1' } }).trim();
211
-
212
- /**
213
- * Consistency with the caller's checkout: the data root checkout is the definition, the repository the data root
214
- * declares, clean (untracked files included) at --data-sha, with the data root and the editions root's distribution
215
- * directory at the definition's dataRoot and path. Returns the id.
216
- */
217
- export function assertDefinitionCheckout({ definition, dataSha, git = runGitText, flag = FOLLOW_DEFINITION_FLAG, shaLabel = '--data-sha' }) {
218
- const declared = canonicalPublicHttpsRepositoryUrl(declaredDataRootRepositoryUrl(), 'the data root\'s dataRootRepositoryUrl');
219
- const named = canonicalPublicHttpsRepositoryUrl(`https://github.com/${definition.repository}.git`, `${flag} repository`);
220
- if (declared !== named) {
221
- throw new Error(`${flag} names ${definition.repository}, but the data root is the repository ${declared}: the data root is the definition's own`);
222
- }
223
- const top = realpathSync(git(['rev-parse', '--show-toplevel'], dataRoot()));
224
- const head = git(['rev-parse', 'HEAD'], top);
225
- if (head !== dataSha) {
226
- throw new Error(`${shaLabel} is ${dataSha}, but the definition checkout ${top} is at ${head}`);
227
- }
228
- const dirty = git(['status', '--porcelain', '--untracked-files=all'], top);
229
- if (dirty !== '') {
230
- throw new Error(`the definition checkout ${top} has uncommitted or untracked changes: the definition is read only as committed at ${shaLabel}`);
231
- }
232
- const at = (dir) => normalize(relative(top, realpathSync(dir)) || '.');
233
- if (at(dataRoot()) !== normalize(definition.dataRoot)) {
234
- throw new Error(`--data-root is ${at(dataRoot())} of the definition checkout, but ${flag} names the data root ${definition.dataRoot}`);
235
- }
236
- const id = basename(definition.path);
237
- if (!existsSync(join(editionsRoot(), id))) {
238
- throw new Error(`the editions root holds no "${id}", but ${flag} names ${definition.path}`);
239
- }
240
- if (at(join(editionsRoot(), id)) !== normalize(definition.path)) {
241
- throw new Error(`the editions root holds "${id}" at ${at(join(editionsRoot(), id))} of the definition checkout, but ${flag} names ${definition.path}`);
242
- }
243
- return id;
244
- }
245
-
246
- /** How a tooling root's followed commit stands against its current pin. */
247
- export const ToolingRootVerdict = Object.freeze({ Kept: 'kept', Advanced: 'advanced', Added: 'added' });
248
-
249
- /** The followed commit of a tooling root is an ancestor of its current pin: the follow would take it backwards. */
250
- export class ToolingRootBehindError extends Error {
251
- constructor(key, followed, current) {
252
- super(`${key}: the followed commit ${followed} is behind the current pin ${current} (an ancestor of it): a follow never takes a tooling root backwards; check out the current commit or a descendant`);
253
- this.name = 'ToolingRootBehindError';
254
- }
255
- }
256
-
257
- /** The followed commit of a tooling root and its current pin are not ancestor-related. */
258
- export class ToolingRootDivergedError extends Error {
259
- constructor(key, followed, current) {
260
- super(`${key}: the followed commit ${followed} and the current pin ${current} are not ancestor-related`);
261
- this.name = 'ToolingRootDivergedError';
262
- }
263
- }
264
-
265
- /** The root's checkout does not hold one of the two commits (`role`: the current pin or the followed commit), so they cannot be compared: refused, never fetched. */
266
- export class ToolingRootHistoryMissingError extends Error {
267
- constructor(key, commit, dir, role) {
268
- super(`${key}: the checkout ${dir} does not hold the ${role} ${commit}: check the root out with full history (fetch-depth 0) and follow again`);
269
- this.role = role;
270
- this.name = 'ToolingRootHistoryMissingError';
271
- }
272
- }
273
-
274
- /** `{ status, stderr }` of one git run in `dir`, never lazily fetching a missing object. */
275
- const runGitStatus = (args, dir) => {
276
- const result = spawnSync('git', args, { cwd: dir, env: { ...process.env, GIT_NO_LAZY_FETCH: '1' }, encoding: 'utf8' });
277
- if (result.error !== undefined || result.status === null) {throw new Error(`git ${args[0]} could not run in ${dir}: ${result.error?.message ?? `killed by ${result.signal}`}`);}
278
- return { status: result.status, stderr: result.stderr };
279
- };
280
-
281
- /**
282
- * A tooling root's followed commit against its current pin, by ancestry in the root's own checkout `dir`: kept or
283
- * advanced, otherwise a typed refusal. Equal commits answer without git.
284
- */
285
- export function classifyToolingRoot({ key, dir, followed, current, git = runGitStatus }) {
286
- if (followed === current) {return ToolingRootVerdict.Kept;}
287
- for (const [role, commit] of [['current pin', current], ['followed commit', followed]]) {
288
- if (git(['cat-file', '-e', `${commit}^{commit}`], dir).status !== 0) {throw new ToolingRootHistoryMissingError(key, commit, dir, role);}
289
- }
290
- // 0 = ancestor, 1 = not; anything else is git failing, never a verdict
291
- const isAncestor = (older, newer) => {
292
- const result = git(['merge-base', '--is-ancestor', older, newer], dir);
293
- if (result.status === 0) {return true;}
294
- if (result.status === 1) {return false;}
295
- throw new Error(`follow: ${key}: git merge-base ${older} ${newer} failed in ${dir} (exit ${result.status}): ${result.stderr.trim()}`);
296
- };
297
- if (isAncestor(current, followed)) {return ToolingRootVerdict.Advanced;}
298
- if (isAncestor(followed, current)) {throw new ToolingRootBehindError(key, followed, current);}
299
- throw new ToolingRootDivergedError(key, followed, current);
300
- }
301
-
302
- /** A source's current pin is not in the develop history of its declared URL: the URL changed (or develop was rewritten). */
303
- export class FollowSourceUrlChangedError extends Error {
304
- constructor(key, url, current) {
305
- super(`follow: ${key}: the current pin ${current} is not in the develop history of the declared URL ${url}: the source's repository URL changed since the current input (or its develop was rewritten); a follow never carries a pin across a URL change, so follow with --first`);
306
- this.name = 'FollowSourceUrlChangedError';
307
- }
308
- }
309
-
310
- /**
311
- * The newer of a source's develop head and its current pin, through the one ancestry rule. A head equal to the pin
312
- * answers without a fetch; the pin missing from the URL's develop history is a URL change, never a record refusal.
313
- */
314
- export function followSourceAncestry({ key, url, head, published, newest }) {
315
- if (head === published) {return published;}
316
- try {
317
- return newest({ member: { repo: key, repositoryUrl: url }, candidates: [{ commit: head, tag: 'develop head' }], published, context: 'follow' }).commit;
318
- } catch (error) {
319
- if (error instanceof RecordCommitNotOnDevelopError && error.commit === published && error.tags.includes(PUBLISHED_PIN_TAG)) {
320
- throw new FollowSourceUrlChangedError(key, url, published);
321
- }
322
- throw error;
323
- }
324
- }
325
-
326
- /** The tooling root pin keys with the checkout each is classified in. */
327
- const toolingRoots = () => [
328
- { key: dataPinKey(), dir: () => dataRoot() },
329
- { key: kernelPinKey(), dir: () => kernelRepoDir() },
330
- { key: deployPinKey(), dir: () => deployRoot() },
331
- ];
332
-
333
- /** The kernel checkout is at --kernel-sha (consistency with the caller's checkout). */
334
- export function assertKernelCheckout({ kernelSha, git = runGitText }) {
335
- const head = git(['rev-parse', 'HEAD'], kernelRepoDir());
336
- if (head !== kernelSha) {throw new Error(`--kernel-sha is ${kernelSha}, but the kernel checkout ${kernelRepoDir()} is at ${head}`);}
337
- }
338
-
339
- /** Exactly one of `--first` and `--current-pins <file>`: the current pins, or undefined for a first follow. */
340
- export function followStartOf(options) {
341
- const first = options['--first'] === true;
342
- const current = options['--current-pins'];
343
- if (first === (current !== undefined)) {
344
- throw new Error('follow takes exactly one of --first (no current input) or --current-pins <file> (the pins of the current input)');
345
- }
346
- return first ? undefined : readCurrentPins(current);
347
- }
348
-
349
- /** What moved between the current pins and the followed ones, sorted. */
350
- function followSummary(currentPins, pins, tooling) {
351
- if (currentPins === undefined) {return { follow: FollowStart.First, tooling: 'not classified: a first follow has no current pins', advanced: [], kept: [], added: Object.keys(pins), dropped: [] };}
352
- const keys = (filter) => Object.keys(pins).filter(filter).sort(compareStrings);
353
- return {
354
- follow: FollowStart.FromCurrent,
355
- tooling,
356
- advanced: keys((key) => key in currentPins && currentPins[key] !== pins[key]),
357
- kept: keys((key) => currentPins[key] === pins[key]),
358
- added: keys((key) => !(key in currentPins)),
359
- dropped: Object.keys(currentPins).filter((key) => !(key in pins)).sort(compareStrings),
360
- };
361
- }
362
-
363
- /**
364
- * The follow, over injected readers: `selectDeploy()` answers the deploy pin (selectPublishedEngineCommit), `select(publishedPins)` answers select-records' `{ pins }` for the graph members,
365
- * `declaredSourcesAt(graphPins)` the sources the definition's chain declares at the graph pins (composeEdition, as
366
- * freeze-sources reads them), `ancestry({ key, url, head, published })` the newer of a source's head and its current pin
367
- * (or a refusal), `classifyRoot({ key, followed, current })` a tooling root against its current pin (or a refusal).
368
- *
369
- * @returns {Promise<{ pins: Record<string, string>, summary: object }>}
370
- */
371
- export async function followDevelop({ dataSha, kernelSha, selectDeploy, currentPins, members, select, resolveHead, holdSource, declaredSourcesAt, ancestry, classifyRoot }) {
372
- const graph = new Set(members.map((member) => member.repo));
373
- const published = currentPins === undefined ? undefined : Object.fromEntries(Object.entries(currentPins).filter(([key]) => graph.has(key)));
374
- const deploy = await selectDeploy();
375
- const selection = await select(published);
376
- // The members are freezeGraph's member pins (freeze-graph --member-pins): its tooling rules (checked-out roots, editions
377
- // root) apply unchanged, and a member that keeps its current resolution is pinned at its develop head.
378
- const graphPins = freezeGraph({ dataSha, kernelSha, deploySha: deploy.deploySha, memberPins: selection.pins, resolveHead, holdSource });
379
- // From current pins, no tooling root goes backwards or sideways (a first follow has nothing to compare against).
380
- const tooling = {};
381
- if (currentPins !== undefined) {
382
- for (const key of [dataPinKey(), kernelPinKey(), deployPinKey()].sort(compareStrings)) {
383
- tooling[key] = currentPins[key] === undefined ? ToolingRootVerdict.Added : classifyRoot({ key, followed: graphPins[key], current: currentPins[key] });
384
- }
385
- }
386
- const declaredSources = declaredSourcesAt(graphPins);
387
- const headed = freezeSources({ pins: graphPins, declaredSources, resolveHead, holdSource });
388
- const pins = { ...headed };
389
- const urlOf = new Map(declaredSources.map((source) => [source.name, source.url]));
390
- for (const [key, head] of Object.entries(headed)) {
391
- if (snapshotPinNamespace(key) !== SnapshotPinNamespace.Source || currentPins?.[key] === undefined) {continue;}
392
- pins[key] = ancestry({ key, url: urlOf.get(key.slice('sources/'.length)), head, published: currentPins[key] });
393
- }
394
- const sorted = sortedSnapshotPins(pins);
395
- return { pins: sorted, summary: { ...followSummary(currentPins, sorted, tooling), deploy } };
396
- }
397
-
398
- /** The files of --seals-out. */
399
- export const FollowSealFile = Object.freeze({ Seals: 'seals.json', Offering: 'offering.images.lock.json', Customer: 'customer.images.lock.json' });
400
-
401
- /**
402
- * The customer's own previous seal, a follow input passed through: exactly one of `--previous-lock <file>
403
- * --previous-lock-sha256 <hex>` (the bytes, held to the sha256; the id is held to the customer edition's by the resolve,
404
- * which knows it) or `--first-seal` (null).
405
- */
406
- export function customerPreviousLockInput(options) {
407
- const pair = [options['--previous-lock'], options['--previous-lock-sha256']];
408
- const first = options['--first-seal'] === true;
409
- if (first === pair.some((value) => value !== undefined) || (!first && pair.includes(undefined))) {
410
- throw new Error('follow takes the customer edition\'s own previous seal as exactly one of --previous-lock <file> with --previous-lock-sha256 <hex>, or --first-seal');
411
- }
412
- return first ? null : { bytes: readPreviousLockBytes(pair[0], pair[1]), sha256: pair[1] };
413
- }
414
-
415
- /** seals.json: each frozen previous seal by file and sha256 (the customer's absent file is a first seal). */
416
- export function followSealsDocument({ offeringId, offering, customer }) {
417
- return {
418
- offering: { distributionId: offeringId, edition: offering.edition, previousLock: FollowSealFile.Offering, previousLockSha256: offering.imagesLockSha256 },
419
- customer: customer === null ? { firstSeal: true } : { previousLock: FollowSealFile.Customer, previousLockSha256: customer.sha256 },
420
- };
421
- }
422
-
423
- /** Writes --seals-out once: a new directory holding the frozen previous-seal bytes and seals.json. */
424
- export function writeFollowSeals(dir, { offeringId, offering, customer }) {
425
- mkdirSync(dir);
426
- writeFileSync(join(dir, FollowSealFile.Offering), offering.bytes, { flag: 'wx' });
427
- if (customer !== null) {writeFileSync(join(dir, FollowSealFile.Customer), customer.bytes, { flag: 'wx' });}
428
- writeFileSync(join(dir, FollowSealFile.Seals), serializeJson(followSealsDocument({ offeringId, offering, customer })), { flag: 'wx' });
429
- }
430
-
431
- /** The `follow` verb: writes `--out` and `--seals-out` once and prints the summary (it states a first follow). */
432
- export async function runFollow({
433
- options,
434
- env = process.env,
435
- members = developGraphMembers(),
436
- runGit,
437
- git,
438
- rootGit,
439
- deployCommits = deployCommitsAtOrBelow,
440
- heads,
441
- assertKernel = assertKernelCommitSupported,
442
- findOfferingSeal = ({ repository, signerIdentity }) => previousSealFromRegistry({ repository, signerIdentity, cosignBinary: options['--cosign'], env }),
443
- write = writeOnce,
444
- print = (line) => console.log(line),
445
- ...verifierInjections
446
- }) {
447
- const currentPins = followStartOf(options);
448
- const customerSeal = customerPreviousLockInput(options);
449
- if (existsSync(options['--seals-out'])) {throw new Error(`--seals-out ${options['--seals-out']} already exists: follow writes it once`);}
450
- const definition = parseFollowDefinition(options[FOLLOW_DEFINITION_FLAG]);
451
- if (!ENGINE_REPOSITORY_PATTERN.test(options['--engine-repository'] ?? '')) {
452
- throw new Error(`--engine-repository is <registry>/<path> of the deploy engine, with no tag or digest; got ${JSON.stringify(options['--engine-repository'])}`);
453
- }
454
- const id = assertDefinitionCheckout({ definition, dataSha: options['--data-sha'], ...(git === undefined ? {} : { git }) });
455
- assertKernelCheckout({ kernelSha: options['--kernel-sha'], ...(git === undefined ? {} : { git }) });
456
- assertKernel({ repoDir: kernelRepoDir(), commit: options['--kernel-sha'], label: `--kernel-sha ${options['--kernel-sha']}` });
457
- const workspace = editionWorkspaceConfig();
458
- const { parseDistribution } = await loadKernelDistributionSchemas();
459
- const { pins, summary } = await withRecordVerifier({ cosignBinary: options['--cosign'], env, ...verifierInjections }, (verifier) =>
460
- followDevelop({
461
- dataSha: options['--data-sha'],
462
- kernelSha: options['--kernel-sha'],
463
- selectDeploy: () => {
464
- const engineRepository = options['--engine-repository'];
465
- return selectPublishedEngineCommit({
466
- commits: deployCommits(options['--deploy-sha']),
467
- upperBound: options['--deploy-sha'],
468
- engineRepository,
469
- client: verifier.clientFor(splitImageRef(engineRepository).authority),
470
- });
471
- },
472
- currentPins,
473
- members,
474
- select: (publishedPins) =>
475
- selectRecords({ branch: DEVELOP_RECORD_BRANCH, registry: options['--registry'], members, ...verifier, publishedPins, workspace, env, runGit }),
476
- ...(heads ?? headResolver(EditionChannel.Develop, env)),
477
- declaredSourcesAt: (graphPins) => composeEdition(parseDistribution, id, snapshotPinSource(graphPins)).declaredSources,
478
- ancestry: ({ key, url, head, published }) =>
479
- followSourceAncestry({ key, url, head, published, newest: (request) => newestCommitOnDevelop({ ...request, workspace, env, ...(runGit === undefined ? {} : { runGit }) }) }),
480
- classifyRoot: ({ key, followed, current }) =>
481
- classifyToolingRoot({ key, dir: toolingRoots().find((root) => root.key === key).dir(), followed, current, ...(rootGit === undefined ? {} : { git: rootGit }) }),
482
- }),
483
- );
484
- // The offering's newest signed develop edition, read once: the only "newest" a dev resolve depends on.
485
- const offeringSeal = await findOfferingSeal({ repository: editionRepository(id, options['--registry'], EditionChannel.Develop), signerIdentity: options[PREVIOUS_SEAL_SIGNER_FLAG] });
486
- write(options['--out'], pins);
487
- writeFollowSeals(options['--seals-out'], { offeringId: id, offering: offeringSeal, customer: customerSeal });
488
- const seals = followSealsDocument({ offeringId: id, offering: offeringSeal, customer: customerSeal });
489
- print(JSON.stringify({ distributionId: id, definition, ...summary, seals }));
490
- return { pins, summary, seals };
491
- }