@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.
- package/README.md +1 -2
- package/dist/appliance-owner.d.ts.map +1 -1
- package/dist/appliance-owner.js +6 -6
- package/dist/appliance-owner.js.map +1 -1
- package/dist/assets/appliance-base/authorization.lock.json +5186 -0
- package/dist/assets/appliance-base/distribution.lock.json +760 -279
- package/dist/assets/appliance-base/images.lock.json +576 -513
- package/dist/assets/appliance-lean/authorization.lock.json +4648 -0
- package/dist/assets/appliance-lean/distribution.lock.json +641 -186
- package/dist/assets/appliance-lean/images.lock.json +574 -512
- package/dist/assets/boot-graph.json +33 -14
- package/dist/assets/distribution-assets.manifest.json +23 -20
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -9
- package/dist/cli.js.map +1 -1
- package/dist/commands/biome-dev.d.ts.map +1 -1
- package/dist/commands/biome-dev.js +41 -137
- package/dist/commands/biome-dev.js.map +1 -1
- package/dist/commands/biome-lifecycle.d.ts +24 -0
- package/dist/commands/biome-lifecycle.d.ts.map +1 -0
- package/dist/commands/biome-lifecycle.js +253 -0
- package/dist/commands/biome-lifecycle.js.map +1 -0
- package/dist/commands/biome.d.ts +2 -4
- package/dist/commands/biome.d.ts.map +1 -1
- package/dist/commands/biome.js +61 -46
- package/dist/commands/biome.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +96 -8
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +13 -20
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +14 -21
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +6 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/installation-tenancy.d.ts +11 -0
- package/dist/commands/installation-tenancy.d.ts.map +1 -0
- package/dist/commands/installation-tenancy.js +308 -0
- package/dist/commands/installation-tenancy.js.map +1 -0
- package/dist/commands/installation.d.ts.map +1 -1
- package/dist/commands/installation.js +19 -5
- package/dist/commands/installation.js.map +1 -1
- package/dist/commands/logs.d.ts +2 -0
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +41 -8
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/{dev.d.ts → mirror.d.ts} +1 -1
- package/dist/commands/mirror.d.ts.map +1 -0
- package/dist/commands/mirror.js +132 -0
- package/dist/commands/mirror.js.map +1 -0
- package/dist/commands/source.d.ts.map +1 -1
- package/dist/commands/source.js +3 -2
- package/dist/commands/source.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +40 -21
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +36 -4
- package/dist/commands/up.js.map +1 -1
- package/dist/dev/infra-preflight.d.ts.map +1 -1
- package/dist/dev/infra-preflight.js +0 -4
- package/dist/dev/infra-preflight.js.map +1 -1
- package/dist/lib/confirm.d.ts +3 -0
- package/dist/lib/confirm.d.ts.map +1 -0
- package/dist/lib/confirm.js +19 -0
- package/dist/lib/confirm.js.map +1 -0
- package/dist/lib/output-format.d.ts +6 -0
- package/dist/lib/output-format.d.ts.map +1 -0
- package/dist/lib/output-format.js +20 -0
- package/dist/lib/output-format.js.map +1 -0
- package/dist/mirror/config/mirror-config-document.d.ts +18 -0
- package/dist/mirror/config/mirror-config-document.d.ts.map +1 -0
- package/dist/mirror/config/mirror-config-document.js +57 -0
- package/dist/mirror/config/mirror-config-document.js.map +1 -0
- package/dist/mirror/config/mirror-config-schema.d.ts +54 -0
- package/dist/mirror/config/mirror-config-schema.d.ts.map +1 -0
- package/dist/mirror/config/mirror-config-schema.js +80 -0
- package/dist/mirror/config/mirror-config-schema.js.map +1 -0
- package/dist/mirror/kit/delta.d.ts +4 -0
- package/dist/mirror/kit/delta.d.ts.map +1 -0
- package/dist/mirror/kit/delta.js +41 -0
- package/dist/mirror/kit/delta.js.map +1 -0
- package/dist/mirror/kit/export-kit.d.ts +16 -0
- package/dist/mirror/kit/export-kit.d.ts.map +1 -0
- package/dist/mirror/kit/export-kit.js +112 -0
- package/dist/mirror/kit/export-kit.js.map +1 -0
- package/dist/mirror/kit/import-kit.d.ts +9 -0
- package/dist/mirror/kit/import-kit.d.ts.map +1 -0
- package/dist/mirror/kit/import-kit.js +166 -0
- package/dist/mirror/kit/import-kit.js.map +1 -0
- package/dist/mirror/kit/kit-archive.d.ts +4 -0
- package/dist/mirror/kit/kit-archive.d.ts.map +1 -0
- package/dist/mirror/kit/kit-archive.js +38 -0
- package/dist/mirror/kit/kit-archive.js.map +1 -0
- package/dist/mirror/kit/kit-layout.d.ts +10 -0
- package/dist/mirror/kit/kit-layout.d.ts.map +1 -0
- package/dist/mirror/kit/kit-layout.js +19 -0
- package/dist/mirror/kit/kit-layout.js.map +1 -0
- package/dist/mirror/kit/kit-sums.d.ts +5 -0
- package/dist/mirror/kit/kit-sums.d.ts.map +1 -0
- package/dist/mirror/kit/kit-sums.js +63 -0
- package/dist/mirror/kit/kit-sums.js.map +1 -0
- package/dist/mirror/kit/layout-sync.d.ts +8 -0
- package/dist/mirror/kit/layout-sync.d.ts.map +1 -0
- package/dist/mirror/kit/layout-sync.js +58 -0
- package/dist/mirror/kit/layout-sync.js.map +1 -0
- package/dist/mirror/plan/bundle-content.d.ts +10 -0
- package/dist/mirror/plan/bundle-content.d.ts.map +1 -0
- package/dist/mirror/plan/bundle-content.js +61 -0
- package/dist/mirror/plan/bundle-content.js.map +1 -0
- package/dist/mirror/plan/declaration-file.d.ts +9 -0
- package/dist/mirror/plan/declaration-file.d.ts.map +1 -0
- package/dist/mirror/plan/declaration-file.js +27 -0
- package/dist/mirror/plan/declaration-file.js.map +1 -0
- package/dist/mirror/plan/edition-inputs.d.ts +57 -0
- package/dist/mirror/plan/edition-inputs.d.ts.map +1 -0
- package/dist/mirror/plan/edition-inputs.js +44 -0
- package/dist/mirror/plan/edition-inputs.js.map +1 -0
- package/dist/mirror/plan/edition-reader.d.ts +9 -0
- package/dist/mirror/plan/edition-reader.d.ts.map +1 -0
- package/dist/mirror/plan/edition-reader.js +47 -0
- package/dist/mirror/plan/edition-reader.js.map +1 -0
- package/dist/mirror/plan/image-content.d.ts +30 -0
- package/dist/mirror/plan/image-content.d.ts.map +1 -0
- package/dist/mirror/plan/image-content.js +120 -0
- package/dist/mirror/plan/image-content.js.map +1 -0
- package/dist/mirror/plan/npm-lockfile.d.ts +12 -0
- package/dist/mirror/plan/npm-lockfile.d.ts.map +1 -0
- package/dist/mirror/plan/npm-lockfile.js +106 -0
- package/dist/mirror/plan/npm-lockfile.js.map +1 -0
- package/dist/mirror/plan/oci-reads.d.ts +22 -0
- package/dist/mirror/plan/oci-reads.d.ts.map +1 -0
- package/dist/mirror/plan/oci-reads.js +43 -0
- package/dist/mirror/plan/oci-reads.js.map +1 -0
- package/dist/mirror/plan/plan-command.d.ts +22 -0
- package/dist/mirror/plan/plan-command.d.ts.map +1 -0
- package/dist/mirror/plan/plan-command.js +81 -0
- package/dist/mirror/plan/plan-command.js.map +1 -0
- package/dist/mirror/plan/plan-file.d.ts +13 -0
- package/dist/mirror/plan/plan-file.d.ts.map +1 -0
- package/dist/mirror/plan/plan-file.js +63 -0
- package/dist/mirror/plan/plan-file.js.map +1 -0
- package/dist/mirror/plan/resolve-content-set.d.ts +16 -0
- package/dist/mirror/plan/resolve-content-set.d.ts.map +1 -0
- package/dist/mirror/plan/resolve-content-set.js +90 -0
- package/dist/mirror/plan/resolve-content-set.js.map +1 -0
- package/dist/mirror/preflight/glob.d.ts +2 -0
- package/dist/mirror/preflight/glob.d.ts.map +1 -0
- package/dist/mirror/preflight/glob.js +59 -0
- package/dist/mirror/preflight/glob.js.map +1 -0
- package/dist/mirror/preflight/harbor-api.d.ts +27 -0
- package/dist/mirror/preflight/harbor-api.d.ts.map +1 -0
- package/dist/mirror/preflight/harbor-api.js +39 -0
- package/dist/mirror/preflight/harbor-api.js.map +1 -0
- package/dist/mirror/preflight/preflight.d.ts +18 -0
- package/dist/mirror/preflight/preflight.d.ts.map +1 -0
- package/dist/mirror/preflight/preflight.js +41 -0
- package/dist/mirror/preflight/preflight.js.map +1 -0
- package/dist/mirror/preflight/tag-moves.d.ts +16 -0
- package/dist/mirror/preflight/tag-moves.d.ts.map +1 -0
- package/dist/mirror/preflight/tag-moves.js +28 -0
- package/dist/mirror/preflight/tag-moves.js.map +1 -0
- package/dist/mirror/preflight/write-probe.d.ts +10 -0
- package/dist/mirror/preflight/write-probe.d.ts.map +1 -0
- package/dist/mirror/preflight/write-probe.js +36 -0
- package/dist/mirror/preflight/write-probe.js.map +1 -0
- package/dist/mirror/target/extras.d.ts +16 -0
- package/dist/mirror/target/extras.d.ts.map +1 -0
- package/dist/mirror/target/extras.js +47 -0
- package/dist/mirror/target/extras.js.map +1 -0
- package/dist/mirror/target/npm-registry.d.ts +20 -0
- package/dist/mirror/target/npm-registry.d.ts.map +1 -0
- package/dist/mirror/target/npm-registry.js +67 -0
- package/dist/mirror/target/npm-registry.js.map +1 -0
- package/dist/mirror/target/npm-sync.d.ts +15 -0
- package/dist/mirror/target/npm-sync.d.ts.map +1 -0
- package/dist/mirror/target/npm-sync.js +44 -0
- package/dist/mirror/target/npm-sync.js.map +1 -0
- package/dist/mirror/target/oci-items.d.ts +27 -0
- package/dist/mirror/target/oci-items.d.ts.map +1 -0
- package/dist/mirror/target/oci-items.js +79 -0
- package/dist/mirror/target/oci-items.js.map +1 -0
- package/dist/mirror/target/oci-sync.d.ts +20 -0
- package/dist/mirror/target/oci-sync.d.ts.map +1 -0
- package/dist/mirror/target/oci-sync.js +93 -0
- package/dist/mirror/target/oci-sync.js.map +1 -0
- package/dist/mirror/target/receipt-store.d.ts +13 -0
- package/dist/mirror/target/receipt-store.d.ts.map +1 -0
- package/dist/mirror/target/receipt-store.js +61 -0
- package/dist/mirror/target/receipt-store.js.map +1 -0
- package/dist/mirror/target/receipt.d.ts +13 -0
- package/dist/mirror/target/receipt.d.ts.map +1 -0
- package/dist/mirror/target/receipt.js +25 -0
- package/dist/mirror/target/receipt.js.map +1 -0
- package/dist/mirror/target/seed-push.d.ts +15 -0
- package/dist/mirror/target/seed-push.d.ts.map +1 -0
- package/dist/mirror/target/seed-push.js +20 -0
- package/dist/mirror/target/seed-push.js.map +1 -0
- package/dist/mirror/target/target-access.d.ts +7 -0
- package/dist/mirror/target/target-access.d.ts.map +1 -0
- package/dist/mirror/target/target-access.js +17 -0
- package/dist/mirror/target/target-access.js.map +1 -0
- package/dist/mirror/target/target-commands.d.ts +21 -0
- package/dist/mirror/target/target-commands.d.ts.map +1 -0
- package/dist/mirror/target/target-commands.js +134 -0
- package/dist/mirror/target/target-commands.js.map +1 -0
- package/dist/mirror/target/target-context.d.ts +11 -0
- package/dist/mirror/target/target-context.d.ts.map +1 -0
- package/dist/mirror/target/target-context.js +31 -0
- package/dist/mirror/target/target-context.js.map +1 -0
- package/dist/mirror/target/target-ports.d.ts +18 -0
- package/dist/mirror/target/target-ports.d.ts.map +1 -0
- package/dist/mirror/target/target-ports.js +49 -0
- package/dist/mirror/target/target-ports.js.map +1 -0
- package/dist/mirror/target/target-state.d.ts +22 -0
- package/dist/mirror/target/target-state.d.ts.map +1 -0
- package/dist/mirror/target/target-state.js +41 -0
- package/dist/mirror/target/target-state.js.map +1 -0
- package/dist/runtime/biome-dev.d.ts +0 -16
- package/dist/runtime/biome-dev.d.ts.map +1 -1
- package/dist/runtime/biome-dev.js +0 -53
- package/dist/runtime/biome-dev.js.map +1 -1
- package/dist/runtime/biome-host/biome-directory-packer.d.ts +3 -0
- package/dist/runtime/biome-host/biome-directory-packer.d.ts.map +1 -0
- package/dist/runtime/biome-host/biome-directory-packer.js +12 -0
- package/dist/runtime/biome-host/biome-directory-packer.js.map +1 -0
- package/dist/runtime/biome-host/bundle-packer.d.ts +8 -0
- package/dist/runtime/biome-host/bundle-packer.d.ts.map +1 -0
- package/dist/runtime/biome-host/bundle-packer.js +3 -0
- package/dist/runtime/biome-host/bundle-packer.js.map +1 -0
- package/dist/runtime/biome-host/from-spec.d.ts +33 -0
- package/dist/runtime/biome-host/from-spec.d.ts.map +1 -0
- package/dist/runtime/biome-host/from-spec.js +70 -0
- package/dist/runtime/biome-host/from-spec.js.map +1 -0
- package/dist/runtime/biome-host/lifecycle-client.d.ts +20 -0
- package/dist/runtime/biome-host/lifecycle-client.d.ts.map +1 -0
- package/dist/runtime/biome-host/lifecycle-client.js +197 -0
- package/dist/runtime/biome-host/lifecycle-client.js.map +1 -0
- package/dist/runtime/biome-host/lifecycle-contract.d.ts +95 -0
- package/dist/runtime/biome-host/lifecycle-contract.d.ts.map +1 -0
- package/dist/runtime/biome-host/lifecycle-contract.js +61 -0
- package/dist/runtime/biome-host/lifecycle-contract.js.map +1 -0
- package/dist/runtime/biome-host/lifecycle-flow.d.ts +29 -0
- package/dist/runtime/biome-host/lifecycle-flow.d.ts.map +1 -0
- package/dist/runtime/biome-host/lifecycle-flow.js +106 -0
- package/dist/runtime/biome-host/lifecycle-flow.js.map +1 -0
- package/dist/runtime/biome-host/plan-sources.d.ts +4 -0
- package/dist/runtime/biome-host/plan-sources.d.ts.map +1 -0
- package/dist/runtime/biome-host/plan-sources.js +26 -0
- package/dist/runtime/biome-host/plan-sources.js.map +1 -0
- package/dist/runtime/biome-host/relay/bundle-fetch.d.ts +12 -0
- package/dist/runtime/biome-host/relay/bundle-fetch.d.ts.map +1 -0
- package/dist/runtime/biome-host/relay/bundle-fetch.js +76 -0
- package/dist/runtime/biome-host/relay/bundle-fetch.js.map +1 -0
- package/dist/runtime/biome-host/relay/declared-scheme.d.ts +3 -0
- package/dist/runtime/biome-host/relay/declared-scheme.d.ts.map +1 -0
- package/dist/runtime/biome-host/relay/declared-scheme.js +14 -0
- package/dist/runtime/biome-host/relay/declared-scheme.js.map +1 -0
- package/dist/runtime/biome-host/relay/npm-token.d.ts +4 -0
- package/dist/runtime/biome-host/relay/npm-token.d.ts.map +1 -0
- package/dist/runtime/biome-host/relay/npm-token.js +16 -0
- package/dist/runtime/biome-host/relay/npm-token.js.map +1 -0
- package/dist/runtime/biome-host/relay/relay-flow.d.ts +16 -0
- package/dist/runtime/biome-host/relay/relay-flow.d.ts.map +1 -0
- package/dist/runtime/biome-host/relay/relay-flow.js +48 -0
- package/dist/runtime/biome-host/relay/relay-flow.js.map +1 -0
- package/dist/runtime/biome-host/source-staging.d.ts +17 -0
- package/dist/runtime/biome-host/source-staging.d.ts.map +1 -0
- package/dist/runtime/biome-host/source-staging.js +80 -0
- package/dist/runtime/biome-host/source-staging.js.map +1 -0
- package/dist/runtime/biome-host/sse.d.ts +2 -0
- package/dist/runtime/biome-host/sse.d.ts.map +1 -0
- package/dist/runtime/biome-host/sse.js +33 -0
- package/dist/runtime/biome-host/sse.js.map +1 -0
- package/dist/runtime/biome-local-install.js +1 -1
- package/dist/runtime/biome-local-install.js.map +1 -1
- package/dist/runtime/browser-origins.d.ts +9 -0
- package/dist/runtime/browser-origins.d.ts.map +1 -1
- package/dist/runtime/browser-origins.js +10 -0
- package/dist/runtime/browser-origins.js.map +1 -1
- package/dist/runtime/config/config-document.d.ts +10 -0
- package/dist/runtime/config/config-document.d.ts.map +1 -0
- package/dist/runtime/config/config-document.js +56 -0
- package/dist/runtime/config/config-document.js.map +1 -0
- package/dist/runtime/config/config-migrations.d.ts +21 -0
- package/dist/runtime/config/config-migrations.d.ts.map +1 -0
- package/dist/runtime/config/config-migrations.js +102 -0
- package/dist/runtime/config/config-migrations.js.map +1 -0
- package/dist/runtime/config/config-paths.d.ts +3 -0
- package/dist/runtime/config/config-paths.d.ts.map +1 -0
- package/dist/runtime/config/config-paths.js +9 -0
- package/dist/runtime/config/config-paths.js.map +1 -0
- package/dist/runtime/config/dev-mode.d.ts +0 -1
- package/dist/runtime/config/dev-mode.d.ts.map +1 -1
- package/dist/runtime/config/dev-mode.js +11 -27
- package/dist/runtime/config/dev-mode.js.map +1 -1
- package/dist/runtime/config/init-presets.js +5 -9
- package/dist/runtime/config/init-presets.js.map +1 -1
- package/dist/runtime/config/launch-config-help.d.ts +4 -0
- package/dist/runtime/config/launch-config-help.d.ts.map +1 -0
- package/dist/runtime/config/launch-config-help.js +42 -0
- package/dist/runtime/config/launch-config-help.js.map +1 -0
- package/dist/runtime/config/launch-config.d.ts +60 -0
- package/dist/runtime/config/launch-config.d.ts.map +1 -0
- package/dist/runtime/config/launch-config.js +123 -0
- package/dist/runtime/config/launch-config.js.map +1 -0
- package/dist/runtime/config/launch-schema.d.ts +18 -0
- package/dist/runtime/config/launch-schema.d.ts.map +1 -0
- package/dist/runtime/config/launch-schema.js +31 -0
- package/dist/runtime/config/launch-schema.js.map +1 -0
- package/dist/runtime/config/loader.d.ts.map +1 -1
- package/dist/runtime/config/loader.js +4 -14
- package/dist/runtime/config/loader.js.map +1 -1
- package/dist/runtime/config/schema.d.ts +43 -38
- package/dist/runtime/config/schema.d.ts.map +1 -1
- package/dist/runtime/config/schema.js +17 -46
- package/dist/runtime/config/schema.js.map +1 -1
- package/dist/runtime/config/sources-config.d.ts +0 -2
- package/dist/runtime/config/sources-config.d.ts.map +1 -1
- package/dist/runtime/config/sources-config.js +10 -29
- package/dist/runtime/config/sources-config.js.map +1 -1
- package/dist/runtime/config/versioned-document.d.ts +26 -0
- package/dist/runtime/config/versioned-document.d.ts.map +1 -0
- package/dist/runtime/config/versioned-document.js +87 -0
- package/dist/runtime/config/versioned-document.js.map +1 -0
- package/dist/runtime/directory-changes.d.ts +12 -0
- package/dist/runtime/directory-changes.d.ts.map +1 -0
- package/dist/runtime/directory-changes.js +62 -0
- package/dist/runtime/directory-changes.js.map +1 -0
- package/dist/runtime/foreground.d.ts +2 -0
- package/dist/runtime/foreground.d.ts.map +1 -1
- package/dist/runtime/foreground.js +5 -20
- package/dist/runtime/foreground.js.map +1 -1
- package/dist/runtime/infra/infra-runner.js +5 -5
- package/dist/runtime/infra/infra-runner.js.map +1 -1
- package/dist/runtime/infra/keycloak-realm.d.ts +3 -19
- package/dist/runtime/infra/keycloak-realm.d.ts.map +1 -1
- package/dist/runtime/infra/keycloak-realm.js +12 -133
- package/dist/runtime/infra/keycloak-realm.js.map +1 -1
- package/dist/runtime/installation/current-launcher-renderer.js.map +1 -1
- package/dist/runtime/installation/from-current-config.d.ts.map +1 -1
- package/dist/runtime/installation/from-current-config.js +24 -47
- package/dist/runtime/installation/from-current-config.js.map +1 -1
- package/dist/runtime/installation/index.d.ts +1 -0
- package/dist/runtime/installation/index.d.ts.map +1 -1
- package/dist/runtime/installation/index.js +1 -0
- package/dist/runtime/installation/index.js.map +1 -1
- package/dist/runtime/installation/installation-file.d.ts +3 -0
- package/dist/runtime/installation/installation-file.d.ts.map +1 -0
- package/dist/runtime/installation/installation-file.js +9 -0
- package/dist/runtime/installation/installation-file.js.map +1 -0
- package/dist/runtime/installation/readiness.d.ts +6 -7
- package/dist/runtime/installation/readiness.d.ts.map +1 -1
- package/dist/runtime/installation/readiness.js +82 -132
- package/dist/runtime/installation/readiness.js.map +1 -1
- package/dist/runtime/installation/state-store.d.ts +4 -0
- package/dist/runtime/installation/state-store.d.ts.map +1 -1
- package/dist/runtime/installation/state-store.js +22 -1
- package/dist/runtime/installation/state-store.js.map +1 -1
- package/dist/runtime/installation/to-current-config.d.ts +4 -1
- package/dist/runtime/installation/to-current-config.d.ts.map +1 -1
- package/dist/runtime/installation/to-current-config.js +10 -36
- package/dist/runtime/installation/to-current-config.js.map +1 -1
- package/dist/runtime/launch-plan-format.d.ts.map +1 -1
- package/dist/runtime/launch-plan-format.js +31 -6
- package/dist/runtime/launch-plan-format.js.map +1 -1
- package/dist/runtime/launch-result.d.ts +15 -0
- package/dist/runtime/launch-result.d.ts.map +1 -0
- package/dist/runtime/launch-result.js +3 -0
- package/dist/runtime/launch-result.js.map +1 -0
- package/dist/runtime/launch.d.ts +16 -5
- package/dist/runtime/launch.d.ts.map +1 -1
- package/dist/runtime/launch.js +151 -315
- package/dist/runtime/launch.js.map +1 -1
- package/dist/runtime/license/helm-pull-secret.d.ts +1 -1
- package/dist/runtime/license/helm-pull-secret.d.ts.map +1 -1
- package/dist/runtime/license/helm-pull-secret.js +2 -2
- package/dist/runtime/license/helm-pull-secret.js.map +1 -1
- package/dist/runtime/lifecycle-progress/index.d.ts +9 -0
- package/dist/runtime/lifecycle-progress/index.d.ts.map +1 -0
- package/dist/runtime/lifecycle-progress/index.js +30 -0
- package/dist/runtime/lifecycle-progress/index.js.map +1 -0
- package/dist/runtime/lifecycle-progress/json-renderer.d.ts +3 -0
- package/dist/runtime/lifecycle-progress/json-renderer.d.ts.map +1 -0
- package/dist/runtime/lifecycle-progress/json-renderer.js +27 -0
- package/dist/runtime/lifecycle-progress/json-renderer.js.map +1 -0
- package/dist/runtime/lifecycle-progress/text-renderer.d.ts +5 -0
- package/dist/runtime/lifecycle-progress/text-renderer.d.ts.map +1 -0
- package/dist/runtime/lifecycle-progress/text-renderer.js +83 -0
- package/dist/runtime/lifecycle-progress/text-renderer.js.map +1 -0
- package/dist/runtime/lifecycle-progress/types.d.ts +79 -0
- package/dist/runtime/lifecycle-progress/types.d.ts.map +1 -0
- package/dist/runtime/lifecycle-progress/types.js +32 -0
- package/dist/runtime/lifecycle-progress/types.js.map +1 -0
- package/dist/runtime/lock-loader.d.ts +13 -3
- package/dist/runtime/lock-loader.d.ts.map +1 -1
- package/dist/runtime/lock-loader.js +28 -8
- package/dist/runtime/lock-loader.js.map +1 -1
- package/dist/runtime/paths.d.ts +2 -0
- package/dist/runtime/paths.d.ts.map +1 -1
- package/dist/runtime/paths.js +17 -4
- package/dist/runtime/paths.js.map +1 -1
- package/dist/runtime/roster.d.ts +6 -5
- package/dist/runtime/roster.d.ts.map +1 -1
- package/dist/runtime/roster.js +0 -21
- package/dist/runtime/roster.js.map +1 -1
- package/dist/runtime/runner/container-preflight.d.ts +3 -2
- package/dist/runtime/runner/container-preflight.d.ts.map +1 -1
- package/dist/runtime/runner/container-preflight.js +5 -5
- package/dist/runtime/runner/container-preflight.js.map +1 -1
- package/dist/runtime/runner/container-runner.d.ts +0 -22
- package/dist/runtime/runner/container-runner.d.ts.map +1 -1
- package/dist/runtime/runner/container-runner.js +0 -112
- package/dist/runtime/runner/container-runner.js.map +1 -1
- package/dist/runtime/runner/docker-cli.d.ts +1 -0
- package/dist/runtime/runner/docker-cli.d.ts.map +1 -1
- package/dist/runtime/runner/docker-cli.js +19 -0
- package/dist/runtime/runner/docker-cli.js.map +1 -1
- package/dist/runtime/runner/helm-cli.d.ts +1 -0
- package/dist/runtime/runner/helm-cli.d.ts.map +1 -1
- package/dist/runtime/runner/helm-cli.js +5 -1
- package/dist/runtime/runner/helm-cli.js.map +1 -1
- package/dist/runtime/runner/helm-pre-install.d.ts +3 -2
- package/dist/runtime/runner/helm-pre-install.d.ts.map +1 -1
- package/dist/runtime/runner/helm-pre-install.js +3 -3
- package/dist/runtime/runner/helm-pre-install.js.map +1 -1
- package/dist/runtime/runner/helm-runner.d.ts +29 -4
- package/dist/runtime/runner/helm-runner.d.ts.map +1 -1
- package/dist/runtime/runner/helm-runner.js +44 -14
- package/dist/runtime/runner/helm-runner.js.map +1 -1
- package/dist/runtime/runner/kube-cli.d.ts +1 -0
- package/dist/runtime/runner/kube-cli.d.ts.map +1 -1
- package/dist/runtime/runner/kube-cli.js +24 -2
- package/dist/runtime/runner/kube-cli.js.map +1 -1
- package/dist/runtime/secrets/managed-local-key-provider.d.ts +2 -0
- package/dist/runtime/secrets/managed-local-key-provider.d.ts.map +1 -1
- package/dist/runtime/secrets/managed-local-key-provider.js +17 -8
- package/dist/runtime/secrets/managed-local-key-provider.js.map +1 -1
- package/dist/runtime/seed/closure-container.d.ts +8 -0
- package/dist/runtime/seed/closure-container.d.ts.map +1 -0
- package/dist/runtime/seed/closure-container.js +23 -0
- package/dist/runtime/seed/closure-container.js.map +1 -0
- package/dist/runtime/seed/closure-helm.d.ts +9 -0
- package/dist/runtime/seed/closure-helm.d.ts.map +1 -0
- package/dist/runtime/seed/closure-helm.js +16 -0
- package/dist/runtime/seed/closure-helm.js.map +1 -0
- package/dist/runtime/seed/closure-names.d.ts +4 -0
- package/dist/runtime/seed/closure-names.d.ts.map +1 -0
- package/dist/runtime/seed/closure-names.js +29 -0
- package/dist/runtime/seed/closure-names.js.map +1 -0
- package/dist/runtime/seed/closure-native.d.ts +3 -0
- package/dist/runtime/seed/closure-native.d.ts.map +1 -0
- package/dist/runtime/seed/closure-native.js +18 -0
- package/dist/runtime/seed/closure-native.js.map +1 -0
- package/dist/runtime/seed/installation-tar.d.ts +5 -0
- package/dist/runtime/seed/installation-tar.d.ts.map +1 -0
- package/dist/runtime/seed/installation-tar.js +30 -0
- package/dist/runtime/seed/installation-tar.js.map +1 -0
- package/dist/runtime/seed/launch-env.d.ts +42 -0
- package/dist/runtime/seed/launch-env.d.ts.map +1 -0
- package/dist/runtime/seed/launch-env.js +150 -0
- package/dist/runtime/seed/launch-env.js.map +1 -0
- package/dist/runtime/seed/seed-container.d.ts +13 -0
- package/dist/runtime/seed/seed-container.d.ts.map +1 -0
- package/dist/runtime/seed/seed-container.js +175 -0
- package/dist/runtime/seed/seed-container.js.map +1 -0
- package/dist/runtime/seed/seed-delivery-env.d.ts +39 -0
- package/dist/runtime/seed/seed-delivery-env.d.ts.map +1 -0
- package/dist/runtime/seed/seed-delivery-env.js +47 -0
- package/dist/runtime/seed/seed-delivery-env.js.map +1 -0
- package/dist/runtime/seed/seed-down.d.ts +2 -0
- package/dist/runtime/seed/seed-down.d.ts.map +1 -0
- package/dist/runtime/seed/seed-down.js +52 -0
- package/dist/runtime/seed/seed-down.js.map +1 -0
- package/dist/runtime/seed/seed-env-file.d.ts +3 -0
- package/dist/runtime/seed/seed-env-file.d.ts.map +1 -0
- package/dist/runtime/seed/seed-env-file.js +24 -0
- package/dist/runtime/seed/seed-env-file.js.map +1 -0
- package/dist/runtime/seed/seed-env-secret.d.ts +18 -0
- package/dist/runtime/seed/seed-env-secret.d.ts.map +1 -0
- package/dist/runtime/seed/seed-env-secret.js +62 -0
- package/dist/runtime/seed/seed-env-secret.js.map +1 -0
- package/dist/runtime/seed/seed-environment.d.ts +12 -0
- package/dist/runtime/seed/seed-environment.d.ts.map +1 -0
- package/dist/runtime/seed/seed-environment.js +66 -0
- package/dist/runtime/seed/seed-environment.js.map +1 -0
- package/dist/runtime/seed/seed-facts.d.ts +22 -0
- package/dist/runtime/seed/seed-facts.d.ts.map +1 -0
- package/dist/runtime/seed/seed-facts.js +40 -0
- package/dist/runtime/seed/seed-facts.js.map +1 -0
- package/dist/runtime/seed/seed-helm.d.ts +10 -0
- package/dist/runtime/seed/seed-helm.d.ts.map +1 -0
- package/dist/runtime/seed/seed-helm.js +74 -0
- package/dist/runtime/seed/seed-helm.js.map +1 -0
- package/dist/runtime/seed/seed-image-user.d.ts +6 -0
- package/dist/runtime/seed/seed-image-user.d.ts.map +1 -0
- package/dist/runtime/seed/seed-image-user.js +14 -0
- package/dist/runtime/seed/seed-image-user.js.map +1 -0
- package/dist/runtime/seed/seed-installation-files.d.ts +23 -0
- package/dist/runtime/seed/seed-installation-files.d.ts.map +1 -0
- package/dist/runtime/seed/seed-installation-files.js +51 -0
- package/dist/runtime/seed/seed-installation-files.js.map +1 -0
- package/dist/runtime/seed/seed-installation.d.ts +20 -0
- package/dist/runtime/seed/seed-installation.d.ts.map +1 -0
- package/dist/runtime/seed/seed-installation.js +36 -0
- package/dist/runtime/seed/seed-installation.js.map +1 -0
- package/dist/runtime/seed/seed-launcher.d.ts +14 -0
- package/dist/runtime/seed/seed-launcher.d.ts.map +1 -0
- package/dist/runtime/seed/seed-launcher.js +155 -0
- package/dist/runtime/seed/seed-launcher.js.map +1 -0
- package/dist/runtime/seed/seed-options.d.ts +22 -0
- package/dist/runtime/seed/seed-options.d.ts.map +1 -0
- package/dist/runtime/seed/seed-options.js +57 -0
- package/dist/runtime/seed/seed-options.js.map +1 -0
- package/dist/runtime/seed/seed-platform-endpoints.d.ts +8 -0
- package/dist/runtime/seed/seed-platform-endpoints.d.ts.map +1 -0
- package/dist/runtime/seed/seed-platform-endpoints.js +55 -0
- package/dist/runtime/seed/seed-platform-endpoints.js.map +1 -0
- package/dist/runtime/seed/seed-process.d.ts +22 -0
- package/dist/runtime/seed/seed-process.d.ts.map +1 -0
- package/dist/runtime/seed/seed-process.js +79 -0
- package/dist/runtime/seed/seed-process.js.map +1 -0
- package/dist/runtime/seed/seed-record.d.ts +101 -0
- package/dist/runtime/seed/seed-record.d.ts.map +1 -0
- package/dist/runtime/seed/seed-record.js +141 -0
- package/dist/runtime/seed/seed-record.js.map +1 -0
- package/dist/runtime/seed/seed-resolved-deployment.d.ts +14 -0
- package/dist/runtime/seed/seed-resolved-deployment.d.ts.map +1 -0
- package/dist/runtime/seed/seed-resolved-deployment.js +52 -0
- package/dist/runtime/seed/seed-resolved-deployment.js.map +1 -0
- package/dist/runtime/seed/substrate-facts.d.ts +52 -0
- package/dist/runtime/seed/substrate-facts.d.ts.map +1 -0
- package/dist/runtime/seed/substrate-facts.js +92 -0
- package/dist/runtime/seed/substrate-facts.js.map +1 -0
- package/dist/runtime/seed/supervisor-contract.d.ts +9 -0
- package/dist/runtime/seed/supervisor-contract.d.ts.map +1 -0
- package/dist/runtime/seed/supervisor-contract.js +68 -0
- package/dist/runtime/seed/supervisor-contract.js.map +1 -0
- package/dist/runtime/seed/workload-identity-facts.d.ts +17 -0
- package/dist/runtime/seed/workload-identity-facts.d.ts.map +1 -0
- package/dist/runtime/seed/workload-identity-facts.js +53 -0
- package/dist/runtime/seed/workload-identity-facts.js.map +1 -0
- package/dist/runtime/sources/schema.d.ts +2 -0
- package/dist/runtime/sources/schema.d.ts.map +1 -1
- package/dist/runtime/sources/schema.js +10 -9
- package/dist/runtime/sources/schema.js.map +1 -1
- package/dist/runtime/store-client.d.ts +0 -10
- package/dist/runtime/store-client.d.ts.map +1 -1
- package/dist/runtime/store-client.js +0 -5
- package/dist/runtime/store-client.js.map +1 -1
- package/dist/runtime/tenancy/identity-installer.d.ts +11 -0
- package/dist/runtime/tenancy/identity-installer.d.ts.map +1 -0
- package/dist/runtime/tenancy/identity-installer.js +39 -0
- package/dist/runtime/tenancy/identity-installer.js.map +1 -0
- package/dist/runtime/tenancy/import-cache.d.ts +5 -0
- package/dist/runtime/tenancy/import-cache.d.ts.map +1 -0
- package/dist/runtime/tenancy/import-cache.js +27 -0
- package/dist/runtime/tenancy/import-cache.js.map +1 -0
- package/dist/runtime/tenancy/openfga.d.ts +4 -0
- package/dist/runtime/tenancy/openfga.d.ts.map +1 -0
- package/dist/runtime/tenancy/openfga.js +29 -0
- package/dist/runtime/tenancy/openfga.js.map +1 -0
- package/dist/runtime/tenancy/servers.d.ts +18 -0
- package/dist/runtime/tenancy/servers.d.ts.map +1 -0
- package/dist/runtime/tenancy/servers.js +102 -0
- package/dist/runtime/tenancy/servers.js.map +1 -0
- package/dist/runtime/tenancy/session.d.ts +19 -0
- package/dist/runtime/tenancy/session.d.ts.map +1 -0
- package/dist/runtime/tenancy/session.js +79 -0
- package/dist/runtime/tenancy/session.js.map +1 -0
- package/dist/runtime/tenancy/specs.d.ts +27 -0
- package/dist/runtime/tenancy/specs.d.ts.map +1 -0
- package/dist/runtime/tenancy/specs.js +129 -0
- package/dist/runtime/tenancy/specs.js.map +1 -0
- package/examples/01-local-native.yaml +1 -3
- package/examples/02-local-container-full.yaml +0 -2
- package/examples/03-byo-infra.yaml +1 -5
- package/examples/06-biome-sources.yaml +1 -3
- package/package.json +32 -37
- package/xema.config.example.yaml +1 -10
- package/dist/assets/keycloak/realm-xema.json +0 -397
- package/dist/commands/dev.d.ts.map +0 -1
- package/dist/commands/dev.js +0 -196
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/edition.d.ts +0 -3
- package/dist/commands/edition.d.ts.map +0 -1
- package/dist/commands/edition.js +0 -54
- package/dist/commands/edition.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -3
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -114
- package/dist/commands/serve.js.map +0 -1
- package/dist/dev/carved-installs.d.ts +0 -3
- package/dist/dev/carved-installs.d.ts.map +0 -1
- package/dist/dev/carved-installs.js +0 -63
- package/dist/dev/carved-installs.js.map +0 -1
- package/dist/dev/env-defaults.d.ts +0 -15
- package/dist/dev/env-defaults.d.ts.map +0 -1
- package/dist/dev/env-defaults.js +0 -178
- package/dist/dev/env-defaults.js.map +0 -1
- package/dist/dev/forked-worker-bootstrap-protocol.d.ts +0 -17
- package/dist/dev/forked-worker-bootstrap-protocol.d.ts.map +0 -1
- package/dist/dev/forked-worker-bootstrap-protocol.js +0 -35
- package/dist/dev/forked-worker-bootstrap-protocol.js.map +0 -1
- package/dist/dev/forked-worker-bootstrap.d.ts +0 -18
- package/dist/dev/forked-worker-bootstrap.d.ts.map +0 -1
- package/dist/dev/forked-worker-bootstrap.js +0 -84
- package/dist/dev/forked-worker-bootstrap.js.map +0 -1
- package/dist/dev/forked-worker.d.ts +0 -43
- package/dist/dev/forked-worker.d.ts.map +0 -1
- package/dist/dev/forked-worker.js +0 -358
- package/dist/dev/forked-worker.js.map +0 -1
- package/dist/edition/verify-image-evidence.bundle.mjs +0 -70456
- package/dist/edition/verify-image-evidence.bundle.provenance.json +0 -3957
- package/dist/runtime/backing-registration.d.ts +0 -11
- package/dist/runtime/backing-registration.d.ts.map +0 -1
- package/dist/runtime/backing-registration.js +0 -94
- package/dist/runtime/backing-registration.js.map +0 -1
- package/dist/runtime/edition/run-entry.d.ts +0 -9
- package/dist/runtime/edition/run-entry.d.ts.map +0 -1
- package/dist/runtime/edition/run-entry.js +0 -36
- package/dist/runtime/edition/run-entry.js.map +0 -1
- package/dist/runtime/edition/verb-map.d.ts +0 -70
- package/dist/runtime/edition/verb-map.d.ts.map +0 -1
- package/dist/runtime/edition/verb-map.js +0 -166
- package/dist/runtime/edition/verb-map.js.map +0 -1
- package/dist/runtime/env-seeder.d.ts +0 -26
- package/dist/runtime/env-seeder.d.ts.map +0 -1
- package/dist/runtime/env-seeder.js +0 -340
- package/dist/runtime/env-seeder.js.map +0 -1
- package/dist/runtime/port-map.d.ts +0 -3
- package/dist/runtime/port-map.d.ts.map +0 -1
- package/dist/runtime/port-map.js +0 -25
- package/dist/runtime/port-map.js.map +0 -1
- package/dist/runtime/run-manifest.d.ts +0 -52
- package/dist/runtime/run-manifest.d.ts.map +0 -1
- package/dist/runtime/run-manifest.js +0 -585
- package/dist/runtime/run-manifest.js.map +0 -1
- package/dist/runtime/runner/native-runner.d.ts +0 -13
- package/dist/runtime/runner/native-runner.d.ts.map +0 -1
- package/dist/runtime/runner/native-runner.js +0 -94
- package/dist/runtime/runner/native-runner.js.map +0 -1
- package/dist/runtime/runner/service-runner.d.ts +0 -28
- package/dist/runtime/runner/service-runner.d.ts.map +0 -1
- package/dist/runtime/runner/service-runner.js +0 -10
- package/dist/runtime/runner/service-runner.js.map +0 -1
- package/dist/runtime/secrets/generated-platform-secrets.d.ts +0 -16
- package/dist/runtime/secrets/generated-platform-secrets.d.ts.map +0 -1
- package/dist/runtime/secrets/generated-platform-secrets.js +0 -115
- package/dist/runtime/secrets/generated-platform-secrets.js.map +0 -1
- package/dist/runtime/secrets/resolver.d.ts +0 -23
- package/dist/runtime/secrets/resolver.d.ts.map +0 -1
- package/dist/runtime/secrets/resolver.js +0 -266
- package/dist/runtime/secrets/resolver.js.map +0 -1
- package/dist/runtime/supervisor.d.ts +0 -67
- package/dist/runtime/supervisor.d.ts.map +0 -1
- package/dist/runtime/supervisor.js +0 -227
- package/dist/runtime/supervisor.js.map +0 -1
- package/edition/README.md +0 -293
- package/edition/adapter-bundled-versions.mjs +0 -108
- package/edition/adapter-host-versions.mjs +0 -41
- package/edition/assemble-producer-input.mjs +0 -1423
- package/edition/assemble-third-party-input.mjs +0 -336
- package/edition/authored-source-check.mjs +0 -135
- package/edition/authorization-base.mjs +0 -357
- package/edition/biome-content.mjs +0 -327
- package/edition/build-biome-index.mjs +0 -180
- package/edition/build-ledger-completeness.mjs +0 -67
- package/edition/build-ledger.mjs +0 -107
- package/edition/build-platform-service-index.mjs +0 -292
- package/edition/build-runtime-image-source-index.mjs +0 -1187
- package/edition/built-verifier.mjs +0 -55
- package/edition/candidate-edition.mjs +0 -697
- package/edition/canonical-evidence-json.mjs +0 -82
- package/edition/canonical-repository-url.mjs +0 -47
- package/edition/catalogue-edition.mjs +0 -49
- package/edition/catalogue-evidence.mjs +0 -228
- package/edition/catalogue-fetch.mjs +0 -124
- package/edition/catalogue-lock-field.mjs +0 -41
- package/edition/catalogue-pin.mjs +0 -71
- package/edition/catalogue.mjs +0 -223
- package/edition/chart-set-source-commit.mjs +0 -97
- package/edition/check-committed-image-evidence.mjs +0 -412
- package/edition/checkout-indexed-source-repositories.mjs +0 -283
- package/edition/collected-refusals.mjs +0 -59
- package/edition/comment-blanker.mjs +0 -75
- package/edition/connector-source-authority.mjs +0 -60
- package/edition/contract-authority.mjs +0 -122
- package/edition/cosign-certificate-constraints.mjs +0 -50
- package/edition/cross-repo-build-inputs.mjs +0 -158
- package/edition/customer-definition.mjs +0 -174
- package/edition/customer-edition-verbs.mjs +0 -617
- package/edition/customer-flags.mjs +0 -15
- package/edition/develop-catalogue-free-resolve.mjs +0 -280
- package/edition/develop-chart-roster.mjs +0 -96
- package/edition/develop-chart-set.mjs +0 -147
- package/edition/develop-coverage-readers.mjs +0 -217
- package/edition/develop-coverage-run.mjs +0 -50
- package/edition/develop-coverage-verdict.mjs +0 -153
- package/edition/develop-coverage.mjs +0 -131
- package/edition/develop-current-resolution.mjs +0 -29
- package/edition/develop-edition-invariants.mjs +0 -142
- package/edition/develop-edition-resolve.mjs +0 -211
- package/edition/develop-edition.mjs +0 -379
- package/edition/develop-engine-image.mjs +0 -95
- package/edition/develop-follow.mjs +0 -491
- package/edition/develop-freeze.mjs +0 -289
- package/edition/develop-git-bundles.mjs +0 -255
- package/edition/develop-graph.mjs +0 -28
- package/edition/develop-image-coordinate.mjs +0 -54
- package/edition/develop-image-probe.mjs +0 -120
- package/edition/develop-image-record.mjs +0 -194
- package/edition/develop-record-ancestry.mjs +0 -144
- package/edition/develop-record-verify.mjs +0 -216
- package/edition/develop-resolve-report.mjs +0 -159
- package/edition/develop-select-records.mjs +0 -172
- package/edition/develop-selection-line.mjs +0 -30
- package/edition/develop-selection-pins.mjs +0 -36
- package/edition/develop-snapshot-inputs.mjs +0 -93
- package/edition/develop-verify-image-record.mjs +0 -109
- package/edition/dispatched-runtime-components.mjs +0 -172
- package/edition/dist-check.mjs +0 -1137
- package/edition/distribution-evidence-set.mjs +0 -1064
- package/edition/distribution-paths.mjs +0 -191
- package/edition/edition-artifact.mjs +0 -529
- package/edition/edition-biome-manifests.mjs +0 -85
- package/edition/edition-ceiling.mjs +0 -180
- package/edition/edition-channel.mjs +0 -20
- package/edition/edition-chart-set.mjs +0 -104
- package/edition/edition-config.mjs +0 -374
- package/edition/edition-constants.mjs +0 -110
- package/edition/edition-contract-parse.mjs +0 -179
- package/edition/edition-contract.json +0 -100
- package/edition/edition-image-seal.mjs +0 -110
- package/edition/edition-kind.mjs +0 -10
- package/edition/edition-list.mjs +0 -35
- package/edition/edition-locks.mjs +0 -79
- package/edition/edition-pin-verbs.mjs +0 -183
- package/edition/edition-pin.mjs +0 -17
- package/edition/edition-pinned-inputs.mjs +0 -116
- package/edition/edition-protocol.mjs +0 -277
- package/edition/edition-publisher.mjs +0 -21
- package/edition/edition-seal.mjs +0 -257
- package/edition/edition-source-pins.mjs +0 -211
- package/edition/edition-unpin.mjs +0 -16
- package/edition/edition-workspace.mjs +0 -204
- package/edition/evidence-checkout.mjs +0 -439
- package/edition/evidence-grammars.mjs +0 -18
- package/edition/evidence-input-mode.mjs +0 -136
- package/edition/evidence-trust-pin.mjs +0 -380
- package/edition/evidence-trust-policy.mjs +0 -374
- package/edition/external-source-walk.mjs +0 -485
- package/edition/first-party-source-ids.mjs +0 -62
- package/edition/fleet-coordinate-finality.mjs +0 -363
- package/edition/fulcio-certificate-extensions.mjs +0 -231
- package/edition/git-json.mjs +0 -54
- package/edition/git-source-auth.mjs +0 -131
- package/edition/image-delivery-entitlement-descriptor.mjs +0 -106
- package/edition/image-evidence-replay-state.mjs +0 -242
- package/edition/image-evidence.mjs +0 -1404
- package/edition/image-lock-service-rows.mjs +0 -26
- package/edition/image-subject-identity.mjs +0 -24
- package/edition/images-from-record.mjs +0 -298
- package/edition/indexes-at-pins.mjs +0 -13
- package/edition/kernel-capability-domain.mjs +0 -30
- package/edition/kernel-contract-authority.mjs +0 -517
- package/edition/kernel-contract-source-path-set.mjs +0 -94
- package/edition/kernel-package.mjs +0 -206
- package/edition/kernel-protocol-choice.mjs +0 -239
- package/edition/kernel-signer-kind.mjs +0 -23
- package/edition/lib.mjs +0 -3303
- package/edition/locked-bundle-signer.mjs +0 -297
- package/edition/map-with-concurrency.mjs +0 -19
- package/edition/no-follow-file.mjs +0 -94
- package/edition/oci-evidence-verbs.mjs +0 -419
- package/edition/oci-image-source-evidence.mjs +0 -364
- package/edition/operation-grant-admission.mjs +0 -285
- package/edition/operation-requirements.mjs +0 -282
- package/edition/oras-process.mjs +0 -35
- package/edition/oras.mjs +0 -742
- package/edition/pin-source.mjs +0 -242
- package/edition/pinned-cosign.mjs +0 -70
- package/edition/plan-image-evidence-refresh.mjs +0 -427
- package/edition/platform-lock-readability.mjs +0 -901
- package/edition/platform-service-class.mjs +0 -85
- package/edition/platform-service-ownership.mjs +0 -88
- package/edition/platform-service-source-authority.mjs +0 -105
- package/edition/positive-closure.mjs +0 -162
- package/edition/previous-seal-registry.mjs +0 -149
- package/edition/produce-distribution-completeness-evidence.mjs +0 -318
- package/edition/produce-edition-catalogue-evidence.mjs +0 -252
- package/edition/produce-image-delivery-entitlement-evidence.mjs +0 -304
- package/edition/produce-image-source-evidence.mjs +0 -788
- package/edition/producer-evidence-bundle.mjs +0 -201
- package/edition/producer-evidence-index-file.mjs +0 -4
- package/edition/record-refused.mjs +0 -12
- package/edition/registry-credentials.mjs +0 -225
- package/edition/release-catalogue.mjs +0 -47
- package/edition/release-channel-guard.mjs +0 -108
- package/edition/release-edition-artifact.mjs +0 -152
- package/edition/release-edition.mjs +0 -54
- package/edition/remedy-command.mjs +0 -89
- package/edition/repin-evidence-trust.mjs +0 -109
- package/edition/required-resource-provider.mjs +0 -58
- package/edition/resolve-chart-set.mjs +0 -376
- package/edition/resolve-customer-edition.mjs +0 -374
- package/edition/resolve-distribution.mjs +0 -2639
- package/edition/resolve-edition.mjs +0 -192
- package/edition/resolve-images.mjs +0 -2351
- package/edition/seal-image-digests.mjs +0 -954
- package/edition/sealed-distribution-lock.mjs +0 -22
- package/edition/sealed-evidence-accept.mjs +0 -82
- package/edition/shallow-checkout.mjs +0 -18
- package/edition/sigstore-bundle-media-type.mjs +0 -4
- package/edition/source-authority.mjs +0 -713
- package/edition/source-closure.mjs +0 -115
- package/edition/store-publisher-trust.mjs +0 -40
- package/edition/strict-json.mjs +0 -121
- package/edition/string-order.mjs +0 -5
- package/edition/third-party-admission.mjs +0 -91
- package/edition/third-party-bundle-registry.mjs +0 -242
- package/edition/third-party-certificate-extensions.mjs +0 -21
- package/edition/third-party-image-pins.mjs +0 -41
- package/edition/third-party-pins-trusted.mjs +0 -24
- package/edition/third-party-producer-evidence.mjs +0 -76
- package/edition/third-party-source-check.mjs +0 -28
- package/edition/third-party-source-context.mjs +0 -41
- package/edition/third-party-source-evidence.mjs +0 -287
- package/edition/third-party-source-flags.mjs +0 -134
- package/edition/third-party-source-pins.mjs +0 -259
- package/edition/third-party-source-uniqueness.mjs +0 -54
- package/edition/third-party-source-walk.mjs +0 -115
- package/edition/third-party-source-writer.mjs +0 -213
- package/edition/third-party-subjects.mjs +0 -128
- package/edition/trust-policy-arming-verb.mjs +0 -60
- package/edition/trust-policy-arming.mjs +0 -144
- package/edition/trust-policy-image-ownership.mjs +0 -85
- package/edition/trusted-executable.mjs +0 -166
- package/edition/verifier-binding.mjs +0 -45
- package/edition/verifier-files.mjs +0 -8
- package/edition/verifier-kernel-schemas.mjs +0 -22
- package/edition/verifier-provenance.mjs +0 -64
- package/edition/verify-catalogue-evidence.mjs +0 -247
- package/edition/verify-image-evidence.mjs +0 -475
- package/edition/verify-image-platforms.mjs +0 -523
- package/edition/why.mjs +0 -56
- package/edition/workspace-sections.mjs +0 -276
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
// develop-catalogue-free-resolve — the catalogue-free CUSTOMER develop resolve:
|
|
2
|
-
//
|
|
3
|
-
// xema edition develop resolve --definition-at <owner>/<repo>,<path>,<dataRoot> --offering <owner>/<repo>,<path>,<dataRoot>
|
|
4
|
-
// --pins <file> --out <dir> --registry <root> --engine-repository <repository> --engine-signer <certificate identity>
|
|
5
|
-
// --cosign <abs path> --offering-previous-lock <file> --offering-previous-lock-sha256 <hex>
|
|
6
|
-
// (--previous-lock <file> --previous-lock-sha256 <hex> | --first-seal) [--source-image <source>=<registry>/<prefix>]... [--local]
|
|
7
|
-
//
|
|
8
|
-
// A dev deployment of a customer definition resolves the vendor offering it builds on IN THE SAME CALL instead of
|
|
9
|
-
// pinning a published catalogue: no catalogue.pin.json is read (its presence beside the definition is refused, never
|
|
10
|
-
// a fallback), and no public flag substitutes a catalogue file. Two workspaces, two steps, one CLI:
|
|
11
|
-
//
|
|
12
|
-
// vendor a child `develop resolve <offering id> --pins <vendor pins> --local` of this CLI on the VENDOR roots
|
|
13
|
-
// (the roots this call was given), unchanged: it writes the vendor artifact and catalogue.json into a
|
|
14
|
-
// scratch directory. --offering names the offering's directory inside the vendor data checkout, held to
|
|
15
|
-
// it like follow's --definition-at (the checkout is the declared repository, clean at the vendor data
|
|
16
|
-
// pin, the data root and the directory where the triple says). Never defaulted.
|
|
17
|
-
// customer the definition repository fetched at --pins "definition-repository" (the walk's git source fetch, by
|
|
18
|
-
// exact commit) and its tree at that commit checked out from the object store into this call's private
|
|
19
|
-
// scratch before the vendor step runs (a temporary index, symlinks as plain files): the shared fetch cache
|
|
20
|
-
// is never read again, so a cache tree that moves or changes mid-run cannot change what is resolved. The
|
|
21
|
-
// workspace is re-stated on the scratch copy's roots (data = <copy>/<dataRoot>, editions = the parent of
|
|
22
|
-
// <copy>/<path>, a fresh sources root, the same cache), and the customer resolve run against the catalogue
|
|
23
|
-
// the vendor step wrote. The edition's pins are the catalogue-free form
|
|
24
|
-
// (edition-contract.json provenancePins.customerForms): the vendor pins, the customer's own
|
|
25
|
-
// sources/<name> commits, "definition-repository" and the definition digest, never a catalogue pin.
|
|
26
|
-
// The catalogue CONTENT digest is sha256 of the EXACT catalogue.json bytes the vendor step wrote (parsed
|
|
27
|
-
// strictly, so a duplicate key refuses), the convention of the catalogue layer digest of an offering
|
|
28
|
-
// artifact (produce-edition-catalogue-evidence's predicate catalogueDigest). It goes into the distribution
|
|
29
|
-
// lock only, as catalogueContentDigest (kernel edition protocol v37), never catalogueDigest: no catalogue
|
|
30
|
-
// artifact exists, so the lock never names one (catalogue-lock-field.mjs).
|
|
31
|
-
//
|
|
32
|
-
// --pins is the COMPLETE frozen set; nothing here reads a head. It is split once, before anything is fetched: a
|
|
33
|
-
// sources/<name> key the definition declares is the customer's own, every other key but "definition-repository" goes
|
|
34
|
-
// to the vendor step (which refuses what its offering does not declare). A source name both the offering and the
|
|
35
|
-
// definition declare is refused before the vendor step: its one pin could not say whose source it is.
|
|
36
|
-
|
|
37
|
-
import { execFileSync, spawnSync } from 'node:child_process';
|
|
38
|
-
import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
39
|
-
import { tmpdir } from 'node:os';
|
|
40
|
-
import { basename, dirname, join, resolve } from 'node:path';
|
|
41
|
-
import { fileURLToPath } from 'node:url';
|
|
42
|
-
|
|
43
|
-
import { sha256Digest } from './canonical-evidence-json.mjs';
|
|
44
|
-
import { CATALOGUE_PIN_FILE } from './catalogue-pin.mjs';
|
|
45
|
-
import { CATALOGUE_FILE, parseCatalogue } from './catalogue.mjs';
|
|
46
|
-
import { customerPreviousSeal, customerSourceImages, declaredSourceNamesOf, resolveCustomerChannelEdition } from './customer-edition-verbs.mjs';
|
|
47
|
-
import { DEFINITION_AT_FLAG, OFFERING_FLAG, OFFERING_PREVIOUS_LOCK_FLAG, OFFERING_PREVIOUS_LOCK_SHA256_FLAG } from './customer-flags.mjs';
|
|
48
|
-
import { assertDefinitionCheckout, parseFollowDefinition } from './develop-follow.mjs';
|
|
49
|
-
import { customerDevelopGitBundleVerifier } from './develop-git-bundles.mjs';
|
|
50
|
-
import { assertCanonicalDistributionId } from './distribution-paths.mjs';
|
|
51
|
-
import { LOCAL_WORKFLOW, parseEditionDescriptor, snapshotEditionTarget, workflowFromEnv, writeEditionArtifact } from './edition-artifact.mjs';
|
|
52
|
-
import { resetEditionWorkspaceConfig } from './edition-config.mjs';
|
|
53
|
-
import { CATALOGUE_PIN_KEY, DEFINITION_PIN_KEY, DEFINITION_REPOSITORY_PIN_KEY, EDITION_DESCRIPTOR_FILE, EditionChannel, EditionKind, VENDOR_MEMBER_PIN_PATTERN } from './edition-constants.mjs';
|
|
54
|
-
import { WorkspaceRoot, cacheDir, configureEditionWorkspace, configuredWorkspace, editionsRoot, workspaceArgv } from './edition-workspace.mjs';
|
|
55
|
-
import { descriptorEvidenceTrust } from './evidence-trust-policy.mjs';
|
|
56
|
-
import { materializeGitSource } from './external-source-walk.mjs';
|
|
57
|
-
import { serializeJson } from './lib.mjs';
|
|
58
|
-
import { dataPinKey, isSourcePinKey, sortedSnapshotPins, sourceNameOfPinKey } from './pin-source.mjs';
|
|
59
|
-
import { parseStrictJson, readStrictJsonFile } from './strict-json.mjs';
|
|
60
|
-
|
|
61
|
-
export { DEFINITION_REPOSITORY_PIN_KEY };
|
|
62
|
-
/** The definition file in a definition directory (the editions-root layout). */
|
|
63
|
-
const DEFINITION_FILE = 'xema-distribution.json';
|
|
64
|
-
const SHA_PATTERN = /^[0-9a-f]{40}$/;
|
|
65
|
-
const ENTRY = join(dirname(fileURLToPath(import.meta.url)), 'develop-edition.mjs');
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* `sha256:<hex>` of the exact catalogue.json bytes the vendor step wrote (the catalogue layer digest convention): the
|
|
69
|
-
* lock's catalogueContentDigest, never a pin.
|
|
70
|
-
*/
|
|
71
|
-
export const catalogueContentDigestOf = (bytes) => sha256Digest(bytes);
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* --pins checked and split once, before anything is fetched: `{ definitionRepositoryCommit, members }`, the members
|
|
75
|
-
* every other key. "catalogue" and "definition" are computed, never input.
|
|
76
|
-
*/
|
|
77
|
-
export function splitCatalogueFreePins(pins) {
|
|
78
|
-
if (pins === null || typeof pins !== 'object' || Array.isArray(pins)) {throw new Error('--pins must be an object mapping pin key -> 40-hex commit');}
|
|
79
|
-
for (const computed of [CATALOGUE_PIN_KEY, DEFINITION_PIN_KEY]) {
|
|
80
|
-
if (computed in pins) {throw new Error(`--pins names "${computed}": a catalogue-free resolve computes the definition digest and pins no catalogue`);}
|
|
81
|
-
}
|
|
82
|
-
const { [DEFINITION_REPOSITORY_PIN_KEY]: definitionRepositoryCommit, ...members } = pins;
|
|
83
|
-
if (typeof definitionRepositoryCommit !== 'string' || !SHA_PATTERN.test(definitionRepositoryCommit)) {
|
|
84
|
-
throw new Error(`--pins "${DEFINITION_REPOSITORY_PIN_KEY}" must be the 40-hex commit the definition repository is read at, got ${JSON.stringify(definitionRepositoryCommit)}`);
|
|
85
|
-
}
|
|
86
|
-
if (!Object.keys(members).some((key) => VENDOR_MEMBER_PIN_PATTERN.test(key))) {
|
|
87
|
-
throw new Error('--pins carries no vendor member pin (repos/<x> or submodules/<x>): a catalogue-free resolve resolves the vendor offering from them');
|
|
88
|
-
}
|
|
89
|
-
return { definitionRepositoryCommit, members };
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* The members of --pins between the two steps: `{ own, vendor }`, own the sources/<name> keys the definition declares.
|
|
94
|
-
* `offering` and `definition` are `{ label, sourceNames }`: a source name both declare is refused, naming both.
|
|
95
|
-
*/
|
|
96
|
-
export function partitionCatalogueFreePins(members, { offering, definition }) {
|
|
97
|
-
const vendorNames = new Set(offering.sourceNames);
|
|
98
|
-
const shared = [...new Set(definition.sourceNames)].filter((name) => vendorNames.has(name));
|
|
99
|
-
if (shared.length > 0) {
|
|
100
|
-
throw new Error(`the source${shared.length === 1 ? '' : 's'} ${shared.map((name) => `"${name}"`).join(', ')} ${shared.length === 1 ? 'is' : 'are'} declared by both the offering ${offering.label} and the definition ${definition.label}: a catalogue-free resolve splits each sources/<name> pin to one of them, so a source name is declared once`);
|
|
101
|
-
}
|
|
102
|
-
const ownNames = new Set(definition.sourceNames);
|
|
103
|
-
const own = {};
|
|
104
|
-
const vendor = {};
|
|
105
|
-
for (const [key, commit] of Object.entries(members)) {
|
|
106
|
-
if (isSourcePinKey(key) && ownNames.has(sourceNameOfPinKey(key))) {own[key] = commit;} else {vendor[key] = commit;}
|
|
107
|
-
}
|
|
108
|
-
return { own, vendor: sortedSnapshotPins(vendor) };
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/** The definition repository at `commit`, through the source walk's fetch by exact commit; returns its (shared cache) directory. */
|
|
112
|
-
export function fetchDefinitionRepository({ repository, commit, env }) {
|
|
113
|
-
const source = { kind: 'git', name: DEFINITION_REPOSITORY_PIN_KEY, url: `https://github.com/${repository}.git`, ref: commit };
|
|
114
|
-
return materializeGitSource({ source, cacheRoot: join(cacheDir(), 'definition-repositories', ...repository.split('/')), env }).directory;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* The tree of `commit` in the repository at `repository`, written into the new directory `into` from the object store
|
|
119
|
-
* (a temporary index beside `into`, never the repository's own index or worktree; symlinks as plain files, so nothing
|
|
120
|
-
* read from `into` resolves outside it). Returns `into`.
|
|
121
|
-
*/
|
|
122
|
-
export function materializeDefinitionCommit({ repository, commit, into }) {
|
|
123
|
-
mkdirSync(into);
|
|
124
|
-
const env = { ...process.env, GIT_INDEX_FILE: `${into}.index`, GIT_NO_LAZY_FETCH: '1' };
|
|
125
|
-
const git = (args) => execFileSync('git', ['-C', repository, '-c', 'core.symlinks=false', ...args], { env, stdio: ['ignore', 'pipe', 'pipe'] });
|
|
126
|
-
try {
|
|
127
|
-
git(['read-tree', `${commit}^{tree}`]);
|
|
128
|
-
git(['checkout-index', '--all', `--prefix=${into}/`]);
|
|
129
|
-
} finally {
|
|
130
|
-
rmSync(`${into}.index`, { force: true });
|
|
131
|
-
}
|
|
132
|
-
return into;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/** The argv of the vendor step's child `develop resolve` (after the node binary). */
|
|
136
|
-
export function vendorResolveArgs({ offeringId, pinsFile, outDir, options, roots }) {
|
|
137
|
-
// Always --local: the child is a step of this call, not a release workflow; its descriptor never leaves the scratch
|
|
138
|
-
// directory, and the edition this call writes records this call's own workflow (LOCAL_WORKFLOW only under --local).
|
|
139
|
-
// The child finds and proves the engine itself (--engine-repository/--engine-signer), and seals against the OFFERING's
|
|
140
|
-
// own previous seal (the images lock `develop follow` froze), held by the child to its sha256 and to the offering's id.
|
|
141
|
-
return [
|
|
142
|
-
ENTRY, 'resolve', offeringId, '--pins', pinsFile, '--out', outDir, '--registry', options['--registry'],
|
|
143
|
-
'--engine-repository', options['--engine-repository'], '--engine-signer', options['--engine-signer'], '--cosign', options['--cosign'],
|
|
144
|
-
'--previous-lock', options[OFFERING_PREVIOUS_LOCK_FLAG], '--previous-lock-sha256', options[OFFERING_PREVIOUS_LOCK_SHA256_FLAG],
|
|
145
|
-
'--local', ...roots,
|
|
146
|
-
];
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/** The vendor step: a child `develop resolve` of this CLI on the vendor roots, writing into `outDir`. */
|
|
150
|
-
export function runVendorResolve({ offeringId, pinsFile, outDir, options, env, roots }) {
|
|
151
|
-
const result = spawnSync(process.execPath, vendorResolveArgs({ offeringId, pinsFile, outDir, options, roots }), { env, stdio: ['ignore', 'ignore', 'inherit'] });
|
|
152
|
-
if (result.error !== undefined || result.status !== 0) {
|
|
153
|
-
throw new Error(`the vendor resolve of the offering "${offeringId}" failed (${result.error?.message ?? `exit ${result.status ?? result.signal}`}); its refusal is above`);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* The catalogue the vendor step wrote, its digest, the engine it proved, and the proof the vendor artifact is that offering
|
|
159
|
-
* at those pins. (The digest is of `bytes` as read, the same bytes parsed: never a re-serialisation.)
|
|
160
|
-
*/
|
|
161
|
-
export function readVendorCatalogue({ outDir, offeringId, vendorPins }) {
|
|
162
|
-
const path = join(outDir, CATALOGUE_FILE);
|
|
163
|
-
const bytes = readFileSync(path);
|
|
164
|
-
const catalogue = parseCatalogue(parseStrictJson(bytes.toString('utf8'), path));
|
|
165
|
-
if (catalogue.offeringId !== offeringId || catalogue.channel !== EditionChannel.Develop) {
|
|
166
|
-
throw new Error(`the vendor step wrote the catalogue of "${catalogue.offeringId}" (${catalogue.channel}), not of the develop offering "${offeringId}"`);
|
|
167
|
-
}
|
|
168
|
-
const descriptor = parseEditionDescriptor(readStrictJsonFile(join(outDir, EDITION_DESCRIPTOR_FILE)));
|
|
169
|
-
if (serializeJson(sortedSnapshotPins(descriptor.provenance.pins)) !== serializeJson(vendorPins)) {
|
|
170
|
-
throw new Error(`the vendor step resolved "${offeringId}" at other pins than the vendor pins it was given`);
|
|
171
|
-
}
|
|
172
|
-
return { catalogue, catalogueContentDigest: catalogueContentDigestOf(bytes), engineImage: descriptor.engine.image };
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/** Run `body` with the workspace on `roots`, restoring the previous roots after. */
|
|
176
|
-
async function onRoots(roots, body) {
|
|
177
|
-
const restored = configuredWorkspace();
|
|
178
|
-
resetEditionWorkspaceConfig();
|
|
179
|
-
configureEditionWorkspace(roots);
|
|
180
|
-
try {
|
|
181
|
-
return await body();
|
|
182
|
-
} finally {
|
|
183
|
-
resetEditionWorkspaceConfig();
|
|
184
|
-
configureEditionWorkspace(restored);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* The catalogue-free customer develop resolve (see the header). Writes the artifact to --out and returns
|
|
190
|
-
* `{ id, pins, target, catalogueContentDigest, engineImage }`. The edition records the engine the vendor step proved, and
|
|
191
|
-
* carries the customer's own composed generations from --previous-lock (or --first-seal) under the customer's id.
|
|
192
|
-
* `fetchDefinition`, `vendorResolve`, `resolveCustomer`, `evidenceTrust` and `write` are replaced by tests; `print`
|
|
193
|
-
* receives the target.
|
|
194
|
-
*/
|
|
195
|
-
export async function resolveCatalogueFree({
|
|
196
|
-
options,
|
|
197
|
-
env = process.env,
|
|
198
|
-
fetchDefinition = fetchDefinitionRepository,
|
|
199
|
-
vendorResolve = runVendorResolve,
|
|
200
|
-
resolveCustomer = resolveCustomerChannelEdition,
|
|
201
|
-
evidenceTrust = descriptorEvidenceTrust,
|
|
202
|
-
write = writeEditionArtifact,
|
|
203
|
-
print = (line) => console.log(line),
|
|
204
|
-
}) {
|
|
205
|
-
const definition = parseFollowDefinition(options[DEFINITION_AT_FLAG], DEFINITION_AT_FLAG);
|
|
206
|
-
const offering = parseFollowDefinition(options[OFFERING_FLAG], OFFERING_FLAG);
|
|
207
|
-
const rawPins = readStrictJsonFile(options['--pins']);
|
|
208
|
-
const offeringId = assertDefinitionCheckout({ definition: offering, dataSha: rawPins?.[dataPinKey()], flag: OFFERING_FLAG, shaLabel: `--pins "${dataPinKey()}"` });
|
|
209
|
-
const { definitionRepositoryCommit, members } = splitCatalogueFreePins(rawPins);
|
|
210
|
-
const offeringLabel = `${offering.repository}:${offering.path}/${DEFINITION_FILE}`;
|
|
211
|
-
const offeringSourceNames = declaredSourceNamesOf(readStrictJsonFile(join(editionsRoot(), offeringId, DEFINITION_FILE)));
|
|
212
|
-
const vendorRoots = configuredWorkspace();
|
|
213
|
-
const scratch = mkdtempSync(join(tmpdir(), 'xema-catalogue-free-'));
|
|
214
|
-
try {
|
|
215
|
-
const cached = fetchDefinition({ repository: definition.repository, commit: definitionRepositoryCommit, env });
|
|
216
|
-
const checkout = materializeDefinitionCommit({ repository: cached, commit: definitionRepositoryCommit, into: join(scratch, DEFINITION_REPOSITORY_PIN_KEY) });
|
|
217
|
-
const definitionDir = join(checkout, definition.path);
|
|
218
|
-
const definitionLabel = `${definition.repository}:${definition.path}/${DEFINITION_FILE}`;
|
|
219
|
-
if (existsSync(join(definitionDir, CATALOGUE_PIN_FILE))) {
|
|
220
|
-
throw new Error(`${definition.repository}:${definition.path} carries ${CATALOGUE_PIN_FILE}: a definition is resolved against its pinned catalogue (--definition <file>) or catalogue-free, never both`);
|
|
221
|
-
}
|
|
222
|
-
const rawDefinition = readStrictJsonFile(join(definitionDir, DEFINITION_FILE));
|
|
223
|
-
assertCanonicalDistributionId(rawDefinition?.id);
|
|
224
|
-
if (rawDefinition.id !== basename(definition.path)) {
|
|
225
|
-
throw new Error(`${definitionLabel} is "${rawDefinition.id}", not the directory's "${basename(definition.path)}"`);
|
|
226
|
-
}
|
|
227
|
-
const split = partitionCatalogueFreePins(members, {
|
|
228
|
-
offering: { label: offeringLabel, sourceNames: offeringSourceNames },
|
|
229
|
-
definition: { label: definitionLabel, sourceNames: declaredSourceNamesOf(rawDefinition) },
|
|
230
|
-
});
|
|
231
|
-
const sourceImages = customerSourceImages(options, rawDefinition);
|
|
232
|
-
const vendorOut = join(scratch, 'vendor');
|
|
233
|
-
const pinsFile = join(scratch, 'vendor-pins.json');
|
|
234
|
-
writeFileSync(pinsFile, serializeJson(split.vendor));
|
|
235
|
-
vendorResolve({ offeringId, pinsFile, outDir: vendorOut, options, env, roots: workspaceArgv() });
|
|
236
|
-
const { catalogue, catalogueContentDigest, engineImage } = readVendorCatalogue({ outDir: vendorOut, offeringId, vendorPins: split.vendor });
|
|
237
|
-
const sources = join(scratch, 'sources');
|
|
238
|
-
mkdirSync(sources);
|
|
239
|
-
const customerRoots = {
|
|
240
|
-
[WorkspaceRoot.Data]: join(checkout, definition.dataRoot),
|
|
241
|
-
[WorkspaceRoot.Editions]: dirname(definitionDir),
|
|
242
|
-
[WorkspaceRoot.Sources]: sources,
|
|
243
|
-
[WorkspaceRoot.Cache]: vendorRoots[WorkspaceRoot.Cache],
|
|
244
|
-
};
|
|
245
|
-
return await onRoots(customerRoots, async () => {
|
|
246
|
-
const { id, pins, ...resolved } = await resolveCustomer({
|
|
247
|
-
channel: EditionChannel.Develop,
|
|
248
|
-
rawDefinition,
|
|
249
|
-
catalogue,
|
|
250
|
-
catalogueContentDigest,
|
|
251
|
-
pins: split.own,
|
|
252
|
-
vendorPins: { ...split.vendor, [DEFINITION_REPOSITORY_PIN_KEY]: definitionRepositoryCommit },
|
|
253
|
-
previousSeal: customerPreviousSeal(EditionChannel.Develop, options),
|
|
254
|
-
sourceImages,
|
|
255
|
-
env,
|
|
256
|
-
// The customer's git-sourced OCI bundles, verified under the definition's own pinned policy (its data root).
|
|
257
|
-
developGitBundles: customerDevelopGitBundleVerifier({ channel: EditionChannel.Develop, cosignBinary: options['--cosign'], env }),
|
|
258
|
-
});
|
|
259
|
-
const evidenceTrustPolicy = await evidenceTrust({ kind: EditionKind.Resolved, channel: EditionChannel.Develop, consumesCatalogue: true });
|
|
260
|
-
const target = snapshotEditionTarget(EditionChannel.Develop, id, pins, { registry: options['--registry'], engineImage, sourceImages });
|
|
261
|
-
write({
|
|
262
|
-
outDir: resolve(options['--out']),
|
|
263
|
-
channel: EditionChannel.Develop,
|
|
264
|
-
distributionId: id,
|
|
265
|
-
pins,
|
|
266
|
-
workflow: options['--local'] ? LOCAL_WORKFLOW : workflowFromEnv(env),
|
|
267
|
-
evidenceTrustPolicy,
|
|
268
|
-
engineImage,
|
|
269
|
-
distributionLock: resolved.distributionLock,
|
|
270
|
-
imageLock: resolved.imageLock,
|
|
271
|
-
authorizationLock: resolved.authorizationLock,
|
|
272
|
-
chartSetLock: resolved.chartSetLock,
|
|
273
|
-
});
|
|
274
|
-
print(target);
|
|
275
|
-
return { id, pins, target, catalogueContentDigest, engineImage };
|
|
276
|
-
});
|
|
277
|
-
} finally {
|
|
278
|
-
rmSync(scratch, { recursive: true, force: true });
|
|
279
|
-
}
|
|
280
|
-
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
// develop-chart-roster — the develop chart roster of a deploy checkout, as the
|
|
2
|
-
// deploy repository itself computes it.
|
|
3
|
-
//
|
|
4
|
-
// A develop chart's version is `0.0.0-h<16 hex>`, the first 16 hex of its full
|
|
5
|
-
// content digest (xema-deploy scripts/lib/chart-content-digest.mjs,
|
|
6
|
-
// developChartVersionFromDigest). That function belongs to the deploy
|
|
7
|
-
// repository, and so does the index version derived from the roster: publish-
|
|
8
|
-
// charts on refs/heads/develop runs the same code to publish the charts and
|
|
9
|
-
// close the set with its `xema-chart-set` index. So the CLI never reimplements
|
|
10
|
-
// or vendors it: it runs the entry point of the frozen deploy checkout
|
|
11
|
-
// (`scripts/chart-content-digest.mjs --develop-roster --json`), which is the
|
|
12
|
-
// code the publisher ran for that commit, and validates the one document it
|
|
13
|
-
// prints. A vendored copy would pin the CLI to one revision of a hash whose
|
|
14
|
-
// owner is the deploy commit being resolved.
|
|
15
|
-
|
|
16
|
-
import { execFileSync } from 'node:child_process';
|
|
17
|
-
import { join } from 'node:path';
|
|
18
|
-
|
|
19
|
-
import { parseStrictJson } from './strict-json.mjs';
|
|
20
|
-
|
|
21
|
-
/** The schema string the deploy entry point stamps on its develop roster. */
|
|
22
|
-
export const DEVELOP_CHART_ROSTER_SCHEMA = 'xema-develop-chart-roster/1';
|
|
23
|
-
|
|
24
|
-
/** The entry point, relative to the deploy checkout, and its arguments. */
|
|
25
|
-
export const DEVELOP_CHART_ROSTER_ENTRY = 'scripts/chart-content-digest.mjs';
|
|
26
|
-
export const DEVELOP_CHART_ROSTER_ARGS = Object.freeze(['--develop-roster', '--json']);
|
|
27
|
-
|
|
28
|
-
/** A develop channel coordinate: revision 0 and the content digest's first 16 hex. */
|
|
29
|
-
export const DEVELOP_CHART_VERSION_PATTERN = /^0\.0\.0-h[0-9a-f]{16}$/;
|
|
30
|
-
|
|
31
|
-
/** A chart name as Helm and the registry address it. */
|
|
32
|
-
const CHART_NAME_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
|
|
33
|
-
|
|
34
|
-
const ROSTER_KEYS = 'indexVersion,members,schema';
|
|
35
|
-
const MEMBER_KEYS = 'name,version';
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Validate the develop roster document `document` (from `source`) and return
|
|
39
|
-
* `{indexVersion, members: [{name, version}]}`. Every rule is strict: the exact
|
|
40
|
-
* schema string and keys, develop coordinates only, and members sorted by name
|
|
41
|
-
* with no name twice.
|
|
42
|
-
*/
|
|
43
|
-
export function parseDevelopChartRoster(document, source) {
|
|
44
|
-
const fail = (why) => {
|
|
45
|
-
throw new Error(`${source} is not a ${DEVELOP_CHART_ROSTER_SCHEMA} roster: ${why}`);
|
|
46
|
-
};
|
|
47
|
-
if (!document || typeof document !== 'object' || Array.isArray(document)) {fail('it is not a JSON object');}
|
|
48
|
-
if (document.schema !== DEVELOP_CHART_ROSTER_SCHEMA) {fail(`schema must be "${DEVELOP_CHART_ROSTER_SCHEMA}" (got ${JSON.stringify(document.schema)})`);}
|
|
49
|
-
const keys = Object.keys(document).sort().join(',');
|
|
50
|
-
if (keys !== ROSTER_KEYS) {fail(`it must carry exactly ${ROSTER_KEYS} (got ${keys})`);}
|
|
51
|
-
if (!DEVELOP_CHART_VERSION_PATTERN.test(String(document.indexVersion))) {
|
|
52
|
-
fail(`indexVersion must be a develop coordinate 0.0.0-h<16 hex> (got ${JSON.stringify(document.indexVersion)})`);
|
|
53
|
-
}
|
|
54
|
-
if (!Array.isArray(document.members) || document.members.length === 0) {fail('members must be a non-empty array');}
|
|
55
|
-
let previous = '';
|
|
56
|
-
const members = document.members.map((member, position) => {
|
|
57
|
-
if (!member || typeof member !== 'object' || Array.isArray(member) || Object.keys(member).sort().join(',') !== MEMBER_KEYS) {
|
|
58
|
-
fail(`member ${position} must be exactly {name, version}`);
|
|
59
|
-
}
|
|
60
|
-
if (!CHART_NAME_PATTERN.test(String(member.name))) {fail(`member ${position} has a malformed chart name ${JSON.stringify(member.name)}`);}
|
|
61
|
-
if (!DEVELOP_CHART_VERSION_PATTERN.test(String(member.version))) {
|
|
62
|
-
fail(`${member.name} has no develop coordinate 0.0.0-h<16 hex> (got ${JSON.stringify(member.version)})`);
|
|
63
|
-
}
|
|
64
|
-
if (member.name <= previous) {fail(`members must be sorted by name with no name twice (${member.name} follows ${previous})`);}
|
|
65
|
-
previous = member.name;
|
|
66
|
-
return { name: member.name, version: member.version };
|
|
67
|
-
});
|
|
68
|
-
return { indexVersion: document.indexVersion, members };
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* The develop roster of the deploy checkout at `deployDir`: its own entry point
|
|
73
|
-
* run with this node, in that checkout, with only PATH from the environment (the
|
|
74
|
-
* entry point needs git and nothing else; no credential reaches it).
|
|
75
|
-
*/
|
|
76
|
-
export function readDevelopChartRoster(deployDir) {
|
|
77
|
-
const entry = join(deployDir, DEVELOP_CHART_ROSTER_ENTRY);
|
|
78
|
-
let stdout;
|
|
79
|
-
try {
|
|
80
|
-
stdout = execFileSync(process.execPath, [entry, ...DEVELOP_CHART_ROSTER_ARGS], {
|
|
81
|
-
cwd: deployDir,
|
|
82
|
-
encoding: 'utf8',
|
|
83
|
-
env: { PATH: process.env.PATH ?? '' },
|
|
84
|
-
maxBuffer: 16 * 1024 * 1024,
|
|
85
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
86
|
-
});
|
|
87
|
-
} catch (error) {
|
|
88
|
-
const stderr = typeof error?.stderr === 'string' ? error.stderr.trim() : '';
|
|
89
|
-
throw new Error(
|
|
90
|
-
`the deploy checkout's develop roster failed (node ${DEVELOP_CHART_ROSTER_ENTRY} ${DEVELOP_CHART_ROSTER_ARGS.join(' ')} in ${deployDir}): ${stderr || error.message}`,
|
|
91
|
-
{ cause: error },
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
const source = `${DEVELOP_CHART_ROSTER_ENTRY} ${DEVELOP_CHART_ROSTER_ARGS.join(' ')}`;
|
|
95
|
-
return parseDevelopChartRoster(parseStrictJson(stdout, source), source);
|
|
96
|
-
}
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
// develop-chart-set — the chart-set lock of a develop edition.
|
|
2
|
-
//
|
|
3
|
-
// A develop edition renders the charts of its frozen deploy commit. The deploy
|
|
4
|
-
// checkout computes its own develop roster (develop-chart-roster.mjs: every
|
|
5
|
-
// chart at `0.0.0-h<16 hex>` and the set's index version), and xema-deploy
|
|
6
|
-
// publish-charts on refs/heads/develop publishes those charts and closes the
|
|
7
|
-
// set with a `xema-chart-set` index at that index version, the same artifact
|
|
8
|
-
// a release closes its set with. So a develop lock is resolved exactly as a
|
|
9
|
-
// release one is (resolve-chart-set.mjs), only at a version the deploy commit
|
|
10
|
-
// names instead of the newest the registry holds: read the index at the
|
|
11
|
-
// roster's index version, require its members to be the roster, seal every
|
|
12
|
-
// member against the registry, and build the same schemaVersion 4 lock. The
|
|
13
|
-
// committed release lock is never read.
|
|
14
|
-
//
|
|
15
|
-
// TWO PUBLISHERS. A develop lock lists the publisher whose repository is the
|
|
16
|
-
// deploy pin role's (this resolution) followed by the release infra publisher,
|
|
17
|
-
// taken verbatim from the data root's committed chart-set.lock.json. Infra
|
|
18
|
-
// charts have no develop channel: the committed release entry is the only
|
|
19
|
-
// published infra set, and the deploy engine plans and applies scope infra on
|
|
20
|
-
// every channel, so a develop deployment needs it to move infra (pgbouncer,
|
|
21
|
-
// external-services) through the pipeline. The data root pin is already in the
|
|
22
|
-
// develop tag, so a moved infra entry moves the tag. A committed lock that is
|
|
23
|
-
// absent, or lacks exactly one infra publisher, is refused: no fallback, no
|
|
24
|
-
// develop-without-infra mode.
|
|
25
|
-
//
|
|
26
|
-
// NOT PUBLISHED IS A REFUSAL. An index or member the registry does not serve
|
|
27
|
-
// (404) is refused by name and version: publish-charts for the deploy commit
|
|
28
|
-
// has not finished green. There is no fallback to any other set.
|
|
29
|
-
|
|
30
|
-
import { basename } from 'node:path';
|
|
31
|
-
|
|
32
|
-
import { RefusalError } from './collected-refusals.mjs';
|
|
33
|
-
import { readDevelopChartRoster } from './develop-chart-roster.mjs';
|
|
34
|
-
import { assertRosteredChartSetLock } from './edition-chart-set.mjs';
|
|
35
|
-
import { deployRoot } from './edition-workspace.mjs';
|
|
36
|
-
import { COMMIT_PATTERN } from './evidence-grammars.mjs';
|
|
37
|
-
import { deployPinKey } from './pin-source.mjs';
|
|
38
|
-
import {
|
|
39
|
-
CHART_SET_LOCK_FILE,
|
|
40
|
-
buildLock,
|
|
41
|
-
chartSetLockPath,
|
|
42
|
-
chartRegistryClient,
|
|
43
|
-
chartSetPublishers,
|
|
44
|
-
indexRosterAndDigest,
|
|
45
|
-
readLock,
|
|
46
|
-
registryChartDigest,
|
|
47
|
-
sealRoster,
|
|
48
|
-
} from './resolve-chart-set.mjs';
|
|
49
|
-
|
|
50
|
-
const NOT_FOUND = 404;
|
|
51
|
-
|
|
52
|
-
/** The publisher whose repository is the deploy pin role's; exactly one must be configured. */
|
|
53
|
-
function deployPublisher() {
|
|
54
|
-
const deployRepo = basename(deployPinKey());
|
|
55
|
-
const publishers = chartSetPublishers().filter((publisher) => basename(publisher.repo) === deployRepo);
|
|
56
|
-
if (publishers.length !== 1) {
|
|
57
|
-
throw new RefusalError(
|
|
58
|
-
`${publishers.length} configured chart publishers have repository ${deployRepo} (the deploy pin role); exactly one must, ` +
|
|
59
|
-
'since a develop chart set is that publisher\'s set at the deploy commit',
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
return publishers[0];
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/** The configured publishers that are not the deploy pin role's: the infra publisher(s) a release lock carries. */
|
|
66
|
-
function infraPublisherIndexes() {
|
|
67
|
-
const deployRepo = basename(deployPinKey());
|
|
68
|
-
return chartSetPublishers().filter((publisher) => basename(publisher.repo) !== deployRepo).map((publisher) => publisher.index);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/** The ONE infra publisher entry of the data root's committed release lock, unchanged. */
|
|
72
|
-
function committedInfraPublisher() {
|
|
73
|
-
const path = chartSetLockPath();
|
|
74
|
-
const committed = readLock(path);
|
|
75
|
-
if (committed === null) {
|
|
76
|
-
throw new RefusalError(`${path} is absent or unreadable; a develop edition carries the release infra chart set from it`);
|
|
77
|
-
}
|
|
78
|
-
assertRosteredChartSetLock(committed, path);
|
|
79
|
-
const indexes = infraPublisherIndexes();
|
|
80
|
-
const found = committed.publishers.filter((publisher) => indexes.includes(publisher.index));
|
|
81
|
-
if (indexes.length !== 1 || found.length !== 1) {
|
|
82
|
-
throw new RefusalError(
|
|
83
|
-
`${path} carries ${found.length} infra publisher entries (${indexes.length} infra publishers configured); exactly one is required`,
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
return found[0];
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/** Run `read`; a registry 404 becomes the "not published yet" refusal naming `what` and the publisher's run for the deploy commit. */
|
|
90
|
-
async function published(read, what, { publisher, xemaDeploySha }) {
|
|
91
|
-
try {
|
|
92
|
-
return await read();
|
|
93
|
-
} catch (error) {
|
|
94
|
-
if (error?.status !== NOT_FOUND) {throw error;}
|
|
95
|
-
throw new RefusalError(`${what} is not published yet; ${publisher.repo} publish-charts for ${xemaDeploySha} not green`, { cause: error });
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/** Refuse an index whose members are not exactly the roster's names at the roster's versions. */
|
|
100
|
-
function assertIndexIsRoster(indexRoster, members, label) {
|
|
101
|
-
const expected = members.map(({ name, version }) => `${name} ${version}`);
|
|
102
|
-
const actual = Object.entries(indexRoster).map(([name, member]) => `${name} ${member.version}`);
|
|
103
|
-
const missing = expected.filter((line) => !actual.includes(line));
|
|
104
|
-
const extra = actual.filter((line) => !expected.includes(line));
|
|
105
|
-
if (missing.length > 0 || extra.length > 0) {
|
|
106
|
-
throw new RefusalError(
|
|
107
|
-
`${label} does not carry the deploy checkout's develop roster: ` +
|
|
108
|
-
`missing [${missing.join(', ')}], unexpected [${extra.join(', ')}]`,
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* The develop chart-set lock for the deploy commit `xemaDeploySha`, whose frozen
|
|
115
|
-
* checkout is `deployDir`. `readRoster(deployDir)` returns `{indexVersion, members}`;
|
|
116
|
-
* `client` is the chart registry client the release resolver uses.
|
|
117
|
-
*/
|
|
118
|
-
export async function resolveDevelopChartSet({ xemaDeploySha, deployDir = deployRoot(), readRoster = readDevelopChartRoster, client }) {
|
|
119
|
-
if (!COMMIT_PATTERN.test(xemaDeploySha ?? '')) {
|
|
120
|
-
throw new RefusalError(`the deploy checkout SHA is not a 40-hex commit: ${JSON.stringify(xemaDeploySha)}`);
|
|
121
|
-
}
|
|
122
|
-
const publisher = deployPublisher();
|
|
123
|
-
const infraPublisher = committedInfraPublisher();
|
|
124
|
-
const { indexVersion, members } = readRoster(deployDir);
|
|
125
|
-
const registry = client ?? chartRegistryClient();
|
|
126
|
-
const label = `${publisher.index}@${indexVersion}`;
|
|
127
|
-
const { roster, indexDigest } = await published(
|
|
128
|
-
() => indexRosterAndDigest(registry, publisher.index, indexVersion),
|
|
129
|
-
`the chart-set index ${label}`,
|
|
130
|
-
{ publisher, xemaDeploySha },
|
|
131
|
-
);
|
|
132
|
-
assertIndexIsRoster(roster, members, label);
|
|
133
|
-
const lookup = registryChartDigest(registry);
|
|
134
|
-
const charts = await sealRoster(
|
|
135
|
-
roster,
|
|
136
|
-
(name, version) => published(() => lookup(name, version), `chart ${name}:${version}`, { publisher, xemaDeploySha }),
|
|
137
|
-
label,
|
|
138
|
-
);
|
|
139
|
-
const lock = buildLock(
|
|
140
|
-
{ [publisher.index]: indexVersion },
|
|
141
|
-
{ [publisher.index]: charts },
|
|
142
|
-
{ [publisher.index]: indexDigest },
|
|
143
|
-
[publisher],
|
|
144
|
-
);
|
|
145
|
-
lock.publishers.push(infraPublisher);
|
|
146
|
-
return assertRosteredChartSetLock(lock, CHART_SET_LOCK_FILE);
|
|
147
|
-
}
|