@xemahq/xema 0.25.1 → 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 (239) hide show
  1. package/README.md +70 -37
  2. package/dist/assets/appliance-base/images.lock.json +126 -126
  3. package/dist/assets/appliance-lean/images.lock.json +123 -123
  4. package/dist/assets/cloud/images.lock.json +126 -126
  5. package/dist/assets/core/images.lock.json +120 -120
  6. package/dist/assets/distribution-assets.manifest.json +15 -16
  7. package/dist/assets/minimal/images.lock.json +108 -108
  8. package/dist/assets/oss/images.lock.json +126 -126
  9. package/dist/assets/starter/images.lock.json +123 -123
  10. package/dist/cli.js +2 -2
  11. package/dist/cli.js.map +1 -1
  12. package/dist/commands/dev.js +1 -0
  13. package/dist/commands/dev.js.map +1 -1
  14. package/dist/commands/down.d.ts.map +1 -1
  15. package/dist/commands/down.js +7 -1
  16. package/dist/commands/down.js.map +1 -1
  17. package/dist/commands/edition.d.ts +3 -0
  18. package/dist/commands/edition.d.ts.map +1 -0
  19. package/dist/commands/edition.js +46 -0
  20. package/dist/commands/edition.js.map +1 -0
  21. package/dist/commands/init.js +2 -2
  22. package/dist/commands/init.js.map +1 -1
  23. package/dist/commands/serve.js +1 -0
  24. package/dist/commands/serve.js.map +1 -1
  25. package/dist/commands/up.js +1 -0
  26. package/dist/commands/up.js.map +1 -1
  27. package/dist/dev/env-defaults.d.ts.map +1 -1
  28. package/dist/dev/env-defaults.js +6 -1
  29. package/dist/dev/env-defaults.js.map +1 -1
  30. package/dist/dev/infra-preflight.d.ts +3 -2
  31. package/dist/dev/infra-preflight.d.ts.map +1 -1
  32. package/dist/dev/infra-preflight.js +18 -8
  33. package/dist/dev/infra-preflight.js.map +1 -1
  34. package/dist/edition/verify-image-evidence.bundle.mjs +54179 -0
  35. package/dist/edition/verify-image-evidence.bundle.provenance.json +2871 -0
  36. package/dist/runtime/backing-registration.d.ts.map +1 -1
  37. package/dist/runtime/backing-registration.js +7 -2
  38. package/dist/runtime/backing-registration.js.map +1 -1
  39. package/dist/runtime/config/schema.d.ts +1 -0
  40. package/dist/runtime/config/schema.d.ts.map +1 -1
  41. package/dist/runtime/custody/local-custody.d.ts +12 -0
  42. package/dist/runtime/custody/local-custody.d.ts.map +1 -0
  43. package/dist/runtime/custody/local-custody.js +22 -0
  44. package/dist/runtime/custody/local-custody.js.map +1 -0
  45. package/dist/runtime/custody/openbao-custody-bootstrap.d.ts +18 -0
  46. package/dist/runtime/custody/openbao-custody-bootstrap.d.ts.map +1 -0
  47. package/dist/runtime/custody/openbao-custody-bootstrap.js +50 -0
  48. package/dist/runtime/custody/openbao-custody-bootstrap.js.map +1 -0
  49. package/dist/runtime/custody/openbao-custody-store.d.ts +18 -0
  50. package/dist/runtime/custody/openbao-custody-store.d.ts.map +1 -0
  51. package/dist/runtime/custody/openbao-custody-store.js +55 -0
  52. package/dist/runtime/custody/openbao-custody-store.js.map +1 -0
  53. package/dist/runtime/custody/openbao-http-client.d.ts +34 -0
  54. package/dist/runtime/custody/openbao-http-client.d.ts.map +1 -0
  55. package/dist/runtime/custody/openbao-http-client.js +154 -0
  56. package/dist/runtime/custody/openbao-http-client.js.map +1 -0
  57. package/dist/runtime/custody/openbao-local-constants.d.ts +22 -0
  58. package/dist/runtime/custody/openbao-local-constants.d.ts.map +1 -0
  59. package/dist/runtime/custody/openbao-local-constants.js +48 -0
  60. package/dist/runtime/custody/openbao-local-constants.js.map +1 -0
  61. package/dist/runtime/custody/openbao-local-runner.d.ts +16 -0
  62. package/dist/runtime/custody/openbao-local-runner.d.ts.map +1 -0
  63. package/dist/runtime/custody/openbao-local-runner.js +86 -0
  64. package/dist/runtime/custody/openbao-local-runner.js.map +1 -0
  65. package/dist/runtime/edition/run-entry.d.ts +9 -0
  66. package/dist/runtime/edition/run-entry.d.ts.map +1 -0
  67. package/dist/runtime/edition/run-entry.js +36 -0
  68. package/dist/runtime/edition/run-entry.js.map +1 -0
  69. package/dist/runtime/edition/verb-map.d.ts +60 -0
  70. package/dist/runtime/edition/verb-map.d.ts.map +1 -0
  71. package/dist/runtime/edition/verb-map.js +146 -0
  72. package/dist/runtime/edition/verb-map.js.map +1 -0
  73. package/dist/runtime/env-seeder.d.ts +3 -0
  74. package/dist/runtime/env-seeder.d.ts.map +1 -1
  75. package/dist/runtime/env-seeder.js +20 -3
  76. package/dist/runtime/env-seeder.js.map +1 -1
  77. package/dist/runtime/launch.d.ts +3 -1
  78. package/dist/runtime/launch.d.ts.map +1 -1
  79. package/dist/runtime/launch.js +37 -8
  80. package/dist/runtime/launch.js.map +1 -1
  81. package/dist/runtime/paths.d.ts +1 -2
  82. package/dist/runtime/paths.d.ts.map +1 -1
  83. package/dist/runtime/paths.js +0 -10
  84. package/dist/runtime/paths.js.map +1 -1
  85. package/dist/runtime/runner/chart-local-provenance.d.ts +20 -0
  86. package/dist/runtime/runner/chart-local-provenance.d.ts.map +1 -0
  87. package/dist/runtime/runner/chart-local-provenance.js +114 -0
  88. package/dist/runtime/runner/chart-local-provenance.js.map +1 -0
  89. package/dist/runtime/runner/chart-preflight.d.ts +8 -8
  90. package/dist/runtime/runner/chart-preflight.d.ts.map +1 -1
  91. package/dist/runtime/runner/chart-preflight.js +30 -69
  92. package/dist/runtime/runner/chart-preflight.js.map +1 -1
  93. package/dist/runtime/runner/chart-pull.d.ts +14 -0
  94. package/dist/runtime/runner/chart-pull.d.ts.map +1 -0
  95. package/dist/runtime/runner/chart-pull.js +96 -0
  96. package/dist/runtime/runner/chart-pull.js.map +1 -0
  97. package/dist/runtime/runner/chart-resolver.d.ts +4 -12
  98. package/dist/runtime/runner/chart-resolver.d.ts.map +1 -1
  99. package/dist/runtime/runner/chart-resolver.js +16 -62
  100. package/dist/runtime/runner/chart-resolver.js.map +1 -1
  101. package/dist/runtime/runner/chart-set-lock.d.ts +6 -20
  102. package/dist/runtime/runner/chart-set-lock.d.ts.map +1 -1
  103. package/dist/runtime/runner/chart-set-lock.js +55 -99
  104. package/dist/runtime/runner/chart-set-lock.js.map +1 -1
  105. package/dist/runtime/runner/helm-cli.d.ts +3 -1
  106. package/dist/runtime/runner/helm-cli.d.ts.map +1 -1
  107. package/dist/runtime/runner/helm-cli.js +9 -7
  108. package/dist/runtime/runner/helm-cli.js.map +1 -1
  109. package/dist/runtime/runner/helm-runner.d.ts +4 -4
  110. package/dist/runtime/runner/helm-runner.d.ts.map +1 -1
  111. package/dist/runtime/runner/helm-runner.js +18 -16
  112. package/dist/runtime/runner/helm-runner.js.map +1 -1
  113. package/dist/runtime/sources/kinds/git.d.ts +1 -2
  114. package/dist/runtime/sources/kinds/git.d.ts.map +1 -1
  115. package/dist/runtime/sources/kinds/git.js +8 -5
  116. package/dist/runtime/sources/kinds/git.js.map +1 -1
  117. package/dist/runtime/sources/manifest-walk.d.ts +3 -1
  118. package/dist/runtime/sources/manifest-walk.d.ts.map +1 -1
  119. package/dist/runtime/sources/manifest-walk.js +8 -3
  120. package/dist/runtime/sources/manifest-walk.js.map +1 -1
  121. package/dist/runtime/sources/schema.d.ts +3 -0
  122. package/dist/runtime/sources/schema.d.ts.map +1 -1
  123. package/dist/runtime/sources/schema.js +6 -1
  124. package/dist/runtime/sources/schema.js.map +1 -1
  125. package/dist/runtime/supervisor.d.ts +3 -0
  126. package/dist/runtime/supervisor.d.ts.map +1 -1
  127. package/dist/runtime/supervisor.js +2 -0
  128. package/dist/runtime/supervisor.js.map +1 -1
  129. package/edition/README.md +315 -0
  130. package/edition/assemble-producer-input.mjs +1251 -0
  131. package/edition/authorization-base.mjs +347 -0
  132. package/edition/biome-content.mjs +268 -0
  133. package/edition/build-biome-index.mjs +175 -0
  134. package/edition/build-platform-service-index.mjs +288 -0
  135. package/edition/build-runtime-image-source-index.mjs +821 -0
  136. package/edition/built-verifier.mjs +55 -0
  137. package/edition/catalogue-edition.mjs +49 -0
  138. package/edition/catalogue-fetch.mjs +64 -0
  139. package/edition/catalogue.mjs +135 -0
  140. package/edition/chart-set-source-commit.mjs +92 -0
  141. package/edition/check-committed-image-evidence.mjs +383 -0
  142. package/edition/checkout-indexed-source-repositories.mjs +105 -0
  143. package/edition/comment-blanker.mjs +75 -0
  144. package/edition/connector-source-authority.mjs +60 -0
  145. package/edition/customer-definition.mjs +183 -0
  146. package/edition/customer-flags.mjs +7 -0
  147. package/edition/develop-customer-edition.mjs +99 -0
  148. package/edition/develop-edition-resolve.mjs +65 -0
  149. package/edition/develop-edition.mjs +274 -0
  150. package/edition/develop-freeze.mjs +173 -0
  151. package/edition/develop-image-coordinate.mjs +54 -0
  152. package/edition/develop-seal.mjs +77 -0
  153. package/edition/develop-snapshot-inputs.mjs +104 -0
  154. package/edition/dist-check.mjs +986 -0
  155. package/edition/distribution-evidence-set.mjs +987 -0
  156. package/edition/distribution-paths.mjs +191 -0
  157. package/edition/edition-artifact.mjs +270 -0
  158. package/edition/edition-biome-manifests.mjs +85 -0
  159. package/edition/edition-channel.mjs +6 -0
  160. package/edition/edition-chart-set.mjs +93 -0
  161. package/edition/edition-config.mjs +207 -0
  162. package/edition/edition-constants.mjs +57 -0
  163. package/edition/edition-contract.json +23 -0
  164. package/edition/edition-list.mjs +35 -0
  165. package/edition/edition-locks.mjs +69 -0
  166. package/edition/edition-protocol.mjs +228 -0
  167. package/edition/edition-workspace.mjs +176 -0
  168. package/edition/evidence-checkout.mjs +418 -0
  169. package/edition/evidence-grammars.mjs +16 -0
  170. package/edition/evidence-trust-pin.mjs +304 -0
  171. package/edition/evidence-trust-policy.mjs +256 -0
  172. package/edition/external-source-walk.mjs +463 -0
  173. package/edition/first-party-source-ids.mjs +59 -0
  174. package/edition/fleet-coordinate-finality.mjs +350 -0
  175. package/edition/git-source-auth.mjs +52 -0
  176. package/edition/image-evidence-replay-state.mjs +242 -0
  177. package/edition/image-evidence.mjs +1225 -0
  178. package/edition/kernel-contract-authority.mjs +443 -0
  179. package/edition/lib.mjs +3018 -0
  180. package/edition/no-follow-file.mjs +94 -0
  181. package/edition/oci-evidence-verbs.mjs +392 -0
  182. package/edition/oci-image-source-evidence.mjs +239 -0
  183. package/edition/oras.mjs +648 -0
  184. package/edition/pin-source.mjs +227 -0
  185. package/edition/plan-image-evidence-refresh.mjs +408 -0
  186. package/edition/platform-lock-readability.mjs +892 -0
  187. package/edition/platform-service-class.mjs +18 -0
  188. package/edition/platform-service-source-authority.mjs +105 -0
  189. package/edition/positive-closure.mjs +162 -0
  190. package/edition/produce-distribution-completeness-evidence.mjs +311 -0
  191. package/edition/produce-image-delivery-entitlement-evidence.mjs +294 -0
  192. package/edition/produce-image-source-evidence.mjs +765 -0
  193. package/edition/producer-evidence-bundle.mjs +157 -0
  194. package/edition/registry-credentials.mjs +193 -0
  195. package/edition/release-catalogue.mjs +39 -0
  196. package/edition/release-channel-guard.mjs +99 -0
  197. package/edition/release-edition-artifact.mjs +158 -0
  198. package/edition/remedy-command.mjs +89 -0
  199. package/edition/repin-evidence-trust.mjs +101 -0
  200. package/edition/required-resource-provider.mjs +58 -0
  201. package/edition/resolve-chart-set.mjs +415 -0
  202. package/edition/resolve-customer-edition.mjs +288 -0
  203. package/edition/resolve-distribution.mjs +2318 -0
  204. package/edition/resolve-edition.mjs +186 -0
  205. package/edition/resolve-images.mjs +1606 -0
  206. package/edition/seal-image-digests.mjs +855 -0
  207. package/edition/sealed-evidence-accept.mjs +82 -0
  208. package/edition/source-authority.mjs +725 -0
  209. package/edition/source-closure.mjs +116 -0
  210. package/edition/strict-json.mjs +121 -0
  211. package/edition/string-order.mjs +5 -0
  212. package/edition/trust-policy-arming.mjs +120 -0
  213. package/edition/trusted-executable.mjs +166 -0
  214. package/edition/verifier-binding.mjs +45 -0
  215. package/edition/verifier-files.mjs +8 -0
  216. package/edition/verifier-kernel-schemas.mjs +22 -0
  217. package/edition/verifier-provenance.mjs +64 -0
  218. package/edition/verify-image-evidence.mjs +430 -0
  219. package/edition/verify-image-platforms.mjs +495 -0
  220. package/edition/why.mjs +56 -0
  221. package/edition/workspace-sections.mjs +195 -0
  222. package/examples/06-biome-sources.yaml +1 -0
  223. package/package.json +18 -7
  224. package/dist/commands/dist.d.ts +0 -16
  225. package/dist/commands/dist.d.ts.map +0 -1
  226. package/dist/commands/dist.js +0 -182
  227. package/dist/commands/dist.js.map +0 -1
  228. package/dist/runtime/distribution/available-biome.d.ts +0 -10
  229. package/dist/runtime/distribution/available-biome.d.ts.map +0 -1
  230. package/dist/runtime/distribution/available-biome.js +0 -154
  231. package/dist/runtime/distribution/available-biome.js.map +0 -1
  232. package/dist/runtime/distribution/compose.d.ts +0 -23
  233. package/dist/runtime/distribution/compose.d.ts.map +0 -1
  234. package/dist/runtime/distribution/compose.js +0 -48
  235. package/dist/runtime/distribution/compose.js.map +0 -1
  236. package/dist/runtime/runner/chart-trust.d.ts +0 -57
  237. package/dist/runtime/runner/chart-trust.d.ts.map +0 -1
  238. package/dist/runtime/runner/chart-trust.js +0 -270
  239. package/dist/runtime/runner/chart-trust.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"backing-registration.d.ts","sourceRoot":"","sources":["../../src/runtime/backing-registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,0BAA0B,EAEhC,MAAM,oCAAoC,CAAC;AAwD5C,MAAM,WAAW,yBAAyB;IAKxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IAErC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAW1C,QAAQ,CAAC,YAAY,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAE7D,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAmBD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,yBAAyB,CAAC,CAyFpC"}
