@xemahq/xema 0.59.0 → 0.60.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -1414
- 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 -2294
- 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,206 +0,0 @@
|
|
|
1
|
-
// kernel-package — the customer edition's kernel: `@xemahq/contracts` taken from public npm.
|
|
2
|
-
//
|
|
3
|
-
// A catalogue names its kernel package (`kernel: {name, version, integrity}`, catalogue.mjs). This module is
|
|
4
|
-
// the ONE place that touches npm: it downloads that exact tarball (public, no credential, no .npmrc, no
|
|
5
|
-
// npm/pnpm process), holds it by the catalogue's integrity BEFORE anything is extracted, extracts it with the
|
|
6
|
-
// system `tar`, links its runtime dependencies to the copies this CLI itself ships, and proves the package is
|
|
7
|
-
// the contract authority the catalogue was resolved under: first by its edition protocol identity (data, no
|
|
8
|
-
// code executed), and only then, by loading its schemas, by the constants the authority was derived with.
|
|
9
|
-
|
|
10
|
-
import { spawnSync } from 'node:child_process';
|
|
11
|
-
import { createHash } from 'node:crypto';
|
|
12
|
-
import { mkdirSync, mkdtempSync, readFileSync, realpathSync, rmSync, symlinkSync } from 'node:fs';
|
|
13
|
-
import { createRequire } from 'node:module';
|
|
14
|
-
import { tmpdir } from 'node:os';
|
|
15
|
-
import { dirname, join } from 'node:path';
|
|
16
|
-
import { isDeepStrictEqual } from 'node:util';
|
|
17
|
-
|
|
18
|
-
import { readKernelEditionProtocol } from './edition-protocol.mjs';
|
|
19
|
-
import { cacheDir, stateKernelPackageDir } from './edition-workspace.mjs';
|
|
20
|
-
import { loadKernelDistributionSchemas } from './lib.mjs';
|
|
21
|
-
|
|
22
|
-
export const KERNEL_PACKAGE_NAME = '@xemahq/contracts';
|
|
23
|
-
const MAX_TARBALL_BYTES = 64 * 1024 * 1024;
|
|
24
|
-
const DEPENDENCY_NAME = /^(?:@[a-z0-9~-][a-z0-9._~-]*\/)?[a-z0-9~-][a-z0-9._~-]*$/;
|
|
25
|
-
const EXACT = /^(\d+)\.(\d+)\.(\d+)$/;
|
|
26
|
-
const CARET = /^\^(\d+)\.(\d+)\.(\d+)$/;
|
|
27
|
-
|
|
28
|
-
export class KernelPackageError extends Error {
|
|
29
|
-
constructor(message) {
|
|
30
|
-
super(message);
|
|
31
|
-
this.name = 'KernelPackageError';
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export const kernelTarballUrl = (version) => `https://registry.npmjs.org/${KERNEL_PACKAGE_NAME}/-/contracts-${version}.tgz`;
|
|
36
|
-
|
|
37
|
-
/** The npm integrity string of `bytes`: `sha512-<base64>`. */
|
|
38
|
-
export const integrityOf = (bytes) => `sha512-${createHash('sha512').update(bytes).digest('base64')}`;
|
|
39
|
-
|
|
40
|
-
/** The published tarball of `@xemahq/contracts@version`, bounded in size. */
|
|
41
|
-
export async function fetchKernelTarball(version, { fetch = globalThis.fetch } = {}) {
|
|
42
|
-
const url = kernelTarballUrl(version);
|
|
43
|
-
const response = await fetch(url);
|
|
44
|
-
if (response.status === 404) {
|
|
45
|
-
throw new KernelPackageError(`${KERNEL_PACKAGE_NAME}@${version} is not published on npm (${url}): a catalogue names a published kernel`);
|
|
46
|
-
}
|
|
47
|
-
if (!response.ok) {throw new KernelPackageError(`${url} answered HTTP ${response.status}`);}
|
|
48
|
-
const declared = Number(response.headers.get('content-length') ?? 0);
|
|
49
|
-
if (declared > MAX_TARBALL_BYTES) {throw new KernelPackageError(`${url} declares ${declared} bytes, over the ${MAX_TARBALL_BYTES} byte bound`);}
|
|
50
|
-
const chunks = [];
|
|
51
|
-
let size = 0;
|
|
52
|
-
for await (const chunk of response.body) {
|
|
53
|
-
size += chunk.length;
|
|
54
|
-
if (size > MAX_TARBALL_BYTES) {throw new KernelPackageError(`${url} is over the ${MAX_TARBALL_BYTES} byte bound`);}
|
|
55
|
-
chunks.push(chunk);
|
|
56
|
-
}
|
|
57
|
-
return Buffer.concat(chunks);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Does `version` (exactly x.y.z) satisfy `range`? Exactly two range forms are supported: `x.y.z`, and
|
|
62
|
-
* `^x.y.z` (x > 0: >=x.y.z <(x+1).0.0; 0.y.z: >=0.y.z <0.(y+1).0). Any other form is refused.
|
|
63
|
-
*/
|
|
64
|
-
export function satisfiesDeclaredRange(version, range) {
|
|
65
|
-
const have = EXACT.exec(version)?.slice(1).map(Number);
|
|
66
|
-
if (have === undefined) {throw new KernelPackageError(`version ${JSON.stringify(version)} is not an exact x.y.z version`);}
|
|
67
|
-
const exact = EXACT.exec(range)?.slice(1).map(Number);
|
|
68
|
-
if (exact !== undefined) {return isDeepStrictEqual(have, exact);}
|
|
69
|
-
const caret = CARET.exec(range)?.slice(1).map(Number);
|
|
70
|
-
if (caret === undefined) {throw new KernelPackageError(`range ${JSON.stringify(range)} is not x.y.z or ^x.y.z, the only forms a kernel dependency may declare`);}
|
|
71
|
-
const compare = (a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2];
|
|
72
|
-
const upper = caret[0] > 0 ? [caret[0] + 1, 0, 0] : [0, caret[1] + 1, 0];
|
|
73
|
-
return compare(have, caret) >= 0 && compare(have, upper) < 0;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/** The directory of `name` as this CLI itself ships it: its own resolution first, then its installed kernel's. */
|
|
77
|
-
function shippedPackageDir(name) {
|
|
78
|
-
const own = createRequire(import.meta.url);
|
|
79
|
-
const attempts = [() => own, () => createRequire(realpathSync(own.resolve(`${KERNEL_PACKAGE_NAME}/package.json`)))];
|
|
80
|
-
for (const requireFrom of attempts) {
|
|
81
|
-
try {
|
|
82
|
-
return dirname(realpathSync(requireFrom().resolve(`${name}/package.json`)));
|
|
83
|
-
} catch (error) {
|
|
84
|
-
if (error?.code !== 'MODULE_NOT_FOUND' && error?.code !== 'ERR_PACKAGE_PATH_NOT_EXPORTED') {throw error;}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return undefined;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* The `@xemahq/contracts` package this CLI itself ships (installed from public npm with the CLI): the kernel of a
|
|
92
|
-
* verb that runs with no kernel checkout and no catalogue, such as a third-party publisher's
|
|
93
|
-
* `evidence assemble-third-party-input`. Refused when the CLI's installation has none.
|
|
94
|
-
*/
|
|
95
|
-
export function shippedKernelPackageDir() {
|
|
96
|
-
const dir = shippedPackageDir(KERNEL_PACKAGE_NAME);
|
|
97
|
-
if (dir === undefined) {
|
|
98
|
-
throw new KernelPackageError(`this CLI's installation ships no ${KERNEL_PACKAGE_NAME}; reinstall the CLI from npm`);
|
|
99
|
-
}
|
|
100
|
-
return dir;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
function linkRuntimeDependencies(packageDir) {
|
|
104
|
-
const manifest = JSON.parse(readFileSync(join(packageDir, 'package.json'), 'utf8'));
|
|
105
|
-
const nodeModules = dirname(manifest.name.startsWith('@') ? dirname(packageDir) : packageDir);
|
|
106
|
-
for (const [name, range] of Object.entries(manifest.dependencies ?? {})) {
|
|
107
|
-
if (!DEPENDENCY_NAME.test(name)) {throw new KernelPackageError(`${KERNEL_PACKAGE_NAME} declares a dependency named ${JSON.stringify(name)}, which is not a package name`);}
|
|
108
|
-
const shipped = shippedPackageDir(name);
|
|
109
|
-
if (shipped === undefined) {throw new KernelPackageError(`${KERNEL_PACKAGE_NAME} depends on ${name}@${range}, which this CLI does not ship`);}
|
|
110
|
-
const version = JSON.parse(readFileSync(join(shipped, 'package.json'), 'utf8')).version;
|
|
111
|
-
let ok;
|
|
112
|
-
try {
|
|
113
|
-
ok = satisfiesDeclaredRange(version, range);
|
|
114
|
-
} catch (error) {
|
|
115
|
-
throw new KernelPackageError(`${KERNEL_PACKAGE_NAME} dependency ${name}: ${error.message} (this CLI ships ${version})`);
|
|
116
|
-
}
|
|
117
|
-
if (!ok) {throw new KernelPackageError(`${KERNEL_PACKAGE_NAME} depends on ${name}@${range}, but this CLI ships ${name}@${version}`);}
|
|
118
|
-
const link = join(nodeModules, name);
|
|
119
|
-
mkdirSync(dirname(link), { recursive: true });
|
|
120
|
-
symlinkSync(shipped, link, 'dir');
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Download the catalogue's kernel, hold it to `kernel.integrity` (refused before anything is written), extract it
|
|
126
|
-
* under `<cacheDir>/kernel-npm/<version>-<16 hex of the sha512>/node_modules/@xemahq/contracts` (fresh every run)
|
|
127
|
-
* and link its runtime dependencies. Returns the package directory.
|
|
128
|
-
*/
|
|
129
|
-
export async function materializeKernelPackage({ kernel, cacheDir, fetchTarball = fetchKernelTarball }) {
|
|
130
|
-
const bytes = await fetchTarball(kernel.version);
|
|
131
|
-
const actual = integrityOf(bytes);
|
|
132
|
-
if (actual !== kernel.integrity) {
|
|
133
|
-
throw new KernelPackageError(`${KERNEL_PACKAGE_NAME}@${kernel.version} integrity ${actual} is not the catalogue's kernel.integrity ${kernel.integrity}`);
|
|
134
|
-
}
|
|
135
|
-
const hex = createHash('sha512').update(bytes).digest('hex').slice(0, 16);
|
|
136
|
-
const root = join(cacheDir, 'kernel-npm', `${kernel.version}-${hex}`);
|
|
137
|
-
const packageDir = join(root, 'node_modules', ...KERNEL_PACKAGE_NAME.split('/'));
|
|
138
|
-
rmSync(root, { recursive: true, force: true });
|
|
139
|
-
mkdirSync(packageDir, { recursive: true });
|
|
140
|
-
const extracted = spawnSync('tar', ['-xzf', '-', '-C', packageDir, '--strip-components', '1'], { input: bytes, stdio: ['pipe', 'ignore', 'pipe'] });
|
|
141
|
-
if (extracted.error !== undefined) {throw new KernelPackageError(`tar could not run: ${extracted.error.message}`);}
|
|
142
|
-
if (extracted.status !== 0) {throw new KernelPackageError(`tar failed extracting ${KERNEL_PACKAGE_NAME}@${kernel.version}: ${extracted.stderr.toString().trim()}`);}
|
|
143
|
-
const manifest = JSON.parse(readFileSync(join(packageDir, 'package.json'), 'utf8'));
|
|
144
|
-
if (manifest.name !== KERNEL_PACKAGE_NAME || manifest.version !== kernel.version) {
|
|
145
|
-
throw new KernelPackageError(`the tarball holds ${manifest.name}@${manifest.version}, not ${KERNEL_PACKAGE_NAME}@${kernel.version}`);
|
|
146
|
-
}
|
|
147
|
-
linkRuntimeDependencies(packageDir);
|
|
148
|
-
return packageDir;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
const refuse = (field, wanted, got) => new KernelPackageError(`the kernel package is not the catalogue's contract authority: ${field} is ${JSON.stringify(got)}, the catalogue states ${JSON.stringify(wanted)}`);
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* The kernel package at `kernelPackageDir` is the contract authority of `catalogue`. First its identity, read as
|
|
155
|
-
* data (final, which the protocol read refuses otherwise, and the catalogue's digest); only then are its schemas loaded and held to the authority's constants.
|
|
156
|
-
* `sourceCommit` is provenance and is not compared. Returns the loaded schemas.
|
|
157
|
-
*/
|
|
158
|
-
export async function assertKernelPackageIsCatalogueAuthority({ catalogue, kernelPackageDir, loadSchemas }) {
|
|
159
|
-
const authority = catalogue.contractAuthority;
|
|
160
|
-
const identity = readKernelEditionProtocol(kernelPackageDir);
|
|
161
|
-
if (identity.contentDigest !== authority.contentDigest) {throw refuse('contentDigest', authority.contentDigest, identity.contentDigest);}
|
|
162
|
-
const schemas = await loadSchemas();
|
|
163
|
-
if (!isDeepStrictEqual(authority.sourcePaths, schemas.XEMA_KERNEL_CONTRACT_SOURCE_PATHS)) {
|
|
164
|
-
throw refuse('sourcePaths', authority.sourcePaths, schemas.XEMA_KERNEL_CONTRACT_SOURCE_PATHS);
|
|
165
|
-
}
|
|
166
|
-
const constants = [
|
|
167
|
-
['generatorIdentity', schemas.XEMA_KERNEL_CONTRACT_AUTHORITY_GENERATOR],
|
|
168
|
-
['repositoryUrl', schemas.XEMA_KERNEL_CONTRACT_REPOSITORY_URL],
|
|
169
|
-
['contentHashAlgorithm', schemas.KernelContractContentHashAlgorithm.LengthFramedGitPathModeBlobV1],
|
|
170
|
-
];
|
|
171
|
-
for (const [field, kernelValue] of constants) {
|
|
172
|
-
if (authority[field] !== kernelValue) {throw refuse(field, authority[field], kernelValue);}
|
|
173
|
-
}
|
|
174
|
-
return schemas;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* The `kernel` row a VENDOR catalogue carries: the published `@xemahq/contracts` the vendor's own kernel
|
|
179
|
-
* (`kernelPackageDir`) is, taken from npm, proved to be `contractAuthority` and held by its integrity.
|
|
180
|
-
* An unpublished version is refused. The downloaded package is extracted to a temporary directory and removed.
|
|
181
|
-
*/
|
|
182
|
-
export async function kernelPackageOfAuthority({ kernelPackageDir, contractAuthority, fetchTarball = fetchKernelTarball, loadSchemas = loadKernelDistributionSchemas }) {
|
|
183
|
-
const manifest = JSON.parse(readFileSync(join(kernelPackageDir, 'package.json'), 'utf8'));
|
|
184
|
-
if (manifest.name !== KERNEL_PACKAGE_NAME) {throw new KernelPackageError(`the vendor kernel is ${manifest.name}, not ${KERNEL_PACKAGE_NAME}`);}
|
|
185
|
-
const bytes = await fetchTarball(manifest.version);
|
|
186
|
-
const kernel = { name: KERNEL_PACKAGE_NAME, version: manifest.version, integrity: integrityOf(bytes) };
|
|
187
|
-
const scratch = mkdtempSync(join(tmpdir(), 'xema-kernel-npm-'));
|
|
188
|
-
try {
|
|
189
|
-
const packageDir = await materializeKernelPackage({ kernel, cacheDir: scratch, fetchTarball: async () => bytes });
|
|
190
|
-
await assertKernelPackageIsCatalogueAuthority({ catalogue: { contractAuthority }, kernelPackageDir: packageDir, loadSchemas });
|
|
191
|
-
} finally {
|
|
192
|
-
rmSync(scratch, { recursive: true, force: true });
|
|
193
|
-
}
|
|
194
|
-
return kernel;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* A customer verb's one step between fetching its catalogue and using any kernel schema: the catalogue's kernel is
|
|
199
|
-
* downloaded into the cache root, stated as the workspace's Kernel root, and proved to be the catalogue's contract
|
|
200
|
-
* authority. Returns the kernel's distribution schemas.
|
|
201
|
-
*/
|
|
202
|
-
export async function adoptCatalogueKernel(catalogue) {
|
|
203
|
-
const kernelPackageDir = await materializeKernelPackage({ kernel: catalogue.kernel, cacheDir: cacheDir() });
|
|
204
|
-
stateKernelPackageDir(kernelPackageDir);
|
|
205
|
-
return assertKernelPackageIsCatalogueAuthority({ catalogue, kernelPackageDir, loadSchemas: loadKernelDistributionSchemas });
|
|
206
|
-
}
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
// kernel-protocol-choice — which kernel commit a develop edition runs.
|
|
2
|
-
//
|
|
3
|
-
// The CLI runs the kernel's code and refuses a protocol it does not support
|
|
4
|
-
// (edition-protocol.mjs), so a develop edition that always took the kernel's
|
|
5
|
-
// develop HEAD would break on every kernel protocol bump until a CLI release
|
|
6
|
-
// caught up. Commits that declare the same protocol identity (version AND
|
|
7
|
-
// digest) are interchangeable by the digest contract, so the develop kernel is
|
|
8
|
-
// the NEWEST commit on the checkout's first-parent history whose declared
|
|
9
|
-
// identity is in this CLI's supported set: a deterministic choice, never a
|
|
10
|
-
// fallback.
|
|
11
|
-
//
|
|
12
|
-
// - head supported -> the head (reason head-supported)
|
|
13
|
-
// - head ahead of the CLI -> the newest supported (reason head-ahead, held)
|
|
14
|
-
// - an explicit 40-hex pin -> the pin, still checked (reason explicit-pin); it must be on the first-parent
|
|
15
|
-
// history of the develop head (refs/remotes/origin/develop), else not-on-develop
|
|
16
|
-
// - nothing supported -> refused (EditionProtocolMismatchError, no-supported-commit); never the head.
|
|
17
|
-
// The walk ends at the first commit with no declaration file (it predates the protocol).
|
|
18
|
-
// - a declaration that exists but does not parse, at the head or any walked commit
|
|
19
|
-
// -> refused (EditionProtocolMismatchError, unparseable) naming the commit; never skipped
|
|
20
|
-
//
|
|
21
|
-
// The declared identity is read from each commit's SOURCE
|
|
22
|
-
// (`<kernel package>/src/edition-protocol/lib/edition-protocol.ts`, the literal
|
|
23
|
-
// `EDITION_PROTOCOL = Object.freeze({ version, provisional, contentDigest })`),
|
|
24
|
-
// because the history is not built; the built kernel is checked again from its
|
|
25
|
-
// dist files by every loader. Reads git objects only; writes nothing.
|
|
26
|
-
|
|
27
|
-
import { execFileSync } from 'node:child_process';
|
|
28
|
-
|
|
29
|
-
import {
|
|
30
|
-
EditionProtocolMismatchError,
|
|
31
|
-
EditionProtocolMismatchReason,
|
|
32
|
-
assertSupportedEditionIdentity,
|
|
33
|
-
isSupportedEditionIdentity,
|
|
34
|
-
supportedList,
|
|
35
|
-
} from './edition-protocol.mjs';
|
|
36
|
-
import { KERNEL_PACKAGE_REPO_PATH } from './edition-workspace.mjs';
|
|
37
|
-
|
|
38
|
-
/** The kernel source file that declares the edition protocol identity, repository-relative. */
|
|
39
|
-
export const KERNEL_EDITION_PROTOCOL_SOURCE = `${KERNEL_PACKAGE_REPO_PATH}/src/edition-protocol/lib/edition-protocol.ts`;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* The kernel checkout's develop head: the remote-tracking ref a full-history checkout (`fetch-depth: 0`)
|
|
43
|
-
* always has. Every choice and every explicit commit is judged against its first-parent history.
|
|
44
|
-
*/
|
|
45
|
-
export const KERNEL_DEVELOP_REF = 'refs/remotes/origin/develop';
|
|
46
|
-
|
|
47
|
-
/** Why a kernel commit was chosen. A closed set; `held` is exactly `head-ahead`. */
|
|
48
|
-
export const KernelChoiceReason = Object.freeze({
|
|
49
|
-
HeadSupported: 'head-supported',
|
|
50
|
-
HeadAhead: 'head-ahead',
|
|
51
|
-
ExplicitPin: 'explicit-pin',
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
const SHA_PATTERN = /^[0-9a-f]{40}$/;
|
|
55
|
-
const MAX_GIT_OUTPUT = 256 * 1024 * 1024;
|
|
56
|
-
const DECLARATION = /export const EDITION_PROTOCOL\b[^=]*=\s*Object\.freeze\(\{([^}]*)\}\)/g;
|
|
57
|
-
const FIELDS = Object.freeze([
|
|
58
|
-
['version', /\bversion:\s*([1-9][0-9]*)\s*(?:,|$)/],
|
|
59
|
-
['provisional', /\bprovisional:\s*(true|false)\s*(?:,|$)/],
|
|
60
|
-
['contentDigest', /\bcontentDigest:\s*'([a-f0-9]{64})'\s*(?:,|$)/],
|
|
61
|
-
]);
|
|
62
|
-
|
|
63
|
-
/** A declaration source that exists but whose `EDITION_PROTOCOL` literal is absent or not exactly the three fields. */
|
|
64
|
-
const malformed = (label) =>
|
|
65
|
-
new EditionProtocolMismatchError(
|
|
66
|
-
EditionProtocolMismatchReason.Unparseable,
|
|
67
|
-
`${label} does not parse: it must declare exactly one EDITION_PROTOCOL = Object.freeze({ version: <positive integer>, ` +
|
|
68
|
-
"provisional: <boolean>, contentDigest: '<64 lowercase hex>' })",
|
|
69
|
-
);
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* The identity `{contentDigest, provisional, version}` the source text declares. Strict: exactly one
|
|
73
|
-
* declaration, each field exactly once, nothing else in the literal. Throws Unparseable otherwise.
|
|
74
|
-
*/
|
|
75
|
-
export function parseDeclaredEditionProtocol(text, label) {
|
|
76
|
-
const declarations = [...text.matchAll(DECLARATION)];
|
|
77
|
-
if (declarations.length !== 1) {throw malformed(label);}
|
|
78
|
-
let rest = declarations[0][1];
|
|
79
|
-
const fields = {};
|
|
80
|
-
for (const [name, pattern] of FIELDS) {
|
|
81
|
-
const all = rest.match(new RegExp(pattern.source, 'g')) ?? [];
|
|
82
|
-
if (all.length !== 1) {throw malformed(label);}
|
|
83
|
-
fields[name] = all[0].match(pattern)[1];
|
|
84
|
-
rest = rest.replace(all[0], '');
|
|
85
|
-
}
|
|
86
|
-
if (rest.replace(/\/\/[^\n]*/g, '').trim() !== '') {throw malformed(label);}
|
|
87
|
-
return Object.freeze({
|
|
88
|
-
contentDigest: fields.contentDigest,
|
|
89
|
-
provisional: fields.provisional === 'true',
|
|
90
|
-
version: Number(fields.version),
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const describeShort = (identity) =>
|
|
95
|
-
identity === undefined ? 'no declared protocol' : `v${identity.version}${identity.provisional ? '-provisional' : ''}`;
|
|
96
|
-
|
|
97
|
-
/** Git against one checkout; `runGit(args, input?)` returns stdout as a string. */
|
|
98
|
-
function gitIn(repoDir, runGit) {
|
|
99
|
-
return (args, input) =>
|
|
100
|
-
runGit('git', ['-C', repoDir, ...args], {
|
|
101
|
-
encoding: 'utf8',
|
|
102
|
-
maxBuffer: MAX_GIT_OUTPUT,
|
|
103
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
104
|
-
...(input === undefined ? {} : { input }),
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
function assertCommit(git, sha, label) {
|
|
109
|
-
if (typeof sha !== 'string' || !SHA_PATTERN.test(sha)) {
|
|
110
|
-
throw new Error(`${label} is not a 40-hex commit SHA: ${JSON.stringify(sha)}`);
|
|
111
|
-
}
|
|
112
|
-
let resolved;
|
|
113
|
-
try {
|
|
114
|
-
resolved = git(['rev-parse', '--verify', '--quiet', `${sha}^{commit}`]).trim();
|
|
115
|
-
} catch {
|
|
116
|
-
resolved = '';
|
|
117
|
-
}
|
|
118
|
-
if (resolved !== sha) {throw new Error(`${label} is not a commit in the kernel checkout`);}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/** The commit {@link KERNEL_DEVELOP_REF} names; refused when the checkout has no such ref. */
|
|
122
|
-
function readDevelopHead(git) {
|
|
123
|
-
let head;
|
|
124
|
-
try {
|
|
125
|
-
head = git(['rev-parse', '--verify', '--quiet', `${KERNEL_DEVELOP_REF}^{commit}`]).trim();
|
|
126
|
-
} catch {
|
|
127
|
-
head = '';
|
|
128
|
-
}
|
|
129
|
-
if (!SHA_PATTERN.test(head)) {
|
|
130
|
-
throw new Error(`the kernel checkout has no ${KERNEL_DEVELOP_REF}; check it out with full history (fetch-depth: 0)`);
|
|
131
|
-
}
|
|
132
|
-
return head;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/** The first-parent history of `head`, newest first. */
|
|
136
|
-
const firstParentHistory = (git, head) =>
|
|
137
|
-
git(['rev-list', '--first-parent', head]).split('\n').filter((line) => line.length > 0);
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* The declaring blob of every commit, by one `git cat-file --batch-check`: a Map commit -> blob sha, or
|
|
141
|
-
* undefined when the commit has no such file.
|
|
142
|
-
*/
|
|
143
|
-
function declaringBlobs(git, commits) {
|
|
144
|
-
const input = commits.map((commit) => `${commit}:${KERNEL_EDITION_PROTOCOL_SOURCE}\n`).join('');
|
|
145
|
-
const lines = git(['cat-file', '--batch-check'], input).split('\n').filter((line) => line.length > 0);
|
|
146
|
-
if (lines.length !== commits.length) {
|
|
147
|
-
throw new Error(`git cat-file answered ${lines.length} lines for ${commits.length} kernel commits`);
|
|
148
|
-
}
|
|
149
|
-
return new Map(
|
|
150
|
-
commits.map((commit, index) => {
|
|
151
|
-
const [sha, type] = lines[index].split(' ');
|
|
152
|
-
return [commit, type === 'blob' && SHA_PATTERN.test(sha) ? sha : undefined];
|
|
153
|
-
}),
|
|
154
|
-
);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/** A reader of the declared identity per blob (memoized); `undefined` for an absent file. Throws Unparseable. */
|
|
158
|
-
function identityReader(git) {
|
|
159
|
-
const byBlob = new Map();
|
|
160
|
-
return (commit, blob) => {
|
|
161
|
-
if (blob === undefined) {return undefined;}
|
|
162
|
-
if (!byBlob.has(blob)) {
|
|
163
|
-
const label = `the kernel commit ${commit}: ${KERNEL_EDITION_PROTOCOL_SOURCE}`;
|
|
164
|
-
byBlob.set(blob, parseDeclaredEditionProtocol(git(['cat-file', 'blob', blob]), label));
|
|
165
|
-
}
|
|
166
|
-
return byBlob.get(blob);
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Refuse a kernel commit whose declared identity this CLI does not support (absent, provisional, another
|
|
172
|
-
* version, or a supported version at another digest), naming `label`. The one check behind an explicit pin
|
|
173
|
-
* and `freeze-graph --kernel-sha`. Returns the identity.
|
|
174
|
-
*/
|
|
175
|
-
export function assertKernelCommitSupported({ repoDir, commit, label = `the kernel commit ${commit}`, runGit = execFileSync }) {
|
|
176
|
-
const git = gitIn(repoDir, runGit);
|
|
177
|
-
assertCommit(git, commit, label);
|
|
178
|
-
const developHead = readDevelopHead(git);
|
|
179
|
-
if (!firstParentHistory(git, developHead).includes(commit)) {
|
|
180
|
-
throw new EditionProtocolMismatchError(
|
|
181
|
-
EditionProtocolMismatchReason.NotOnDevelop,
|
|
182
|
-
`${label} is not on the first-parent history of the kernel develop head ${developHead} (${KERNEL_DEVELOP_REF}); ` +
|
|
183
|
-
'an explicit kernel commit must be one that kernel develop actually passed through.',
|
|
184
|
-
);
|
|
185
|
-
}
|
|
186
|
-
const identity = identityReader(git)(commit, declaringBlobs(git, [commit]).get(commit));
|
|
187
|
-
if (identity === undefined) {
|
|
188
|
-
throw new EditionProtocolMismatchError(
|
|
189
|
-
EditionProtocolMismatchReason.Undeclared,
|
|
190
|
-
`${label} declares no edition protocol (${KERNEL_EDITION_PROTOCOL_SOURCE} is absent); this CLI supports ${supportedList()}.`,
|
|
191
|
-
);
|
|
192
|
-
}
|
|
193
|
-
return assertSupportedEditionIdentity(identity, `${label} (${KERNEL_EDITION_PROTOCOL_SOURCE})`);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Choose the develop kernel commit in the checkout at `repoDir` (fetched with full history).
|
|
198
|
-
*
|
|
199
|
-
* @param {object} request
|
|
200
|
-
* @param {string} request.repoDir the kernel-contracts checkout
|
|
201
|
-
* @param {string} [request.pin] an explicit 40-hex commit; it wins, and is still checked
|
|
202
|
-
* @returns {{ choice: {chosenSha: string, headSha: string, held: boolean, reason: string}, notice?: string }}
|
|
203
|
-
* `choice` is what is recorded; `notice` (only when held) is the run-summary line, never persisted.
|
|
204
|
-
*/
|
|
205
|
-
export function chooseKernelCommit({ repoDir, pin, runGit = execFileSync }) {
|
|
206
|
-
const git = gitIn(repoDir, runGit);
|
|
207
|
-
const headSha = readDevelopHead(git);
|
|
208
|
-
if (pin !== undefined) {
|
|
209
|
-
assertKernelCommitSupported({ repoDir, commit: pin, label: `the kernel pin ${pin}`, runGit });
|
|
210
|
-
return { choice: { chosenSha: pin, headSha, held: false, reason: KernelChoiceReason.ExplicitPin } };
|
|
211
|
-
}
|
|
212
|
-
const commits = firstParentHistory(git, headSha);
|
|
213
|
-
const blobs = declaringBlobs(git, commits);
|
|
214
|
-
const identityAt = identityReader(git);
|
|
215
|
-
// Fail closed: an unparseable declaration (head or walked) is refused by name, never skipped; a commit
|
|
216
|
-
// with no declaration file predates the protocol, so the walk ends there.
|
|
217
|
-
const headIdentity = identityAt(headSha, blobs.get(headSha));
|
|
218
|
-
if (isSupportedEditionIdentity(headIdentity)) {
|
|
219
|
-
return { choice: { chosenSha: headSha, headSha, held: false, reason: KernelChoiceReason.HeadSupported } };
|
|
220
|
-
}
|
|
221
|
-
for (const commit of headIdentity === undefined ? [] : commits.slice(1)) {
|
|
222
|
-
const identity = identityAt(commit, blobs.get(commit));
|
|
223
|
-
if (identity === undefined) {break;}
|
|
224
|
-
if (isSupportedEditionIdentity(identity)) {
|
|
225
|
-
return {
|
|
226
|
-
choice: { chosenSha: commit, headSha, held: true, reason: KernelChoiceReason.HeadAhead },
|
|
227
|
-
notice:
|
|
228
|
-
`kernel held at ${describeShort(identity)} (${commit.slice(0, 12)}), ` +
|
|
229
|
-
`head at ${describeShort(headIdentity)} (${headSha.slice(0, 12)}): raise the CLI`,
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
throw new EditionProtocolMismatchError(
|
|
234
|
-
EditionProtocolMismatchReason.NoSupportedCommit,
|
|
235
|
-
`no commit on the first-parent history of the kernel head ${headSha} declares an edition protocol this CLI ` +
|
|
236
|
-
`supports (this CLI supports ${supportedList()}; the head declares ${describeShort(headIdentity)}` +
|
|
237
|
-
`${headIdentity === undefined ? '' : ` at ${headIdentity.contentDigest}`}). Raise the CLI; the head is never taken instead.`,
|
|
238
|
-
);
|
|
239
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';
|
|
2
|
-
|
|
3
|
-
import { assertKernelEditionProtocol } from './edition-protocol.mjs';
|
|
4
|
-
import { kernelDistPath, kernelPackageDir } from './edition-workspace.mjs';
|
|
5
|
-
|
|
6
|
-
const requireFromHere = createRequire(import.meta.url);
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* The kind of signer this library produces and verifies: a keyless OIDC
|
|
10
|
-
* certificate, `SignerKind.OidcCertificate` of the built kernel. The producer
|
|
11
|
-
* inputs and the trust-policy rows the evidence verbs handle carry it.
|
|
12
|
-
*/
|
|
13
|
-
export function oidcCertificateSignerKind() {
|
|
14
|
-
assertKernelEditionProtocol(kernelPackageDir());
|
|
15
|
-
const { SignerKind } = requireFromHere(kernelDistPath('distribution', 'index.js'));
|
|
16
|
-
const kind = SignerKind?.OidcCertificate;
|
|
17
|
-
if (typeof kind !== 'string' || kind.length === 0) {
|
|
18
|
-
throw new Error(
|
|
19
|
-
`The built kernel distribution module at ${kernelDistPath('distribution', 'index.js')} does not export SignerKind.OidcCertificate; rebuild the kernel checkout.`,
|
|
20
|
-
);
|
|
21
|
-
}
|
|
22
|
-
return kind;
|
|
23
|
-
}
|