@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,517 +0,0 @@
|
|
|
1
|
-
import { execFileSync } from 'node:child_process';
|
|
2
|
-
import { lstatSync, readFileSync } from 'node:fs';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
|
|
5
|
-
import { canonicalJson } from './canonical-evidence-json.mjs';
|
|
6
|
-
import { kernelRepoDir } from './edition-workspace.mjs';
|
|
7
|
-
import { COMMIT_PATTERN } from './evidence-grammars.mjs';
|
|
8
|
-
import {
|
|
9
|
-
assertSourcePathsEqualSet,
|
|
10
|
-
KERNEL_CONTRACT_SOURCE_PATH_SET_FILE,
|
|
11
|
-
parseKernelContractSourcePathSet,
|
|
12
|
-
} from './kernel-contract-source-path-set.mjs';
|
|
13
|
-
|
|
14
|
-
const GIT_ENV = Object.freeze({
|
|
15
|
-
GIT_CONFIG_NOSYSTEM: '1',
|
|
16
|
-
GIT_CONFIG_GLOBAL: '/dev/null',
|
|
17
|
-
GIT_TERMINAL_PROMPT: '0',
|
|
18
|
-
GIT_NO_REPLACE_OBJECTS: '1',
|
|
19
|
-
GIT_OPTIONAL_LOCKS: '0',
|
|
20
|
-
GIT_PAGER: 'cat',
|
|
21
|
-
LC_ALL: 'C',
|
|
22
|
-
PATH: '/usr/bin:/bin',
|
|
23
|
-
});
|
|
24
|
-
const GIT_SAFE_CONFIG = Object.freeze([
|
|
25
|
-
'-c',
|
|
26
|
-
'core.fsmonitor=false',
|
|
27
|
-
'-c',
|
|
28
|
-
'core.hooksPath=/dev/null',
|
|
29
|
-
'-c',
|
|
30
|
-
'core.attributesFile=/dev/null',
|
|
31
|
-
'--no-pager',
|
|
32
|
-
]);
|
|
33
|
-
const GIT_TREE_RECORD_PATTERN =
|
|
34
|
-
/^(100644|100755|120000|160000) (blob|commit) ([a-f0-9]{40,64})\t(.+)$/;
|
|
35
|
-
|
|
36
|
-
function git(repositoryDirectory, args, encoding = 'utf8') {
|
|
37
|
-
return execFileSync(
|
|
38
|
-
'/usr/bin/git',
|
|
39
|
-
[...GIT_SAFE_CONFIG, '-C', repositoryDirectory, ...args],
|
|
40
|
-
{
|
|
41
|
-
encoding,
|
|
42
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
43
|
-
env: GIT_ENV,
|
|
44
|
-
},
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function exactHeadCommit(repositoryDirectory) {
|
|
49
|
-
const commit = git(repositoryDirectory, [
|
|
50
|
-
'rev-parse',
|
|
51
|
-
'--verify',
|
|
52
|
-
'HEAD^{commit}',
|
|
53
|
-
]).trim();
|
|
54
|
-
if (!COMMIT_PATTERN.test(commit)) {
|
|
55
|
-
throw new Error('kernel contract repository HEAD is not an exact commit');
|
|
56
|
-
}
|
|
57
|
-
return commit;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/** True when `ancestor` is reachable from `descendant`. Never throws. */
|
|
61
|
-
function isAncestor(repositoryDirectory, ancestor, descendant) {
|
|
62
|
-
try {
|
|
63
|
-
git(repositoryDirectory, ['merge-base', '--is-ancestor', ancestor, descendant]);
|
|
64
|
-
return true;
|
|
65
|
-
} catch {
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function assertCommitExists(repositoryDirectory, sourceCommit) {
|
|
71
|
-
if (!COMMIT_PATTERN.test(sourceCommit)) {
|
|
72
|
-
throw new Error(
|
|
73
|
-
`kernel contract authority has invalid source commit "${String(sourceCommit)}"`,
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
try {
|
|
77
|
-
git(repositoryDirectory, ['cat-file', '-e', `${sourceCommit}^{commit}`]);
|
|
78
|
-
} catch {
|
|
79
|
-
throw new Error(
|
|
80
|
-
`kernel contract authority commit ${sourceCommit} is absent from the local Git object database`,
|
|
81
|
-
);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
function exactOrigin(repositoryDirectory, schemas) {
|
|
86
|
-
const origin = git(repositoryDirectory, [
|
|
87
|
-
'remote',
|
|
88
|
-
'get-url',
|
|
89
|
-
'origin',
|
|
90
|
-
]).trim();
|
|
91
|
-
if (origin !== schemas.XEMA_KERNEL_CONTRACT_REPOSITORY_URL) {
|
|
92
|
-
throw new Error(
|
|
93
|
-
`kernel contract repository origin must be exactly ${schemas.XEMA_KERNEL_CONTRACT_REPOSITORY_URL}`,
|
|
94
|
-
);
|
|
95
|
-
}
|
|
96
|
-
return origin;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
const GIT_MAX_BUFFER = 1024 * 1024 * 1024;
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* The blob record of every tree entry at `sourceCommit`, by path: ONE
|
|
103
|
-
* `ls-tree -r`, however many authority sources there are. A path absent from
|
|
104
|
-
* the map is absent from the commit or is not a blob.
|
|
105
|
-
*/
|
|
106
|
-
function gitTreeAtCommit(repositoryDirectory, sourceCommit) {
|
|
107
|
-
const records = execFileSync(
|
|
108
|
-
'/usr/bin/git',
|
|
109
|
-
[...GIT_SAFE_CONFIG, '-C', repositoryDirectory, 'ls-tree', '-r', '-z', sourceCommit],
|
|
110
|
-
{ encoding: 'buffer', stdio: ['ignore', 'pipe', 'pipe'], env: GIT_ENV, maxBuffer: GIT_MAX_BUFFER },
|
|
111
|
-
)
|
|
112
|
-
.toString('utf8')
|
|
113
|
-
.split('\0')
|
|
114
|
-
.filter(Boolean);
|
|
115
|
-
const tree = new Map();
|
|
116
|
-
for (const record of records) {
|
|
117
|
-
const match = GIT_TREE_RECORD_PATTERN.exec(record);
|
|
118
|
-
if (match) {tree.set(match[4], { mode: match[1], type: match[2], objectId: match[3] });}
|
|
119
|
-
}
|
|
120
|
-
return tree;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
function missingSource(expectedPath) {
|
|
124
|
-
return new Error(
|
|
125
|
-
`kernel contract authority source "${expectedPath}" is missing or is not an exact Git blob`,
|
|
126
|
-
);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* `{path, mode, objectId}` of each of `paths` at `sourceCommit`, in order.
|
|
131
|
-
* Refuses a path that is missing or is not a blob.
|
|
132
|
-
*/
|
|
133
|
-
function gitBlobRecordsAtCommit(repositoryDirectory, sourceCommit, paths) {
|
|
134
|
-
const tree = gitTreeAtCommit(repositoryDirectory, sourceCommit);
|
|
135
|
-
return paths.map((path) => {
|
|
136
|
-
const entry = tree.get(path);
|
|
137
|
-
if (entry === undefined || entry.type !== 'blob') {throw missingSource(path);}
|
|
138
|
-
return { path, mode: entry.mode, objectId: entry.objectId };
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* {@link gitBlobRecordsAtCommit} with each blob's exact bytes, read by ONE
|
|
144
|
-
* `cat-file --batch` and matched to the object id it was asked for.
|
|
145
|
-
*/
|
|
146
|
-
function gitBlobsAtCommit(repositoryDirectory, sourceCommit, paths) {
|
|
147
|
-
const records = gitBlobRecordsAtCommit(repositoryDirectory, sourceCommit, paths);
|
|
148
|
-
if (records.length === 0) {return [];}
|
|
149
|
-
const output = execFileSync(
|
|
150
|
-
'/usr/bin/git',
|
|
151
|
-
[...GIT_SAFE_CONFIG, '-C', repositoryDirectory, 'cat-file', '--batch'],
|
|
152
|
-
{
|
|
153
|
-
input: Buffer.from(records.map((record) => `${record.objectId}\n`).join(''), 'utf8'),
|
|
154
|
-
encoding: 'buffer',
|
|
155
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
156
|
-
env: GIT_ENV,
|
|
157
|
-
maxBuffer: GIT_MAX_BUFFER,
|
|
158
|
-
},
|
|
159
|
-
);
|
|
160
|
-
let offset = 0;
|
|
161
|
-
const sources = records.map((record) => {
|
|
162
|
-
const headerEnd = output.indexOf(0x0a, offset);
|
|
163
|
-
const header = headerEnd === -1 ? '' : output.subarray(offset, headerEnd).toString('utf8');
|
|
164
|
-
const match = /^([a-f0-9]{40,64}) blob (0|[1-9][0-9]*)$/.exec(header);
|
|
165
|
-
if (!match || match[1] !== record.objectId) {throw missingSource(record.path);}
|
|
166
|
-
const size = Number(match[2]);
|
|
167
|
-
const start = headerEnd + 1;
|
|
168
|
-
if (!Number.isSafeInteger(size) || start + size >= output.length || output[start + size] !== 0x0a) {
|
|
169
|
-
throw missingSource(record.path);
|
|
170
|
-
}
|
|
171
|
-
offset = start + size + 1;
|
|
172
|
-
return { ...record, blob: Buffer.from(output.subarray(start, start + size)) };
|
|
173
|
-
});
|
|
174
|
-
if (offset !== output.length) {
|
|
175
|
-
throw new Error('kernel contract authority sources: git returned more than was asked for');
|
|
176
|
-
}
|
|
177
|
-
return sources;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* The source-path set the kernel declares AT `sourceCommit`, read from that
|
|
182
|
-
* commit's own declaration blob: the same tree the digest is recomputed from,
|
|
183
|
-
* never the list of the contracts version this CLI bundles.
|
|
184
|
-
*/
|
|
185
|
-
export function sourcePathSetAtCommit(repositoryDirectory, sourceCommit) {
|
|
186
|
-
const [declaration] = gitBlobsAtCommit(repositoryDirectory, sourceCommit, [
|
|
187
|
-
KERNEL_CONTRACT_SOURCE_PATH_SET_FILE,
|
|
188
|
-
]);
|
|
189
|
-
return parseKernelContractSourcePathSet(declaration.blob.toString('utf8'), sourceCommit);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Refuses `sourcePaths` unless they equal the source-path set at `sourceCommit`
|
|
194
|
-
* (KernelContractSourcePathSetMismatchError names the missing and extra paths).
|
|
195
|
-
* The wire schema checks shape only; this is the check that the set means
|
|
196
|
-
* something.
|
|
197
|
-
*/
|
|
198
|
-
export function assertSourcePathsMatchCommit(repositoryDirectory, sourceCommit, sourcePaths) {
|
|
199
|
-
assertSourcePathsEqualSet(sourcePaths, sourcePathSetAtCommit(repositoryDirectory, sourceCommit), sourceCommit);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
/** The canonical JSON of an authority (sorted keys), or null for a value canonical evidence JSON cannot hold. */
|
|
203
|
-
function exactAuthorityJson(value) {
|
|
204
|
-
try {
|
|
205
|
-
return canonicalJson(value);
|
|
206
|
-
} catch {
|
|
207
|
-
return null;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
/** `actual` is exactly `expected`, field for field and value for value; key order is not part of an authority. */
|
|
212
|
-
export function assertKernelContractAuthorityEqual(actual, expected, label) {
|
|
213
|
-
const canonical = exactAuthorityJson(actual);
|
|
214
|
-
if (canonical === null || canonical !== exactAuthorityJson(expected)) {
|
|
215
|
-
throw new Error(
|
|
216
|
-
`${label} does not exactly match kernel contract authority`,
|
|
217
|
-
);
|
|
218
|
-
}
|
|
219
|
-
return actual;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
export async function readKernelContractAuthorityAtCommit({
|
|
223
|
-
repositoryDirectory = kernelRepoDir(),
|
|
224
|
-
sourceCommit,
|
|
225
|
-
schemas,
|
|
226
|
-
}) {
|
|
227
|
-
if (!schemas) {
|
|
228
|
-
throw new Error('trusted kernel distribution schemas are required');
|
|
229
|
-
}
|
|
230
|
-
exactOrigin(repositoryDirectory, schemas);
|
|
231
|
-
assertCommitExists(repositoryDirectory, sourceCommit);
|
|
232
|
-
// The set is the commit's own (XEMA-2010): an authority at a commit whose
|
|
233
|
-
// contracts declare 446 paths is read, digested and stamped over those 446,
|
|
234
|
-
// whatever this CLI bundles. The digest's validateSources checks shape only
|
|
235
|
-
// (contracts 0.110.3 and later).
|
|
236
|
-
const sourcePaths = sourcePathSetAtCommit(repositoryDirectory, sourceCommit);
|
|
237
|
-
const sources = gitBlobsAtCommit(repositoryDirectory, sourceCommit, sourcePaths);
|
|
238
|
-
const contentDigest =
|
|
239
|
-
await schemas.computeKernelContractAuthorityContentDigest(sources);
|
|
240
|
-
return {
|
|
241
|
-
schemaVersion: 1,
|
|
242
|
-
generatorIdentity: schemas.XEMA_KERNEL_CONTRACT_AUTHORITY_GENERATOR,
|
|
243
|
-
repositoryUrl: schemas.XEMA_KERNEL_CONTRACT_REPOSITORY_URL,
|
|
244
|
-
sourceCommit,
|
|
245
|
-
sourcePaths,
|
|
246
|
-
contentHashAlgorithm:
|
|
247
|
-
schemas.KernelContractContentHashAlgorithm.LengthFramedGitPathModeBlobV1,
|
|
248
|
-
contentDigest,
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
export function assertExactCleanKernelContractCheckout({
|
|
253
|
-
repositoryDirectory = kernelRepoDir(),
|
|
254
|
-
sourceCommit,
|
|
255
|
-
schemas,
|
|
256
|
-
}) {
|
|
257
|
-
exactOrigin(repositoryDirectory, schemas);
|
|
258
|
-
const head = exactHeadCommit(repositoryDirectory);
|
|
259
|
-
if (head !== sourceCommit) {
|
|
260
|
-
throw new Error(
|
|
261
|
-
`kernel contract repository HEAD ${head} does not match authority commit ${sourceCommit}`,
|
|
262
|
-
);
|
|
263
|
-
}
|
|
264
|
-
const status = git(
|
|
265
|
-
repositoryDirectory,
|
|
266
|
-
['status', '--porcelain=v1', '-z', '--untracked-files=all'],
|
|
267
|
-
'buffer',
|
|
268
|
-
);
|
|
269
|
-
if (status.byteLength !== 0) {
|
|
270
|
-
throw new Error(
|
|
271
|
-
'kernel contract repository must be exactly clean for trusted generation',
|
|
272
|
-
);
|
|
273
|
-
}
|
|
274
|
-
const tracked = git(repositoryDirectory, ['ls-files', '-v', '-z'], 'buffer')
|
|
275
|
-
.toString('utf8')
|
|
276
|
-
.split('\0')
|
|
277
|
-
.filter(Boolean);
|
|
278
|
-
const hidden = tracked.find((record) => !record.startsWith('H '));
|
|
279
|
-
if (hidden) {
|
|
280
|
-
throw new Error(
|
|
281
|
-
`kernel contract repository has skip-worktree, assume-unchanged, or unexpected index state: ${hidden.slice(2)}`,
|
|
282
|
-
);
|
|
283
|
-
}
|
|
284
|
-
// ONE index listing and ONE batched blob read for the whole source set.
|
|
285
|
-
const indexByPath = new Map();
|
|
286
|
-
for (const record of git(repositoryDirectory, ['ls-files', '--stage', '-v', '-z'], 'buffer')
|
|
287
|
-
.toString('utf8')
|
|
288
|
-
.split('\0')
|
|
289
|
-
.filter(Boolean)) {
|
|
290
|
-
const path = record.slice(record.indexOf('\t') + 1);
|
|
291
|
-
indexByPath.set(path, [...(indexByPath.get(path) ?? []), record]);
|
|
292
|
-
}
|
|
293
|
-
const sourcePaths = sourcePathSetAtCommit(repositoryDirectory, sourceCommit);
|
|
294
|
-
const committed = new Map(
|
|
295
|
-
gitBlobsAtCommit(repositoryDirectory, sourceCommit, sourcePaths).map((source) => [source.path, source]),
|
|
296
|
-
);
|
|
297
|
-
for (const path of sourcePaths) {
|
|
298
|
-
const indexRecords = indexByPath.get(path) ?? [];
|
|
299
|
-
const indexMatch =
|
|
300
|
-
indexRecords.length === 1
|
|
301
|
-
? /^H (100644) ([a-f0-9]{40,64}) 0\t(.+)$/.exec(indexRecords[0])
|
|
302
|
-
: null;
|
|
303
|
-
if (!indexMatch || indexMatch[3] !== path) {
|
|
304
|
-
throw new Error(
|
|
305
|
-
`kernel contract source has hidden flags or unexpected index state: ${path}`,
|
|
306
|
-
);
|
|
307
|
-
}
|
|
308
|
-
const source = committed.get(path);
|
|
309
|
-
const worktreePath = join(repositoryDirectory, path);
|
|
310
|
-
const stats = lstatSync(worktreePath);
|
|
311
|
-
if (
|
|
312
|
-
source.mode !== schemas.XEMA_KERNEL_CONTRACT_SOURCE_MODE ||
|
|
313
|
-
source.objectId !== indexMatch[2] ||
|
|
314
|
-
!stats.isFile() ||
|
|
315
|
-
stats.isSymbolicLink() ||
|
|
316
|
-
(stats.mode & 0o777) !== 0o644 ||
|
|
317
|
-
!readFileSync(worktreePath).equals(source.blob)
|
|
318
|
-
) {
|
|
319
|
-
throw new Error(
|
|
320
|
-
`kernel contract source does not exactly match its committed Git mode/blob: ${path}`,
|
|
321
|
-
);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
return head;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
/** The flag by which a caller STATES the kernel commit a new contract authority is taken from. */
|
|
328
|
-
export const KERNEL_COMMIT_FLAG = '--kernel-commit';
|
|
329
|
-
|
|
330
|
-
/**
|
|
331
|
-
* The contract authority of the kernel checkout, held to the commit the caller
|
|
332
|
-
* STATES. A clean checkout at the kernel's origin URL proves only which
|
|
333
|
-
* repository the directory claims to be, never which commit somebody meant to
|
|
334
|
-
* pin: `kernelCommit` is that decision, it is required, and the checkout's HEAD
|
|
335
|
-
* must equal it. It is the `sourceCommit` the authority records.
|
|
336
|
-
*/
|
|
337
|
-
export async function buildTrustedKernelContractAuthority({
|
|
338
|
-
repositoryDirectory = kernelRepoDir(),
|
|
339
|
-
schemas,
|
|
340
|
-
kernelCommit,
|
|
341
|
-
}) {
|
|
342
|
-
if (typeof kernelCommit !== 'string' || !COMMIT_PATTERN.test(kernelCommit)) {
|
|
343
|
-
throw new Error(
|
|
344
|
-
`${KERNEL_COMMIT_FLAG} <40-hex> is required: a new kernel contract authority is pinned to the commit the caller states, never to whatever the checkout happens to hold`,
|
|
345
|
-
);
|
|
346
|
-
}
|
|
347
|
-
const head = exactHeadCommit(repositoryDirectory);
|
|
348
|
-
if (head !== kernelCommit) {
|
|
349
|
-
throw new Error(
|
|
350
|
-
`kernel contract repository HEAD ${head} is not the stated ${KERNEL_COMMIT_FLAG} ${kernelCommit}: check out the stated commit, or state the commit you mean to pin`,
|
|
351
|
-
);
|
|
352
|
-
}
|
|
353
|
-
const sourceCommit = kernelCommit;
|
|
354
|
-
assertExactCleanKernelContractCheckout({
|
|
355
|
-
repositoryDirectory,
|
|
356
|
-
sourceCommit,
|
|
357
|
-
schemas,
|
|
358
|
-
});
|
|
359
|
-
// Trusted generation at HEAD ONLY: a NEW pin is minted by a CLI whose bundled
|
|
360
|
-
// contracts declare exactly the set at that commit, so the CLI that writes
|
|
361
|
-
// the pin understands every source it binds. Reading or validating an
|
|
362
|
-
// existing pin never makes this comparison.
|
|
363
|
-
assertSourcePathsEqualSet(
|
|
364
|
-
schemas.XEMA_KERNEL_CONTRACT_SOURCE_PATHS,
|
|
365
|
-
sourcePathSetAtCommit(repositoryDirectory, sourceCommit),
|
|
366
|
-
sourceCommit,
|
|
367
|
-
"this CLI's bundled kernel contract source paths",
|
|
368
|
-
);
|
|
369
|
-
const authority = await readKernelContractAuthorityAtCommit({
|
|
370
|
-
repositoryDirectory,
|
|
371
|
-
sourceCommit,
|
|
372
|
-
schemas,
|
|
373
|
-
});
|
|
374
|
-
assertExactCleanKernelContractCheckout({
|
|
375
|
-
repositoryDirectory,
|
|
376
|
-
sourceCommit,
|
|
377
|
-
schemas,
|
|
378
|
-
});
|
|
379
|
-
return authority;
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
/**
|
|
383
|
-
* Is the pinned authority on the kernel history we ship — and has the kernel's
|
|
384
|
-
* contract surface moved since it?
|
|
385
|
-
*
|
|
386
|
-
* THIS USED TO REFUSE ON ANY CONTENT DRIFT, and that made the image-contract
|
|
387
|
-
* pin an input every kernel commit could invalidate. Measured 2026-10-01:
|
|
388
|
-
* `dist-check` was red with "the kernel contract surface CHANGED" because
|
|
389
|
-
* kernel `a348e71` added one member, `ComposedProcess`, to
|
|
390
|
-
* `RuntimeImageSubjectKind` — a kind no committed image lock carries and this
|
|
391
|
-
* repository never mints. The printed remedy, `xema edition index runtime-image-source
|
|
392
|
-
* --repin-contract-authority`, rewrites `contractAuthority` in EVERY `images.lock.json`,
|
|
393
|
-
* which changes each lock's `normalizedImageLockDigest` (bound by the signed
|
|
394
|
-
* completeness statement) and orphans every signed producer statement (whose
|
|
395
|
-
* `predicate.contractAuthority` must equal the pin). Nine sealed editions, plus
|
|
396
|
-
* every customer edition minted under the same pin, would have lost their
|
|
397
|
-
* evidence for a change that altered no image. The same would follow from a
|
|
398
|
-
* new export in `distribution/index.ts`, which is one of the authority's
|
|
399
|
-
* source paths and is touched by every distribution-contract addition.
|
|
400
|
-
*
|
|
401
|
-
* Owner ruling, 2026-10-01: an unrelated change must not force historical
|
|
402
|
-
* editions to re-resolve or re-seal their image lists unless IMAGE SEMANTICS
|
|
403
|
-
* changed. The pin is a DELIBERATE image-contract version, advanced by the
|
|
404
|
-
* repin transaction when an edition needs semantics the pinned contract cannot
|
|
405
|
-
* describe — never by kernel HEAD moving underneath it.
|
|
406
|
-
*
|
|
407
|
-
* So this now REFUSES only what is a defect:
|
|
408
|
-
* - a pin that is not an ancestor of kernel HEAD (a different history — see
|
|
409
|
-
* below), and
|
|
410
|
-
* - (in the caller) a pin whose recorded digest does not re-derive from its
|
|
411
|
-
* own commit's blobs.
|
|
412
|
-
* Drift is RETURNED as the list of moved source paths, and the caller reports
|
|
413
|
-
* it. It is not silent: it is printed on every check, naming each path.
|
|
414
|
-
*
|
|
415
|
-
* What keeps a stale pin from LYING about an image lock: the standalone
|
|
416
|
-
* verifier is built from kernel source that descends from the pin and strict-
|
|
417
|
-
* parses every image lock and producer statement, and producer evidence is
|
|
418
|
-
* refused unless its signed `contractAuthority` equals the pin. A lock that
|
|
419
|
-
* used semantics newer than the pin therefore fails closed at verification,
|
|
420
|
-
* loudly — and that is the moment a repin is genuinely owed.
|
|
421
|
-
*
|
|
422
|
-
* The pin must still be an ancestor of HEAD. A pin on a different history is
|
|
423
|
-
* not "behind", it is unrelated, and recomputing a digest across a fork would
|
|
424
|
-
* compare content from a branch nobody is shipping.
|
|
425
|
-
*/
|
|
426
|
-
async function assessAuthorityLineage({ authority, repositoryDirectory, schemas }) {
|
|
427
|
-
const head = exactHeadCommit(repositoryDirectory);
|
|
428
|
-
if (head === authority.sourceCommit) {return { head, changedPaths: [] };}
|
|
429
|
-
|
|
430
|
-
if (!isAncestor(repositoryDirectory, authority.sourceCommit, head)) {
|
|
431
|
-
throw new Error(
|
|
432
|
-
`kernel contract authority commit ${authority.sourceCommit} is not an ancestor of kernel HEAD ` +
|
|
433
|
-
`${head}. The pin is on a different history (a force push, or a checkout of another branch), ` +
|
|
434
|
-
'so it cannot be compared by content — repin deliberately against the history you intend to ship.',
|
|
435
|
-
);
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
const atHead = await readKernelContractAuthorityAtCommit({
|
|
439
|
-
repositoryDirectory,
|
|
440
|
-
sourceCommit: head,
|
|
441
|
-
schemas,
|
|
442
|
-
});
|
|
443
|
-
if (atHead.contentDigest === authority.contentDigest) {
|
|
444
|
-
return { head, changedPaths: [] };
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
// The two commits may declare different sets: a path added or dropped since
|
|
448
|
-
// the pin has moved as surely as one whose blob changed.
|
|
449
|
-
const pinnedTree = gitTreeAtCommit(repositoryDirectory, authority.sourceCommit);
|
|
450
|
-
const currentTree = gitTreeAtCommit(repositoryDirectory, head);
|
|
451
|
-
const pinnedSet = new Set(authority.sourcePaths);
|
|
452
|
-
const currentSet = new Set(atHead.sourcePaths);
|
|
453
|
-
const changedPaths = [...new Set([...pinnedSet, ...currentSet])]
|
|
454
|
-
.sort()
|
|
455
|
-
.filter(
|
|
456
|
-
(path) =>
|
|
457
|
-
pinnedSet.has(path) !== currentSet.has(path) ||
|
|
458
|
-
pinnedTree.get(path)?.objectId !== currentTree.get(path)?.objectId,
|
|
459
|
-
);
|
|
460
|
-
return { head, changedPaths };
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
/** One line naming the drift, for callers that report it. */
|
|
464
|
-
export function describeKernelContractAuthorityDrift({ authority, head, changedPaths }) {
|
|
465
|
-
return (
|
|
466
|
-
`kernel contract authority ${authority.sourceCommit} is behind kernel HEAD ${head}: ` +
|
|
467
|
-
`${changedPaths.length} contract source path(s) moved (${changedPaths.join(', ')}). ` +
|
|
468
|
-
'This is NOT a refusal — image locks stay pinned to the contract they were minted ' +
|
|
469
|
-
'under. Repin (`xema edition index runtime-image-source --repin-contract-authority`) only ' +
|
|
470
|
-
'when an edition needs image semantics the pinned contract cannot describe; that ' +
|
|
471
|
-
'repin re-binds every edition\'s image evidence.'
|
|
472
|
-
);
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
export async function validateKernelContractAuthorityFromGit({
|
|
476
|
-
authority,
|
|
477
|
-
repositoryDirectory = kernelRepoDir(),
|
|
478
|
-
schemas,
|
|
479
|
-
requireHeadMatch = true,
|
|
480
|
-
requireCleanCheckout = false,
|
|
481
|
-
// Called with `{ authority, head, changedPaths }` when the pin is an ancestor
|
|
482
|
-
// of HEAD but the contract surface has moved since it. Reporting, never
|
|
483
|
-
// refusing — see `assessAuthorityLineage`.
|
|
484
|
-
onDrift = () => {},
|
|
485
|
-
}) {
|
|
486
|
-
if (!authority || typeof authority !== 'object') {
|
|
487
|
-
throw new Error('kernel contract authority is required');
|
|
488
|
-
}
|
|
489
|
-
if (requireHeadMatch) {
|
|
490
|
-
const { head, changedPaths } = await assessAuthorityLineage({
|
|
491
|
-
authority,
|
|
492
|
-
repositoryDirectory,
|
|
493
|
-
schemas,
|
|
494
|
-
});
|
|
495
|
-
if (changedPaths.length > 0) {onDrift({ authority, head, changedPaths });}
|
|
496
|
-
}
|
|
497
|
-
if (requireCleanCheckout) {
|
|
498
|
-
assertExactCleanKernelContractCheckout({
|
|
499
|
-
repositoryDirectory,
|
|
500
|
-
sourceCommit: authority.sourceCommit,
|
|
501
|
-
schemas,
|
|
502
|
-
});
|
|
503
|
-
}
|
|
504
|
-
assertCommitExists(repositoryDirectory, authority.sourceCommit);
|
|
505
|
-
assertSourcePathsMatchCommit(repositoryDirectory, authority.sourceCommit, authority.sourcePaths);
|
|
506
|
-
const expected = await readKernelContractAuthorityAtCommit({
|
|
507
|
-
repositoryDirectory,
|
|
508
|
-
sourceCommit: authority.sourceCommit,
|
|
509
|
-
schemas,
|
|
510
|
-
});
|
|
511
|
-
assertKernelContractAuthorityEqual(
|
|
512
|
-
authority,
|
|
513
|
-
expected,
|
|
514
|
-
'runtime image source index',
|
|
515
|
-
);
|
|
516
|
-
return authority;
|
|
517
|
-
}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The kernel contract authority's source-path set, as the kernel commit itself
|
|
3
|
-
* declares it. The set belongs to the commit an authority is pinned at, never
|
|
4
|
-
* to the contracts package the CLI happens to bundle: a bundled constant is the
|
|
5
|
-
* set of ONE contracts version, and comparing a pin made under another version
|
|
6
|
-
* against it is the cross-version defect this check replaces.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/** The file in the kernel repository that declares the source-path set. */
|
|
10
|
-
export const KERNEL_CONTRACT_SOURCE_PATH_SET_FILE =
|
|
11
|
-
'packages/kernel/kernel-contracts/src/distribution/lib/kernel-contract-source-paths.ts';
|
|
12
|
-
|
|
13
|
-
const DECLARATION_START = 'export const XEMA_KERNEL_CONTRACT_SOURCE_PATHS = Object.freeze([';
|
|
14
|
-
const DECLARATION_END = '] as const);';
|
|
15
|
-
const PATH_LINE_PATTERN = /^ {2}'([^'\\\s]+)',$/;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* A source-path list is not the source-path set at `sourceCommit`. `subject`
|
|
19
|
-
* names the list that was compared: a pinned authority's `sourcePaths`, or the
|
|
20
|
-
* set the CLI's bundled contracts declare (trusted generation only).
|
|
21
|
-
*/
|
|
22
|
-
export class KernelContractSourcePathSetMismatchError extends Error {
|
|
23
|
-
constructor({ sourceCommit, missing, extra, subject = 'kernel contract authority sourcePaths' }) {
|
|
24
|
-
super(
|
|
25
|
-
`${subject} are not the source-path set at ${sourceCommit}: ` +
|
|
26
|
-
`${missing.length} missing (${missing.join(', ') || 'none'}), ` +
|
|
27
|
-
`${extra.length} extra (${extra.join(', ') || 'none'})`,
|
|
28
|
-
);
|
|
29
|
-
this.name = 'KernelContractSourcePathSetMismatchError';
|
|
30
|
-
this.sourceCommit = sourceCommit;
|
|
31
|
-
this.missing = missing;
|
|
32
|
-
this.extra = extra;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* The ordered path list declared by the text of
|
|
38
|
-
* {@link KERNEL_CONTRACT_SOURCE_PATH_SET_FILE}. Refuses any other shape, a list
|
|
39
|
-
* that is empty, not strictly ascending (which also makes it unique), or that
|
|
40
|
-
* does not name the declaration file itself: the declaration is one of the
|
|
41
|
-
* digested sources, so the digest commits to the set it was taken over.
|
|
42
|
-
*/
|
|
43
|
-
export function parseKernelContractSourcePathSet(text, sourceCommit) {
|
|
44
|
-
const lines = text.split('\n');
|
|
45
|
-
const start = lines.indexOf(DECLARATION_START);
|
|
46
|
-
const end = lines.indexOf(DECLARATION_END, start + 1);
|
|
47
|
-
if (start === -1 || end === -1) {
|
|
48
|
-
throw new Error(
|
|
49
|
-
`${KERNEL_CONTRACT_SOURCE_PATH_SET_FILE} at ${sourceCommit} does not declare XEMA_KERNEL_CONTRACT_SOURCE_PATHS in the expected form`,
|
|
50
|
-
);
|
|
51
|
-
}
|
|
52
|
-
const paths = lines.slice(start + 1, end).map((line) => {
|
|
53
|
-
const match = PATH_LINE_PATTERN.exec(line);
|
|
54
|
-
if (!match || match[1].split('/').some((segment) => segment === '' || segment === '.' || segment === '..')) {
|
|
55
|
-
throw new Error(
|
|
56
|
-
`${KERNEL_CONTRACT_SOURCE_PATH_SET_FILE} at ${sourceCommit} has a line that is not one quoted relative path: ${JSON.stringify(line)}`,
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
return match[1];
|
|
60
|
-
});
|
|
61
|
-
if (paths.length === 0) {
|
|
62
|
-
throw new Error(`${KERNEL_CONTRACT_SOURCE_PATH_SET_FILE} at ${sourceCommit} declares no source paths`);
|
|
63
|
-
}
|
|
64
|
-
for (let index = 1; index < paths.length; index += 1) {
|
|
65
|
-
if (!(paths[index - 1] < paths[index])) {
|
|
66
|
-
throw new Error(
|
|
67
|
-
`${KERNEL_CONTRACT_SOURCE_PATH_SET_FILE} at ${sourceCommit} is not in strictly ascending order at ${JSON.stringify(paths[index])}`,
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
if (!paths.includes(KERNEL_CONTRACT_SOURCE_PATH_SET_FILE)) {
|
|
72
|
-
throw new Error(
|
|
73
|
-
`${KERNEL_CONTRACT_SOURCE_PATH_SET_FILE} at ${sourceCommit} does not declare itself, so the digest would not commit to the set`,
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
return paths;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Refuses `sourcePaths` unless it equals `expected`, the set at `sourceCommit`
|
|
81
|
-
* (same paths, same order); names the paths `sourcePaths` lacks (missing) and
|
|
82
|
-
* the ones it has beyond the set (extra).
|
|
83
|
-
*/
|
|
84
|
-
export function assertSourcePathsEqualSet(sourcePaths, expected, sourceCommit, subject = undefined) {
|
|
85
|
-
const have = new Set(sourcePaths);
|
|
86
|
-
const want = new Set(expected);
|
|
87
|
-
const missing = expected.filter((path) => !have.has(path));
|
|
88
|
-
const extra = sourcePaths.filter((path) => !want.has(path));
|
|
89
|
-
const sameOrder =
|
|
90
|
-
sourcePaths.length === expected.length && sourcePaths.every((path, index) => path === expected[index]);
|
|
91
|
-
if (missing.length > 0 || extra.length > 0 || !sameOrder) {
|
|
92
|
-
throw new KernelContractSourcePathSetMismatchError({ sourceCommit, missing, extra, subject });
|
|
93
|
-
}
|
|
94
|
-
}
|