@xemahq/xema 0.14.0 → 0.15.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 (418) hide show
  1. package/README.md +23 -2
  2. package/dist/assets/appliance-base/distribution.lock.json +5144 -0
  3. package/dist/assets/appliance-base/images.lock.json +1706 -0
  4. package/dist/assets/appliance-lean/distribution.lock.json +2888 -0
  5. package/dist/assets/appliance-lean/images.lock.json +1229 -0
  6. package/dist/assets/boot-graph.json +339 -29
  7. package/dist/assets/cloud/distribution.lock.json +5278 -0
  8. package/dist/assets/cloud/images.lock.json +1713 -0
  9. package/dist/assets/core/distribution.lock.json +1802 -125
  10. package/dist/assets/core/images.lock.json +1175 -235
  11. package/dist/assets/distribution-assets.manifest.json +147 -0
  12. package/dist/assets/keycloak/realm-xema.json +412 -0
  13. package/dist/assets/minimal/distribution.lock.json +2710 -0
  14. package/dist/assets/minimal/images.lock.json +1149 -0
  15. package/dist/assets/oss/distribution.lock.json +2438 -226
  16. package/dist/assets/oss/images.lock.json +1502 -618
  17. package/dist/assets/starter/distribution.lock.json +3422 -0
  18. package/dist/assets/starter/images.lock.json +1404 -0
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +4 -0
  21. package/dist/cli.js.map +1 -1
  22. package/dist/commands/apply.js +1 -1
  23. package/dist/commands/apply.js.map +1 -1
  24. package/dist/commands/biome.d.ts.map +1 -1
  25. package/dist/commands/biome.js +84 -7
  26. package/dist/commands/biome.js.map +1 -1
  27. package/dist/commands/canopy.js +1 -1
  28. package/dist/commands/canopy.js.map +1 -1
  29. package/dist/commands/dev.d.ts.map +1 -1
  30. package/dist/commands/dev.js +27 -5
  31. package/dist/commands/dev.js.map +1 -1
  32. package/dist/commands/dist.d.ts +13 -0
  33. package/dist/commands/dist.d.ts.map +1 -1
  34. package/dist/commands/dist.js +50 -10
  35. package/dist/commands/dist.js.map +1 -1
  36. package/dist/commands/doctor.d.ts +25 -0
  37. package/dist/commands/doctor.d.ts.map +1 -1
  38. package/dist/commands/doctor.js +422 -18
  39. package/dist/commands/doctor.js.map +1 -1
  40. package/dist/commands/down.d.ts +10 -0
  41. package/dist/commands/down.d.ts.map +1 -1
  42. package/dist/commands/down.js +81 -41
  43. package/dist/commands/down.js.map +1 -1
  44. package/dist/commands/export.js +1 -1
  45. package/dist/commands/export.js.map +1 -1
  46. package/dist/commands/import.js +1 -1
  47. package/dist/commands/import.js.map +1 -1
  48. package/dist/commands/init.d.ts.map +1 -1
  49. package/dist/commands/init.js +56 -3
  50. package/dist/commands/init.js.map +1 -1
  51. package/dist/commands/installation.d.ts.map +1 -1
  52. package/dist/commands/installation.js +169 -12
  53. package/dist/commands/installation.js.map +1 -1
  54. package/dist/commands/license.d.ts +3 -0
  55. package/dist/commands/license.d.ts.map +1 -0
  56. package/dist/commands/license.js +97 -0
  57. package/dist/commands/license.js.map +1 -0
  58. package/dist/commands/login.d.ts +4 -0
  59. package/dist/commands/login.d.ts.map +1 -0
  60. package/dist/commands/login.js +127 -0
  61. package/dist/commands/login.js.map +1 -0
  62. package/dist/commands/logs.d.ts +21 -0
  63. package/dist/commands/logs.d.ts.map +1 -1
  64. package/dist/commands/logs.js +131 -22
  65. package/dist/commands/logs.js.map +1 -1
  66. package/dist/commands/objects.js +2 -2
  67. package/dist/commands/objects.js.map +1 -1
  68. package/dist/commands/plan.js +1 -1
  69. package/dist/commands/plan.js.map +1 -1
  70. package/dist/commands/run.js +1 -1
  71. package/dist/commands/run.js.map +1 -1
  72. package/dist/commands/serve.d.ts.map +1 -1
  73. package/dist/commands/serve.js +39 -6
  74. package/dist/commands/serve.js.map +1 -1
  75. package/dist/commands/shell.js +1 -1
  76. package/dist/commands/shell.js.map +1 -1
  77. package/dist/commands/up.d.ts.map +1 -1
  78. package/dist/commands/up.js +20 -5
  79. package/dist/commands/up.js.map +1 -1
  80. package/dist/dev/env-defaults.d.ts +1 -0
  81. package/dist/dev/env-defaults.d.ts.map +1 -1
  82. package/dist/dev/env-defaults.js +15 -6
  83. package/dist/dev/env-defaults.js.map +1 -1
  84. package/dist/dev/forked-worker-bootstrap-protocol.d.ts +17 -0
  85. package/dist/dev/forked-worker-bootstrap-protocol.d.ts.map +1 -0
  86. package/dist/dev/forked-worker-bootstrap-protocol.js +35 -0
  87. package/dist/dev/forked-worker-bootstrap-protocol.js.map +1 -0
  88. package/dist/dev/forked-worker-bootstrap.d.ts +18 -0
  89. package/dist/dev/forked-worker-bootstrap.d.ts.map +1 -0
  90. package/dist/dev/forked-worker-bootstrap.js +84 -0
  91. package/dist/dev/forked-worker-bootstrap.js.map +1 -0
  92. package/dist/dev/forked-worker.d.ts +14 -0
  93. package/dist/dev/forked-worker.d.ts.map +1 -1
  94. package/dist/dev/forked-worker.js +200 -33
  95. package/dist/dev/forked-worker.js.map +1 -1
  96. package/dist/lib/control-plane.d.ts +5 -1
  97. package/dist/lib/control-plane.d.ts.map +1 -1
  98. package/dist/lib/control-plane.js +56 -6
  99. package/dist/lib/control-plane.js.map +1 -1
  100. package/dist/runtime/asset-provenance.d.ts +17 -0
  101. package/dist/runtime/asset-provenance.d.ts.map +1 -0
  102. package/dist/runtime/asset-provenance.js +29 -0
  103. package/dist/runtime/asset-provenance.js.map +1 -0
  104. package/dist/runtime/auth/client-bootstrap.d.ts +11 -0
  105. package/dist/runtime/auth/client-bootstrap.d.ts.map +1 -0
  106. package/dist/runtime/auth/client-bootstrap.js +60 -0
  107. package/dist/runtime/auth/client-bootstrap.js.map +1 -0
  108. package/dist/runtime/auth/device-flow.d.ts +43 -0
  109. package/dist/runtime/auth/device-flow.d.ts.map +1 -0
  110. package/dist/runtime/auth/device-flow.js +201 -0
  111. package/dist/runtime/auth/device-flow.js.map +1 -0
  112. package/dist/runtime/auth/session-auth.d.ts +8 -0
  113. package/dist/runtime/auth/session-auth.d.ts.map +1 -0
  114. package/dist/runtime/auth/session-auth.js +43 -0
  115. package/dist/runtime/auth/session-auth.js.map +1 -0
  116. package/dist/runtime/auth/session-store.d.ts +19 -0
  117. package/dist/runtime/auth/session-store.d.ts.map +1 -0
  118. package/dist/runtime/auth/session-store.js +83 -0
  119. package/dist/runtime/auth/session-store.js.map +1 -0
  120. package/dist/runtime/auth/token-claims.d.ts +2 -0
  121. package/dist/runtime/auth/token-claims.d.ts.map +1 -0
  122. package/dist/runtime/auth/token-claims.js +45 -0
  123. package/dist/runtime/auth/token-claims.js.map +1 -0
  124. package/dist/runtime/biome-provenance.d.ts +26 -0
  125. package/dist/runtime/biome-provenance.d.ts.map +1 -0
  126. package/dist/runtime/biome-provenance.js +70 -0
  127. package/dist/runtime/biome-provenance.js.map +1 -0
  128. package/dist/runtime/biome-publish.d.ts +14 -0
  129. package/dist/runtime/biome-publish.d.ts.map +1 -1
  130. package/dist/runtime/biome-publish.js +69 -5
  131. package/dist/runtime/biome-publish.js.map +1 -1
  132. package/dist/runtime/biome-scaffold.d.ts.map +1 -1
  133. package/dist/runtime/biome-scaffold.js +0 -2
  134. package/dist/runtime/biome-scaffold.js.map +1 -1
  135. package/dist/runtime/biome-validate.d.ts.map +1 -1
  136. package/dist/runtime/biome-validate.js +4 -2
  137. package/dist/runtime/biome-validate.js.map +1 -1
  138. package/dist/runtime/cleanup.d.ts +10 -0
  139. package/dist/runtime/cleanup.d.ts.map +1 -0
  140. package/dist/runtime/cleanup.js +35 -0
  141. package/dist/runtime/cleanup.js.map +1 -0
  142. package/dist/runtime/config/init-presets.d.ts.map +1 -1
  143. package/dist/runtime/config/init-presets.js +6 -3
  144. package/dist/runtime/config/init-presets.js.map +1 -1
  145. package/dist/runtime/distribution/available-biome.d.ts.map +1 -1
  146. package/dist/runtime/distribution/available-biome.js +2 -0
  147. package/dist/runtime/distribution/available-biome.js.map +1 -1
  148. package/dist/runtime/distribution/compose.d.ts +2 -1
  149. package/dist/runtime/distribution/compose.d.ts.map +1 -1
  150. package/dist/runtime/distribution/compose.js +1 -0
  151. package/dist/runtime/distribution/compose.js.map +1 -1
  152. package/dist/runtime/env-seeder.d.ts.map +1 -1
  153. package/dist/runtime/env-seeder.js +44 -13
  154. package/dist/runtime/env-seeder.js.map +1 -1
  155. package/dist/runtime/foreground.d.ts +6 -1
  156. package/dist/runtime/foreground.d.ts.map +1 -1
  157. package/dist/runtime/foreground.js +30 -7
  158. package/dist/runtime/foreground.js.map +1 -1
  159. package/dist/runtime/infra/infra-catalog.d.ts +33 -1
  160. package/dist/runtime/infra/infra-catalog.d.ts.map +1 -1
  161. package/dist/runtime/infra/infra-catalog.js +201 -10
  162. package/dist/runtime/infra/infra-catalog.js.map +1 -1
  163. package/dist/runtime/infra/infra-environment.d.ts +10 -0
  164. package/dist/runtime/infra/infra-environment.d.ts.map +1 -0
  165. package/dist/runtime/infra/infra-environment.js +76 -0
  166. package/dist/runtime/infra/infra-environment.js.map +1 -0
  167. package/dist/runtime/infra/infra-plan.d.ts +2 -1
  168. package/dist/runtime/infra/infra-plan.d.ts.map +1 -1
  169. package/dist/runtime/infra/infra-plan.js +10 -0
  170. package/dist/runtime/infra/infra-plan.js.map +1 -1
  171. package/dist/runtime/infra/infra-runner.d.ts +12 -2
  172. package/dist/runtime/infra/infra-runner.d.ts.map +1 -1
  173. package/dist/runtime/infra/infra-runner.js +194 -73
  174. package/dist/runtime/infra/infra-runner.js.map +1 -1
  175. package/dist/runtime/infra/keycloak-realm.d.ts +25 -0
  176. package/dist/runtime/infra/keycloak-realm.d.ts.map +1 -0
  177. package/dist/runtime/infra/keycloak-realm.js +116 -0
  178. package/dist/runtime/infra/keycloak-realm.js.map +1 -0
  179. package/dist/runtime/infra/postgres-endpoint.d.ts +8 -0
  180. package/dist/runtime/infra/postgres-endpoint.d.ts.map +1 -0
  181. package/dist/runtime/infra/postgres-endpoint.js +21 -0
  182. package/dist/runtime/infra/postgres-endpoint.js.map +1 -0
  183. package/dist/runtime/installation/compiler.d.ts +104 -27
  184. package/dist/runtime/installation/compiler.d.ts.map +1 -1
  185. package/dist/runtime/installation/compiler.js +361 -95
  186. package/dist/runtime/installation/compiler.js.map +1 -1
  187. package/dist/runtime/installation/contract.d.ts +234 -63
  188. package/dist/runtime/installation/contract.d.ts.map +1 -1
  189. package/dist/runtime/installation/contract.js +396 -74
  190. package/dist/runtime/installation/contract.js.map +1 -1
  191. package/dist/runtime/installation/current-launcher-renderer.d.ts +12 -0
  192. package/dist/runtime/installation/current-launcher-renderer.d.ts.map +1 -0
  193. package/dist/runtime/installation/current-launcher-renderer.js +123 -0
  194. package/dist/runtime/installation/current-launcher-renderer.js.map +1 -0
  195. package/dist/runtime/installation/diff.d.ts +15 -0
  196. package/dist/runtime/installation/diff.d.ts.map +1 -1
  197. package/dist/runtime/installation/diff.js +66 -29
  198. package/dist/runtime/installation/diff.js.map +1 -1
  199. package/dist/runtime/installation/format.js +4 -4
  200. package/dist/runtime/installation/format.js.map +1 -1
  201. package/dist/runtime/installation/from-current-config.d.ts +3 -2
  202. package/dist/runtime/installation/from-current-config.d.ts.map +1 -1
  203. package/dist/runtime/installation/from-current-config.js +214 -44
  204. package/dist/runtime/installation/from-current-config.js.map +1 -1
  205. package/dist/runtime/installation/helm-release-readiness.d.ts +9 -0
  206. package/dist/runtime/installation/helm-release-readiness.d.ts.map +1 -0
  207. package/dist/runtime/installation/helm-release-readiness.js +97 -0
  208. package/dist/runtime/installation/helm-release-readiness.js.map +1 -0
  209. package/dist/runtime/installation/helm-release.d.ts +24 -0
  210. package/dist/runtime/installation/helm-release.d.ts.map +1 -0
  211. package/dist/runtime/installation/helm-release.js +96 -0
  212. package/dist/runtime/installation/helm-release.js.map +1 -0
  213. package/dist/runtime/installation/index.d.ts +9 -0
  214. package/dist/runtime/installation/index.d.ts.map +1 -1
  215. package/dist/runtime/installation/index.js +9 -0
  216. package/dist/runtime/installation/index.js.map +1 -1
  217. package/dist/runtime/installation/json-schema.d.ts +4 -0
  218. package/dist/runtime/installation/json-schema.d.ts.map +1 -0
  219. package/dist/runtime/installation/json-schema.js +16 -0
  220. package/dist/runtime/installation/json-schema.js.map +1 -0
  221. package/dist/runtime/installation/kubernetes-readiness.d.ts +60 -0
  222. package/dist/runtime/installation/kubernetes-readiness.d.ts.map +1 -0
  223. package/dist/runtime/installation/kubernetes-readiness.js +384 -0
  224. package/dist/runtime/installation/kubernetes-readiness.js.map +1 -0
  225. package/dist/runtime/installation/lifecycle.d.ts +6 -4
  226. package/dist/runtime/installation/lifecycle.d.ts.map +1 -1
  227. package/dist/runtime/installation/lifecycle.js +94 -7
  228. package/dist/runtime/installation/lifecycle.js.map +1 -1
  229. package/dist/runtime/installation/readiness-proof.d.ts +72 -0
  230. package/dist/runtime/installation/readiness-proof.d.ts.map +1 -0
  231. package/dist/runtime/installation/readiness-proof.js +142 -0
  232. package/dist/runtime/installation/readiness-proof.js.map +1 -0
  233. package/dist/runtime/installation/readiness.d.ts +21 -0
  234. package/dist/runtime/installation/readiness.d.ts.map +1 -0
  235. package/dist/runtime/installation/readiness.js +418 -0
  236. package/dist/runtime/installation/readiness.js.map +1 -0
  237. package/dist/runtime/installation/setup-profile.d.ts +8 -0
  238. package/dist/runtime/installation/setup-profile.d.ts.map +1 -0
  239. package/dist/runtime/installation/setup-profile.js +41 -0
  240. package/dist/runtime/installation/setup-profile.js.map +1 -0
  241. package/dist/runtime/installation/setup-renderer.d.ts +31 -0
  242. package/dist/runtime/installation/setup-renderer.d.ts.map +1 -0
  243. package/dist/runtime/installation/setup-renderer.js +238 -0
  244. package/dist/runtime/installation/setup-renderer.js.map +1 -0
  245. package/dist/runtime/installation/state-store.d.ts +11 -3
  246. package/dist/runtime/installation/state-store.d.ts.map +1 -1
  247. package/dist/runtime/installation/state-store.js +157 -37
  248. package/dist/runtime/installation/state-store.js.map +1 -1
  249. package/dist/runtime/installation/status.d.ts +6 -12
  250. package/dist/runtime/installation/status.d.ts.map +1 -1
  251. package/dist/runtime/installation/status.js +28 -114
  252. package/dist/runtime/installation/status.js.map +1 -1
  253. package/dist/runtime/installation/support-bundle.d.ts.map +1 -1
  254. package/dist/runtime/installation/support-bundle.js +18 -3
  255. package/dist/runtime/installation/support-bundle.js.map +1 -1
  256. package/dist/runtime/installation/to-current-config.d.ts +4 -0
  257. package/dist/runtime/installation/to-current-config.d.ts.map +1 -0
  258. package/dist/runtime/installation/to-current-config.js +171 -0
  259. package/dist/runtime/installation/to-current-config.js.map +1 -0
  260. package/dist/runtime/installation/validation.d.ts.map +1 -1
  261. package/dist/runtime/installation/validation.js +78 -0
  262. package/dist/runtime/installation/validation.js.map +1 -1
  263. package/dist/runtime/installation/validators/common.d.ts.map +1 -1
  264. package/dist/runtime/installation/validators/common.js +7 -4
  265. package/dist/runtime/installation/validators/common.js.map +1 -1
  266. package/dist/runtime/installation/validators/infrastructure.d.ts.map +1 -1
  267. package/dist/runtime/installation/validators/infrastructure.js +20 -2
  268. package/dist/runtime/installation/validators/infrastructure.js.map +1 -1
  269. package/dist/runtime/installation/validators/operational.d.ts.map +1 -1
  270. package/dist/runtime/installation/validators/operational.js +44 -102
  271. package/dist/runtime/installation/validators/operational.js.map +1 -1
  272. package/dist/runtime/installation/validators/profile.d.ts.map +1 -1
  273. package/dist/runtime/installation/validators/profile.js +53 -51
  274. package/dist/runtime/installation/validators/profile.js.map +1 -1
  275. package/dist/runtime/installation/validators/secrets.d.ts.map +1 -1
  276. package/dist/runtime/installation/validators/secrets.js +44 -27
  277. package/dist/runtime/installation/validators/secrets.js.map +1 -1
  278. package/dist/runtime/launch.d.ts +10 -0
  279. package/dist/runtime/launch.d.ts.map +1 -1
  280. package/dist/runtime/launch.js +123 -18
  281. package/dist/runtime/launch.js.map +1 -1
  282. package/dist/runtime/license/license-clock.d.ts +12 -0
  283. package/dist/runtime/license/license-clock.d.ts.map +1 -0
  284. package/dist/runtime/license/license-clock.js +57 -0
  285. package/dist/runtime/license/license-clock.js.map +1 -0
  286. package/dist/runtime/license/license-report.d.ts +19 -0
  287. package/dist/runtime/license/license-report.d.ts.map +1 -0
  288. package/dist/runtime/license/license-report.js +105 -0
  289. package/dist/runtime/license/license-report.js.map +1 -0
  290. package/dist/runtime/license/license-store.d.ts +5 -0
  291. package/dist/runtime/license/license-store.d.ts.map +1 -0
  292. package/dist/runtime/license/license-store.js +11 -0
  293. package/dist/runtime/license/license-store.js.map +1 -0
  294. package/dist/runtime/license/registry-credential.d.ts +26 -0
  295. package/dist/runtime/license/registry-credential.d.ts.map +1 -0
  296. package/dist/runtime/license/registry-credential.js +94 -0
  297. package/dist/runtime/license/registry-credential.js.map +1 -0
  298. package/dist/runtime/license/resolve-license.d.ts +30 -0
  299. package/dist/runtime/license/resolve-license.d.ts.map +1 -0
  300. package/dist/runtime/license/resolve-license.js +73 -0
  301. package/dist/runtime/license/resolve-license.js.map +1 -0
  302. package/dist/runtime/license/store-license.d.ts +18 -0
  303. package/dist/runtime/license/store-license.d.ts.map +1 -0
  304. package/dist/runtime/license/store-license.js +26 -0
  305. package/dist/runtime/license/store-license.js.map +1 -0
  306. package/dist/runtime/lock-loader.d.ts +3 -6
  307. package/dist/runtime/lock-loader.d.ts.map +1 -1
  308. package/dist/runtime/lock-loader.js +26 -20
  309. package/dist/runtime/lock-loader.js.map +1 -1
  310. package/dist/runtime/native-process-group.d.ts +46 -0
  311. package/dist/runtime/native-process-group.d.ts.map +1 -0
  312. package/dist/runtime/native-process-group.js +390 -0
  313. package/dist/runtime/native-process-group.js.map +1 -0
  314. package/dist/runtime/paths.d.ts +1 -0
  315. package/dist/runtime/paths.d.ts.map +1 -1
  316. package/dist/runtime/paths.js +1 -0
  317. package/dist/runtime/paths.js.map +1 -1
  318. package/dist/runtime/roster.d.ts +4 -3
  319. package/dist/runtime/roster.d.ts.map +1 -1
  320. package/dist/runtime/roster.js +17 -5
  321. package/dist/runtime/roster.js.map +1 -1
  322. package/dist/runtime/run-manifest.d.ts +34 -5
  323. package/dist/runtime/run-manifest.d.ts.map +1 -1
  324. package/dist/runtime/run-manifest.js +434 -120
  325. package/dist/runtime/run-manifest.js.map +1 -1
  326. package/dist/runtime/runner/container-preflight.d.ts +77 -0
  327. package/dist/runtime/runner/container-preflight.d.ts.map +1 -0
  328. package/dist/runtime/runner/container-preflight.js +360 -0
  329. package/dist/runtime/runner/container-preflight.js.map +1 -0
  330. package/dist/runtime/runner/container-runner.d.ts +8 -0
  331. package/dist/runtime/runner/container-runner.d.ts.map +1 -1
  332. package/dist/runtime/runner/container-runner.js +93 -16
  333. package/dist/runtime/runner/container-runner.js.map +1 -1
  334. package/dist/runtime/runner/docker-cli.d.ts +30 -2
  335. package/dist/runtime/runner/docker-cli.d.ts.map +1 -1
  336. package/dist/runtime/runner/docker-cli.js +275 -11
  337. package/dist/runtime/runner/docker-cli.js.map +1 -1
  338. package/dist/runtime/runner/health-probe.d.ts +1 -0
  339. package/dist/runtime/runner/health-probe.d.ts.map +1 -1
  340. package/dist/runtime/runner/health-probe.js +3 -2
  341. package/dist/runtime/runner/health-probe.js.map +1 -1
  342. package/dist/runtime/runner/helm-cli.d.ts +19 -1
  343. package/dist/runtime/runner/helm-cli.d.ts.map +1 -1
  344. package/dist/runtime/runner/helm-cli.js +76 -8
  345. package/dist/runtime/runner/helm-cli.js.map +1 -1
  346. package/dist/runtime/runner/helm-runner.d.ts +3 -0
  347. package/dist/runtime/runner/helm-runner.d.ts.map +1 -1
  348. package/dist/runtime/runner/helm-runner.js +23 -7
  349. package/dist/runtime/runner/helm-runner.js.map +1 -1
  350. package/dist/runtime/runner/host-platform.d.ts +39 -0
  351. package/dist/runtime/runner/host-platform.d.ts.map +1 -0
  352. package/dist/runtime/runner/host-platform.js +136 -0
  353. package/dist/runtime/runner/host-platform.js.map +1 -0
  354. package/dist/runtime/runner/kube-cli.d.ts +23 -0
  355. package/dist/runtime/runner/kube-cli.d.ts.map +1 -0
  356. package/dist/runtime/runner/kube-cli.js +112 -0
  357. package/dist/runtime/runner/kube-cli.js.map +1 -0
  358. package/dist/runtime/runner/native-runner.d.ts.map +1 -1
  359. package/dist/runtime/runner/native-runner.js +27 -3
  360. package/dist/runtime/runner/native-runner.js.map +1 -1
  361. package/dist/runtime/runner/service-runner.d.ts +5 -0
  362. package/dist/runtime/runner/service-runner.d.ts.map +1 -1
  363. package/dist/runtime/runner/service-runner.js.map +1 -1
  364. package/dist/runtime/runner/stream-outcome.d.ts +7 -0
  365. package/dist/runtime/runner/stream-outcome.d.ts.map +1 -0
  366. package/dist/runtime/runner/stream-outcome.js +13 -0
  367. package/dist/runtime/runner/stream-outcome.js.map +1 -0
  368. package/dist/runtime/secrets/managed-local-cipher.d.ts +18 -0
  369. package/dist/runtime/secrets/managed-local-cipher.d.ts.map +1 -0
  370. package/dist/runtime/secrets/managed-local-cipher.js +110 -0
  371. package/dist/runtime/secrets/managed-local-cipher.js.map +1 -0
  372. package/dist/runtime/secrets/managed-local-files.d.ts +4 -0
  373. package/dist/runtime/secrets/managed-local-files.d.ts.map +1 -0
  374. package/dist/runtime/secrets/managed-local-files.js +132 -0
  375. package/dist/runtime/secrets/managed-local-files.js.map +1 -0
  376. package/dist/runtime/secrets/managed-local-key-provider.d.ts +27 -0
  377. package/dist/runtime/secrets/managed-local-key-provider.d.ts.map +1 -0
  378. package/dist/runtime/secrets/managed-local-key-provider.js +144 -0
  379. package/dist/runtime/secrets/managed-local-key-provider.js.map +1 -0
  380. package/dist/runtime/secrets/managed-local-secret-store.d.ts +18 -0
  381. package/dist/runtime/secrets/managed-local-secret-store.d.ts.map +1 -0
  382. package/dist/runtime/secrets/managed-local-secret-store.js +82 -0
  383. package/dist/runtime/secrets/managed-local-secret-store.js.map +1 -0
  384. package/dist/runtime/secrets/managed-local-store.d.ts +7 -0
  385. package/dist/runtime/secrets/managed-local-store.d.ts.map +1 -1
  386. package/dist/runtime/secrets/managed-local-store.js +46 -127
  387. package/dist/runtime/secrets/managed-local-store.js.map +1 -1
  388. package/dist/runtime/sources/credentials.d.ts +2 -0
  389. package/dist/runtime/sources/credentials.d.ts.map +1 -1
  390. package/dist/runtime/sources/credentials.js +49 -0
  391. package/dist/runtime/sources/credentials.js.map +1 -1
  392. package/dist/runtime/sources/kinds/distribution.js +3 -3
  393. package/dist/runtime/sources/kinds/distribution.js.map +1 -1
  394. package/dist/runtime/sources/manifest-walk.d.ts +1 -0
  395. package/dist/runtime/sources/manifest-walk.d.ts.map +1 -1
  396. package/dist/runtime/sources/manifest-walk.js +16 -11
  397. package/dist/runtime/sources/manifest-walk.js.map +1 -1
  398. package/dist/runtime/sources/schema.d.ts.map +1 -1
  399. package/dist/runtime/sources/schema.js +51 -3
  400. package/dist/runtime/sources/schema.js.map +1 -1
  401. package/dist/runtime/store-client.d.ts +1 -1
  402. package/dist/runtime/store-client.d.ts.map +1 -1
  403. package/dist/runtime/store-client.js +2 -1
  404. package/dist/runtime/store-client.js.map +1 -1
  405. package/dist/runtime/store-submit.d.ts +31 -0
  406. package/dist/runtime/store-submit.d.ts.map +1 -0
  407. package/dist/runtime/store-submit.js +77 -0
  408. package/dist/runtime/store-submit.js.map +1 -0
  409. package/dist/runtime/supervisor.d.ts +12 -0
  410. package/dist/runtime/supervisor.d.ts.map +1 -1
  411. package/dist/runtime/supervisor.js +141 -26
  412. package/dist/runtime/supervisor.js.map +1 -1
  413. package/package.json +20 -29
  414. package/LICENSE +0 -176
  415. package/dist/lib/command-registry.d.ts +0 -5
  416. package/dist/lib/command-registry.d.ts.map +0 -1
  417. package/dist/lib/command-registry.js +0 -17
  418. package/dist/lib/command-registry.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.authHeaders = authHeaders;
