@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,201 +0,0 @@
|
|
|
1
|
-
import { readFileSync, statSync } from 'node:fs';
|
|
2
|
-
import { isAbsolute, join } from 'node:path';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
canonicalJson,
|
|
7
|
-
decodeExactUtf8,
|
|
8
|
-
sha256Digest,
|
|
9
|
-
} from './image-evidence.mjs';
|
|
10
|
-
import {
|
|
11
|
-
BUNDLE_MEDIA_TYPE,
|
|
12
|
-
validateProducedBundle,
|
|
13
|
-
} from './produce-image-source-evidence.mjs';
|
|
14
|
-
import { PRODUCER_EVIDENCE_INDEX_FILE } from './producer-evidence-index-file.mjs';
|
|
15
|
-
|
|
16
|
-
export { PRODUCER_EVIDENCE_INDEX_FILE };
|
|
17
|
-
export const PRODUCER_EVIDENCE_INDEX_MEDIA_TYPE =
|
|
18
|
-
'application/vnd.xema.image-source-evidence.index.v1+json';
|
|
19
|
-
export const PRODUCER_STATEMENT_MEDIA_TYPE = 'application/vnd.in-toto+json';
|
|
20
|
-
export const MAX_PRODUCER_EVIDENCE_FILE_BYTES = 4 * 1024 * 1024;
|
|
21
|
-
|
|
22
|
-
function assertRelativeArtifactPath(value, label) {
|
|
23
|
-
if (
|
|
24
|
-
typeof value !== 'string' ||
|
|
25
|
-
value.length === 0 ||
|
|
26
|
-
value.startsWith('/') ||
|
|
27
|
-
value.split('/').some((part) => !part || part === '.' || part === '..')
|
|
28
|
-
) {
|
|
29
|
-
throw new Error(`${label} is not a contained relative path`);
|
|
30
|
-
}
|
|
31
|
-
return value;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function readBounded(root, relativePath, label) {
|
|
35
|
-
const safePath = assertRelativeArtifactPath(relativePath, label);
|
|
36
|
-
const path = join(root, safePath);
|
|
37
|
-
const stat = statSync(path);
|
|
38
|
-
if (!stat.isFile() || stat.size > MAX_PRODUCER_EVIDENCE_FILE_BYTES) {
|
|
39
|
-
throw new Error(
|
|
40
|
-
`${label} must be a regular file no larger than ${MAX_PRODUCER_EVIDENCE_FILE_BYTES} bytes`,
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
|
-
return readFileSync(path);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Fields that identify the immutable build are stable. producerRun identifies
|
|
48
|
-
* one signing execution and intentionally changes on every retry/refresh.
|
|
49
|
-
*/
|
|
50
|
-
export function stableProducerStatementBinding(statement) {
|
|
51
|
-
const { producerRun: _producerRun, ...predicate } = statement.predicate;
|
|
52
|
-
return {
|
|
53
|
-
_type: statement._type,
|
|
54
|
-
subject: statement.subject,
|
|
55
|
-
predicateType: statement.predicateType,
|
|
56
|
-
predicate,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function producerStatementMatchesInput(statement, expectedStatement) {
|
|
61
|
-
return (
|
|
62
|
-
canonicalJson(stableProducerStatementBinding(statement)) ===
|
|
63
|
-
canonicalJson(stableProducerStatementBinding(expectedStatement))
|
|
64
|
-
);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* The RAW `predicate.contractAuthority.sourceCommit` of every statement a
|
|
69
|
-
* producer evidence directory carries, read BEFORE any schema parse: the parse
|
|
70
|
-
* is bound to one kernel authority, so deciding whose authority a statement
|
|
71
|
-
* speaks under cannot go through it. A statement that states no string commit
|
|
72
|
-
* contributes nothing here; the strict parse refuses it later.
|
|
73
|
-
*/
|
|
74
|
-
export function readRawStatementAuthorityCommits({ directory }) {
|
|
75
|
-
const index = JSON.parse(
|
|
76
|
-
decodeExactUtf8(
|
|
77
|
-
readBounded(directory, PRODUCER_EVIDENCE_INDEX_FILE, 'producer evidence index'),
|
|
78
|
-
'producer evidence index',
|
|
79
|
-
),
|
|
80
|
-
);
|
|
81
|
-
if (!Array.isArray(index?.producerEvidence)) {
|
|
82
|
-
throw new Error('producer evidence index is not non-empty schemaVersion 1');
|
|
83
|
-
}
|
|
84
|
-
const commits = new Set();
|
|
85
|
-
for (const entry of index.producerEvidence) {
|
|
86
|
-
const statement = JSON.parse(
|
|
87
|
-
decodeExactUtf8(
|
|
88
|
-
readBounded(directory, entry?.evidence?.statementPath, 'producer statement'),
|
|
89
|
-
'producer statement',
|
|
90
|
-
),
|
|
91
|
-
);
|
|
92
|
-
const commit = statement?.predicate?.contractAuthority?.sourceCommit;
|
|
93
|
-
if (typeof commit === 'string') {commits.add(commit);}
|
|
94
|
-
}
|
|
95
|
-
return commits;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Evidence bytes that do not match the digests that describe them: a tampering
|
|
100
|
-
* signal. It is never an invalid-but-skippable referrer; it fails closed.
|
|
101
|
-
*/
|
|
102
|
-
export class EvidenceIntegrityError extends Error {
|
|
103
|
-
constructor(message) {
|
|
104
|
-
super(message);
|
|
105
|
-
this.name = 'EvidenceIntegrityError';
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/** Read and structurally validate one producer evidence directory. */
|
|
110
|
-
export function readProducerEvidenceDirectory({ directory, schemas }) {
|
|
111
|
-
if (!isAbsolute(directory)) {
|
|
112
|
-
throw new Error('producer evidence directory must be absolute');
|
|
113
|
-
}
|
|
114
|
-
if (!schemas?.parseImageProducerStatement) {
|
|
115
|
-
throw new Error('trusted kernel distribution schemas are required');
|
|
116
|
-
}
|
|
117
|
-
const indexBytes = readBounded(
|
|
118
|
-
directory,
|
|
119
|
-
PRODUCER_EVIDENCE_INDEX_FILE,
|
|
120
|
-
'producer evidence index',
|
|
121
|
-
);
|
|
122
|
-
let index;
|
|
123
|
-
try {
|
|
124
|
-
index = JSON.parse(decodeExactUtf8(indexBytes, 'producer evidence index'));
|
|
125
|
-
} catch (error) {
|
|
126
|
-
throw new Error(`producer evidence index is not exact UTF-8 JSON: ${error.message}`);
|
|
127
|
-
}
|
|
128
|
-
if (
|
|
129
|
-
index?.schemaVersion !== 1 ||
|
|
130
|
-
!Array.isArray(index.producerEvidence) ||
|
|
131
|
-
index.producerEvidence.length === 0
|
|
132
|
-
) {
|
|
133
|
-
throw new Error('producer evidence index is not non-empty schemaVersion 1');
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
const seen = new Set();
|
|
137
|
-
const records = [];
|
|
138
|
-
for (const entry of index.producerEvidence) {
|
|
139
|
-
const key = `${entry?.subjectKind}:${entry?.subjectId}`;
|
|
140
|
-
if (
|
|
141
|
-
typeof entry?.subjectKind !== 'string' ||
|
|
142
|
-
typeof entry?.subjectId !== 'string' ||
|
|
143
|
-
entry.evidence === null ||
|
|
144
|
-
typeof entry.evidence !== 'object' ||
|
|
145
|
-
seen.has(key)
|
|
146
|
-
) {
|
|
147
|
-
throw new Error(`producer evidence index has a malformed or duplicate entry ${key}`);
|
|
148
|
-
}
|
|
149
|
-
seen.add(key);
|
|
150
|
-
const descriptor = entry.evidence;
|
|
151
|
-
const statementBytes = readBounded(
|
|
152
|
-
directory,
|
|
153
|
-
descriptor.statementPath,
|
|
154
|
-
`${key} statement`,
|
|
155
|
-
);
|
|
156
|
-
const bundleBytes = readBounded(
|
|
157
|
-
directory,
|
|
158
|
-
descriptor.bundlePath,
|
|
159
|
-
`${key} bundle`,
|
|
160
|
-
);
|
|
161
|
-
if (
|
|
162
|
-
descriptor.bundleMediaType !== BUNDLE_MEDIA_TYPE ||
|
|
163
|
-
sha256Digest(statementBytes) !== descriptor.statementDigest ||
|
|
164
|
-
sha256Digest(bundleBytes) !== descriptor.bundleDigest
|
|
165
|
-
) {
|
|
166
|
-
throw new EvidenceIntegrityError(`${key} artifacts do not match their descriptor`);
|
|
167
|
-
}
|
|
168
|
-
validateProducedBundle(statementBytes, bundleBytes);
|
|
169
|
-
const statement = schemas.parseImageProducerStatement(
|
|
170
|
-
JSON.parse(decodeExactUtf8(statementBytes, `${key} statement`)),
|
|
171
|
-
);
|
|
172
|
-
if (
|
|
173
|
-
statement.predicate.source.kind !== entry.subjectKind ||
|
|
174
|
-
statement.predicate.source.id !== entry.subjectId
|
|
175
|
-
) {
|
|
176
|
-
throw new Error(`${key} index identity does not match its signed statement`);
|
|
177
|
-
}
|
|
178
|
-
records.push({
|
|
179
|
-
key,
|
|
180
|
-
entry,
|
|
181
|
-
descriptor,
|
|
182
|
-
statement,
|
|
183
|
-
statementBytes,
|
|
184
|
-
bundleBytes,
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
return { index, indexBytes, records };
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
export function producerEvidenceLayerFiles(records) {
|
|
191
|
-
return [
|
|
192
|
-
{
|
|
193
|
-
path: PRODUCER_EVIDENCE_INDEX_FILE,
|
|
194
|
-
mediaType: PRODUCER_EVIDENCE_INDEX_MEDIA_TYPE,
|
|
195
|
-
},
|
|
196
|
-
...records.flatMap(({ descriptor }) => [
|
|
197
|
-
{ path: descriptor.statementPath, mediaType: PRODUCER_STATEMENT_MEDIA_TYPE },
|
|
198
|
-
{ path: descriptor.bundlePath, mediaType: BUNDLE_MEDIA_TYPE },
|
|
199
|
-
]),
|
|
200
|
-
];
|
|
201
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
// The file name of a producer evidence directory's index. Its own module because the evidence verifier bundle needs it and must
|
|
2
|
-
// not import a producer entry (every module of a bundle shares one `import.meta.url`, so a producer's entry guard would run
|
|
3
|
-
// inside the verifier).
|
|
4
|
-
export const PRODUCER_EVIDENCE_INDEX_FILE = 'producer-evidence.json';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// record-refused — the refusal class of `select-records`: the data says no (a record is missing, unsigned,
|
|
2
|
-
// contradicts its tag, or its commit is not the develop line). Leaf module, so the ancestry check and the
|
|
3
|
-
// selection can both subclass it. A registry, cosign or git that could not answer is a plain Error instead.
|
|
4
|
-
|
|
5
|
-
export class RecordRefused extends Error {
|
|
6
|
-
/** `context` labels the verb the refusal surfaces in (select-records by default, `follow` for its sources). */
|
|
7
|
-
constructor(repo, message, context = 'select-records') {
|
|
8
|
-
super(`${context}: ${repo}: ${message}`);
|
|
9
|
-
this.name = 'RecordRefused';
|
|
10
|
-
this.repo = repo;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
// Registry credential DECLARATIONS and image-reference parsing.
|
|
2
|
-
//
|
|
3
|
-
// This module owns the committed `image-registry-credentials.json` contract:
|
|
4
|
-
// which registry authorities may be read, whether each is read anonymously or
|
|
5
|
-
// with a credential taken from a NAMED environment variable, and how an image
|
|
6
|
-
// reference splits into authority and repository. It performs no I/O against a
|
|
7
|
-
// registry; `oras.mjs` owns the transport.
|
|
8
|
-
|
|
9
|
-
import { readFileSync } from 'node:fs';
|
|
10
|
-
import { join } from 'node:path';
|
|
11
|
-
|
|
12
|
-
import { dataRoot } from './edition-workspace.mjs';
|
|
13
|
-
import { isCanonicalRegistryAuthority } from './lib.mjs';
|
|
14
|
-
|
|
15
|
-
export const REGISTRY_CREDENTIALS_FILE = 'image-registry-credentials.json';
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Closed set. `anonymous` means "this registry is deliberately read without a
|
|
19
|
-
* credential"; `authenticated` means "a credential is mandatory". There is no
|
|
20
|
-
* third state, and in particular no "try authenticated, fall back to
|
|
21
|
-
* anonymous" — that fallback is exactly how a private registry silently
|
|
22
|
-
* degrades into an unverifiable one.
|
|
23
|
-
*/
|
|
24
|
-
const REGISTRY_ACCESS_MODES = Object.freeze(['anonymous', 'authenticated']);
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
export const OCI_INDEX_MEDIA_TYPES = Object.freeze([
|
|
28
|
-
'application/vnd.oci.image.index.v1+json',
|
|
29
|
-
'application/vnd.docker.distribution.manifest.list.v2+json',
|
|
30
|
-
]);
|
|
31
|
-
|
|
32
|
-
export const OCI_MANIFEST_MEDIA_TYPES = Object.freeze([
|
|
33
|
-
'application/vnd.oci.image.manifest.v1+json',
|
|
34
|
-
'application/vnd.docker.distribution.manifest.v2+json',
|
|
35
|
-
]);
|
|
36
|
-
|
|
37
|
-
const ENV_VAR_NAME_PATTERN = /^[A-Z][A-Z0-9_]*$/;
|
|
38
|
-
|
|
39
|
-
// Docker Hub is the one registry whose wire authority is not its reference
|
|
40
|
-
// authority (`docker.io` resolves to `registry-1.docker.io`, and single-segment
|
|
41
|
-
// repositories are implicitly `library/*`). Implementing that rewrite silently
|
|
42
|
-
// would make one registry behave differently from every other. Refuse instead.
|
|
43
|
-
const AUTHORITIES_REQUIRING_EXPLICIT_REWRITE = new Set([
|
|
44
|
-
'docker.io',
|
|
45
|
-
'index.docker.io',
|
|
46
|
-
'registry.hub.docker.com',
|
|
47
|
-
]);
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Split `registry.example.com/acme/service` into its registry authority and repository
|
|
51
|
-
* path. The image lock already guarantees the shape; this re-derives it rather
|
|
52
|
-
* than trusting a caller-supplied split.
|
|
53
|
-
*/
|
|
54
|
-
export function splitImageRef(imageRef) {
|
|
55
|
-
if (typeof imageRef !== 'string' || imageRef.length === 0) {
|
|
56
|
-
throw new Error('image reference must be a non-empty string');
|
|
57
|
-
}
|
|
58
|
-
const slash = imageRef.indexOf('/');
|
|
59
|
-
if (slash <= 0 || slash === imageRef.length - 1) {
|
|
60
|
-
throw new Error(
|
|
61
|
-
`image reference "${imageRef}" has no registry authority and repository path`,
|
|
62
|
-
);
|
|
63
|
-
}
|
|
64
|
-
const authority = imageRef.slice(0, slash);
|
|
65
|
-
const repository = imageRef.slice(slash + 1);
|
|
66
|
-
if (!isCanonicalRegistryAuthority(authority)) {
|
|
67
|
-
throw new Error(
|
|
68
|
-
`image reference "${imageRef}" does not start with a canonical registry authority`,
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
return { authority, repository };
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export function assertCredentialDeclaration(entry, index) {
|
|
75
|
-
const label = `${REGISTRY_CREDENTIALS_FILE} registries[${index}]`;
|
|
76
|
-
if (typeof entry !== 'object' || entry === null || Array.isArray(entry)) {
|
|
77
|
-
throw new Error(`${label} must be an object`);
|
|
78
|
-
}
|
|
79
|
-
if (
|
|
80
|
-
typeof entry.authority !== 'string' ||
|
|
81
|
-
!isCanonicalRegistryAuthority(entry.authority)
|
|
82
|
-
) {
|
|
83
|
-
throw new Error(`${label}.authority must be a canonical registry authority`);
|
|
84
|
-
}
|
|
85
|
-
if (!REGISTRY_ACCESS_MODES.includes(entry.access)) {
|
|
86
|
-
throw new Error(
|
|
87
|
-
`${label}.access must be one of ${REGISTRY_ACCESS_MODES.join(', ')}`,
|
|
88
|
-
);
|
|
89
|
-
}
|
|
90
|
-
const keys = Object.keys(entry).sort().join(',');
|
|
91
|
-
if (entry.access === 'authenticated') {
|
|
92
|
-
if (keys !== 'access,authTokenEnv,authority,username') {
|
|
93
|
-
throw new Error(
|
|
94
|
-
`${label} must declare exactly access, authTokenEnv, authority, username`,
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
if (!ENV_VAR_NAME_PATTERN.test(entry.authTokenEnv)) {
|
|
98
|
-
throw new Error(
|
|
99
|
-
`${label}.authTokenEnv must be an UPPER_SNAKE environment variable NAME (never an inlined secret)`,
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
if (typeof entry.username !== 'string' || entry.username.length === 0) {
|
|
103
|
-
throw new Error(`${label}.username must be a non-empty string`);
|
|
104
|
-
}
|
|
105
|
-
} else if (keys !== 'access,authority') {
|
|
106
|
-
throw new Error(`${label} must declare exactly access and authority`);
|
|
107
|
-
}
|
|
108
|
-
return entry;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Read the committed registry credential DECLARATION. The file names
|
|
113
|
-
* environment variables; it never contains a secret. See
|
|
114
|
-
* `.claude/rules/biome-sources.md` constraint C2.
|
|
115
|
-
*/
|
|
116
|
-
export function loadRegistryCredentialDeclarations(
|
|
117
|
-
distributionsRoot = dataRoot(),
|
|
118
|
-
) {
|
|
119
|
-
const path = join(distributionsRoot, REGISTRY_CREDENTIALS_FILE);
|
|
120
|
-
let text;
|
|
121
|
-
try {
|
|
122
|
-
text = readFileSync(path, 'utf8');
|
|
123
|
-
} catch (error) {
|
|
124
|
-
if (error?.code !== 'ENOENT') {throw error;}
|
|
125
|
-
throw new Error(
|
|
126
|
-
`${REGISTRY_CREDENTIALS_FILE} does not exist in ${distributionsRoot}: the editions root declares the registry credentials its images are verified with`,
|
|
127
|
-
{ cause: error },
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
return parseRegistryCredentialDeclarations(text, REGISTRY_CREDENTIALS_FILE);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* A registry credential declaration file the CALLER names, in the same strict
|
|
135
|
-
* schema: a third-party publisher states its own registries this way
|
|
136
|
-
* (`evidence assemble-third-party-input --registry-credentials <file>`). A
|
|
137
|
-
* missing file is refused; there is no default declaration.
|
|
138
|
-
*/
|
|
139
|
-
export function loadRegistryCredentialDeclarationsFile(path) {
|
|
140
|
-
let text;
|
|
141
|
-
try {
|
|
142
|
-
text = readFileSync(path, 'utf8');
|
|
143
|
-
} catch (error) {
|
|
144
|
-
if (error?.code !== 'ENOENT') {throw error;}
|
|
145
|
-
throw new Error(`the registry credential declaration ${path} does not exist`, { cause: error });
|
|
146
|
-
}
|
|
147
|
-
return parseRegistryCredentialDeclarations(text, path);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/** The declarations of one credential declaration file's text, strict schema v1, by authority. */
|
|
151
|
-
function parseRegistryCredentialDeclarations(text, label) {
|
|
152
|
-
const raw = JSON.parse(text);
|
|
153
|
-
const keys = Object.keys(raw ?? {}).sort().join(',');
|
|
154
|
-
if (
|
|
155
|
-
typeof raw !== 'object' ||
|
|
156
|
-
raw === null ||
|
|
157
|
-
Array.isArray(raw) ||
|
|
158
|
-
raw.schemaVersion !== 1 ||
|
|
159
|
-
!Array.isArray(raw.registries) ||
|
|
160
|
-
(keys !== 'registries,schemaVersion' &&
|
|
161
|
-
keys !== '$comment,registries,schemaVersion') ||
|
|
162
|
-
('$comment' in raw &&
|
|
163
|
-
(!Array.isArray(raw.$comment) ||
|
|
164
|
-
raw.$comment.some((line) => typeof line !== 'string')))
|
|
165
|
-
) {
|
|
166
|
-
throw new Error(`${label} is not strict schema v1`);
|
|
167
|
-
}
|
|
168
|
-
const byAuthority = new Map();
|
|
169
|
-
for (const [index, entry] of raw.registries.entries()) {
|
|
170
|
-
assertCredentialDeclaration(entry, index);
|
|
171
|
-
if (byAuthority.has(entry.authority)) {
|
|
172
|
-
throw new Error(
|
|
173
|
-
`${label} declares "${entry.authority}" more than once`,
|
|
174
|
-
);
|
|
175
|
-
}
|
|
176
|
-
byAuthority.set(entry.authority, entry);
|
|
177
|
-
}
|
|
178
|
-
return byAuthority;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Resolve a declared authority to the credential it will actually use.
|
|
183
|
-
*
|
|
184
|
-
* A NAMED-but-unset environment variable FAILS FAST. It must never fall
|
|
185
|
-
* through to an unauthenticated request: that is how a 403 on a private
|
|
186
|
-
* package turns into "the platform is missing" instead of "your token is
|
|
187
|
-
* missing".
|
|
188
|
-
*/
|
|
189
|
-
export function resolveRegistryCredential({
|
|
190
|
-
authority,
|
|
191
|
-
declarations,
|
|
192
|
-
env = process.env,
|
|
193
|
-
}) {
|
|
194
|
-
const declaration = declarations.get(authority);
|
|
195
|
-
if (!declaration) {
|
|
196
|
-
throw new Error(
|
|
197
|
-
`registry "${authority}" has no entry in ${REGISTRY_CREDENTIALS_FILE}; ` +
|
|
198
|
-
'declare it with access "anonymous" or "authenticated" before reading from it',
|
|
199
|
-
);
|
|
200
|
-
}
|
|
201
|
-
if (AUTHORITIES_REQUIRING_EXPLICIT_REWRITE.has(authority)) {
|
|
202
|
-
throw new Error(
|
|
203
|
-
`registry "${authority}" needs a documented authority/repository rewrite that this client deliberately does not perform`,
|
|
204
|
-
);
|
|
205
|
-
}
|
|
206
|
-
if (declaration.access === 'anonymous') {
|
|
207
|
-
return { authority, access: 'anonymous', basicAuth: null };
|
|
208
|
-
}
|
|
209
|
-
const token = env[declaration.authTokenEnv];
|
|
210
|
-
if (typeof token !== 'string' || token.length === 0) {
|
|
211
|
-
throw new Error(
|
|
212
|
-
`registry "${authority}" requires a pull credential in $${declaration.authTokenEnv}, ` +
|
|
213
|
-
'and that variable is unset or empty. Export a token with read:packages ' +
|
|
214
|
-
'scope for this registry; an unauthenticated read is NOT attempted, because ' +
|
|
215
|
-
'a 403 on a private package is indistinguishable from a missing image.',
|
|
216
|
-
);
|
|
217
|
-
}
|
|
218
|
-
return {
|
|
219
|
-
authority,
|
|
220
|
-
access: 'authenticated',
|
|
221
|
-
basicAuth: Buffer.from(`${declaration.username}:${token}`, 'utf8').toString(
|
|
222
|
-
'base64',
|
|
223
|
-
),
|
|
224
|
-
};
|
|
225
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
// release-catalogue — the catalogue of a RELEASE offering, from its committed, sealed locks.
|
|
2
|
-
|
|
3
|
-
import { biomeSourceTreeIds } from './biome-content.mjs';
|
|
4
|
-
import { buildCatalogue } from './catalogue.mjs';
|
|
5
|
-
import { EditionChannel } from './edition-constants.mjs';
|
|
6
|
-
import { editionPinnedInputs } from './edition-pinned-inputs.mjs';
|
|
7
|
-
import { kernelPackageDir } from './edition-workspace.mjs';
|
|
8
|
-
import { kernelPackageOfAuthority } from './kernel-package.mjs';
|
|
9
|
-
import { loadKernelDistributionSchemas } from './lib.mjs';
|
|
10
|
-
import { loadEditionManifest } from './resolve-distribution.mjs';
|
|
11
|
-
import { externalSourceTrees, sourceTreeLocator } from './resolve-images.mjs';
|
|
12
|
-
import { createPinnedSourceAuthority } from './source-authority.mjs';
|
|
13
|
-
|
|
14
|
-
/** The catalogue of release offering `id`, from the committed locks (`locks` as `readCommittedEdition` returns them). */
|
|
15
|
-
export async function releaseCatalogue(id, locks, { fetchKernelTarball } = {}) {
|
|
16
|
-
const schemas = await loadKernelDistributionSchemas();
|
|
17
|
-
// The EDITION's indexes and pins: a held repository is catalogued at the held commit.
|
|
18
|
-
const pinned = await editionPinnedInputs(id, { schemas });
|
|
19
|
-
const authority = createPinnedSourceAuthority({ pins: pinned.repositoryPins });
|
|
20
|
-
// The WRITER of the catalogue's tree ids: the real `git rev-parse <commit>:<path>` of every biome.
|
|
21
|
-
const sourceTreeIds = await biomeSourceTreeIds({
|
|
22
|
-
schemas,
|
|
23
|
-
lock: locks.distributionLock,
|
|
24
|
-
imageLock: locks.imageLock,
|
|
25
|
-
locate: sourceTreeLocator(externalSourceTrees(locks.distributionLock)),
|
|
26
|
-
vendoredCommit: (repo) => authority.vendoredSourceCommitForRepository(repo),
|
|
27
|
-
});
|
|
28
|
-
const { contractAuthority } = pinned.runtimeImageSourceIndex;
|
|
29
|
-
return buildCatalogue({
|
|
30
|
-
sourceTreeIds,
|
|
31
|
-
offeringId: id,
|
|
32
|
-
channel: EditionChannel.Release,
|
|
33
|
-
distributionLock: locks.distributionLock,
|
|
34
|
-
imageLock: locks.imageLock,
|
|
35
|
-
chartSetLock: locks.chartSetLock,
|
|
36
|
-
biomeIndex: pinned.biomeIndex,
|
|
37
|
-
platformServiceIndex: pinned.platformServiceIndex,
|
|
38
|
-
contractAuthority,
|
|
39
|
-
kernel: await kernelPackageOfAuthority({
|
|
40
|
-
kernelPackageDir: kernelPackageDir(),
|
|
41
|
-
contractAuthority,
|
|
42
|
-
...(fetchKernelTarball === undefined ? {} : { fetchTarball: fetchKernelTarball }),
|
|
43
|
-
}),
|
|
44
|
-
leaf: loadEditionManifest(schemas.parseDistribution, id),
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// release-channel-guard — release tooling's content assertions over an editions
|
|
3
|
-
// tree.
|
|
4
|
-
//
|
|
5
|
-
// No check here reads a channel label, a schema name or a file name to decide
|
|
6
|
-
// what an edition IS: admission rests on the cosign signature of the artifact's
|
|
7
|
-
// manifest digest, and the descriptor's `provenance.channel` is a record, never
|
|
8
|
-
// a gate. What stays is what the BYTES must satisfy: a release images lock names
|
|
9
|
-
// release repositories only, and a release lock set is whole (the companion
|
|
10
|
-
// chart-set lock beside the distribution and authorization locks).
|
|
11
|
-
//
|
|
12
|
-
// node release-channel-guard.mjs <checkout-dir>
|
|
13
|
-
// refuses if any edition directory under <checkout-dir> breaks either.
|
|
14
|
-
|
|
15
|
-
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
|
16
|
-
import { join, resolve } from 'node:path';
|
|
17
|
-
|
|
18
|
-
import { isDevelopImageRef } from './develop-image-coordinate.mjs';
|
|
19
|
-
import { EDITION_CHART_SET_FILE, assertRosteredChartSetLock } from './edition-chart-set.mjs';
|
|
20
|
-
import { EditionLockFile } from './edition-constants.mjs';
|
|
21
|
-
import { isEntryModule } from './edition-workspace.mjs';
|
|
22
|
-
|
|
23
|
-
/** Throws when `value` (a parsed JSON document) names a develop image repository. `where` names it in the refusal. */
|
|
24
|
-
export function assertReleaseContent(value, where) {
|
|
25
|
-
if (value === null || typeof value !== 'object' || Array.isArray(value)) {return;}
|
|
26
|
-
const developSubject = (value.subjects ?? []).find((subject) => isDevelopImageRef(subject?.imageRef));
|
|
27
|
-
if (developSubject) {
|
|
28
|
-
throw new Error(
|
|
29
|
-
`${where} names the develop image repository ${developSubject.imageRef} (subject ${developSubject.kind}:${developSubject.id}); ` +
|
|
30
|
-
'a release lock names release repositories only',
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
// A chart-set lock (one with a roster of publishers) carries content coordinates only.
|
|
34
|
-
if (Array.isArray(value.publishers)) {
|
|
35
|
-
assertRosteredChartSetLock(value, where);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/** Throws when an edition directory holds a lock naming a develop image repository, or a release lock without its companions. */
|
|
40
|
-
export function assertReleaseEditionTree(dir) {
|
|
41
|
-
for (const file of [EditionLockFile.Distribution, EditionLockFile.Images, EditionLockFile.Authorization, EditionLockFile.ChartSet]) {
|
|
42
|
-
const path = join(dir, file);
|
|
43
|
-
if (existsSync(path)) {assertReleaseContent(JSON.parse(readFileSync(path, 'utf8')), path);}
|
|
44
|
-
}
|
|
45
|
-
assertReleaseLockSet(dir);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* The release lock set. A directory holding the distribution or the
|
|
50
|
-
* authorization lock must hold the whole set, including the `chart-set.lock.json`
|
|
51
|
-
* the release writes with them and hashes into the edition's coordinate, so a
|
|
52
|
-
* lock copied alone into an edition directory is refused.
|
|
53
|
-
*
|
|
54
|
-
* What this guarantees is PRESENCE, not binding: the companion chart-set lock
|
|
55
|
-
* must exist beside the locks. It does not check that the set's locks agree
|
|
56
|
-
* with one another or with a recorded digest (nothing records one: the release
|
|
57
|
-
* envelope does not carry a lock-set digest), so it is not "hash-bound" and
|
|
58
|
-
* must not be described as such.
|
|
59
|
-
*/
|
|
60
|
-
export const RELEASE_COMPANION_FILES = Object.freeze([EDITION_CHART_SET_FILE]);
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* The release locks an edition directory holds (the distribution and the
|
|
64
|
-
* authorization lock). A directory holding either IS a release edition: a
|
|
65
|
-
* develop resolve writes nothing into an editions tree, so a lock committed
|
|
66
|
-
* there was written by the release resolve.
|
|
67
|
-
*/
|
|
68
|
-
export function heldReleaseLocks(dir) {
|
|
69
|
-
return [EditionLockFile.Distribution, EditionLockFile.Authorization].filter((file) => existsSync(join(dir, file)));
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
function assertReleaseLockSet(dir) {
|
|
73
|
-
const held = heldReleaseLocks(dir);
|
|
74
|
-
if (held.length === 0) {return;}
|
|
75
|
-
const missing = RELEASE_COMPANION_FILES.filter((file) => !existsSync(join(dir, file)));
|
|
76
|
-
if (missing.length > 0) {
|
|
77
|
-
throw new Error(
|
|
78
|
-
`${dir} holds ${held.join(' and ')} but not ${missing.join(' and ')}: a release edition carries its locks as one set, ` +
|
|
79
|
-
'so a lock without its companions is not a release edition. ' +
|
|
80
|
-
'Resolve the edition whole, or remove the stray lock.',
|
|
81
|
-
);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/** The guard over every direct subdirectory of a checkout (each is an edition or holds none). */
|
|
86
|
-
export function assertReleaseCheckout(root) {
|
|
87
|
-
let checked = 0;
|
|
88
|
-
for (const entry of readdirSync(root).sort()) {
|
|
89
|
-
if (entry.startsWith('.') || entry === 'node_modules') {continue;}
|
|
90
|
-
const dir = join(root, entry);
|
|
91
|
-
if (!statSync(dir).isDirectory()) {continue;}
|
|
92
|
-
assertReleaseEditionTree(dir);
|
|
93
|
-
checked += 1;
|
|
94
|
-
}
|
|
95
|
-
return checked;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if (isEntryModule(import.meta.url)) {
|
|
99
|
-
try {
|
|
100
|
-
const [root, ...rest] = process.argv.slice(2);
|
|
101
|
-
if (!root || rest.length > 0) {throw new Error('usage: node release-channel-guard.mjs <checkout-dir>');}
|
|
102
|
-
const checked = assertReleaseCheckout(resolve(root));
|
|
103
|
-
console.log(`[release-channel-guard] ${checked} directories hold no develop content.`);
|
|
104
|
-
} catch (error) {
|
|
105
|
-
console.error(`[release-channel-guard] ${error.message}`);
|
|
106
|
-
process.exit(1);
|
|
107
|
-
}
|
|
108
|
-
}
|