1
+ {"version":3,"file":"backing-registration.d.ts","sourceRoot":"","sources":["../../src/runtime/backing-registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,0BAA0B,EAEhC,MAAM,oCAAoC,CAAC;AA2D5C,MAAM,WAAW,yBAAyB;IAKxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IAErC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAW1C,QAAQ,CAAC,YAAY,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAE7D,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAmCD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,yBAAyB,CAAC,CAyFpC"}
@@ -6,6 +6,11 @@ const kernel_state_runtime_1 = require("@xemahq/kernel-state-runtime");
6
6
  const service_registry_nest_1 = require("@xemahq/service-registry-nest");
7
7
  const RENEW_INTERVAL_SECONDS = 15;
8
8
  const MAX_CONSECUTIVE_RENEW_FAILURES = 3;
9
+ function launcherEnvReader(etcdEndpoints) {
10
+ return (name) => name === kernel_state_runtime_1.KERNEL_STATE_ETCD_ENV_VARS.endpoints
11
+ ? etcdEndpoints.join(',')
12
+ : process.env[name];
13
+ }
9
14
  async function registerBackingSubmodules(opts) {
10
15
  if (opts.etcdEndpoints.length === 0) {
11
16
  throw new Error('registerBackingSubmodules: no etcd endpoints provided — cannot register backing submodules.');
@@ -16,7 +21,7 @@ async function registerBackingSubmodules(opts) {
16
21
  const warn = opts.log ?? ((line) => console.warn(line));
17
22
  const kernelState = (0, kernel_state_runtime_1.createKernelState)({
18
23
  profile: kernel_state_runtime_1.KernelStateProfile.Cluster,
19
- etcd: { endpoints: [...opts.etcdEndpoints] },
24
+ etcd: (0, kernel_state_runtime_1.etcdKernelStateOptionsFromEnv)(launcherEnvReader(opts.etcdEndpoints)),
20
25
  });
21
26
  if (!(kernelState instanceof kernel_state_runtime_1.EtcdKernelState)) {
22
27
  throw new Error('registerBackingSubmodules: expected an EtcdKernelState from the Cluster profile.');
@@ -56,7 +61,7 @@ async function registerBackingSubmodules(opts) {
56
61
  }
57
62
  });
58
63
  }, RENEW_INTERVAL_SECONDS * 1000);
59
- renewTimer.unref?.();
64
+ renewTimer.unref();
60
65
  let closed = false;
61
66
  return {
62
67
  async close() {
@@ -1 +1 @@
1
- {"version":3,"file":"backing-registration.js","sourceRoot":"","sources":["../../src/runtime/backing-registration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backing-registration.js","sourceRoot":"","sources":["../../src/runtime/backing-registration.ts"],"names":[],"mappings":"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"}
@@ -223,6 +223,7 @@ export declare const XemaConfigSchema: z.ZodObject<{
223
223
  url: z.ZodString;
224
224
  ref: z.ZodOptional<z.ZodString>;
225
225
  authTokenEnv: z.ZodOptional<z.ZodString>;
226
+ authUsername: z.ZodOptional<z.ZodString>;
226
227
  name: z.ZodString;
227
228
  }, z.core.$strict>], "kind">>>;
228
229
  cli: z.ZodOptional<z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/runtime/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,oBAAY,SAAS;IAEnB,OAAO,YAAY;IAEnB,QAAQ,aAAa;IAMrB,QAAQ,aAAa;CACtB;AAGD,oBAAY,SAAS;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;IAEjB,IAAI,SAAS;CACd;AASD,oBAAY,YAAY;IACtB,WAAW,gBAAgB;CAC5B;AAGD,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,QAAQ,aAAa;CACtB;AAGD,oBAAY,eAAe;IAEzB,WAAW,iBAAiB;IAE5B,QAAQ,cAAc;CACvB;AAGD,oBAAY,YAAY;IACtB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAWD,oBAAY,kBAAkB;IAM5B,IAAI,SAAS;IAKb,IAAI,SAAS;IAKb,WAAW,iBAAiB;CAC7B;AAQD,oBAAY,4BAA4B;IACtC,QAAQ,cAAc;IACtB,WAAW,iBAAiB;IAC5B,IAAI,SAAS;CACd;AAgBD,QAAA,MAAM,0BAA0B;;;;;;;;;kBASrB,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AA+E9E,QAAA,MAAM,eAAe;;;;;;;;;;kBAeV,CAAC;AACZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,QAAA,MAAM,iBAAiB;;;;;;;;kBAcZ,CAAC;AACZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,QAAA,MAAM,kBAAkB;;;;kBA6BpB,CAAC;AACL,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAY9D,QAAA,MAAM,eAAe;;kBAIV,CAAC;AACZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AASxD,QAAA,MAAM,kBAAkB;;kBAIb,CAAC;AACZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAQ9D,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,YAAY,GAAG,SAAS,GAC/B,4BAA4B,CAG9B;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAmClB,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAG1D,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAUxD"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/runtime/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,oBAAY,SAAS;IAEnB,OAAO,YAAY;IAEnB,QAAQ,aAAa;IAMrB,QAAQ,aAAa;CACtB;AAGD,oBAAY,SAAS;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;IAEjB,IAAI,SAAS;CACd;AASD,oBAAY,YAAY;IACtB,WAAW,gBAAgB;CAC5B;AAGD,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,QAAQ,aAAa;CACtB;AAGD,oBAAY,eAAe;IAEzB,WAAW,iBAAiB;IAE5B,QAAQ,cAAc;CACvB;AAGD,oBAAY,YAAY;IACtB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAWD,oBAAY,kBAAkB;IAM5B,IAAI,SAAS;IAKb,IAAI,SAAS;IAKb,WAAW,iBAAiB;CAC7B;AAQD,oBAAY,4BAA4B;IACtC,QAAQ,cAAc;IACtB,WAAW,iBAAiB;IAC5B,IAAI,SAAS;CACd;AAgBD,QAAA,MAAM,0BAA0B;;;;;;;;;kBASrB,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AA+E9E,QAAA,MAAM,eAAe;;;;;;;;;;kBAeV,CAAC;AACZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,QAAA,MAAM,iBAAiB;;;;;;;;kBAcZ,CAAC;AACZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,QAAA,MAAM,kBAAkB;;;;kBA6BpB,CAAC;AACL,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAY9D,QAAA,MAAM,eAAe;;kBAIV,CAAC;AACZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AASxD,QAAA,MAAM,kBAAkB;;kBAIb,CAAC;AACZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAQ9D,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,YAAY,GAAG,SAAS,GAC/B,4BAA4B,CAG9B;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAmClB,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAG1D,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAUxD"}
@@ -0,0 +1,12 @@
1
+ import { DockerCli } from '../runner/docker-cli';
2
+ export interface LocalCustodyBinding {
3
+ readonly brokerToken: string;
4
+ }
5
+ export interface ProvisionLocalCustodyOptions {
6
+ readonly network: string;
7
+ readonly installationId: string;
8
+ readonly installationIdentity: string;
9
+ readonly docker?: DockerCli;
10
+ }
11
+ export declare function provisionLocalCustody(opts: ProvisionLocalCustodyOptions): Promise<LocalCustodyBinding>;
12
+ //# sourceMappingURL=local-custody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-custody.d.ts","sourceRoot":"","sources":["../../../src/runtime/custody/local-custody.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,MAAM,WAAW,mBAAmB;IAElC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;CAC7B;AAMD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAe9B"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.provisionLocalCustody = provisionLocalCustody;
4
+ const openbao_custody_bootstrap_1 = require("./openbao-custody-bootstrap");
5
+ const openbao_custody_store_1 = require("./openbao-custody-store");
6
+ const openbao_http_client_1 = require("./openbao-http-client");
7
+ const openbao_local_runner_1 = require("./openbao-local-runner");
8
+ const docker_cli_1 = require("../runner/docker-cli");
9
+ async function provisionLocalCustody(opts) {
10
+ const client = new openbao_http_client_1.OpenBaoHttpClient();
11
+ await new openbao_local_runner_1.OpenBaoLocalRunner({
12
+ docker: opts.docker ?? new docker_cli_1.DockerCli(),
13
+ network: opts.network,
14
+ installationId: opts.installationId,
15
+ health: () => client.health(),
16
+ }).start();
17
+ const brokerToken = await (0, openbao_custody_bootstrap_1.ensureLocalOpenBaoCustody)(client, new openbao_custody_store_1.OpenBaoCustodyStore({
18
+ installationIdentity: opts.installationIdentity,
19
+ }));
20
+ return { brokerToken };
21
+ }
22
+ //# sourceMappingURL=local-custody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-custody.js","sourceRoot":"","sources":["../../../src/runtime/custody/local-custody.ts"],"names":[],"mappings":";;AAwBA,sDAiBC;AAzCD,2EAAwE;AACxE,mEAA8D;AAC9D,+DAA0D;AAC1D,iEAA4D;AAC5D,qDAAiD;AAoB1C,KAAK,UAAU,qBAAqB,CACzC,IAAkC;IAElC,MAAM,MAAM,GAAG,IAAI,uCAAiB,EAAE,CAAC;IACvC,MAAM,IAAI,yCAAkB,CAAC;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,sBAAS,EAAE;QACtC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;KAC9B,CAAC,CAAC,KAAK,EAAE,CAAC;IACX,MAAM,WAAW,GAAG,MAAM,IAAA,qDAAyB,EACjD,MAAM,EACN,IAAI,2CAAmB,CAAC;QACtB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;KAChD,CAAC,CACH,CAAC;IACF,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { OpenBaoHealth, OpenBaoInitMaterial, OpenBaoScopedToken } from './openbao-http-client';
2
+ export interface OpenBaoBootstrapApi {
3
+ health(): Promise<OpenBaoHealth>;
4
+ initialize(shares: number, threshold: number): Promise<OpenBaoInitMaterial>;
5
+ unseal(key: string): Promise<boolean>;
6
+ ensureKvV2Mount(token: string, mountPath: string): Promise<void>;
7
+ putPolicy(token: string, name: string, hcl: string): Promise<void>;
8
+ createScopedToken(token: string, policy: string, ttl: string): Promise<OpenBaoScopedToken>;
9
+ listTokenAccessors(token: string): Promise<string[]>;
10
+ lookupTokenPolicies(token: string, accessor: string): Promise<string[]>;
11
+ revokeTokenAccessor(token: string, accessor: string): Promise<void>;
12
+ }
13
+ export interface OpenBaoInitMaterialStore {
14
+ load(): Promise<OpenBaoInitMaterial | undefined>;
15
+ create(material: OpenBaoInitMaterial): Promise<boolean>;
16
+ }
17
+ export declare function ensureLocalOpenBaoCustody(api: OpenBaoBootstrapApi, store: OpenBaoInitMaterialStore): Promise<string>;
18
+ //# sourceMappingURL=openbao-custody-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openbao-custody-bootstrap.d.ts","sourceRoot":"","sources":["../../../src/runtime/custody/openbao-custody-bootstrap.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,mBAAmB;IAClC,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IACjC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5E,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,iBAAiB,CACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/B,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrE;AAGD,MAAM,WAAW,wBAAwB;IACvC,IAAI,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IACjD,MAAM,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzD;AAuBD,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA+CjB"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ensureLocalOpenBaoCustody = ensureLocalOpenBaoCustody;
4
+ const openbao_local_constants_1 = require("./openbao-local-constants");
5
+ const PURGE_HINT = 'Run `xema down --purge` to discard the local vault and its keys, then launch again.';
6
+ async function ensureLocalOpenBaoCustody(api, store) {
7
+ const health = await api.health();
8
+ let material = await store.load();
9
+ if (!health.initialized) {
10
+ if (material !== undefined) {
11
+ throw new Error('The local OpenBao is uninitialised but its init material is still on disk, ' +
12
+ `so its data volume was removed outside the launcher. ${PURGE_HINT}`);
13
+ }
14
+ const created = await api.initialize(openbao_local_constants_1.UNSEAL_SHARES, openbao_local_constants_1.UNSEAL_THRESHOLD);
15
+ if (!(await store.create(created))) {
16
+ throw new Error('The local OpenBao was initialised but another launcher already stored init ' +
17
+ `material for this installation; the keys just created are lost. ${PURGE_HINT}`);
18
+ }
19
+ material = created;
20
+ }
21
+ else if (material === undefined) {
22
+ throw new Error('The local OpenBao is already initialised but this installation holds no ' +
23
+ `unseal key or root token for it. ${PURGE_HINT}`);
24
+ }
25
+ const current = await api.health();
26
+ if (current.sealed) {
27
+ const stillSealed = await api.unseal(material.unsealKey);
28
+ if (stillSealed) {
29
+ throw new Error('The local OpenBao stayed sealed after the stored unseal key was applied. ' +
30
+ PURGE_HINT);
31
+ }
32
+ }
33
+ await api.ensureKvV2Mount(material.rootToken, openbao_local_constants_1.LOCAL_OPENBAO_MOUNT_PATH);
34
+ await api.putPolicy(material.rootToken, openbao_local_constants_1.BROKER_POLICY_NAME, openbao_local_constants_1.BROKER_POLICY_HCL);
35
+ const minted = await api.createScopedToken(material.rootToken, openbao_local_constants_1.BROKER_POLICY_NAME, openbao_local_constants_1.BROKER_TOKEN_TTL);
36
+ await revokeSupersededBrokerTokens(api, material.rootToken, minted.accessor);
37
+ return minted.token;
38
+ }
39
+ async function revokeSupersededBrokerTokens(api, rootToken, keepAccessor) {
40
+ for (const accessor of await api.listTokenAccessors(rootToken)) {
41
+ if (accessor === keepAccessor) {
42
+ continue;
43
+ }
44
+ const policies = await api.lookupTokenPolicies(rootToken, accessor);
45
+ if (policies.includes(openbao_local_constants_1.BROKER_POLICY_NAME)) {
46
+ await api.revokeTokenAccessor(rootToken, accessor);
47
+ }
48
+ }
49
+ }
50
+ //# sourceMappingURL=openbao-custody-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openbao-custody-bootstrap.js","sourceRoot":"","sources":["../../../src/runtime/custody/openbao-custody-bootstrap.ts"],"names":[],"mappings":";;AA2DA,8DAkDC;AA7GD,uEAOmC;AA+BnC,MAAM,UAAU,GACd,qFAAqF,CAAC;AAoBjF,KAAK,UAAU,yBAAyB,CAC7C,GAAwB,EACxB,KAA+B;IAE/B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;IAClC,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAElC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,6EAA6E;gBAC3E,wDAAwD,UAAU,EAAE,CACvE,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,uCAAa,EAAE,0CAAgB,CAAC,CAAC;QAEtE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,6EAA6E;gBAC3E,mEAAmE,UAAU,EAAE,CAClF,CAAC;QACJ,CAAC;QACD,QAAQ,GAAG,OAAO,CAAC;IACrB,CAAC;SAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,0EAA0E;YACxE,oCAAoC,UAAU,EAAE,CACnD,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;IACnC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,2EAA2E;gBACzE,UAAU,CACb,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,EAAE,kDAAwB,CAAC,CAAC;IACxE,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,4CAAkB,EAAE,2CAAiB,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CACxC,QAAQ,CAAC,SAAS,EAClB,4CAAkB,EAClB,0CAAgB,CACjB,CAAC;IACF,MAAM,4BAA4B,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,GAAwB,EACxB,SAAiB,EACjB,YAAoB;IAEpB,KAAK,MAAM,QAAQ,IAAI,MAAM,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/D,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpE,IAAI,QAAQ,CAAC,QAAQ,CAAC,4CAAkB,CAAC,EAAE,CAAC;YAE1C,MAAM,GAAG,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type ManagedLocalKeyProvider } from '../secrets/managed-local-key-provider';
2
+ import type { OpenBaoInitMaterial } from './openbao-http-client';
3
+ export interface OpenBaoCustodyStoreOptions {
4
+ readonly installationIdentity: string;
5
+ readonly stateRoot?: string;
6
+ readonly keyProvider?: ManagedLocalKeyProvider;
7
+ }
8
+ export declare class OpenBaoCustodyStore {
9
+ readonly installationId: string;
10
+ readonly directory: string;
11
+ readonly path: string;
12
+ private readonly keyProvider;
13
+ constructor(opts: OpenBaoCustodyStoreOptions);
14
+ load(): Promise<OpenBaoInitMaterial | undefined>;
15
+ create(material: OpenBaoInitMaterial): Promise<boolean>;
16
+ purge(): Promise<boolean>;
17
+ }
18
+ //# sourceMappingURL=openbao-custody-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openbao-custody-store.d.ts","sourceRoot":"","sources":["../../../src/runtime/custody/openbao-custody-store.ts"],"names":[],"mappings":"AAaA,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAMjE,MAAM,WAAW,0BAA0B;IAEzC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAEtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC;CAChD;AAWD,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;gBAE1C,IAAI,EAAE,0BAA0B;IAWtC,IAAI,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAoBhD,MAAM,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBvD,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;CAGhC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenBaoCustodyStore = void 0;
4
+ const node_os_1 = require("node:os");
5
+ const node_path_1 = require("node:path");
6
+ const managed_local_cipher_1 = require("../secrets/managed-local-cipher");
7
+ const managed_local_files_1 = require("../secrets/managed-local-files");
8
+ const managed_local_key_provider_1 = require("../secrets/managed-local-key-provider");
9
+ const CUSTODY_FILE = 'openbao-custody.json';
10
+ const CUSTODY_LABEL = 'Local OpenBao init material';
11
+ const CUSTODY_CONTEXT = 'openbao-init-material';
12
+ class OpenBaoCustodyStore {
13
+ installationId;
14
+ directory;
15
+ path;
16
+ keyProvider;
17
+ constructor(opts) {
18
+ this.installationId = (0, managed_local_cipher_1.managedLocalInstallationId)(opts.installationIdentity);
19
+ const root = opts.stateRoot ?? (0, node_path_1.join)((0, node_os_1.homedir)(), '.xema', 'installations');
20
+ this.directory = (0, node_path_1.join)(root, this.installationId);
21
+ this.path = (0, node_path_1.join)(this.directory, CUSTODY_FILE);
22
+ this.keyProvider =
23
+ opts.keyProvider ?? (0, managed_local_key_provider_1.configuredManagedLocalKeyProvider)(process.env);
24
+ }
25
+ async load() {
26
+ const raw = await (0, managed_local_files_1.readManagedLocalFile)(this.directory, this.path, CUSTODY_LABEL);
27
+ if (raw === undefined) {
28
+ return undefined;
29
+ }
30
+ const value = await (0, managed_local_cipher_1.decryptManagedLocalRecord)(raw, this.installationId, CUSTODY_CONTEXT, this.path, this.keyProvider);
31
+ return parseMaterial(value, this.path);
32
+ }
33
+ async create(material) {
34
+ const record = await (0, managed_local_cipher_1.encryptManagedLocalRecord)(material, this.installationId, CUSTODY_CONTEXT, this.keyProvider);
35
+ return (0, managed_local_files_1.createManagedLocalFile)(this.directory, this.path, `${JSON.stringify(record)}\n`, CUSTODY_LABEL);
36
+ }
37
+ async purge() {
38
+ return (0, managed_local_files_1.deleteManagedLocalFile)(this.directory, this.path, CUSTODY_LABEL);
39
+ }
40
+ }
41
+ exports.OpenBaoCustodyStore = OpenBaoCustodyStore;
42
+ function parseMaterial(value, path) {
43
+ const record = (typeof value === 'object' ? value : null);
44
+ const unsealKey = record?.unsealKey;
45
+ const rootToken = record?.rootToken;
46
+ if (typeof unsealKey !== 'string' ||
47
+ unsealKey.length === 0 ||
48
+ typeof rootToken !== 'string' ||
49
+ rootToken.length === 0) {
50
+ throw new Error(`Local OpenBao init material has an unsupported or incomplete format at ${path}. ` +
51
+ 'Run `xema down --purge` to discard the local vault and launch again.');
52
+ }
53
+ return { unsealKey, rootToken };
54
+ }
55
+ //# sourceMappingURL=openbao-custody-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openbao-custody-store.js","sourceRoot":"","sources":["../../../src/runtime/custody/openbao-custody-store.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAClC,yCAAiC;AAEjC,0EAIyC;AACzC,wEAIwC;AACxC,sFAG+C;AAI/C,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAC5C,MAAM,aAAa,GAAG,6BAA6B,CAAC;AACpD,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAmBhD,MAAa,mBAAmB;IACrB,cAAc,CAAS;IACvB,SAAS,CAAS;IAClB,IAAI,CAAS;IACL,WAAW,CAA0B;IAEtD,YAAY,IAAgC;QAC1C,IAAI,CAAC,cAAc,GAAG,IAAA,iDAA0B,EAC9C,IAAI,CAAC,oBAAoB,CAC1B,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,IAAA,gBAAI,EAAC,IAAA,iBAAO,GAAE,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,IAAA,gBAAI,EAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW;YACd,IAAI,CAAC,WAAW,IAAI,IAAA,8DAAiC,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,MAAM,IAAA,0CAAoB,EACpC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,IAAI,EACT,aAAa,CACd,CAAC;QACF,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAA,gDAAyB,EAC3C,GAAG,EACH,IAAI,CAAC,cAAc,EACnB,eAAe,EACf,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,CACjB,CAAC;QACF,OAAO,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAGD,KAAK,CAAC,MAAM,CAAC,QAA6B;QACxC,MAAM,MAAM,GAAG,MAAM,IAAA,gDAAyB,EAC5C,QAAQ,EACR,IAAI,CAAC,cAAc,EACnB,eAAe,EACf,IAAI,CAAC,WAAW,CACjB,CAAC;QACF,OAAO,IAAA,4CAAsB,EAC3B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,IAAI,EACT,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAC7B,aAAa,CACd,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,KAAK;QACT,OAAO,IAAA,4CAAsB,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC1E,CAAC;CACF;AAxDD,kDAwDC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,IAAY;IACjD,MAAM,MAAM,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAGhD,CAAC;IACT,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAC;IACpC,IACE,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,CAAC,MAAM,KAAK,CAAC,EACtB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,0EAA0E,IAAI,IAAI;YAChF,sEAAsE,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,34 @@
1
+ export interface OpenBaoHealth {
2
+ readonly initialized: boolean;
3
+ readonly sealed: boolean;
4
+ }
5
+ export interface OpenBaoInitMaterial {
6
+ readonly unsealKey: string;
7
+ readonly rootToken: string;
8
+ }
9
+ export interface OpenBaoScopedToken {
10
+ readonly token: string;
11
+ readonly accessor: string;
12
+ }
13
+ export type OpenBaoFetch = typeof fetch;
14
+ export declare class OpenBaoHttpError extends Error {
15
+ readonly operation: string;
16
+ readonly status: number | undefined;
17
+ constructor(operation: string, status: number | undefined);
18
+ }
19
+ export declare class OpenBaoHttpClient {
20
+ private readonly baseUrl;
21
+ private readonly fetchImpl;
22
+ constructor(baseUrl?: string, fetchImpl?: OpenBaoFetch);
23
+ health(): Promise<OpenBaoHealth>;
24
+ initialize(shares: number, threshold: number): Promise<OpenBaoInitMaterial>;
25
+ unseal(key: string): Promise<boolean>;
26
+ ensureKvV2Mount(token: string, mountPath: string): Promise<void>;
27
+ putPolicy(token: string, name: string, hcl: string): Promise<void>;
28
+ createScopedToken(token: string, policy: string, ttl: string): Promise<OpenBaoScopedToken>;
29
+ listTokenAccessors(token: string): Promise<string[]>;
30
+ lookupTokenPolicies(token: string, accessor: string): Promise<string[]>;
31
+ revokeTokenAccessor(token: string, accessor: string): Promise<void>;
32
+ private call;
33
+ }
34
+ //# sourceMappingURL=openbao-http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openbao-http-client.d.ts","sourceRoot":"","sources":["../../../src/runtime/custody/openbao-http-client.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAGD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC;AAWxC,qBAAa,gBAAiB,SAAQ,KAAK;IAEvC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;gBAD1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS;CAStC;AAED,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,OAAO,GAAE,MAAyD,EAClE,SAAS,GAAE,YAAoB;IAI5C,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;IAehC,UAAU,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,CAAC;IAezB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYrC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBhE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,kBAAkB,CAAC;IA0BxB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBpD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBvE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAS3D,IAAI;CA8BnB"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenBaoHttpClient = exports.OpenBaoHttpError = void 0;
4
+ const openbao_local_constants_1 = require("./openbao-local-constants");
5
+ const REQUEST_TIMEOUT_MS = 5_000;
6
+ const INIT_TIMEOUT_MS = 60_000;
7
+ const TOKEN_HEADER = 'X-Vault-Token';
8
+ class OpenBaoHttpError extends Error {
9
+ operation;
10
+ status;
11
+ constructor(operation, status) {
12
+ super(status === undefined
13
+ ? `OpenBao ${operation} could not reach the server.`
14
+ : `OpenBao ${operation} failed with HTTP ${String(status)}.`);
15
+ this.operation = operation;
16
+ this.status = status;
17
+ this.name = 'OpenBaoHttpError';
18
+ }
19
+ }
20
+ exports.OpenBaoHttpError = OpenBaoHttpError;
21
+ class OpenBaoHttpClient {
22
+ baseUrl;
23
+ fetchImpl;
24
+ constructor(baseUrl = `http://127.0.0.1:${String(openbao_local_constants_1.LOCAL_OPENBAO_PORT)}`, fetchImpl = fetch) {
25
+ this.baseUrl = baseUrl;
26
+ this.fetchImpl = fetchImpl;
27
+ }
28
+ async health() {
29
+ const body = await this.call('health', 'GET', '/v1/sys/health?standbyok=true&sealedcode=200&uninitcode=200');
30
+ const initialized = field(body, 'initialized');
31
+ const sealed = field(body, 'sealed');
32
+ if (typeof initialized !== 'boolean' || typeof sealed !== 'boolean') {
33
+ throw new OpenBaoHttpError('health (unexpected response shape)', 200);
34
+ }
35
+ return { initialized, sealed };
36
+ }
37
+ async initialize(shares, threshold) {
38
+ const body = await this.call('init', 'PUT', '/v1/sys/init', {
39
+ body: { secret_shares: shares, secret_threshold: threshold },
40
+ timeoutMs: INIT_TIMEOUT_MS,
41
+ });
42
+ const keys = field(body, 'keys_base64');
43
+ const rootToken = field(body, 'root_token');
44
+ const unsealKey = Array.isArray(keys) ? keys[0] : undefined;
45
+ if (typeof unsealKey !== 'string' || typeof rootToken !== 'string') {
46
+ throw new OpenBaoHttpError('init (unexpected response shape)', 200);
47
+ }
48
+ return { unsealKey, rootToken };
49
+ }
50
+ async unseal(key) {
51
+ const body = await this.call('unseal', 'PUT', '/v1/sys/unseal', {
52
+ body: { key },
53
+ });
54
+ const sealed = field(body, 'sealed');
55
+ if (typeof sealed !== 'boolean') {
56
+ throw new OpenBaoHttpError('unseal (unexpected response shape)', 200);
57
+ }
58
+ return sealed;
59
+ }
60
+ async ensureKvV2Mount(token, mountPath) {
61
+ const mounts = await this.call('list mounts', 'GET', '/v1/sys/mounts', {
62
+ token,
63
+ });
64
+ const existing = field(field(mounts, 'data'), `${mountPath}/`);
65
+ if (existing !== undefined) {
66
+ const options = field(existing, 'options');
67
+ if (field(existing, 'type') !== 'kv' || field(options, 'version') !== '2') {
68
+ throw new Error(`OpenBao mount "${mountPath}/" exists but is not a KV v2 engine; ` +
69
+ 'run `xema down --purge` to discard the local vault and launch again.');
70
+ }
71
+ return;
72
+ }
73
+ await this.call('mount kv v2', 'POST', `/v1/sys/mounts/${mountPath}`, {
74
+ token,
75
+ body: { type: 'kv', options: { version: '2' } },
76
+ });
77
+ }
78
+ async putPolicy(token, name, hcl) {
79
+ await this.call('write policy', 'PUT', `/v1/sys/policies/acl/${name}`, {
80
+ token,
81
+ body: { policy: hcl },
82
+ });
83
+ }
84
+ async createScopedToken(token, policy, ttl) {
85
+ const body = await this.call('create token', 'POST', '/v1/auth/token/create', {
86
+ token,
87
+ body: {
88
+ policies: [policy],
89
+ ttl,
90
+ renewable: false,
91
+ no_parent: true,
92
+ display_name: 'xema-credential-broker',
93
+ },
94
+ });
95
+ const auth = field(body, 'auth');
96
+ const clientToken = field(auth, 'client_token');
97
+ const accessor = field(auth, 'accessor');
98
+ if (typeof clientToken !== 'string' ||
99
+ clientToken.length === 0 ||
100
+ typeof accessor !== 'string' ||
101
+ accessor.length === 0) {
102
+ throw new OpenBaoHttpError('create token (unexpected response shape)', 200);
103
+ }
104
+ return { token: clientToken, accessor };
105
+ }
106
+ async listTokenAccessors(token) {
107
+ const body = await this.call('list token accessors', 'GET', '/v1/auth/token/accessors?list=true', { token });
108
+ const keys = field(field(body, 'data'), 'keys');
109
+ if (!Array.isArray(keys) || keys.some((k) => typeof k !== 'string')) {
110
+ throw new OpenBaoHttpError('list token accessors (unexpected response shape)', 200);
111
+ }
112
+ return keys;
113
+ }
114
+ async lookupTokenPolicies(token, accessor) {
115
+ const body = await this.call('lookup token accessor', 'POST', '/v1/auth/token/lookup-accessor', { token, body: { accessor } });
116
+ const policies = field(field(body, 'data'), 'policies');
117
+ if (!Array.isArray(policies) || policies.some((p) => typeof p !== 'string')) {
118
+ throw new OpenBaoHttpError('lookup token accessor (unexpected response shape)', 200);
119
+ }
120
+ return policies;
121
+ }
122
+ async revokeTokenAccessor(token, accessor) {
123
+ await this.call('revoke token accessor', 'POST', '/v1/auth/token/revoke-accessor', { token, body: { accessor } });
124
+ }
125
+ async call(operation, method, path, opts = {}) {
126
+ let response;
127
+ try {
128
+ response = await this.fetchImpl(`${this.baseUrl}${path}`, {
129
+ method,
130
+ headers: {
131
+ 'content-type': 'application/json',
132
+ ...(opts.token === undefined ? {} : { [TOKEN_HEADER]: opts.token }),
133
+ },
134
+ ...(opts.body === undefined ? {} : { body: JSON.stringify(opts.body) }),
135
+ signal: AbortSignal.timeout(opts.timeoutMs ?? REQUEST_TIMEOUT_MS),
136
+ });
137
+ }
138
+ catch {
139
+ throw new OpenBaoHttpError(operation, undefined);
140
+ }
141
+ if (!response.ok) {
142
+ throw new OpenBaoHttpError(operation, response.status);
143
+ }
144
+ const text = await response.text();
145
+ return text.length === 0 ? undefined : JSON.parse(text);
146
+ }
147
+ }
148
+ exports.OpenBaoHttpClient = OpenBaoHttpClient;
149
+ function field(value, name) {
150
+ return typeof value === 'object' && value !== null
151
+ ? value[name]
152
+ : undefined;
153
+ }
154
+ //# sourceMappingURL=openbao-http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openbao-http-client.js","sourceRoot":"","sources":["../../../src/runtime/custody/openbao-http-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export declare enum CustodyProviderRef {
2
+ OpenBao = "openbao"
3
+ }
4
+ export declare enum OpenBaoAuthMethod {
5
+ Token = "token"
6
+ }
7
+ export declare const CREDENTIAL_BROKER_SERVICE_NAME = "credential-broker-api";
8
+ export declare const LOCAL_OPENBAO_IMAGE = "openbao/openbao:2.7.1@sha256:6d2b93856e3fcf7b18ad855a0b51eaba474dc8b79cf554379ea32034797d2acf";
9
+ export declare const LOCAL_OPENBAO_CONTAINER = "xema-openbao";
10
+ export declare const LOCAL_OPENBAO_PORT = 8200;
11
+ export declare const LOCAL_OPENBAO_VOLUME = "xema-openbao-data";
12
+ export declare const LOCAL_OPENBAO_DATA_PATH = "/openbao/file";
13
+ export declare const LOCAL_OPENBAO_MOUNT_PATH = "xema-local";
14
+ export declare const LOCAL_OPENBAO_PATH_PREFIX = "xema";
15
+ export declare const BROKER_POLICY_NAME = "xema-credential-broker";
16
+ export declare const BROKER_TOKEN_TTL = "768h";
17
+ export declare const UNSEAL_SHARES = 1;
18
+ export declare const UNSEAL_THRESHOLD = 1;
19
+ export declare const BROKER_POLICY_HCL: string;
20
+ export declare const LOCAL_OPENBAO_SERVER_CONFIG: string;
21
+ export declare function localOpenBaoAddress(containerNetwork: boolean): string;
22
+ //# sourceMappingURL=openbao-local-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openbao-local-constants.d.ts","sourceRoot":"","sources":["../../../src/runtime/custody/openbao-local-constants.ts"],"names":[],"mappings":"AAaA,oBAAY,kBAAkB;IAC5B,OAAO,YAAY;CACpB;AAGD,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;CAChB;AAGD,eAAO,MAAM,8BAA8B,0BAA0B,CAAC;AAOtE,eAAO,MAAM,mBAAmB,kGACiE,CAAC;AAElG,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AACtD,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAExD,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AAGvD,eAAO,MAAM,wBAAwB,eAAe,CAAC;AAErD,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAChD,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAOlC,eAAO,MAAM,iBAAiB,QAMvB,CAAC;AAOR,eAAO,MAAM,2BAA2B,QAYtC,CAAC;AAGH,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,OAAO,GAAG,MAAM,CAGrE"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LOCAL_OPENBAO_SERVER_CONFIG = exports.BROKER_POLICY_HCL = exports.UNSEAL_THRESHOLD = exports.UNSEAL_SHARES = exports.BROKER_TOKEN_TTL = exports.BROKER_POLICY_NAME = exports.LOCAL_OPENBAO_PATH_PREFIX = exports.LOCAL_OPENBAO_MOUNT_PATH = exports.LOCAL_OPENBAO_DATA_PATH = exports.LOCAL_OPENBAO_VOLUME = exports.LOCAL_OPENBAO_PORT = exports.LOCAL_OPENBAO_CONTAINER = exports.LOCAL_OPENBAO_IMAGE = exports.CREDENTIAL_BROKER_SERVICE_NAME = exports.OpenBaoAuthMethod = exports.CustodyProviderRef = void 0;
4
+ exports.localOpenBaoAddress = localOpenBaoAddress;
5
+ var CustodyProviderRef;
6
+ (function (CustodyProviderRef) {
7
+ CustodyProviderRef["OpenBao"] = "openbao";
8
+ })(CustodyProviderRef || (exports.CustodyProviderRef = CustodyProviderRef = {}));
9
+ var OpenBaoAuthMethod;
10
+ (function (OpenBaoAuthMethod) {
11
+ OpenBaoAuthMethod["Token"] = "token";
12
+ })(OpenBaoAuthMethod || (exports.OpenBaoAuthMethod = OpenBaoAuthMethod = {}));
13
+ exports.CREDENTIAL_BROKER_SERVICE_NAME = 'credential-broker-api';
14
+ exports.LOCAL_OPENBAO_IMAGE = 'openbao/openbao:2.7.1@sha256:6d2b93856e3fcf7b18ad855a0b51eaba474dc8b79cf554379ea32034797d2acf';
15
+ exports.LOCAL_OPENBAO_CONTAINER = 'xema-openbao';
16
+ exports.LOCAL_OPENBAO_PORT = 8200;
17
+ exports.LOCAL_OPENBAO_VOLUME = 'xema-openbao-data';
18
+ exports.LOCAL_OPENBAO_DATA_PATH = '/openbao/file';
19
+ exports.LOCAL_OPENBAO_MOUNT_PATH = 'xema-local';
20
+ exports.LOCAL_OPENBAO_PATH_PREFIX = 'xema';
21
+ exports.BROKER_POLICY_NAME = 'xema-credential-broker';
22
+ exports.BROKER_TOKEN_TTL = '768h';
23
+ exports.UNSEAL_SHARES = 1;
24
+ exports.UNSEAL_THRESHOLD = 1;
25
+ exports.BROKER_POLICY_HCL = `path "${exports.LOCAL_OPENBAO_MOUNT_PATH}/data/${exports.LOCAL_OPENBAO_PATH_PREFIX}/*" {\n` +
26
+ ' capabilities = ["create", "read", "update", "delete"]\n' +
27
+ '}\n' +
28
+ `path "${exports.LOCAL_OPENBAO_MOUNT_PATH}/metadata/${exports.LOCAL_OPENBAO_PATH_PREFIX}/*" {\n` +
29
+ ' capabilities = ["read", "delete", "list"]\n' +
30
+ '}\n';
31
+ exports.LOCAL_OPENBAO_SERVER_CONFIG = JSON.stringify({
32
+ storage: { raft: { path: exports.LOCAL_OPENBAO_DATA_PATH, node_id: 'xema-local' } },
33
+ listener: {
34
+ tcp: {
35
+ address: `0.0.0.0:${String(exports.LOCAL_OPENBAO_PORT)}`,
36
+ tls_disable: true,
37
+ },
38
+ },
39
+ api_addr: `http://127.0.0.1:${String(exports.LOCAL_OPENBAO_PORT)}`,
40
+ cluster_addr: `http://127.0.0.1:${String(exports.LOCAL_OPENBAO_PORT + 1)}`,
41
+ ui: false,
42
+ disable_mlock: true,
43
+ });
44
+ function localOpenBaoAddress(containerNetwork) {
45
+ const host = containerNetwork ? exports.LOCAL_OPENBAO_CONTAINER : '127.0.0.1';
46
+ return `http://${host}:${String(exports.LOCAL_OPENBAO_PORT)}`;
47
+ }
48
+ //# sourceMappingURL=openbao-local-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openbao-local-constants.js","sourceRoot":"","sources":["../../../src/runtime/custody/openbao-local-constants.ts"],"names":[],"mappings":";;;AAoFA,kDAGC;AA1ED,IAAY,kBAEX;AAFD,WAAY,kBAAkB;IAC5B,yCAAmB,CAAA;AACrB,CAAC,EAFW,kBAAkB,kCAAlB,kBAAkB,QAE7B;AAGD,IAAY,iBAEX;AAFD,WAAY,iBAAiB;IAC3B,oCAAe,CAAA;AACjB,CAAC,EAFW,iBAAiB,iCAAjB,iBAAiB,QAE5B;AAGY,QAAA,8BAA8B,GAAG,uBAAuB,CAAC;AAOzD,QAAA,mBAAmB,GAC9B,+FAA+F,CAAC;AAErF,QAAA,uBAAuB,GAAG,cAAc,CAAC;AACzC,QAAA,kBAAkB,GAAG,IAAI,CAAC;AAE1B,QAAA,oBAAoB,GAAG,mBAAmB,CAAC;AAE3C,QAAA,uBAAuB,GAAG,eAAe,CAAC;AAG1C,QAAA,wBAAwB,GAAG,YAAY,CAAC;AAExC,QAAA,yBAAyB,GAAG,MAAM,CAAC;AACnC,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AAE9C,QAAA,gBAAgB,GAAG,MAAM,CAAC;AAE1B,QAAA,aAAa,GAAG,CAAC,CAAC;AAClB,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAOrB,QAAA,iBAAiB,GAC5B,SAAS,gCAAwB,SAAS,iCAAyB,SAAS;IAC5E,2DAA2D;IAC3D,KAAK;IACL,SAAS,gCAAwB,aAAa,iCAAyB,SAAS;IAChF,+CAA+C;IAC/C,KAAK,CAAC;AAOK,QAAA,2BAA2B,GAAG,IAAI,CAAC,SAAS,CAAC;IACxD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,+BAAuB,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;IAC3E,QAAQ,EAAE;QACR,GAAG,EAAE;YACH,OAAO,EAAE,WAAW,MAAM,CAAC,0BAAkB,CAAC,EAAE;YAChD,WAAW,EAAE,IAAI;SAClB;KACF;IACD,QAAQ,EAAE,oBAAoB,MAAM,CAAC,0BAAkB,CAAC,EAAE;IAC1D,YAAY,EAAE,oBAAoB,MAAM,CAAC,0BAAkB,GAAG,CAAC,CAAC,EAAE;IAClE,EAAE,EAAE,KAAK;IACT,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC;AAGH,SAAgB,mBAAmB,CAAC,gBAAyB;IAC3D,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,+BAAuB,CAAC,CAAC,CAAC,WAAW,CAAC;IACtE,OAAO,UAAU,IAAI,IAAI,MAAM,CAAC,0BAAkB,CAAC,EAAE,CAAC;AACxD,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type DockerCli } from '../runner/docker-cli';
2
+ import type { OpenBaoHealth } from './openbao-http-client';
3
+ export interface OpenBaoLocalRunnerOptions {
4
+ readonly docker: Pick<DockerCli, 'run' | 'runQuiet' | 'ensureNetwork' | 'launcherInfraContainersStrict'>;
5
+ readonly network: string;
6
+ readonly installationId: string;
7
+ readonly health: () => Promise<OpenBaoHealth>;
8
+ readonly sleep?: (ms: number) => Promise<void>;
9
+ }
10
+ export declare class OpenBaoLocalRunner {
11
+ private readonly opts;
12
+ constructor(opts: OpenBaoLocalRunnerOptions);
13
+ start(): Promise<void>;
14
+ private waitForApi;
15
+ }
16
+ //# sourceMappingURL=openbao-local-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openbao-local-runner.d.ts","sourceRoot":"","sources":["../../../src/runtime/custody/openbao-local-runner.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAU3D,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,UAAU,GAAG,eAAe,GAAG,+BAA+B,CAAC,CAAC;IACzG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAE9C,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAGD,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,yBAAyB;IAEtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA2Cd,UAAU;CAiCzB"}