3
4
  exports.resolveTarget = resolveTarget;
4
5
  exports.loadManifest = loadManifest;
5
6
  exports.writeManifest = writeManifest;
@@ -13,16 +14,65 @@ const resource_1 = require("@xemahq/kernel-contracts/resource");
13
14
  const yaml_1 = require("yaml");
14
15
  const exit_codes_1 = require("./exit-codes");
15
16
  const http_error_1 = require("./http-error");
16
- function resolveTarget(flags) {
17
- const endpoint = flags.endpoint ?? process.env.XEMA_ENDPOINT;
18
- const token = flags.token ?? process.env.XEMA_TOKEN;
17
+ const session_auth_1 = require("../runtime/auth/session-auth");
18
+ const credentials_1 = require("../runtime/sources/credentials");
19
+ function authHeaders(target) {
20
+ return {
21
+ authorization: `Bearer ${target.token}`,
22
+ ...(target.orgId !== undefined && target.orgId.length > 0
23
+ ? { 'x-xema-org-id': target.orgId }
24
+ : {}),
25
+ };
26
+ }
27
+ function resolveExplicitToken(flags) {
28
+ if (flags.token !== undefined && flags.token.length > 0) {
29
+ return flags.token;
30
+ }
31
+ if (flags.tokenEnv !== undefined && flags.tokenEnv.length > 0) {
32
+ return new credentials_1.CredentialResolver().resolve(flags.tokenEnv, '--token-env');
33
+ }
34
+ const ambient = process.env.XEMA_TOKEN;
35
+ return ambient !== undefined && ambient.length > 0 ? ambient : undefined;
36
+ }
37
+ async function resolveTarget(flags) {
38
+ let token;
39
+ try {
40
+ token = resolveExplicitToken(flags);
41
+ }
42
+ catch (err) {
43
+ const detail = err instanceof Error ? err.message : String(err);
44
+ (0, exit_codes_1.exitWith)(exit_codes_1.XemaCliExitCode.ConfigurationError, detail);
45
+ }
46
+ let endpoint = flags.endpoint ?? process.env.XEMA_ENDPOINT;
47
+ if (token === undefined || endpoint === undefined || endpoint.length === 0) {
48
+ let session;
49
+ try {
50
+ session = await (0, session_auth_1.loadUsableSession)();
51
+ }
52
+ catch (err) {
53
+ const detail = err instanceof Error ? err.message : String(err);
54
+ (0, exit_codes_1.exitWith)(exit_codes_1.XemaCliExitCode.ConfigurationError, detail);
55
+ }
56
+ if (session !== undefined) {
57
+ token = token ?? session.accessToken;
58
+ endpoint =
59
+ endpoint !== undefined && endpoint.length > 0
60
+ ? endpoint
61
+ : session.endpoint;
62
+ }
63
+ }
19
64
  if (endpoint === undefined || endpoint.length === 0) {
20
- (0, exit_codes_1.exitWith)(exit_codes_1.XemaCliExitCode.ConfigurationError, 'No control-plane endpoint. Pass --endpoint <url> or set XEMA_ENDPOINT.');
65
+ (0, exit_codes_1.exitWith)(exit_codes_1.XemaCliExitCode.ConfigurationError, 'No control-plane endpoint. Pass --endpoint <url>, set XEMA_ENDPOINT, or run `xema login`.');
21
66
  }
22
67
  if (token === undefined || token.length === 0) {
23
- (0, exit_codes_1.exitWith)(exit_codes_1.XemaCliExitCode.ConfigurationError, 'No org-admin token. Pass --token <jwt> or set XEMA_TOKEN.');
68
+ (0, exit_codes_1.exitWith)(exit_codes_1.XemaCliExitCode.ConfigurationError, 'No token. Pass --token <jwt>, set XEMA_TOKEN, or run `xema login`.');
24
69
  }
25
- return { baseUrl: endpoint.replace(/\/+$/, ''), token };
70
+ const orgId = flags.orgId ?? process.env.XEMA_ORG_ID;
71
+ return {
72
+ baseUrl: endpoint.replace(/\/+$/, ''),
73
+ token,
74
+ ...(orgId !== undefined && orgId.length > 0 ? { orgId } : {}),
75
+ };
26
76
  }
27
77
  async function loadManifest(path) {
28
78
  let raw;
@@ -1 +1 @@
1
- {"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../../src/lib/control-plane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../../src/lib/control-plane.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface VendoredEditionProvenance {
2
+ readonly id: string;
3
+ readonly sourceCommit: string;
4
+ readonly inputHash: string | null;
5
+ }
6
+ export interface AssetProvenance {
7
+ readonly distributionsRepo: string;
8
+ readonly bootGraph: {
9
+ readonly repo: string;
10
+ readonly sourcePath: string;
11
+ readonly sourceCommit: string;
12
+ };
13
+ readonly editions: ReadonlyArray<VendoredEditionProvenance>;
14
+ }
15
+ export declare function readAssetProvenance(): AssetProvenance | null;
16
+ export declare function describeAssetProvenance(provenance: AssetProvenance): string;
17
+ //# sourceMappingURL=asset-provenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-provenance.d.ts","sourceRoot":"","sources":["../../src/runtime/asset-provenance.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,yBAAyB,CAAC,CAAC;CAC7D;AAWD,wBAAgB,mBAAmB,IAAI,eAAe,GAAG,IAAI,CAiB5D;AAGD,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAK3E"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readAssetProvenance = readAssetProvenance;
4
+ exports.describeAssetProvenance = describeAssetProvenance;
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ const paths_1 = require("./paths");
8
+ const MANIFEST_FILE = 'distribution-assets.manifest.json';
9
+ function readAssetProvenance() {
10
+ const manifestPath = (0, node_path_1.join)((0, paths_1.vendoredAssetsDir)(), MANIFEST_FILE);
11
+ if (!(0, node_fs_1.existsSync)(manifestPath)) {
12
+ return null;
13
+ }
14
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(manifestPath, 'utf8'));
15
+ if (typeof parsed.distributionsRepo !== 'string' ||
16
+ parsed.bootGraph === undefined ||
17
+ !Array.isArray(parsed.editions)) {
18
+ throw new Error(`${manifestPath} is not a valid distribution-asset manifest — this install is corrupt; ` +
19
+ 'reinstall @xemahq/xema.');
20
+ }
21
+ return parsed;
22
+ }
23
+ function describeAssetProvenance(provenance) {
24
+ const editions = provenance.editions
25
+ .map((e) => `${e.id}@${e.sourceCommit.slice(0, 8)}`)
26
+ .join(', ');
27
+ return `${provenance.distributionsRepo}: ${editions}`;
28
+ }
29
+ //# sourceMappingURL=asset-provenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-provenance.js","sourceRoot":"","sources":["../../src/runtime/asset-provenance.ts"],"names":[],"mappings":";;AA6CA,kDAiBC;AAGD,0DAKC;AAtED,qCAAmD;AACnD,yCAAiC;AAEjC,mCAA4C;AAkC5C,MAAM,aAAa,GAAG,mCAAmC,CAAC;AAQ1D,SAAgB,mBAAmB;IACjC,MAAM,YAAY,GAAG,IAAA,gBAAI,EAAC,IAAA,yBAAiB,GAAE,EAAE,aAAa,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAA,oBAAU,EAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,YAAY,EAAE,MAAM,CAAC,CAA6B,CAAC;IAC1F,IACE,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ;QAC5C,MAAM,CAAC,SAAS,KAAK,SAAS;QAC9B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC/B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,yEAAyE;YACtF,yBAAyB,CAC5B,CAAC;IACJ,CAAC;IACD,OAAO,MAAyB,CAAC;AACnC,CAAC;AAGD,SAAgB,uBAAuB,CAAC,UAA2B;IACjE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ;SACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;SACnD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,GAAG,UAAU,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;AACxD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { IdentityApiClient } from '@xemahq/identity-client';
2
+ export interface RegisterCliClientOptions {
3
+ readonly identityApiUrl: string;
4
+ readonly internalToken: string;
5
+ readonly realm: string;
6
+ readonly identityClient?: Pick<IdentityApiClient, 'registerServiceFull'>;
7
+ }
8
+ export declare const IDENTITY_API_INTERNAL_TOKEN = "IDENTITY_API_INTERNAL_TOKEN";
9
+ export declare function resolveIdentityRegistrationToken(configuredToken: string | undefined, environmentToken: string | undefined): string;
10
+ export declare function registerCliDeviceClient(options: RegisterCliClientOptions): Promise<void>;
11
+ //# sourceMappingURL=client-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-bootstrap.d.ts","sourceRoot":"","sources":["../../../src/runtime/auth/client-bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAIlB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;CAC1E;AAaD,eAAO,MAAM,2BAA2B,gCAAgC,CAAC;AAQzE,wBAAgB,gCAAgC,CAC9C,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,MAAM,CAmBR;AAOD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAsBf"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IDENTITY_API_INTERNAL_TOKEN = void 0;
4
+ exports.resolveIdentityRegistrationToken = resolveIdentityRegistrationToken;
5
+ exports.registerCliDeviceClient = registerCliDeviceClient;
6
+ const identity_client_1 = require("@xemahq/identity-client");
7
+ const device_flow_1 = require("./device-flow");
8
+ const PUBLIC_DEVICE_SERVICE_TYPE = 'PUBLIC_DEVICE';
9
+ const CLI_REGISTRATION = Object.freeze({
10
+ name: device_flow_1.DEFAULT_CLI_CLIENT_ID,
11
+ displayName: 'Xema CLI',
12
+ description: 'Public device-authorization client for the Xema command-line interface',
13
+ serviceType: PUBLIC_DEVICE_SERVICE_TYPE,
14
+ regenerateSecret: false,
15
+ });
16
+ exports.IDENTITY_API_INTERNAL_TOKEN = 'IDENTITY_API_INTERNAL_TOKEN';
17
+ function resolveIdentityRegistrationToken(configuredToken, environmentToken) {
18
+ const configured = normalizeToken(configuredToken, 'configured secret');
19
+ const environment = normalizeToken(environmentToken, 'process environment');
20
+ if (configured !== undefined &&
21
+ environment !== undefined &&
22
+ configured !== environment) {
23
+ throw new Error(`${exports.IDENTITY_API_INTERNAL_TOKEN} differs between the configured secret and process environment. Refusing ambiguous identity authority.`);
24
+ }
25
+ const token = configured ?? environment;
26
+ if (token === undefined) {
27
+ throw new Error(`${exports.IDENTITY_API_INTERNAL_TOKEN} is required to reconcile the ${device_flow_1.DEFAULT_CLI_CLIENT_ID} public device client. Declare that exact secret or environment variable before launch.`);
28
+ }
29
+ return token;
30
+ }
31
+ async function registerCliDeviceClient(options) {
32
+ const client = options.identityClient ??
33
+ new identity_client_1.IdentityApiClient({
34
+ baseUrl: options.identityApiUrl,
35
+ internalToken: options.internalToken,
36
+ });
37
+ const registration = await client.registerServiceFull({
38
+ ...CLI_REGISTRATION,
39
+ realm: options.realm,
40
+ });
41
+ if (registration.id !== device_flow_1.DEFAULT_CLI_CLIENT_ID) {
42
+ throw new Error(`identity-api registration response did not identify ${device_flow_1.DEFAULT_CLI_CLIENT_ID}.`);
43
+ }
44
+ if (registration.clientSecret !== null) {
45
+ throw new Error(`identity-api returned a client secret for public client ${device_flow_1.DEFAULT_CLI_CLIENT_ID}.`);
46
+ }
47
+ }
48
+ function normalizeToken(token, source) {
49
+ if (token === undefined) {
50
+ return undefined;
51
+ }
52
+ if (token.length === 0 || token.trim().length === 0) {
53
+ throw new Error(`${exports.IDENTITY_API_INTERNAL_TOKEN} from ${source} is empty.`);
54
+ }
55
+ if (token !== token.trim()) {
56
+ throw new Error(`${exports.IDENTITY_API_INTERNAL_TOKEN} from ${source} has leading or trailing whitespace.`);
57
+ }
58
+ return token;
59
+ }
60
+ //# sourceMappingURL=client-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-bootstrap.js","sourceRoot":"","sources":["../../../src/runtime/auth/client-bootstrap.ts"],"names":[],"mappings":";;;AAmCA,4EAsBC;AAOD,0DAwBC;AAxFD,6DAKiC;AAEjC,+CAAsD;AAStD,MAAM,0BAA0B,GAAgB,eAAe,CAAC;AAEhE,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,mCAAqB;IAC3B,WAAW,EAAE,UAAU;IACvB,WAAW,EACT,wEAAwE;IAC1E,WAAW,EAAE,0BAA0B;IACvC,gBAAgB,EAAE,KAAK;CACwB,CAAC,CAAC;AAEtC,QAAA,2BAA2B,GAAG,6BAA6B,CAAC;AAQzE,SAAgB,gCAAgC,CAC9C,eAAmC,EACnC,gBAAoC;IAEpC,MAAM,UAAU,GAAG,cAAc,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,cAAc,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IAC5E,IACE,UAAU,KAAK,SAAS;QACxB,WAAW,KAAK,SAAS;QACzB,UAAU,KAAK,WAAW,EAC1B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,GAAG,mCAA2B,wGAAwG,CACvI,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,IAAI,WAAW,CAAC;IACxC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,GAAG,mCAA2B,iCAAiC,mCAAqB,yFAAyF,CAC9K,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAOM,KAAK,UAAU,uBAAuB,CAC3C,OAAiC;IAEjC,MAAM,MAAM,GACV,OAAO,CAAC,cAAc;QACtB,IAAI,mCAAiB,CAAC;YACpB,OAAO,EAAE,OAAO,CAAC,cAAc;YAC/B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;IACL,MAAM,YAAY,GAChB,MAAM,MAAM,CAAC,mBAAmB,CAAC;QAC/B,GAAG,gBAAgB;QACnB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IACL,IAAI,YAAY,CAAC,EAAE,KAAK,mCAAqB,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,uDAAuD,mCAAqB,GAAG,CAChF,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,2DAA2D,mCAAqB,GAAG,CACpF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,KAAyB,EACzB,MAAc;IAEd,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,GAAG,mCAA2B,SAAS,MAAM,YAAY,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,GAAG,mCAA2B,SAAS,MAAM,sCAAsC,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,43 @@
1
+ export declare enum DeviceFlowErrorCode {
2
+ AuthorizationPending = "authorization_pending",
3
+ SlowDown = "slow_down",
4
+ AccessDenied = "access_denied",
5
+ ExpiredToken = "expired_token"
6
+ }
7
+ export declare const DEVICE_CODE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
8
+ export declare const DEFAULT_POLL_INTERVAL_SECONDS = 5;
9
+ export declare const SLOW_DOWN_INCREMENT_SECONDS = 5;
10
+ export declare const DEVICE_FLOW_SCOPE = "openid profile email offline_access";
11
+ export declare const DEFAULT_CLI_CLIENT_ID = "xema-cli";
12
+ export declare class DeviceFlowError extends Error {
13
+ constructor(message: string);
14
+ }
15
+ export interface OidcEndpoints {
16
+ readonly issuer: string;
17
+ readonly deviceAuthorizationEndpoint: string;
18
+ readonly tokenEndpoint: string;
19
+ }
20
+ export interface DeviceAuthorization {
21
+ readonly deviceCode: string;
22
+ readonly userCode: string;
23
+ readonly verificationUri: string;
24
+ readonly verificationUriComplete?: string;
25
+ readonly expiresInSeconds: number;
26
+ readonly intervalSeconds: number;
27
+ }
28
+ export interface DeviceTokens {
29
+ readonly accessToken: string;
30
+ readonly refreshToken?: string;
31
+ readonly expiresAt: number;
32
+ }
33
+ export interface DeviceFlowDeps {
34
+ readonly fetch: typeof globalThis.fetch;
35
+ readonly sleep: (ms: number) => Promise<void>;
36
+ readonly now: () => number;
37
+ }
38
+ export declare function defaultDeviceFlowDeps(): DeviceFlowDeps;
39
+ export declare function discoverOidcEndpoints(issuer: string, deps: DeviceFlowDeps): Promise<OidcEndpoints>;
40
+ export declare function requestDeviceAuthorization(endpoints: OidcEndpoints, clientId: string, deps: DeviceFlowDeps): Promise<DeviceAuthorization>;
41
+ export declare function pollForDeviceTokens(endpoints: OidcEndpoints, clientId: string, authorization: DeviceAuthorization, deps: DeviceFlowDeps): Promise<DeviceTokens>;
42
+ export declare function refreshAccessToken(endpoints: OidcEndpoints, clientId: string, refreshToken: string, deps: DeviceFlowDeps): Promise<DeviceTokens>;
43
+ //# sourceMappingURL=device-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-flow.d.ts","sourceRoot":"","sources":["../../../src/runtime/auth/device-flow.ts"],"names":[],"mappings":"AAiCA,oBAAY,mBAAmB;IAE7B,oBAAoB,0BAA0B;IAE9C,QAAQ,cAAc;IAEtB,YAAY,kBAAkB;IAE9B,YAAY,kBAAkB;CAC/B;AAGD,eAAO,MAAM,sBAAsB,iDACa,CAAC;AAMjD,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAG/C,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAG7C,eAAO,MAAM,iBAAiB,wCAAwC,CAAC;AAMvE,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAGhD,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAGD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAGD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAGD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAMD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;CAC5B;AAGD,wBAAgB,qBAAqB,IAAI,cAAc,CAStD;AAkED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,aAAa,CAAC,CAqCxB;AA4BD,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,mBAAmB,CAAC,CA4C9B;AA4BD,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,mBAAmB,EAClC,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,YAAY,CAAC,CAwDvB;AAUD,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,YAAY,CAAC,CAoBvB"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeviceFlowError = exports.DEFAULT_CLI_CLIENT_ID = exports.DEVICE_FLOW_SCOPE = exports.SLOW_DOWN_INCREMENT_SECONDS = exports.DEFAULT_POLL_INTERVAL_SECONDS = exports.DEVICE_CODE_GRANT_TYPE = exports.DeviceFlowErrorCode = void 0;
4
+ exports.defaultDeviceFlowDeps = defaultDeviceFlowDeps;
5
+ exports.discoverOidcEndpoints = discoverOidcEndpoints;
6
+ exports.requestDeviceAuthorization = requestDeviceAuthorization;
7
+ exports.pollForDeviceTokens = pollForDeviceTokens;
8
+ exports.refreshAccessToken = refreshAccessToken;
9
+ var DeviceFlowErrorCode;
10
+ (function (DeviceFlowErrorCode) {
11
+ DeviceFlowErrorCode["AuthorizationPending"] = "authorization_pending";
12
+ DeviceFlowErrorCode["SlowDown"] = "slow_down";
13
+ DeviceFlowErrorCode["AccessDenied"] = "access_denied";
14
+ DeviceFlowErrorCode["ExpiredToken"] = "expired_token";
15
+ })(DeviceFlowErrorCode || (exports.DeviceFlowErrorCode = DeviceFlowErrorCode = {}));
16
+ exports.DEVICE_CODE_GRANT_TYPE = 'urn:ietf:params:oauth:grant-type:device_code';
17
+ exports.DEFAULT_POLL_INTERVAL_SECONDS = 5;
18
+ exports.SLOW_DOWN_INCREMENT_SECONDS = 5;
19
+ exports.DEVICE_FLOW_SCOPE = 'openid profile email offline_access';
20
+ exports.DEFAULT_CLI_CLIENT_ID = 'xema-cli';
21
+ class DeviceFlowError extends Error {
22
+ constructor(message) {
23
+ super(message);
24
+ this.name = 'DeviceFlowError';
25
+ }
26
+ }
27
+ exports.DeviceFlowError = DeviceFlowError;
28
+ function defaultDeviceFlowDeps() {
29
+ return {
30
+ fetch: globalThis.fetch.bind(globalThis),
31
+ sleep: (ms) => new Promise((resolve) => {
32
+ setTimeout(resolve, ms);
33
+ }),
34
+ now: () => Date.now(),
35
+ };
36
+ }
37
+ function requireString(body, field, context) {
38
+ const value = body[field];
39
+ if (typeof value !== 'string' || value.length === 0) {
40
+ throw new DeviceFlowError(`${context} response is missing the required "${field}" field.`);
41
+ }
42
+ return value;
43
+ }
44
+ function requirePositiveInt(body, field, context) {
45
+ const value = body[field];
46
+ if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) {
47
+ throw new DeviceFlowError(`${context} response field "${field}" must be a positive number.`);
48
+ }
49
+ return Math.floor(value);
50
+ }
51
+ async function readJson(response, context) {
52
+ const text = await response.text();
53
+ if (text.trim().length === 0) {
54
+ throw new DeviceFlowError(`${context} returned an empty body.`);
55
+ }
56
+ try {
57
+ const parsed = JSON.parse(text);
58
+ if (typeof parsed !== 'object' || parsed === null) {
59
+ throw new DeviceFlowError(`${context} returned a non-object body.`);
60
+ }
61
+ return parsed;
62
+ }
63
+ catch (err) {
64
+ if (err instanceof DeviceFlowError) {
65
+ throw err;
66
+ }
67
+ throw new DeviceFlowError(`${context} returned a body that is not JSON: ${text.slice(0, 200)}`);
68
+ }
69
+ }
70
+ async function discoverOidcEndpoints(issuer, deps) {
71
+ const base = issuer.replace(/\/+$/, '');
72
+ const url = `${base}/.well-known/openid-configuration`;
73
+ let response;
74
+ try {
75
+ response = await deps.fetch(url, {
76
+ headers: { accept: 'application/json' },
77
+ });
78
+ }
79
+ catch (err) {
80
+ const detail = err instanceof Error ? err.message : String(err);
81
+ throw new DeviceFlowError(`Identity provider unreachable at ${url}: ${detail}`);
82
+ }
83
+ if (!response.ok) {
84
+ throw new DeviceFlowError(`OIDC discovery failed: ${url} → HTTP ${String(response.status)}.`);
85
+ }
86
+ const body = await readJson(response, 'OIDC discovery');
87
+ const deviceEndpoint = body.device_authorization_endpoint;
88
+ if (typeof deviceEndpoint !== 'string' || deviceEndpoint.length === 0) {
89
+ throw new DeviceFlowError(`The identity provider at ${base} does not advertise a ` +
90
+ 'device_authorization_endpoint, so `xema login` cannot run. Enable the ' +
91
+ 'OAuth 2.0 Device Authorization Grant on the realm client, then retry.');
92
+ }
93
+ return {
94
+ issuer: requireString(body, 'issuer', 'OIDC discovery'),
95
+ deviceAuthorizationEndpoint: deviceEndpoint,
96
+ tokenEndpoint: requireString(body, 'token_endpoint', 'OIDC discovery'),
97
+ };
98
+ }
99
+ async function postForm(endpoint, form, deps, context) {
100
+ try {
101
+ return await deps.fetch(endpoint, {
102
+ method: 'POST',
103
+ headers: {
104
+ 'content-type': 'application/x-www-form-urlencoded',
105
+ accept: 'application/json',
106
+ },
107
+ body: new URLSearchParams(form).toString(),
108
+ });
109
+ }
110
+ catch (err) {
111
+ const detail = err instanceof Error ? err.message : String(err);
112
+ throw new DeviceFlowError(`${context} unreachable at ${endpoint}: ${detail}`);
113
+ }
114
+ }
115
+ async function requestDeviceAuthorization(endpoints, clientId, deps) {
116
+ const response = await postForm(endpoints.deviceAuthorizationEndpoint, { client_id: clientId, scope: exports.DEVICE_FLOW_SCOPE }, deps, 'Device authorization');
117
+ const body = await readJson(response, 'Device authorization');
118
+ if (!response.ok) {
119
+ const code = typeof body.error === 'string' ? body.error : 'unknown_error';
120
+ const description = typeof body.error_description === 'string'
121
+ ? ` — ${body.error_description}`
122
+ : '';
123
+ throw new DeviceFlowError(`Device authorization refused by the identity provider (${code})${description}. ` +
124
+ `Check that the "${clientId}" client exists and has the device grant enabled.`);
125
+ }
126
+ const verificationUriComplete = body.verification_uri_complete;
127
+ return {
128
+ deviceCode: requireString(body, 'device_code', 'Device authorization'),
129
+ userCode: requireString(body, 'user_code', 'Device authorization'),
130
+ verificationUri: requireString(body, 'verification_uri', 'Device authorization'),
131
+ ...(typeof verificationUriComplete === 'string' &&
132
+ verificationUriComplete.length > 0
133
+ ? { verificationUriComplete }
134
+ : {}),
135
+ expiresInSeconds: requirePositiveInt(body, 'expires_in', 'Device authorization'),
136
+ intervalSeconds: typeof body.interval === 'number' && body.interval > 0
137
+ ? Math.floor(body.interval)
138
+ : exports.DEFAULT_POLL_INTERVAL_SECONDS,
139
+ };
140
+ }
141
+ function toTokens(body, context, now) {
142
+ const refreshToken = body.refresh_token;
143
+ return {
144
+ accessToken: requireString(body, 'access_token', context),
145
+ ...(typeof refreshToken === 'string' && refreshToken.length > 0
146
+ ? { refreshToken }
147
+ : {}),
148
+ expiresAt: now + requirePositiveInt(body, 'expires_in', context) * 1000,
149
+ };
150
+ }
151
+ async function pollForDeviceTokens(endpoints, clientId, authorization, deps) {
152
+ let intervalSeconds = authorization.intervalSeconds;
153
+ const deadline = deps.now() + authorization.expiresInSeconds * 1000;
154
+ for (;;) {
155
+ await deps.sleep(intervalSeconds * 1000);
156
+ if (deps.now() >= deadline) {
157
+ throw new DeviceFlowError('The login request expired before it was approved. Run `xema login` again.');
158
+ }
159
+ const response = await postForm(endpoints.tokenEndpoint, {
160
+ grant_type: exports.DEVICE_CODE_GRANT_TYPE,
161
+ device_code: authorization.deviceCode,
162
+ client_id: clientId,
163
+ }, deps, 'Token endpoint');
164
+ const body = await readJson(response, 'Token endpoint');
165
+ if (response.ok) {
166
+ return toTokens(body, 'Token endpoint', deps.now());
167
+ }
168
+ const error = typeof body.error === 'string' ? body.error : '';
169
+ switch (error) {
170
+ case DeviceFlowErrorCode.AuthorizationPending:
171
+ continue;
172
+ case DeviceFlowErrorCode.SlowDown:
173
+ intervalSeconds += exports.SLOW_DOWN_INCREMENT_SECONDS;
174
+ continue;
175
+ case DeviceFlowErrorCode.AccessDenied:
176
+ throw new DeviceFlowError('The login request was denied in the browser.');
177
+ case DeviceFlowErrorCode.ExpiredToken:
178
+ throw new DeviceFlowError('The login request expired before it was approved. Run `xema login` again.');
179
+ default: {
180
+ const description = typeof body.error_description === 'string'
181
+ ? ` — ${body.error_description}`
182
+ : '';
183
+ throw new DeviceFlowError(`Login failed (${error.length > 0 ? error : `HTTP ${String(response.status)}`})${description}.`);
184
+ }
185
+ }
186
+ }
187
+ }
188
+ async function refreshAccessToken(endpoints, clientId, refreshToken, deps) {
189
+ const response = await postForm(endpoints.tokenEndpoint, {
190
+ grant_type: 'refresh_token',
191
+ refresh_token: refreshToken,
192
+ client_id: clientId,
193
+ }, deps, 'Token endpoint');
194
+ const body = await readJson(response, 'Token endpoint');
195
+ if (!response.ok) {
196
+ const error = typeof body.error === 'string' ? body.error : 'unknown_error';
197
+ throw new DeviceFlowError(`Session refresh failed (${error}). Run \`xema login\` to sign in again.`);
198
+ }
199
+ return toTokens(body, 'Token endpoint', deps.now());
200
+ }
201
+ //# sourceMappingURL=device-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-flow.js","sourceRoot":"","sources":["../../../src/runtime/auth/device-flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type DeviceFlowDeps } from './device-flow';
2
+ import { type XemaSession } from './session-store';
3
+ export declare class SessionExpiredError extends Error {
4
+ constructor(message: string);
5
+ }
6
+ export declare function ensureUsableSession(session: XemaSession | undefined, deps?: DeviceFlowDeps, path?: string): Promise<XemaSession | undefined>;
7
+ export declare function loadUsableSession(deps?: DeviceFlowDeps, path?: string): Promise<XemaSession | undefined>;
8
+ //# sourceMappingURL=session-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-auth.d.ts","sourceRoot":"","sources":["../../../src/runtime/auth/session-auth.ts"],"names":[],"mappings":"AAYA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAGzB,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AASD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,IAAI,GAAE,cAAwC,EAC9C,IAAI,GAAE,MAAqB,GAC1B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAqClC;AAMD,wBAAsB,iBAAiB,CACrC,IAAI,GAAE,cAAwC,EAC9C,IAAI,GAAE,MAAqB,GAC1B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAElC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionExpiredError = void 0;
4
+ exports.ensureUsableSession = ensureUsableSession;
5
+ exports.loadUsableSession = loadUsableSession;
6
+ const device_flow_1 = require("./device-flow");
7
+ const session_store_1 = require("./session-store");
8
+ class SessionExpiredError extends Error {
9
+ constructor(message) {
10
+ super(message);
11
+ this.name = 'SessionExpiredError';
12
+ }
13
+ }
14
+ exports.SessionExpiredError = SessionExpiredError;
15
+ async function ensureUsableSession(session, deps = (0, device_flow_1.defaultDeviceFlowDeps)(), path = session_store_1.SESSION_FILE) {
16
+ if (session === undefined) {
17
+ return undefined;
18
+ }
19
+ if ((0, session_store_1.isAccessTokenUsable)(session, deps.now())) {
20
+ return session;
21
+ }
22
+ if (session.refreshToken === undefined) {
23
+ throw new SessionExpiredError('Your Xema session has expired and carries no refresh token. ' +
24
+ 'Run `xema login` to sign in again.');
25
+ }
26
+ const endpoints = await (0, device_flow_1.discoverOidcEndpoints)(session.issuer, deps);
27
+ const tokens = await (0, device_flow_1.refreshAccessToken)(endpoints, session.clientId, session.refreshToken, deps);
28
+ const refreshed = {
29
+ endpoint: session.endpoint,
30
+ issuer: session.issuer,
31
+ clientId: session.clientId,
32
+ accessToken: tokens.accessToken,
33
+ refreshToken: tokens.refreshToken ?? session.refreshToken,
34
+ expiresAt: tokens.expiresAt,
35
+ ...(session.subject !== undefined ? { subject: session.subject } : {}),
36
+ };
37
+ (0, session_store_1.writeSession)(refreshed, path);
38
+ return refreshed;
39
+ }
40
+ async function loadUsableSession(deps = (0, device_flow_1.defaultDeviceFlowDeps)(), path = session_store_1.SESSION_FILE) {
41
+ return ensureUsableSession((0, session_store_1.readSession)(path), deps, path);
42
+ }
43
+ //# sourceMappingURL=session-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-auth.js","sourceRoot":"","sources":["../../../src/runtime/auth/session-auth.ts"],"names":[],"mappings":";;;AAyCA,kDAyCC;AAMD,8CAKC;AAjFD,+CAKuB;AACvB,mDAMyB;AAGzB,MAAa,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC;AASM,KAAK,UAAU,mBAAmB,CACvC,OAAgC,EAChC,OAAuB,IAAA,mCAAqB,GAAE,EAC9C,OAAe,4BAAY;IAE3B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAA,mCAAmB,EAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,mBAAmB,CAC3B,8DAA8D;YAC5D,oCAAoC,CACvC,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,IAAA,mCAAqB,EAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAkB,EACrC,SAAS,EACT,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,YAAY,EACpB,IAAI,CACL,CAAC;IAKF,MAAM,SAAS,GAAgB;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY;QACzD,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAC;IACF,IAAA,4BAAY,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9B,OAAO,SAAS,CAAC;AACnB,CAAC;AAMM,KAAK,UAAU,iBAAiB,CACrC,OAAuB,IAAA,mCAAqB,GAAE,EAC9C,OAAe,4BAAY;IAE3B,OAAO,mBAAmB,CAAC,IAAA,2BAAW,EAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,19 @@
1
+ export declare const SESSION_FILE: string;
2
+ export interface XemaSession {
3
+ readonly endpoint: string;
4
+ readonly issuer: string;
5
+ readonly clientId: string;
6
+ readonly accessToken: string;
7
+ readonly refreshToken?: string;
8
+ readonly expiresAt: number;
9
+ readonly subject?: string;
10
+ }
11
+ export declare class SessionStoreError extends Error {
12
+ constructor(message: string);
13
+ }
14
+ export declare function readSession(path?: string): XemaSession | undefined;
15
+ export declare function writeSession(session: XemaSession, path?: string): void;
16
+ export declare function clearSession(path?: string): boolean;
17
+ export declare const SESSION_EXPIRY_SKEW_MS = 60000;
18
+ export declare function isAccessTokenUsable(session: XemaSession, now: number): boolean;
19
+ //# sourceMappingURL=session-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../src/runtime/auth/session-store.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,YAAY,QAA2C,CAAC;AAerE,MAAM,WAAW,WAAW;IAE1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAGD,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AA2BD,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAqB,GAAG,WAAW,GAAG,SAAS,CA0ChF;AAQD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,WAAW,EACpB,IAAI,GAAE,MAAqB,GAC1B,IAAI,CAON;AAMD,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAqB,GAAG,OAAO,CAMjE;AASD,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAG7C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9E"}