@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,59 +0,0 @@
|
|
|
1
|
-
// The one rule for a check that runs every independent assertion before it refuses.
|
|
2
|
-
//
|
|
3
|
-
// A REFUSAL is the answer "no" to the input: a lock the data does not admit, a commit that is not pinned, an image that is
|
|
4
|
-
// not built. It is a `RefusalError` and is collected so one run names them all. Anything else is a DEFECT (a TypeError, a
|
|
5
|
-
// missing file, a registry that answered 5xx, an unnamed Error): it is never collected, never reported as a refusal, and
|
|
6
|
-
// propagates unchanged with its stack.
|
|
7
|
-
//
|
|
8
|
-
// Nothing refused returns; exactly one refusal is rethrown unchanged (its type and message are the contract of whoever
|
|
9
|
-
// catches it); several become ONE error of the caller's class that joins their messages and keeps them as `.errors`.
|
|
10
|
-
|
|
11
|
-
/** An error that is a REFUSAL of the input. Extend it for a named refusal; throw it directly for an unnamed one. */
|
|
12
|
-
export class RefusalError extends Error {}
|
|
13
|
-
|
|
14
|
-
/** The kernel's own bundle-signer refusals, named as the kernel names them (their classes load lazily from the built kernel). */
|
|
15
|
-
export const KernelRefusalName = Object.freeze({
|
|
16
|
-
UnknownPolicy: 'LockedBundleSignerUnknownPolicyError',
|
|
17
|
-
AmbiguousPolicy: 'LockedBundleSignerAmbiguousPolicyError',
|
|
18
|
-
Mismatch: 'LockedBundleSignerMismatchError',
|
|
19
|
-
});
|
|
20
|
-
const KERNEL_REFUSAL_NAMES = new Set(Object.values(KernelRefusalName));
|
|
21
|
-
|
|
22
|
-
/** Whether a thrown value is a refusal. Everything else (a TypeError, a failed system call, an unnamed Error) is a defect. */
|
|
23
|
-
export const isRefusal = (error) => error instanceof RefusalError || (error instanceof Error && KERNEL_REFUSAL_NAMES.has(error.name));
|
|
24
|
-
|
|
25
|
-
/** Run `fn`; a refusal is pushed on `errors` and `undefined` returned, anything else is rethrown unchanged. */
|
|
26
|
-
export function captureRefusal(errors, fn, refusal) {
|
|
27
|
-
try {
|
|
28
|
-
return fn();
|
|
29
|
-
} catch (error) {
|
|
30
|
-
if (!refusal(error)) {throw error;}
|
|
31
|
-
errors.push(error);
|
|
32
|
-
return undefined;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Run `fn` on every item, keeping each refusal, then refuse once all were seen: one refusal is rethrown unchanged, several
|
|
38
|
-
* are one `CollectedError(errors)`. A defect stops the run at once and is rethrown as it was thrown.
|
|
39
|
-
*
|
|
40
|
-
* @param {Iterable<T>} items
|
|
41
|
-
* @param {(item: T) => void} fn
|
|
42
|
-
* @param {(error: unknown) => boolean} refusal which thrown values are refusals (`isRefusal`)
|
|
43
|
-
* @param {new (errors: readonly Error[]) => Error} CollectedError the class that carries several
|
|
44
|
-
*/
|
|
45
|
-
export function collectRefusals(items, fn, refusal, CollectedError) {
|
|
46
|
-
const errors = [];
|
|
47
|
-
for (const item of items) {captureRefusal(errors, () => fn(item), refusal);}
|
|
48
|
-
throwCollectedRefusals(errors, CollectedError);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/** Nothing collected returns, one is rethrown unchanged, several become one `CollectedError`. */
|
|
52
|
-
export function throwCollectedRefusals(errors, CollectedError) {
|
|
53
|
-
if (errors.length === 0) {return;}
|
|
54
|
-
if (errors.length === 1) {throw errors[0];}
|
|
55
|
-
throw new CollectedError(errors);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/** The message of an error that stands for several: each refusal's message, separated by a blank line. */
|
|
59
|
-
export const joinRefusalMessages = (errors) => errors.map((error) => error.message).join('\n\n');
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
// Blank comments before asking a source file "what does this file DO?".
|
|
2
|
-
//
|
|
3
|
-
// A structural assertion that greps RAW source text cannot tell a CALL from a
|
|
4
|
-
// MENTION, so it can be satisfied by — or tripped by — the scanned file's own
|
|
5
|
-
// prose. That is not a hypothetical here: the call sites this repository
|
|
6
|
-
// asserts on carry twenty-line docblocks explaining the very invariant being
|
|
7
|
-
// asserted, so a raw `includes()` passes on a file whose call has been deleted
|
|
8
|
-
// and whose comment survives. It is the mutation an ordinary mutation test
|
|
9
|
-
// misses, because the usual mutation removes the code and its comment
|
|
10
|
-
// together.
|
|
11
|
-
//
|
|
12
|
-
// SHARED BECAUSE THERE ARE NOW TWO CONSUMERS, and a second private copy is
|
|
13
|
-
// what the fleet's own rule forbids: `seal-image-digests.test.mjs` (the
|
|
14
|
-
// fleet-finality call) and `editions-root-platform-verification.test.mjs` (the
|
|
15
|
-
// two `verifyDistributionPlatforms` call sites). Both previously would have
|
|
16
|
-
// needed the same fourteen lines.
|
|
17
|
-
//
|
|
18
|
-
// DELIBERATELY NARROW: `/* */` blocks, and `//` only where it STARTS a line. A
|
|
19
|
-
// trailing `//` is left alone because `'file://'` occurs in executable code in
|
|
20
|
-
// these very files, and blanking it would delete a real line. A line that
|
|
21
|
-
// BEGINS with `//` is unambiguously a comment.
|
|
22
|
-
//
|
|
23
|
-
// LINE COUNT IS PRESERVED — every blanked character becomes a space rather
|
|
24
|
-
// than being dropped — so a caller may still report a line number derived from
|
|
25
|
-
// a match without it silently shifting.
|
|
26
|
-
//
|
|
27
|
-
// It is NOT a parser and must not grow into one: a `//` inside a string
|
|
28
|
-
// literal at the start of a line would be blanked wrongly. No such line exists
|
|
29
|
-
// in either consumer, and each consumer's two-sided control is what proves the
|
|
30
|
-
// blanker discriminated on ITS file rather than trusting this note.
|
|
31
|
-
export function blankComments(source) {
|
|
32
|
-
return source
|
|
33
|
-
.replace(/\/\*[\s\S]*?\*\//gu, (match) => match.replace(/[^\n]/gu, ' '))
|
|
34
|
-
.replace(/^[ \t]*\/\/.*$/gmu, (match) => match.replace(/[^\n]/gu, ' '));
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// ── AND THE TRAILING `//`, FOR THE ONE CALLER THAT CANNOT LEAVE IT ──────────
|
|
38
|
-
//
|
|
39
|
-
// `blankComments` above deliberately leaves a trailing `//` alone, and the
|
|
40
|
-
// reason it gives is exact: `'file://'` occurs in executable code in its two
|
|
41
|
-
// consumers, and blanking from there would delete a real line.
|
|
42
|
-
//
|
|
43
|
-
// `platform-lock-readability.mjs` asks a question those two do not — "does
|
|
44
|
-
// this repository CALL the lock parser?" — over source it did not write, in
|
|
45
|
-
// seven other repositories. There, prose naming the parser is the NORM rather
|
|
46
|
-
// than the exception, and it is not hypothetical: measured 2026-09-27 at the
|
|
47
|
-
// committed pins, `submodules/xema-host-web`'s `src/lib/nav-registry.ts:1135`
|
|
48
|
-
// and `repos/xema-cultivars`'s `decision-api.client.ts:53` each name
|
|
49
|
-
// `distribution.lock.json` in a comment and neither parses one.
|
|
50
|
-
//
|
|
51
|
-
// So this variant blanks a `//` to end of line UNLESS it is immediately
|
|
52
|
-
// preceded by `:`. That single guard is what keeps `'file://'`,
|
|
53
|
-
// `'https://…'` and every other scheme intact, which is the whole objection
|
|
54
|
-
// the narrow version was written around.
|
|
55
|
-
//
|
|
56
|
-
// THE FAILURE DIRECTION IS THE POINT, and it decides why the guard is this
|
|
57
|
-
// shape rather than a smarter one. Under-blanking makes a MENTION read as a
|
|
58
|
-
// call — the caller then grades a repository it need not, which is merely
|
|
59
|
-
// over-strict. OVER-blanking makes a CALL disappear — the caller then skips a
|
|
60
|
-
// real reader, which is the 2026-09-17 incident itself. A real call cannot
|
|
61
|
-
// follow a `//` on a line that is not a comment except inside a string,
|
|
62
|
-
// template or regex, and none of those is a call; so the only way this hides
|
|
63
|
-
// one is a call interpolated after a literal `//` inside a template on the
|
|
64
|
-
// same line. Its caller reports RAW-vs-EXECUTABLE file counts for exactly that
|
|
65
|
-
// reason: an over-blank shows up as a difference a human can see, rather than
|
|
66
|
-
// as a silently smaller corpus.
|
|
67
|
-
//
|
|
68
|
-
// It is NOT a parser, for the same reason its sibling is not, and the guard
|
|
69
|
-
// above is the whole of its cleverness.
|
|
70
|
-
export function blankAllComments(source) {
|
|
71
|
-
return blankComments(source).replace(
|
|
72
|
-
/(^|[^:])\/\/.*$/gmu,
|
|
73
|
-
(match, before) => before + ' '.repeat(match.length - before.length),
|
|
74
|
-
);
|
|
75
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { editionWorkspaceConfig } from './edition-config.mjs';
|
|
2
|
-
|
|
3
|
-
// The connector repository, its production connector biomes and the ids that are
|
|
4
|
-
// deliberately not production are the data root's (`connectorSources` in
|
|
5
|
-
// edition-workspace.json); this module is the rule over them.
|
|
6
|
-
|
|
7
|
-
// A data root with no connector repository declares no `connectorSources`:
|
|
8
|
-
// there is then nothing to exclude and nothing to vendor, which is a stated
|
|
9
|
-
// absence of the thing, not a skipped check. `undefined` below means exactly that.
|
|
10
|
-
const connectorSources = () => editionWorkspaceConfig().connectorSources;
|
|
11
|
-
|
|
12
|
-
/** The production connector biomes: id, repo, repo-relative path and aggregate path. */
|
|
13
|
-
export const productionConnectorSourceBindings = () => {
|
|
14
|
-
const sources = connectorSources();
|
|
15
|
-
if (sources === undefined) {return [];}
|
|
16
|
-
const { repository, bindings } = sources;
|
|
17
|
-
return bindings.map(({ id, path }) =>
|
|
18
|
-
Object.freeze({ id, repo: repository, repoPath: path, path: `${repository}/${path}` }),
|
|
19
|
-
);
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
/** The cross-repo build inputs that vendor each production connector into the consuming image. */
|
|
23
|
-
export const connectorCrossRepoBuildInputs = () => {
|
|
24
|
-
const sources = connectorSources();
|
|
25
|
-
if (sources === undefined) {return [];}
|
|
26
|
-
const { buildInput } = sources;
|
|
27
|
-
return productionConnectorSourceBindings().map(({ id, repo, repoPath }) => ({
|
|
28
|
-
consumerRepo: buildInput.consumerRepo,
|
|
29
|
-
consumerService: buildInput.consumerService,
|
|
30
|
-
sourceRepo: repo,
|
|
31
|
-
sourcePath: repoPath,
|
|
32
|
-
destinationPath: `${buildInput.destinationRoot}/${id}`,
|
|
33
|
-
}));
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Decide whether a discovered manifest is an authoritative production source.
|
|
38
|
-
*
|
|
39
|
-
* The old community connector trees are intentionally ignored, not used as a
|
|
40
|
-
* fallback. The connector repository's `examples/` tree is also never a
|
|
41
|
-
* production source, even when an example carries a valid biome manifest.
|
|
42
|
-
*/
|
|
43
|
-
export function isAuthoritativeProductionBiomeSource({ id, repo, path }) {
|
|
44
|
-
const sources = connectorSources();
|
|
45
|
-
if (sources === undefined) {return true;}
|
|
46
|
-
const { nonProductionIds, repository } = sources;
|
|
47
|
-
if (nonProductionIds.includes(id)) {return false;}
|
|
48
|
-
|
|
49
|
-
const binding = productionConnectorSourceBindings().find((candidate) => candidate.id === id);
|
|
50
|
-
if (binding) {return repo === binding.repo && path === binding.path;}
|
|
51
|
-
|
|
52
|
-
if (repo !== repository) {return true;}
|
|
53
|
-
if (path.startsWith(`${repository}/examples/`)) {return false;}
|
|
54
|
-
if (path.startsWith(`${repository}/connectors/`)) {
|
|
55
|
-
throw new Error(
|
|
56
|
-
`${path}/xema-biome.json declares unrecognized production connector id "${String(id)}"`,
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// `xema edition contract-authority`: the full kernel contract authority of the `@xemahq/contracts` this CLI
|
|
3
|
-
// ships, as canonical JSON on stdout — the `--contract-authority <file>` a third-party publisher's public-input
|
|
4
|
-
// run passes (Third-party sources, README).
|
|
5
|
-
//
|
|
6
|
-
// usage: xema edition contract-authority
|
|
7
|
-
// stdout: the KernelContractAuthority object, canonical JSON, one line.
|
|
8
|
-
//
|
|
9
|
-
// The kernel's release derives the object at publish time, `sourceCommit` = the commit as the kernel release states it (carried, never proven here: only contentDigest and
|
|
10
|
-
// sourcePaths are proven against the package), and ships
|
|
11
|
-
// it as `dist/edition-protocol/contract-authority.json` (exported by name). This verb resolves that export from
|
|
12
|
-
// this CLI's own resolution, parses it with the kernel's KernelContractAuthoritySchema, refuses it unless its
|
|
13
|
-
// contentDigest is the bundled kernel's edition protocol digest, and then proves the bundled package IS that
|
|
14
|
-
// authority (assertKernelPackageIsCatalogueAuthority). It fails closed: a kernel with no file (a dev build, or a
|
|
15
|
-
// release older than the file) is refused by name, with no fallback to any derived or remembered authority.
|
|
16
|
-
|
|
17
|
-
import { readFileSync, realpathSync } from 'node:fs';
|
|
18
|
-
import { createRequire } from 'node:module';
|
|
19
|
-
import { sep } from 'node:path';
|
|
20
|
-
|
|
21
|
-
import { KernelContractAuthoritySchema } from '@xemahq/contracts/distribution';
|
|
22
|
-
|
|
23
|
-
import { canonicalJson } from './canonical-evidence-json.mjs';
|
|
24
|
-
import { readKernelEditionProtocol } from './edition-protocol.mjs';
|
|
25
|
-
import { configureEditionWorkspaceFromArgv, isEntryModule, stateKernelPackageDir } from './edition-workspace.mjs';
|
|
26
|
-
import { KERNEL_PACKAGE_NAME, assertKernelPackageIsCatalogueAuthority, shippedKernelPackageDir } from './kernel-package.mjs';
|
|
27
|
-
import { loadKernelDistributionSchemas } from './lib.mjs';
|
|
28
|
-
|
|
29
|
-
export const CONTRACT_AUTHORITY_EXPORT = '@xemahq/contracts/edition-protocol/contract-authority.json';
|
|
30
|
-
export const CONTRACT_AUTHORITY_USAGE = 'usage: xema edition contract-authority';
|
|
31
|
-
|
|
32
|
-
export class BundledContractAuthorityError extends Error {
|
|
33
|
-
constructor(message) {
|
|
34
|
-
super(message);
|
|
35
|
-
this.name = 'BundledContractAuthorityError';
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const ownRequire = createRequire(import.meta.url);
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* The ONE refusal of a kernel that carries no contract-authority.json, for the verb and for every edition test
|
|
43
|
-
* fixture that reads the authority through this module: the file is emitted only at release, so a dev build (an
|
|
44
|
-
* aggregator-linked kernel) never carries one, by design.
|
|
45
|
-
*/
|
|
46
|
-
function missingContractAuthority(kernelDir, detail) {
|
|
47
|
-
return new BundledContractAuthorityError(
|
|
48
|
-
`the ${KERNEL_PACKAGE_NAME} at ${kernelDir} carries no edition-protocol/contract-authority.json (${detail}): the file is emitted ` +
|
|
49
|
-
`only at release, so a dev build of the kernel never has one. The verb, and the edition evidence tests, need a published ` +
|
|
50
|
-
`${KERNEL_PACKAGE_NAME} (install a released @xemahq/xema, or run the tests against the published kernel the CLI's lockfile installs)`,
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/** The bundled kernel's contract-authority.json, resolved by its package export from this CLI's own resolution. */
|
|
55
|
-
export function resolveBundledContractAuthorityFile({ resolve = (specifier) => ownRequire.resolve(specifier), kernelDir = shippedKernelPackageDir() } = {}) {
|
|
56
|
-
try {
|
|
57
|
-
return resolve(CONTRACT_AUTHORITY_EXPORT);
|
|
58
|
-
} catch (error) {
|
|
59
|
-
if (error?.code !== 'MODULE_NOT_FOUND' && error?.code !== 'ERR_PACKAGE_PATH_NOT_EXPORTED') {throw error;}
|
|
60
|
-
throw missingContractAuthority(kernelDir, error.code);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Read, parse and prove the contract authority at `file` against the kernel package at `kernelDir`: the file must
|
|
66
|
-
* be inside that package, parse as KernelContractAuthoritySchema, carry the package's edition protocol digest, and
|
|
67
|
-
* the package must be that authority. Returns the parsed authority.
|
|
68
|
-
*/
|
|
69
|
-
export async function readBundledContractAuthority({
|
|
70
|
-
kernelDir = shippedKernelPackageDir(),
|
|
71
|
-
file = resolveBundledContractAuthorityFile({ kernelDir }),
|
|
72
|
-
loadSchemas = loadKernelDistributionSchemas,
|
|
73
|
-
} = {}) {
|
|
74
|
-
let real;
|
|
75
|
-
try {
|
|
76
|
-
real = realpathSync(file);
|
|
77
|
-
} catch (error) {
|
|
78
|
-
if (error?.code === 'ENOENT') {throw missingContractAuthority(kernelDir, `${file} does not exist`);}
|
|
79
|
-
throw new BundledContractAuthorityError(`${file} cannot be read: ${error.message}`);
|
|
80
|
-
}
|
|
81
|
-
if (!real.startsWith(`${realpathSync(kernelDir)}${sep}`)) {
|
|
82
|
-
throw new BundledContractAuthorityError(`${real} is not inside the kernel package this CLI ships (${kernelDir})`);
|
|
83
|
-
}
|
|
84
|
-
let raw;
|
|
85
|
-
try {
|
|
86
|
-
raw = JSON.parse(readFileSync(real, 'utf8'));
|
|
87
|
-
} catch (error) {
|
|
88
|
-
throw new BundledContractAuthorityError(`${real} is not JSON: ${error.message}`);
|
|
89
|
-
}
|
|
90
|
-
const parsed = KernelContractAuthoritySchema.safeParse(raw);
|
|
91
|
-
if (!parsed.success) {
|
|
92
|
-
const issues = parsed.error.issues.map((issue) => `${issue.path.join('.') || '(root)'}: ${issue.message}`).join('; ');
|
|
93
|
-
throw new BundledContractAuthorityError(`${real} is not a kernel contract authority: ${issues}`);
|
|
94
|
-
}
|
|
95
|
-
const authority = parsed.data;
|
|
96
|
-
const bundledDigest = readKernelEditionProtocol(kernelDir).contentDigest;
|
|
97
|
-
if (authority.contentDigest !== bundledDigest) {
|
|
98
|
-
throw new BundledContractAuthorityError(
|
|
99
|
-
`${real} states contentDigest ${authority.contentDigest}, but the bundled kernel's edition protocol digest is ${bundledDigest}`,
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
await assertKernelPackageIsCatalogueAuthority({ catalogue: { contractAuthority: authority }, kernelPackageDir: kernelDir, loadSchemas });
|
|
103
|
-
return authority;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
async function main() {
|
|
107
|
-
const rest = configureEditionWorkspaceFromArgv(process.argv.slice(2), [], { refuseOthers: true });
|
|
108
|
-
if (rest.length > 0) {throw new Error(CONTRACT_AUTHORITY_USAGE);}
|
|
109
|
-
const kernelDir = shippedKernelPackageDir();
|
|
110
|
-
stateKernelPackageDir(kernelDir);
|
|
111
|
-
const authority = await readBundledContractAuthority({ kernelDir });
|
|
112
|
-
process.stdout.write(`${canonicalJson(authority)}\n`);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if (isEntryModule(import.meta.url)) {
|
|
116
|
-
try {
|
|
117
|
-
await main();
|
|
118
|
-
} catch (error) {
|
|
119
|
-
console.error(`[contract-authority] ${error.message}`);
|
|
120
|
-
process.exitCode = 1;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
// cosign-certificate-constraints — the certificate claims every keyless verification here pins.
|
|
2
|
-
//
|
|
3
|
-
// One signer shape, `{certificateIdentity, oidcIssuer, githubWorkflow: {repository, ref}}`, plus the exact
|
|
4
|
-
// workflow commit the certificate must carry. Every `cosign verify*` of this CLI takes its constraints
|
|
5
|
-
// from here, so no call site can leave one of the five out.
|
|
6
|
-
|
|
7
|
-
const WORKFLOW_SHA = /^[0-9a-f]{40}$/;
|
|
8
|
-
|
|
9
|
-
function requireText(value, what) {
|
|
10
|
-
if (typeof value !== 'string' || value.length === 0) {
|
|
11
|
-
throw new Error(`certificate constraints: ${what} must be a non-empty string; got ${JSON.stringify(value)}`);
|
|
12
|
-
}
|
|
13
|
-
return value;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* The flags that pin a signer's exact identity, issuer, workflow repository and ref. They carry no workflow commit: use
|
|
18
|
-
* {@link certificateConstraintArgs} unless the signing workflow's own commit is, by design, not known to the verifier (a
|
|
19
|
-
* `workflow_run` follower runs the default branch's copy), and then bind the built commit by a signed annotation.
|
|
20
|
-
*
|
|
21
|
-
* @param {{ certificateIdentity: string, oidcIssuer: string, githubWorkflow: { repository: string, ref: string } }} signer
|
|
22
|
-
* @returns {string[]}
|
|
23
|
-
*/
|
|
24
|
-
export function certificateIdentityArgs(signer) {
|
|
25
|
-
if (signer === null || typeof signer !== 'object') {
|
|
26
|
-
throw new Error('certificate constraints: the signer must be an object');
|
|
27
|
-
}
|
|
28
|
-
return [
|
|
29
|
-
'--certificate-identity',
|
|
30
|
-
requireText(signer.certificateIdentity, 'certificateIdentity'),
|
|
31
|
-
'--certificate-oidc-issuer',
|
|
32
|
-
requireText(signer.oidcIssuer, 'oidcIssuer'),
|
|
33
|
-
'--certificate-github-workflow-repository',
|
|
34
|
-
requireText(signer.githubWorkflow?.repository, 'githubWorkflow.repository'),
|
|
35
|
-
'--certificate-github-workflow-ref',
|
|
36
|
-
requireText(signer.githubWorkflow?.ref, 'githubWorkflow.ref'),
|
|
37
|
-
];
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* @param {{ certificateIdentity: string, oidcIssuer: string, githubWorkflow: { repository: string, ref: string } }} signer
|
|
42
|
-
* @param {string} workflowSha the 40-hex commit the signing workflow ran at
|
|
43
|
-
* @returns {string[]} the cosign flags that pin identity, issuer, workflow repository, ref and sha
|
|
44
|
-
*/
|
|
45
|
-
export function certificateConstraintArgs(signer, workflowSha) {
|
|
46
|
-
if (typeof workflowSha !== 'string' || !WORKFLOW_SHA.test(workflowSha)) {
|
|
47
|
-
throw new Error(`certificate constraints: the workflow sha must be 40 lowercase hex characters; got ${JSON.stringify(workflowSha)}`);
|
|
48
|
-
}
|
|
49
|
-
return [...certificateIdentityArgs(signer), '--certificate-github-workflow-sha', workflowSha];
|
|
50
|
-
}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The ONE reader of a consumer repository's cross-repo build-input record, and
|
|
3
|
-
* the resolver built on it. The source checkout (which commits to fetch) and the
|
|
4
|
-
* image resolve (which bytes to hash) both read the record here, at the
|
|
5
|
-
* consumer's pin, so the plan and the resolve cannot diverge.
|
|
6
|
-
*/
|
|
7
|
-
import { sourcePath } from './edition-workspace.mjs';
|
|
8
|
-
import { readGitJsonAtCommit } from './git-json.mjs';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* The producing repository's OWN committed record of what it vendored.
|
|
12
|
-
*
|
|
13
|
-
* `vendor-cross-repo-inputs.mjs` reads exactly this file, at the commit being
|
|
14
|
-
* built, to emit the `--vendored <dest>=<repoDir>@<commit>:<src>` arguments it
|
|
15
|
-
* hands `compute-image-tag.mjs`. It is therefore the ONLY source of the vendored
|
|
16
|
-
* commit that can agree with the tag CI pushes.
|
|
17
|
-
*/
|
|
18
|
-
export const CROSS_REPO_BUILD_INPUTS_PATH =
|
|
19
|
-
'tooling/release/cross-repo-build-inputs.json';
|
|
20
|
-
|
|
21
|
-
/** Identity of one vendored input — the tuple that survives a pin bump. */
|
|
22
|
-
export function crossRepoInputKey(input) {
|
|
23
|
-
return [input.sourceRepo, input.sourcePath, input.destinationPath].join('\u0000');
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/** The `[sourceRepo, sourcePath, destinationPath]` a `crossRepoInputKey` frames. */
|
|
27
|
-
export function splitCrossRepoInputKey(key) {
|
|
28
|
-
return key.split('\u0000');
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* The consumer's record of what it vendored, read at ONE commit of the consumer
|
|
33
|
-
* (never the work tree): a map from `crossRepoInputKey` to the vendored
|
|
34
|
-
* `sourceCommit`. Unreadable is an error, not an empty record.
|
|
35
|
-
*/
|
|
36
|
-
export function readCrossRepoBuildInputsRecord({
|
|
37
|
-
consumerRepo,
|
|
38
|
-
consumerRepoDir,
|
|
39
|
-
consumerCommit,
|
|
40
|
-
}) {
|
|
41
|
-
let record;
|
|
42
|
-
try {
|
|
43
|
-
record = readGitJsonAtCommit(
|
|
44
|
-
consumerRepoDir,
|
|
45
|
-
CROSS_REPO_BUILD_INPUTS_PATH,
|
|
46
|
-
consumerCommit,
|
|
47
|
-
);
|
|
48
|
-
} catch (cause) {
|
|
49
|
-
throw new Error(
|
|
50
|
-
`"${consumerRepo}" declares cross-repo build inputs but ` +
|
|
51
|
-
`${CROSS_REPO_BUILD_INPUTS_PATH} is unreadable at ${consumerCommit}. ` +
|
|
52
|
-
`That file is what its CI feeds to compute-image-tag.mjs; without it ` +
|
|
53
|
-
`no coordinate this tooling derives can match the tag CI pushes.`,
|
|
54
|
-
{ cause },
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
const mirrored = new Map();
|
|
58
|
-
for (const input of record?.inputs ?? []) {
|
|
59
|
-
mirrored.set(crossRepoInputKey(input), input.sourceCommit);
|
|
60
|
-
}
|
|
61
|
-
return mirrored;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Resolve the vendored inputs of ONE consumer repository at ONE commit.
|
|
66
|
-
*
|
|
67
|
-
* WHY THE COMMIT COMES FROM THE CONSUMER, NOT FROM THE INDEX
|
|
68
|
-
*
|
|
69
|
-
* The index's `crossRepoBuildInputs` carry no `sourceCommit`; they name only
|
|
70
|
-
* WHICH content is vendored. Both this tooling and the parity gate used to
|
|
71
|
-
* supply the missing commit from `runtimeSourceIndex.repositoryPins`, and CI
|
|
72
|
-
* supplies it from the file above — so the two disagreed the moment a consumer
|
|
73
|
-
* repository's mirror lagged the index by one pin, which is its NORMAL resting
|
|
74
|
-
* state: the mirror is generated FROM the index and committed separately, so it
|
|
75
|
-
* is stale by construction between the index moving and the consumer
|
|
76
|
-
* regenerating.
|
|
77
|
-
*
|
|
78
|
-
* That is not a cosmetic disagreement. `crossRepo.sourceCommit` is framed into
|
|
79
|
-
* the component KEY of the image-input hash, so a pin that differs by one
|
|
80
|
-
* commit yields a different `contentHash` FOR BYTE-IDENTICAL VENDORED CONTENT —
|
|
81
|
-
* a coordinate no CI run has ever pushed or ever will. Measured 2026-09-07 on
|
|
82
|
-
* `origin/main`: five of the sixty-eight coordinates in the eight editions
|
|
83
|
-
* (`backlog-api`, `channel-gateway-api`, `control-plane-api`,
|
|
84
|
-
* `document-render-api` from repos/xema-community, and `biome-host-api` from
|
|
85
|
-
* repos/xema-base) 404'd in the registry for exactly this reason, while the tags
|
|
86
|
-
* their producing CI DID push were present and served on both platforms.
|
|
87
|
-
*
|
|
88
|
-
* Reading the index pin also imposed a requirement that cannot be satisfied.
|
|
89
|
-
* `repos/xema-base` vendors from `repos/xema-community` and vice versa, so
|
|
90
|
-
* "every mirror agrees with the index" is a mutual fixed point over a 2-cycle,
|
|
91
|
-
* and bumping either side invalidates the other. No such pair exists: scanning
|
|
92
|
-
* eighty commits of each on `origin/main` found ZERO mutually coherent pairs.
|
|
93
|
-
* Reading the consumer's own record removes the fixed point entirely — an
|
|
94
|
-
* image's identity depends only on the repository that builds it.
|
|
95
|
-
*
|
|
96
|
-
* It stays edition-INDEPENDENT, which is the property the previous design was
|
|
97
|
-
* protecting: the record is a property of the consumer's COMMIT, not of any
|
|
98
|
-
* edition's resolved commit map, so every edition shipping a subject still
|
|
99
|
-
* derives the same `contentHash` for it.
|
|
100
|
-
*/
|
|
101
|
-
export function resolveCrossRepoVendoredInputs({
|
|
102
|
-
indexInputs,
|
|
103
|
-
consumerRepo,
|
|
104
|
-
consumerRepoDir,
|
|
105
|
-
consumerCommit,
|
|
106
|
-
}) {
|
|
107
|
-
const declared = indexInputs.filter(
|
|
108
|
-
(input) => input.consumerRepo === consumerRepo,
|
|
109
|
-
);
|
|
110
|
-
if (declared.length === 0) {return [];}
|
|
111
|
-
if (!consumerCommit) {
|
|
112
|
-
throw new Error(
|
|
113
|
-
`cross-repo build inputs are declared for "${consumerRepo}", but this ` +
|
|
114
|
-
`distribution resolves no commit for it — the vendored content cannot ` +
|
|
115
|
-
`be pinned, so the image cannot be addressed`,
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
const mirrored = readCrossRepoBuildInputsRecord({
|
|
119
|
-
consumerRepo,
|
|
120
|
-
consumerRepoDir,
|
|
121
|
-
consumerCommit,
|
|
122
|
-
});
|
|
123
|
-
// Set equality in BOTH directions. A commit that LAGS is normal and is now
|
|
124
|
-
// honoured; a differing input SET is a genuine declaration disagreement, and
|
|
125
|
-
// it moves the hash just as surely — so it must fail rather than resolve to a
|
|
126
|
-
// coordinate built from a different closure.
|
|
127
|
-
const declaredKeys = new Set(declared.map((input) => crossRepoInputKey(input)));
|
|
128
|
-
const resolved = declared.map((input) => {
|
|
129
|
-
const sourceCommit = mirrored.get(crossRepoInputKey(input));
|
|
130
|
-
if (!sourceCommit) {
|
|
131
|
-
throw new Error(
|
|
132
|
-
`the runtime image source index declares a cross-repo build input for ` +
|
|
133
|
-
`"${consumerRepo}" vendoring "${input.sourceRepo}:${input.sourcePath}" ` +
|
|
134
|
-
`to "${input.destinationPath}", but ${CROSS_REPO_BUILD_INPUTS_PATH} at ` +
|
|
135
|
-
`${consumerCommit} declares no such input — its CI does not vendor it, ` +
|
|
136
|
-
`so the coordinate this tooling would derive is one nothing builds`,
|
|
137
|
-
);
|
|
138
|
-
}
|
|
139
|
-
return {
|
|
140
|
-
consumerService: input.consumerService ?? null,
|
|
141
|
-
destinationPath: input.destinationPath,
|
|
142
|
-
sourceRepoDir: sourcePath(input.sourceRepo),
|
|
143
|
-
sourcePath: input.sourcePath,
|
|
144
|
-
sourceCommit,
|
|
145
|
-
};
|
|
146
|
-
});
|
|
147
|
-
for (const key of mirrored.keys()) {
|
|
148
|
-
if (declaredKeys.has(key)) {continue;}
|
|
149
|
-
const [sourceRepo, sourcePath, destinationPath] = splitCrossRepoInputKey(key);
|
|
150
|
-
throw new Error(
|
|
151
|
-
`${CROSS_REPO_BUILD_INPUTS_PATH} at ${consumerCommit} vendors ` +
|
|
152
|
-
`"${sourceRepo}:${sourcePath}" to "${destinationPath}" for ` +
|
|
153
|
-
`"${consumerRepo}", which the runtime image source index does not ` +
|
|
154
|
-
`declare — its CI bakes content this tooling does not hash`,
|
|
155
|
-
);
|
|
156
|
-
}
|
|
157
|
-
return resolved;
|
|
158
|
-
}
|