@xemahq/xema 0.26.0 → 0.27.0

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.
Files changed (229) hide show
  1. package/README.md +70 -37
  2. package/dist/assets/distribution-assets.manifest.json +1 -2
  3. package/dist/cli.js +2 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/dev.js +1 -0
  6. package/dist/commands/dev.js.map +1 -1
  7. package/dist/commands/down.d.ts.map +1 -1
  8. package/dist/commands/down.js +7 -1
  9. package/dist/commands/down.js.map +1 -1
  10. package/dist/commands/edition.d.ts +3 -0
  11. package/dist/commands/edition.d.ts.map +1 -0
  12. package/dist/commands/edition.js +46 -0
  13. package/dist/commands/edition.js.map +1 -0
  14. package/dist/commands/init.js +2 -2
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/serve.js +1 -0
  17. package/dist/commands/serve.js.map +1 -1
  18. package/dist/commands/up.js +1 -0
  19. package/dist/commands/up.js.map +1 -1
  20. package/dist/dev/env-defaults.d.ts.map +1 -1
  21. package/dist/dev/env-defaults.js +5 -1
  22. package/dist/dev/env-defaults.js.map +1 -1
  23. package/dist/dev/infra-preflight.d.ts +3 -2
  24. package/dist/dev/infra-preflight.d.ts.map +1 -1
  25. package/dist/dev/infra-preflight.js +18 -8
  26. package/dist/dev/infra-preflight.js.map +1 -1
  27. package/dist/edition/verify-image-evidence.bundle.mjs +54179 -0
  28. package/dist/edition/verify-image-evidence.bundle.provenance.json +2871 -0
  29. package/dist/runtime/config/schema.d.ts +1 -0
  30. package/dist/runtime/config/schema.d.ts.map +1 -1
  31. package/dist/runtime/custody/local-custody.d.ts +12 -0
  32. package/dist/runtime/custody/local-custody.d.ts.map +1 -0
  33. package/dist/runtime/custody/local-custody.js +22 -0
  34. package/dist/runtime/custody/local-custody.js.map +1 -0
  35. package/dist/runtime/custody/openbao-custody-bootstrap.d.ts +18 -0
  36. package/dist/runtime/custody/openbao-custody-bootstrap.d.ts.map +1 -0
  37. package/dist/runtime/custody/openbao-custody-bootstrap.js +50 -0
  38. package/dist/runtime/custody/openbao-custody-bootstrap.js.map +1 -0
  39. package/dist/runtime/custody/openbao-custody-store.d.ts +18 -0
  40. package/dist/runtime/custody/openbao-custody-store.d.ts.map +1 -0
  41. package/dist/runtime/custody/openbao-custody-store.js +55 -0
  42. package/dist/runtime/custody/openbao-custody-store.js.map +1 -0
  43. package/dist/runtime/custody/openbao-http-client.d.ts +34 -0
  44. package/dist/runtime/custody/openbao-http-client.d.ts.map +1 -0
  45. package/dist/runtime/custody/openbao-http-client.js +154 -0
  46. package/dist/runtime/custody/openbao-http-client.js.map +1 -0
  47. package/dist/runtime/custody/openbao-local-constants.d.ts +22 -0
  48. package/dist/runtime/custody/openbao-local-constants.d.ts.map +1 -0
  49. package/dist/runtime/custody/openbao-local-constants.js +48 -0
  50. package/dist/runtime/custody/openbao-local-constants.js.map +1 -0
  51. package/dist/runtime/custody/openbao-local-runner.d.ts +16 -0
  52. package/dist/runtime/custody/openbao-local-runner.d.ts.map +1 -0
  53. package/dist/runtime/custody/openbao-local-runner.js +86 -0
  54. package/dist/runtime/custody/openbao-local-runner.js.map +1 -0
  55. package/dist/runtime/edition/run-entry.d.ts +9 -0
  56. package/dist/runtime/edition/run-entry.d.ts.map +1 -0
  57. package/dist/runtime/edition/run-entry.js +36 -0
  58. package/dist/runtime/edition/run-entry.js.map +1 -0
  59. package/dist/runtime/edition/verb-map.d.ts +60 -0
  60. package/dist/runtime/edition/verb-map.d.ts.map +1 -0
  61. package/dist/runtime/edition/verb-map.js +146 -0
  62. package/dist/runtime/edition/verb-map.js.map +1 -0
  63. package/dist/runtime/env-seeder.d.ts +2 -0
  64. package/dist/runtime/env-seeder.d.ts.map +1 -1
  65. package/dist/runtime/env-seeder.js +18 -3
  66. package/dist/runtime/env-seeder.js.map +1 -1
  67. package/dist/runtime/launch.d.ts +2 -1
  68. package/dist/runtime/launch.d.ts.map +1 -1
  69. package/dist/runtime/launch.js +31 -7
  70. package/dist/runtime/launch.js.map +1 -1
  71. package/dist/runtime/paths.d.ts +1 -2
  72. package/dist/runtime/paths.d.ts.map +1 -1
  73. package/dist/runtime/paths.js +0 -10
  74. package/dist/runtime/paths.js.map +1 -1
  75. package/dist/runtime/runner/chart-local-provenance.d.ts +20 -0
  76. package/dist/runtime/runner/chart-local-provenance.d.ts.map +1 -0
  77. package/dist/runtime/runner/chart-local-provenance.js +114 -0
  78. package/dist/runtime/runner/chart-local-provenance.js.map +1 -0
  79. package/dist/runtime/runner/chart-preflight.d.ts +8 -8
  80. package/dist/runtime/runner/chart-preflight.d.ts.map +1 -1
  81. package/dist/runtime/runner/chart-preflight.js +30 -69
  82. package/dist/runtime/runner/chart-preflight.js.map +1 -1
  83. package/dist/runtime/runner/chart-pull.d.ts +14 -0
  84. package/dist/runtime/runner/chart-pull.d.ts.map +1 -0
  85. package/dist/runtime/runner/chart-pull.js +96 -0
  86. package/dist/runtime/runner/chart-pull.js.map +1 -0
  87. package/dist/runtime/runner/chart-resolver.d.ts +4 -12
  88. package/dist/runtime/runner/chart-resolver.d.ts.map +1 -1
  89. package/dist/runtime/runner/chart-resolver.js +16 -62
  90. package/dist/runtime/runner/chart-resolver.js.map +1 -1
  91. package/dist/runtime/runner/chart-set-lock.d.ts +6 -20
  92. package/dist/runtime/runner/chart-set-lock.d.ts.map +1 -1
  93. package/dist/runtime/runner/chart-set-lock.js +55 -99
  94. package/dist/runtime/runner/chart-set-lock.js.map +1 -1
  95. package/dist/runtime/runner/helm-cli.d.ts +3 -1
  96. package/dist/runtime/runner/helm-cli.d.ts.map +1 -1
  97. package/dist/runtime/runner/helm-cli.js +9 -7
  98. package/dist/runtime/runner/helm-cli.js.map +1 -1
  99. package/dist/runtime/runner/helm-runner.d.ts +4 -4
  100. package/dist/runtime/runner/helm-runner.d.ts.map +1 -1
  101. package/dist/runtime/runner/helm-runner.js +18 -16
  102. package/dist/runtime/runner/helm-runner.js.map +1 -1
  103. package/dist/runtime/sources/kinds/git.d.ts +1 -2
  104. package/dist/runtime/sources/kinds/git.d.ts.map +1 -1
  105. package/dist/runtime/sources/kinds/git.js +8 -5
  106. package/dist/runtime/sources/kinds/git.js.map +1 -1
  107. package/dist/runtime/sources/manifest-walk.d.ts +3 -1
  108. package/dist/runtime/sources/manifest-walk.d.ts.map +1 -1
  109. package/dist/runtime/sources/manifest-walk.js +8 -3
  110. package/dist/runtime/sources/manifest-walk.js.map +1 -1
  111. package/dist/runtime/sources/schema.d.ts +3 -0
  112. package/dist/runtime/sources/schema.d.ts.map +1 -1
  113. package/dist/runtime/sources/schema.js +6 -1
  114. package/dist/runtime/sources/schema.js.map +1 -1
  115. package/dist/runtime/supervisor.d.ts +2 -0
  116. package/dist/runtime/supervisor.d.ts.map +1 -1
  117. package/dist/runtime/supervisor.js +1 -0
  118. package/dist/runtime/supervisor.js.map +1 -1
  119. package/edition/README.md +315 -0
  120. package/edition/assemble-producer-input.mjs +1251 -0
  121. package/edition/authorization-base.mjs +347 -0
  122. package/edition/biome-content.mjs +268 -0
  123. package/edition/build-biome-index.mjs +175 -0
  124. package/edition/build-platform-service-index.mjs +288 -0
  125. package/edition/build-runtime-image-source-index.mjs +821 -0
  126. package/edition/built-verifier.mjs +55 -0
  127. package/edition/catalogue-edition.mjs +49 -0
  128. package/edition/catalogue-fetch.mjs +64 -0
  129. package/edition/catalogue.mjs +135 -0
  130. package/edition/chart-set-source-commit.mjs +92 -0
  131. package/edition/check-committed-image-evidence.mjs +383 -0
  132. package/edition/checkout-indexed-source-repositories.mjs +105 -0
  133. package/edition/comment-blanker.mjs +75 -0
  134. package/edition/connector-source-authority.mjs +60 -0
  135. package/edition/customer-definition.mjs +183 -0
  136. package/edition/customer-flags.mjs +7 -0
  137. package/edition/develop-customer-edition.mjs +99 -0
  138. package/edition/develop-edition-resolve.mjs +65 -0
  139. package/edition/develop-edition.mjs +274 -0
  140. package/edition/develop-freeze.mjs +173 -0
  141. package/edition/develop-image-coordinate.mjs +54 -0
  142. package/edition/develop-seal.mjs +77 -0
  143. package/edition/develop-snapshot-inputs.mjs +104 -0
  144. package/edition/dist-check.mjs +986 -0
  145. package/edition/distribution-evidence-set.mjs +987 -0
  146. package/edition/distribution-paths.mjs +191 -0
  147. package/edition/edition-artifact.mjs +270 -0
  148. package/edition/edition-biome-manifests.mjs +85 -0
  149. package/edition/edition-channel.mjs +6 -0
  150. package/edition/edition-chart-set.mjs +93 -0
  151. package/edition/edition-config.mjs +207 -0
  152. package/edition/edition-constants.mjs +57 -0
  153. package/edition/edition-contract.json +23 -0
  154. package/edition/edition-list.mjs +35 -0
  155. package/edition/edition-locks.mjs +69 -0
  156. package/edition/edition-protocol.mjs +228 -0
  157. package/edition/edition-workspace.mjs +176 -0
  158. package/edition/evidence-checkout.mjs +418 -0
  159. package/edition/evidence-grammars.mjs +16 -0
  160. package/edition/evidence-trust-pin.mjs +304 -0
  161. package/edition/evidence-trust-policy.mjs +256 -0
  162. package/edition/external-source-walk.mjs +463 -0
  163. package/edition/first-party-source-ids.mjs +59 -0
  164. package/edition/fleet-coordinate-finality.mjs +350 -0
  165. package/edition/git-source-auth.mjs +52 -0
  166. package/edition/image-evidence-replay-state.mjs +242 -0
  167. package/edition/image-evidence.mjs +1225 -0
  168. package/edition/kernel-contract-authority.mjs +443 -0
  169. package/edition/lib.mjs +3018 -0
  170. package/edition/no-follow-file.mjs +94 -0
  171. package/edition/oci-evidence-verbs.mjs +392 -0
  172. package/edition/oci-image-source-evidence.mjs +239 -0
  173. package/edition/oras.mjs +648 -0
  174. package/edition/pin-source.mjs +227 -0
  175. package/edition/plan-image-evidence-refresh.mjs +408 -0
  176. package/edition/platform-lock-readability.mjs +892 -0
  177. package/edition/platform-service-class.mjs +18 -0
  178. package/edition/platform-service-source-authority.mjs +105 -0
  179. package/edition/positive-closure.mjs +162 -0
  180. package/edition/produce-distribution-completeness-evidence.mjs +311 -0
  181. package/edition/produce-image-delivery-entitlement-evidence.mjs +294 -0
  182. package/edition/produce-image-source-evidence.mjs +765 -0
  183. package/edition/producer-evidence-bundle.mjs +157 -0
  184. package/edition/registry-credentials.mjs +193 -0
  185. package/edition/release-catalogue.mjs +39 -0
  186. package/edition/release-channel-guard.mjs +99 -0
  187. package/edition/release-edition-artifact.mjs +158 -0
  188. package/edition/remedy-command.mjs +89 -0
  189. package/edition/repin-evidence-trust.mjs +101 -0
  190. package/edition/required-resource-provider.mjs +58 -0
  191. package/edition/resolve-chart-set.mjs +415 -0
  192. package/edition/resolve-customer-edition.mjs +288 -0
  193. package/edition/resolve-distribution.mjs +2318 -0
  194. package/edition/resolve-edition.mjs +186 -0
  195. package/edition/resolve-images.mjs +1606 -0
  196. package/edition/seal-image-digests.mjs +855 -0
  197. package/edition/sealed-evidence-accept.mjs +82 -0
  198. package/edition/source-authority.mjs +725 -0
  199. package/edition/source-closure.mjs +116 -0
  200. package/edition/strict-json.mjs +121 -0
  201. package/edition/string-order.mjs +5 -0
  202. package/edition/trust-policy-arming.mjs +120 -0
  203. package/edition/trusted-executable.mjs +166 -0
  204. package/edition/verifier-binding.mjs +45 -0
  205. package/edition/verifier-files.mjs +8 -0
  206. package/edition/verifier-kernel-schemas.mjs +22 -0
  207. package/edition/verifier-provenance.mjs +64 -0
  208. package/edition/verify-image-evidence.mjs +430 -0
  209. package/edition/verify-image-platforms.mjs +495 -0
  210. package/edition/why.mjs +56 -0
  211. package/edition/workspace-sections.mjs +195 -0
  212. package/examples/06-biome-sources.yaml +1 -0
  213. package/package.json +14 -6
  214. package/dist/commands/dist.d.ts +0 -16
  215. package/dist/commands/dist.d.ts.map +0 -1
  216. package/dist/commands/dist.js +0 -182
  217. package/dist/commands/dist.js.map +0 -1
  218. package/dist/runtime/distribution/available-biome.d.ts +0 -10
  219. package/dist/runtime/distribution/available-biome.d.ts.map +0 -1
  220. package/dist/runtime/distribution/available-biome.js +0 -156
  221. package/dist/runtime/distribution/available-biome.js.map +0 -1
  222. package/dist/runtime/distribution/compose.d.ts +0 -23
  223. package/dist/runtime/distribution/compose.d.ts.map +0 -1
  224. package/dist/runtime/distribution/compose.js +0 -48
  225. package/dist/runtime/distribution/compose.js.map +0 -1
  226. package/dist/runtime/runner/chart-trust.d.ts +0 -57
  227. package/dist/runtime/runner/chart-trust.d.ts.map +0 -1
  228. package/dist/runtime/runner/chart-trust.js +0 -270
  229. package/dist/runtime/runner/chart-trust.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"available-biome.js","sourceRoot":"","sources":["../../../src/runtime/distribution/available-biome.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import type { Distribution, DistributionLock, RuntimeImagePlatformKey } from '@xemahq/contracts/distribution';
2
- export interface UserBiomeSource {
3
- readonly name: string;
4
- readonly root: string;
5
- }
6
- export interface ComposeInput {
7
- readonly id: string;
8
- readonly displayName?: string;
9
- readonly baseEdition: string;
10
- readonly requiredPlatforms: readonly RuntimeImagePlatformKey[];
11
- readonly userSources: readonly UserBiomeSource[];
12
- readonly allowThirdParty: boolean;
13
- readonly resolvedAt: string;
14
- }
15
- export interface ComposeResult {
16
- readonly definition: Distribution;
17
- readonly lock: DistributionLock;
18
- readonly baseBiomeCount: number;
19
- readonly userBiomeCount: number;
20
- readonly overridden: readonly string[];
21
- }
22
- export declare function composeDistribution(input: ComposeInput): ComposeResult;
23
- //# sourceMappingURL=compose.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../../src/runtime/distribution/compose.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,gCAAgC,CAAC;AAGxC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAE3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAY7B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAE/D,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IAEjD,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAElC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAWD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CA8DtE"}
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.composeDistribution = composeDistribution;
4
- const biome_1 = require("@xemahq/contracts/biome");
5
- const distribution_1 = require("@xemahq/contracts/distribution");
6
- const distribution_resolver_1 = require("@xemahq/distribution-resolver");
7
- const lock_loader_1 = require("../lock-loader");
8
- const available_biome_1 = require("./available-biome");
9
- const manifest_walk_1 = require("../sources/manifest-walk");
10
- function composeDistribution(input) {
11
- const { lock: baseLock } = (0, lock_loader_1.loadDistributionLock)({ edition: input.baseEdition });
12
- (0, distribution_1.assertLockNexusFactsCurrent)(baseLock);
13
- const baseBiomes = baseLock.biomes.map(available_biome_1.lockedBiomeToAvailable);
14
- const userBiomes = [];
15
- for (const source of input.userSources) {
16
- const { biomes } = (0, manifest_walk_1.walkBiomeManifests)(source.root);
17
- for (const b of biomes) {
18
- userBiomes.push((0, available_biome_1.discoveredBiomeToAvailable)(b, source.name));
19
- }
20
- }
21
- const { biomes: pool, overridden } = (0, available_biome_1.mergeAvailableBiomes)(baseBiomes, userBiomes);
22
- const definition = {
23
- schemaVersion: 1,
24
- id: input.id,
25
- displayName: input.displayName ?? input.id,
26
- description: `Custom distribution composed from "${input.baseEdition}" + ${String(input.userSources.length)} user source(s).`,
27
- include: pool.map((b) => ({ biome: b.id })),
28
- requiredPlatforms: input.requiredPlatforms,
29
- trustPolicy: {
30
- allow: input.allowThirdParty
31
- ? [biome_1.BiomeOrigin.FirstParty, biome_1.BiomeOrigin.ThirdParty]
32
- : [biome_1.BiomeOrigin.FirstParty],
33
- },
34
- platformServices: baseLock.platformServices.map((ps) => ({ name: ps.name, tier: ps.tier })),
35
- };
36
- const lock = (0, distribution_resolver_1.resolveDistribution)(definition, pool, baseLock.capabilityDomainOwners, {
37
- resolvedAt: input.resolvedAt,
38
- platformServiceSources: baseLock.platformServices.map((ps) => ps.source),
39
- });
40
- return {
41
- definition,
42
- lock,
43
- baseBiomeCount: baseBiomes.length,
44
- userBiomeCount: userBiomes.length,
45
- overridden,
46
- };
47
- }
48
- //# sourceMappingURL=compose.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/runtime/distribution/compose.ts"],"names":[],"mappings":";;AAoEA,kDA8DC;AAlID,mDAAsD;AACtD,iEAA6E;AAC7E,yEAAyF;AAEzF,gDAAsD;AACtD,uDAI2B;AAC3B,4DAA8D;AA0D9D,SAAgB,mBAAmB,CAAC,KAAmB;IACrD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAA,kCAAoB,EAAC,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAKhF,IAAA,0CAA2B,EAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,UAAU,GAAqB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,wCAAsB,CAAC,CAAC;IAEjF,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kCAAkB,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,IAAA,4CAA0B,EAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAA,sCAAoB,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAElF,MAAM,UAAU,GAAiB;QAC/B,aAAa,EAAE,CAAC;QAChB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,EAAE;QAC1C,WAAW,EAAE,sCAAsC,KAAK,CAAC,WAAW,OAAO,MAAM,CAC/E,KAAK,CAAC,WAAW,CAAC,MAAM,CACzB,kBAAkB;QAInB,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,WAAW,EAAE;YACX,KAAK,EAAE,KAAK,CAAC,eAAe;gBAC1B,CAAC,CAAC,CAAC,mBAAW,CAAC,UAAU,EAAE,mBAAW,CAAC,UAAU,CAAC;gBAClD,CAAC,CAAC,CAAC,mBAAW,CAAC,UAAU,CAAC;SAC7B;QACD,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;KAC5F,CAAC;IAOF,MAAM,IAAI,GAAG,IAAA,2CAAmB,EAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,sBAAsB,EAAE;QAClF,UAAU,EAAE,KAAK,CAAC,UAAU;QAO5B,sBAAsB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC;KACzE,CAAC,CAAC;IAEH,OAAO;QACL,UAAU;QACV,IAAI;QACJ,cAAc,EAAE,UAAU,CAAC,MAAM;QACjC,cAAc,EAAE,UAAU,CAAC,MAAM;QACjC,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -1,57 +0,0 @@
1
- import { type ResolvedChart } from './chart-resolver';
2
- export declare const CHART_TRUST_ENV = "XEMA_CHART_TRUST";
3
- export declare const CHART_SIGNER_IDENTITY_REGEXP = "^https://github\\.com/xema-dev/(xema-deploy|xema-infra-services)/\\.github/workflows/publish-charts\\.yaml@refs/(heads/main|tags/charts-v.+)$";
4
- export declare const CHART_SIGNER_OIDC_ISSUER = "https://token.actions.githubusercontent.com";
5
- export declare enum ChartTrustMode {
6
- Verify = "verify",
7
- Insecure = "insecure"
8
- }
9
- export declare function parseChartTrustMode(raw: string | undefined): ChartTrustMode;
10
- export declare enum ChartTrustOutcome {
11
- NoRemoteCharts = "no-remote-charts",
12
- LocalUnattested = "local-unattested",
13
- LocalUnrecorded = "local-unrecorded",
14
- Verified = "verified",
15
- Insecure = "insecure",
16
- CosignMissing = "cosign-missing",
17
- Unverified = "unverified"
18
- }
19
- export interface ChartTrustReport {
20
- readonly mode: ChartTrustMode;
21
- readonly outcome: ChartTrustOutcome;
22
- readonly subjects: readonly string[];
23
- readonly unverified: readonly string[];
24
- readonly message: string;
25
- readonly passed: boolean;
26
- }
27
- export interface CosignRunner {
28
- available(): Promise<boolean>;
29
- verify(subject: string): Promise<boolean>;
30
- }
31
- export declare function cosignVerifyArgs(subject: string): readonly string[];
32
- export declare function chartSignatureSubject(chart: ResolvedChart): string;
33
- export interface ChartTrustVerifierOptions {
34
- readonly mode?: ChartTrustMode;
35
- readonly cosign?: CosignRunner;
36
- readonly env?: NodeJS.ProcessEnv;
37
- }
38
- export declare class ChartTrustVerifier {
39
- readonly mode: ChartTrustMode;
40
- private readonly cosign;
41
- private readonly verifiedSubjects;
42
- private readonly stageRecords;
43
- private readonly admittedLocalRefs;
44
- constructor(opts?: ChartTrustVerifierOptions);
45
- evaluate(charts: readonly ResolvedChart[]): Promise<ChartTrustReport>;
46
- private evaluateLocalProvenance;
47
- assertVerified(charts: readonly ResolvedChart[]): Promise<ChartTrustReport>;
48
- }
49
- export declare function assertChartTrust(report: ChartTrustReport): void;
50
- export declare class ExecCosignRunner implements CosignRunner {
51
- private readonly bin;
52
- constructor(bin?: string);
53
- available(): Promise<boolean>;
54
- verify(subject: string): Promise<boolean>;
55
- private run;
56
- }
57
- //# sourceMappingURL=chart-trust.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chart-trust.d.ts","sourceRoot":"","sources":["../../../src/runtime/runner/chart-trust.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA8CvE,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAalD,eAAO,MAAM,4BAA4B,kJACwG,CAAC;AAElJ,eAAO,MAAM,wBAAwB,gDACU,CAAC;AAMhD,oBAAY,cAAc;IAExB,MAAM,WAAW;IAOjB,QAAQ,aAAa;CACtB;AAQD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAe3E;AAGD,oBAAY,iBAAiB;IAQ3B,cAAc,qBAAqB;IAQnC,eAAe,qBAAqB;IAOpC,eAAe,qBAAqB;IAEpC,QAAQ,aAAa;IAErB,QAAQ,aAAa;IAErB,aAAa,mBAAmB;IAEhC,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAEpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAMrC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAGD,MAAM,WAAW,YAAY;IAE3B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3C;AAQD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CASnE;AAUD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAclE;AAcD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAClC;AAYD,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IAEtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8C;IAE3E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;gBAE3C,IAAI,GAAE,yBAA8B;IAU1C,QAAQ,CACZ,MAAM,EAAE,SAAS,aAAa,EAAE,GAC/B,OAAO,CAAC,gBAAgB,CAAC;IA2I5B,OAAO,CAAC,uBAAuB;IA4EzB,cAAc,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAKlF;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAI/D;AAYD,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,SAAW;IAErC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C,OAAO,CAAC,GAAG;CAOZ"}
@@ -1,270 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExecCosignRunner = exports.ChartTrustVerifier = exports.ChartTrustOutcome = exports.ChartTrustMode = exports.CHART_SIGNER_OIDC_ISSUER = exports.CHART_SIGNER_IDENTITY_REGEXP = exports.CHART_TRUST_ENV = void 0;
4
- exports.parseChartTrustMode = parseChartTrustMode;
5
- exports.cosignVerifyArgs = cosignVerifyArgs;
6
- exports.chartSignatureSubject = chartSignatureSubject;
7
- exports.assertChartTrust = assertChartTrust;
8
- const node_child_process_1 = require("node:child_process");
9
- const chart_resolver_1 = require("./chart-resolver");
10
- const chart_stage_record_1 = require("./chart-stage-record");
11
- exports.CHART_TRUST_ENV = 'XEMA_CHART_TRUST';
12
- exports.CHART_SIGNER_IDENTITY_REGEXP = '^https://github\\.com/xema-dev/(xema-deploy|xema-infra-services)/\\.github/workflows/publish-charts\\.yaml@refs/(heads/main|tags/charts-v.+)$';
13
- exports.CHART_SIGNER_OIDC_ISSUER = 'https://token.actions.githubusercontent.com';
14
- var ChartTrustMode;
15
- (function (ChartTrustMode) {
16
- ChartTrustMode["Verify"] = "verify";
17
- ChartTrustMode["Insecure"] = "insecure";
18
- })(ChartTrustMode || (exports.ChartTrustMode = ChartTrustMode = {}));
19
- function parseChartTrustMode(raw) {
20
- if (raw === undefined || raw.length === 0) {
21
- return ChartTrustMode.Verify;
22
- }
23
- const mode = Object.values(ChartTrustMode).find((candidate) => candidate === raw);
24
- if (mode === undefined) {
25
- throw new Error(`${exports.CHART_TRUST_ENV}='${raw}' is not a value this understands. Use ` +
26
- `'${ChartTrustMode.Verify}' (the default) or, only for a mirror that ` +
27
- `carries no signatures, '${ChartTrustMode.Insecure}'.`);
28
- }
29
- return mode;
30
- }
31
- var ChartTrustOutcome;
32
- (function (ChartTrustOutcome) {
33
- ChartTrustOutcome["NoRemoteCharts"] = "no-remote-charts";
34
- ChartTrustOutcome["LocalUnattested"] = "local-unattested";
35
- ChartTrustOutcome["LocalUnrecorded"] = "local-unrecorded";
36
- ChartTrustOutcome["Verified"] = "verified";
37
- ChartTrustOutcome["Insecure"] = "insecure";
38
- ChartTrustOutcome["CosignMissing"] = "cosign-missing";
39
- ChartTrustOutcome["Unverified"] = "unverified";
40
- })(ChartTrustOutcome || (exports.ChartTrustOutcome = ChartTrustOutcome = {}));
41
- function cosignVerifyArgs(subject) {
42
- return [
43
- 'verify',
44
- '--certificate-identity-regexp',
45
- exports.CHART_SIGNER_IDENTITY_REGEXP,
46
- '--certificate-oidc-issuer',
47
- exports.CHART_SIGNER_OIDC_ISSUER,
48
- subject,
49
- ];
50
- }
51
- function chartSignatureSubject(chart) {
52
- if (chart.kind !== chart_resolver_1.ChartSourceKind.Oci) {
53
- throw new Error(`Chart '${chart.name}' resolved locally (${chart.kind}) and has no registry ` +
54
- 'signature subject.');
55
- }
56
- if (chart.version.length === 0) {
57
- throw new Error(`Chart '${chart.name}' resolved from the registry with no pinned version; ` +
58
- 'a signature subject cannot be formed without one.');
59
- }
60
- return `${chart.ref.replace(/^oci:\/\//, '')}:${chart.version}`;
61
- }
62
- class ChartTrustVerifier {
63
- mode;
64
- cosign;
65
- verifiedSubjects = new Set();
66
- stageRecords = new Map();
67
- admittedLocalRefs = new Set();
68
- constructor(opts = {}) {
69
- const env = opts.env ?? process.env;
70
- this.mode = opts.mode ?? parseChartTrustMode(env[exports.CHART_TRUST_ENV]);
71
- this.cosign = opts.cosign ?? new ExecCosignRunner();
72
- }
73
- async evaluate(charts) {
74
- const remote = charts.filter((chart) => chart.kind === chart_resolver_1.ChartSourceKind.Oci);
75
- const subjects = remote.map((chart) => chart.name);
76
- const localProvenance = this.evaluateLocalProvenance(charts.filter((chart) => chart.kind !== chart_resolver_1.ChartSourceKind.Oci));
77
- if (localProvenance.unrecorded.length > 0) {
78
- return {
79
- mode: this.mode,
80
- outcome: ChartTrustOutcome.LocalUnrecorded,
81
- subjects,
82
- unverified: localProvenance.unrecorded.map((entry) => entry.name),
83
- message: 'Refusing to install a LOCAL chart the stage record does not cover:\n' +
84
- localProvenance.unrecorded
85
- .map((entry) => ` - ${entry.name}: ${entry.reason}`)
86
- .join('\n') +
87
- `\nThe record at ${String(localProvenance.recordPath)} is the chart ` +
88
- 'digests `install-bundle.sh` carried out of the air-gap bundle AFTER ' +
89
- 'verifying that bundle against the pinned Sigstore root. A chart it ' +
90
- 'does not name came from somewhere else, and a local chart outranks ' +
91
- 'the signed one the lock names — so it cannot be admitted on the ' +
92
- 'strength of being in the directory. Re-run airgap/install-bundle.sh ' +
93
- 'to restage from a verified bundle, or remove the file.',
94
- passed: false,
95
- };
96
- }
97
- if (remote.length === 0) {
98
- return {
99
- mode: this.mode,
100
- outcome: localProvenance.attested
101
- ? ChartTrustOutcome.NoRemoteCharts
102
- : ChartTrustOutcome.LocalUnattested,
103
- subjects: [],
104
- unverified: [],
105
- message: localProvenance.message,
106
- passed: true,
107
- };
108
- }
109
- if (this.mode === ChartTrustMode.Insecure) {
110
- return {
111
- mode: this.mode,
112
- outcome: ChartTrustOutcome.Insecure,
113
- subjects,
114
- unverified: [],
115
- message: `${exports.CHART_TRUST_ENV}=${ChartTrustMode.Insecure} — NOT verifying signatures ` +
116
- `for ${String(remote.length)} chart(s) pulled from the registry. These ` +
117
- 'charts are being installed on the operator’s authority, not the ' +
118
- 'publisher’s.',
119
- passed: true,
120
- };
121
- }
122
- if (!(await this.cosign.available())) {
123
- return {
124
- mode: this.mode,
125
- outcome: ChartTrustOutcome.CosignMissing,
126
- subjects,
127
- unverified: [],
128
- message: `cosign is required to verify the ${String(remote.length)} chart(s) this ` +
129
- 'install pulls from the registry (install sigstore/cosign). Charts are ' +
130
- 'keyless-signed by their publishing workflow and the helm client is the ' +
131
- 'only place that signature can be checked — a Kubernetes image policy ' +
132
- 'cannot gate a Helm chart. To install from a mirror that carries no ' +
133
- `signatures, set ${exports.CHART_TRUST_ENV}=${ChartTrustMode.Insecure} and own ` +
134
- 'that decision.',
135
- passed: false,
136
- };
137
- }
138
- const unverified = [];
139
- const inScope = [];
140
- for (const chart of remote) {
141
- const subject = chartSignatureSubject(chart);
142
- inScope.push(subject);
143
- if (this.verifiedSubjects.has(subject)) {
144
- continue;
145
- }
146
- if (await this.cosign.verify(subject)) {
147
- this.verifiedSubjects.add(subject);
148
- continue;
149
- }
150
- unverified.push(chart.name);
151
- }
152
- if (unverified.length > 0) {
153
- return {
154
- mode: this.mode,
155
- outcome: ChartTrustOutcome.Unverified,
156
- subjects: inScope,
157
- unverified,
158
- message: `Signature verification FAILED for ${unverified.join(', ')}. A chart that ` +
159
- 'does not verify was not published by xema-dev’s publish-charts workflow ' +
160
- '— it may be unsigned, signed by something else, or tampered with. ' +
161
- `Refusing to install it. Expected a signer identity matching ` +
162
- `${exports.CHART_SIGNER_IDENTITY_REGEXP} via ${exports.CHART_SIGNER_OIDC_ISSUER}.`,
163
- passed: false,
164
- };
165
- }
166
- return {
167
- mode: this.mode,
168
- outcome: ChartTrustOutcome.Verified,
169
- subjects: inScope,
170
- unverified: [],
171
- message: localProvenance.message,
172
- passed: true,
173
- };
174
- }
175
- evaluateLocalProvenance(local) {
176
- if (local.length === 0) {
177
- return { attested: true, unrecorded: [], recordPath: null, message: '' };
178
- }
179
- const unrecorded = [];
180
- let recordPath = null;
181
- let unattested = 0;
182
- for (const chart of local) {
183
- if (this.admittedLocalRefs.has(chart.ref)) {
184
- continue;
185
- }
186
- const chartsDir = (0, chart_stage_record_1.chartsDirOf)(chart.ref);
187
- let record = this.stageRecords.get(chartsDir);
188
- if (record === undefined) {
189
- record = (0, chart_stage_record_1.loadChartStageRecord)(chartsDir);
190
- this.stageRecords.set(chartsDir, record);
191
- }
192
- if (record !== null) {
193
- recordPath = record.path;
194
- }
195
- const verdict = (0, chart_stage_record_1.chartStageVerdict)(chart.ref, chart.kind === chart_resolver_1.ChartSourceKind.LocalArchive, record);
196
- switch (verdict) {
197
- case chart_stage_record_1.ChartStageVerdict.NoRecord:
198
- unattested += 1;
199
- break;
200
- case chart_stage_record_1.ChartStageVerdict.Admitted:
201
- this.admittedLocalRefs.add(chart.ref);
202
- break;
203
- case chart_stage_record_1.ChartStageVerdict.NotRecorded:
204
- unrecorded.push({
205
- name: chart.name,
206
- reason: `${chart.ref} is not named in the stage record`,
207
- });
208
- break;
209
- case chart_stage_record_1.ChartStageVerdict.DigestMismatch:
210
- unrecorded.push({
211
- name: chart.name,
212
- reason: `${chart.ref} is named in the stage record at DIFFERENT bytes`,
213
- });
214
- break;
215
- case chart_stage_record_1.ChartStageVerdict.NotAnArchive:
216
- unrecorded.push({
217
- name: chart.name,
218
- reason: `${chart.ref} is a chart DIRECTORY, and a record of packaged ` +
219
- 'charts cannot cover one — the bundle stages .tgz only',
220
- });
221
- break;
222
- }
223
- }
224
- return {
225
- attested: unattested === 0,
226
- unrecorded,
227
- recordPath,
228
- message: unattested === 0
229
- ? ''
230
- : `${String(unattested)} local chart(s) resolved from a charts ` +
231
- 'directory with NO stage record — nothing attests where they came ' +
232
- 'from. That is expected for a checkout or a hand-placed chart and ' +
233
- 'is NOT expected on a box installed from an air-gap bundle, which ' +
234
- 'always writes one. These charts are being installed on the ' +
235
- 'operator’s authority, not the publisher’s.',
236
- };
237
- }
238
- async assertVerified(charts) {
239
- const report = await this.evaluate(charts);
240
- assertChartTrust(report);
241
- return report;
242
- }
243
- }
244
- exports.ChartTrustVerifier = ChartTrustVerifier;
245
- function assertChartTrust(report) {
246
- if (!report.passed) {
247
- throw new Error(report.message);
248
- }
249
- }
250
- class ExecCosignRunner {
251
- bin;
252
- constructor(bin = 'cosign') {
253
- this.bin = bin;
254
- }
255
- async available() {
256
- return this.run(['version']);
257
- }
258
- async verify(subject) {
259
- return this.run(cosignVerifyArgs(subject));
260
- }
261
- run(args) {
262
- return new Promise((resolve) => {
263
- (0, node_child_process_1.execFile)(this.bin, [...args], { maxBuffer: 8 * 1024 * 1024 }, (err) => {
264
- resolve(err === null);
265
- });
266
- });
267
- }
268
- }
269
- exports.ExecCosignRunner = ExecCosignRunner;
270
- //# sourceMappingURL=chart-trust.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chart-trust.js","sourceRoot":"","sources":["../../../src/runtime/runner/chart-trust.ts"],"names":[],"mappings":"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"}