@astrale-os/sdk 0.6.0-beta.3 → 0.6.0-beta.30

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 (444) hide show
  1. package/README.md +179 -58
  2. package/dist/application/action/action.d.ts +6 -0
  3. package/dist/application/action/authoring.d.ts +1 -1
  4. package/dist/application/action/context.d.ts +44 -31
  5. package/dist/application/action/define.d.ts +3 -3
  6. package/dist/application/action/index.d.ts +1 -1
  7. package/dist/application/define.d.ts +8 -6
  8. package/dist/application/define.js +28 -14
  9. package/dist/application/dependency/index.d.ts +1 -1
  10. package/dist/application/dependency/invoker.d.ts +14 -9
  11. package/dist/application/domain.d.ts +30 -0
  12. package/dist/application/index.d.ts +4 -4
  13. package/dist/application/index.js +1 -1
  14. package/dist/application/integration/operation.d.ts +2 -2
  15. package/dist/application/mutation/authoring/properties.d.ts +5 -3
  16. package/dist/application/mutation/authoring/properties.js +35 -2
  17. package/dist/application/mutation/authoring/transition.js +4 -1
  18. package/dist/application/mutation/index.d.ts +1 -1
  19. package/dist/application/query/composite/plan.d.ts +0 -4
  20. package/dist/application/query/composite/plan.js +0 -2
  21. package/dist/application/routes/admission.d.ts +2 -2
  22. package/dist/application/routes/admission.js +1 -1
  23. package/dist/application/routes/route.d.ts +2 -2
  24. package/dist/application/runtime/actions.js +3 -0
  25. package/dist/application/runtime/workflows.d.ts +3 -1
  26. package/dist/application/runtime/workflows.js +6 -4
  27. package/dist/application/view/define.js +4 -6
  28. package/dist/application/view/frontend.d.ts +2 -2
  29. package/dist/application/view/index.d.ts +1 -1
  30. package/dist/application/view/route.d.ts +0 -14
  31. package/dist/application/view/route.js +1 -64
  32. package/dist/application/workflow/authoring.d.ts +3 -2
  33. package/dist/application/workflow/context.d.ts +8 -2
  34. package/dist/application/workflow/define.d.ts +4 -4
  35. package/dist/application/workflow/define.js +20 -4
  36. package/dist/application/workflow/durable.d.ts +87 -0
  37. package/dist/application/workflow/index.d.ts +3 -2
  38. package/dist/application/workflow/runner/inline.js +3 -4
  39. package/dist/application/workflow/runner/runner.d.ts +2 -2
  40. package/dist/application/workflow/step/output.d.ts +2 -0
  41. package/dist/application/workflow/step/output.js +73 -0
  42. package/dist/application/workflow/workflow.d.ts +13 -3
  43. package/dist/deployment/adapter/adapter.d.ts +55 -13
  44. package/dist/deployment/adapter/bundle/bundle.d.ts +36 -0
  45. package/dist/deployment/adapter/bundle/file.d.ts +10 -0
  46. package/dist/deployment/adapter/bundle/index.d.ts +2 -0
  47. package/dist/deployment/adapter/define.d.ts +4 -3
  48. package/dist/deployment/adapter/define.js +107 -23
  49. package/dist/deployment/adapter/index.d.ts +4 -3
  50. package/dist/deployment/adapter/index.js +1 -0
  51. package/dist/deployment/adapter/release/command.d.ts +33 -0
  52. package/dist/deployment/adapter/release/context.d.ts +94 -0
  53. package/dist/deployment/adapter/release/index.d.ts +4 -0
  54. package/dist/deployment/adapter/release/index.js +1 -0
  55. package/dist/deployment/adapter/release/list.d.ts +53 -0
  56. package/dist/deployment/adapter/release/list.js +1 -0
  57. package/dist/deployment/adapter/release/refusal.d.ts +10 -0
  58. package/dist/deployment/adapter/release/refusal.js +14 -0
  59. package/dist/deployment/adapter/release/result.d.ts +56 -0
  60. package/dist/deployment/adapter/release/result.js +1 -0
  61. package/dist/deployment/address/configuration.d.ts +95 -0
  62. package/dist/deployment/address/configuration.js +273 -0
  63. package/dist/deployment/address/fingerprint.d.ts +5 -0
  64. package/dist/deployment/address/fingerprint.js +27 -0
  65. package/dist/deployment/address/index.d.ts +5 -0
  66. package/dist/deployment/address/index.js +4 -0
  67. package/dist/deployment/address/label.d.ts +42 -0
  68. package/dist/deployment/address/label.js +80 -0
  69. package/dist/deployment/address/line.d.ts +29 -0
  70. package/dist/deployment/address/line.js +53 -0
  71. package/dist/deployment/address/record.d.ts +73 -0
  72. package/dist/deployment/address/record.js +138 -0
  73. package/dist/deployment/address/summary.d.ts +30 -0
  74. package/dist/deployment/address/summary.js +1 -0
  75. package/dist/deployment/address/vectors.d.ts +60 -0
  76. package/dist/deployment/address/vectors.js +517 -0
  77. package/dist/deployment/authoring.d.ts +0 -2
  78. package/dist/deployment/authoring.js +0 -1
  79. package/dist/deployment/build/build.d.ts +8 -2
  80. package/dist/deployment/build/compile.d.ts +4 -4
  81. package/dist/deployment/build/compile.js +19 -17
  82. package/dist/deployment/build/frontend/compilation.d.ts +2 -4
  83. package/dist/deployment/build/frontend/compilation.js +0 -5
  84. package/dist/deployment/build/frontend/digest.js +1 -5
  85. package/dist/deployment/build/index.d.ts +1 -0
  86. package/dist/deployment/build/index.js +1 -0
  87. package/dist/deployment/build/manifest.d.ts +59 -0
  88. package/dist/deployment/build/manifest.js +118 -0
  89. package/dist/deployment/build/material.d.ts +2 -2
  90. package/dist/deployment/build/material.js +28 -13
  91. package/dist/deployment/build/schema.d.ts +2 -2
  92. package/dist/deployment/deployment.d.ts +3 -2
  93. package/dist/deployment/environment.d.ts +6 -0
  94. package/dist/deployment/environment.js +6 -0
  95. package/dist/deployment/index.d.ts +4 -6
  96. package/dist/deployment/index.js +1 -2
  97. package/dist/deployment/release/addressing.d.ts +6 -5
  98. package/dist/deployment/release/addressing.js +2 -3
  99. package/dist/deployment/release/assemble.d.ts +6 -3
  100. package/dist/deployment/release/assemble.js +12 -10
  101. package/dist/deployment/release/release.d.ts +16 -5
  102. package/dist/deployment/release/seal.d.ts +14 -0
  103. package/dist/deployment/release/seal.js +22 -0
  104. package/dist/deployment/release/{publication → served}/callables.d.ts +2 -2
  105. package/dist/deployment/release/{publication → served}/callables.js +2 -2
  106. package/dist/deployment/release/served/index.d.ts +11 -0
  107. package/dist/deployment/release/served/index.js +26 -0
  108. package/dist/deployment/release/{publication → served}/views.d.ts +2 -2
  109. package/dist/deployment/release/{publication → served}/views.js +0 -1
  110. package/dist/deployment/runtime/admission.d.ts +2 -2
  111. package/dist/deployment/runtime/admission.js +5 -5
  112. package/dist/deployment/verify/index.d.ts +3 -4
  113. package/dist/deployment/verify/index.js +2 -3
  114. package/dist/deployment/verify/preflight/bundle.d.ts +18 -0
  115. package/dist/deployment/verify/preflight/bundle.js +71 -0
  116. package/dist/deployment/verify/preflight/index.d.ts +1 -12
  117. package/dist/deployment/verify/preflight/index.js +1 -12
  118. package/dist/deployment/verify/readiness/fetch.d.ts +13 -0
  119. package/dist/deployment/verify/readiness/fetch.js +26 -0
  120. package/dist/deployment/verify/readiness/identity.d.ts +3 -6
  121. package/dist/deployment/verify/readiness/identity.js +3 -3
  122. package/dist/deployment/verify/readiness/index.d.ts +15 -8
  123. package/dist/deployment/verify/readiness/index.js +25 -6
  124. package/dist/deployment/verify/readiness/release.d.ts +8 -0
  125. package/dist/deployment/verify/readiness/release.js +22 -0
  126. package/dist/deployment/worker/address.d.ts +26 -0
  127. package/dist/deployment/worker/address.js +43 -0
  128. package/dist/deployment/worker/build.d.ts +60 -0
  129. package/dist/deployment/worker/build.js +172 -0
  130. package/dist/deployment/worker/configuration.d.ts +73 -0
  131. package/dist/deployment/worker/configuration.js +165 -0
  132. package/dist/deployment/worker/content.d.ts +38 -0
  133. package/dist/deployment/worker/content.js +169 -0
  134. package/dist/deployment/worker/index.d.ts +29 -0
  135. package/dist/deployment/worker/index.js +29 -0
  136. package/dist/deployment/worker/limits.d.ts +30 -0
  137. package/dist/deployment/worker/limits.js +30 -0
  138. package/dist/deployment/worker/record.d.ts +29 -0
  139. package/dist/deployment/worker/record.js +69 -0
  140. package/dist/deployment/worker/request.d.ts +118 -0
  141. package/dist/deployment/worker/request.js +280 -0
  142. package/dist/deployment/worker/response.d.ts +101 -0
  143. package/dist/deployment/worker/response.js +207 -0
  144. package/dist/execution/identity/authentication.d.ts +33 -3
  145. package/dist/execution/identity/authentication.js +85 -40
  146. package/dist/execution/identity/callback.d.ts +16 -15
  147. package/dist/execution/identity/callback.js +21 -16
  148. package/dist/execution/identity/delivery.d.ts +6 -4
  149. package/dist/execution/identity/delivery.js +25 -20
  150. package/dist/execution/identity/identity.d.ts +17 -3
  151. package/dist/execution/identity/identity.js +12 -4
  152. package/dist/execution/identity/jwks.d.ts +5 -0
  153. package/dist/execution/identity/jwks.js +92 -102
  154. package/dist/execution/index.d.ts +4 -4
  155. package/dist/execution/index.js +2 -2
  156. package/dist/execution/invocation/admission/authentication.d.ts +11 -13
  157. package/dist/execution/invocation/admission/authentication.js +48 -44
  158. package/dist/execution/invocation/admission/authority.d.ts +28 -6
  159. package/dist/execution/invocation/admission/authority.js +9 -2
  160. package/dist/execution/invocation/admission/index.d.ts +2 -2
  161. package/dist/execution/invocation/admission/index.js +1 -1
  162. package/dist/execution/invocation/admission/input.d.ts +2 -2
  163. package/dist/execution/invocation/admission/input.js +16 -2
  164. package/dist/execution/invocation/dependency/bind.d.ts +3 -1
  165. package/dist/execution/invocation/dependency/bind.js +36 -16
  166. package/dist/execution/invocation/dispatch/context.d.ts +7 -6
  167. package/dist/execution/invocation/dispatch/context.js +17 -31
  168. package/dist/execution/invocation/dispatch/workflow.js +0 -4
  169. package/dist/execution/invocation/index.d.ts +2 -2
  170. package/dist/execution/invocation/index.js +1 -1
  171. package/dist/execution/invocation/integration/call.d.ts +2 -1
  172. package/dist/execution/invocation/integration/call.js +1 -1
  173. package/dist/execution/invocation/integration/clients.d.ts +1 -1
  174. package/dist/execution/invocation/invocation.js +49 -16
  175. package/dist/execution/invocation/result/errors.d.ts +0 -10
  176. package/dist/execution/invocation/result/errors.js +0 -17
  177. package/dist/execution/invocation/result/index.d.ts +2 -2
  178. package/dist/execution/invocation/result/index.js +1 -1
  179. package/dist/execution/invocation/result/project.js +41 -1
  180. package/dist/execution/node/serve.d.ts +2 -2
  181. package/dist/execution/node/serve.js +1 -1
  182. package/dist/execution/runtime/index.d.ts +1 -0
  183. package/dist/execution/runtime/index.js +1 -0
  184. package/dist/execution/runtime/load.d.ts +3 -3
  185. package/dist/execution/runtime/load.js +3 -2
  186. package/dist/execution/runtime/release.d.ts +17 -0
  187. package/dist/execution/runtime/release.js +7 -0
  188. package/dist/execution/serve.d.ts +10 -4
  189. package/dist/execution/serve.js +3 -0
  190. package/dist/execution/service/create.js +41 -7
  191. package/dist/execution/service/initialization.d.ts +4 -4
  192. package/dist/execution/service/initialization.js +23 -14
  193. package/dist/execution/service/release.d.ts +2 -2
  194. package/dist/execution/service/release.js +3 -2
  195. package/dist/execution/service/service.d.ts +14 -5
  196. package/dist/execution/service/serving/delivery.d.ts +5 -0
  197. package/dist/execution/service/{publication → serving}/delivery.js +4 -1
  198. package/dist/execution/service/{publication → serving}/index.d.ts +1 -1
  199. package/dist/execution/service/serving/installation.d.ts +4 -0
  200. package/dist/execution/service/serving/installation.js +9 -0
  201. package/dist/execution/service/serving/source.d.ts +11 -0
  202. package/dist/execution/service/serving/source.js +15 -0
  203. package/dist/execution/workflows/discovery.d.ts +14 -0
  204. package/dist/execution/workflows/discovery.js +151 -0
  205. package/dist/execution/workflows/engine.d.ts +52 -0
  206. package/dist/execution/workflows/engine.js +1 -0
  207. package/dist/execution/workflows/envelope.d.ts +12 -0
  208. package/dist/execution/workflows/envelope.js +46 -0
  209. package/dist/execution/workflows/failure.d.ts +11 -0
  210. package/dist/execution/workflows/failure.js +43 -0
  211. package/dist/execution/workflows/index.d.ts +4 -0
  212. package/dist/execution/workflows/index.js +3 -0
  213. package/dist/execution/workflows/options.d.ts +34 -0
  214. package/dist/execution/workflows/options.js +65 -0
  215. package/dist/execution/workflows/receiver.d.ts +21 -0
  216. package/dist/execution/workflows/receiver.js +92 -0
  217. package/dist/execution/workflows/route.d.ts +12 -0
  218. package/dist/execution/workflows/route.js +35 -0
  219. package/dist/execution/workflows/run.d.ts +22 -0
  220. package/dist/execution/workflows/run.js +223 -0
  221. package/dist/index.d.ts +4 -4
  222. package/dist/index.js +2 -2
  223. package/dist/platform/graph/alias.d.ts +1 -5
  224. package/dist/platform/graph/alias.js +1 -5
  225. package/dist/platform/graph/document/index.d.ts +1 -1
  226. package/dist/platform/graph/document/index.js +1 -1
  227. package/dist/platform/graph/index.d.ts +1 -1
  228. package/dist/platform/graph/index.js +1 -1
  229. package/dist/platform/release/index.d.ts +2 -0
  230. package/dist/platform/release/index.js +2 -0
  231. package/dist/platform/schema/callable-authoring.d.ts +21 -0
  232. package/dist/platform/schema/callable-authoring.js +27 -0
  233. package/dist/platform/schema/class-authoring.d.ts +61 -11
  234. package/dist/platform/schema/class-authoring.js +37 -4
  235. package/dist/platform/schema/class-icon-svg.d.ts +9 -0
  236. package/dist/platform/schema/class-icon-svg.js +29 -0
  237. package/dist/platform/schema/class-icon.d.ts +3 -8
  238. package/dist/platform/schema/class-icon.js +2 -29
  239. package/dist/platform/schema/index.d.ts +6 -4
  240. package/dist/platform/schema/index.js +2 -1
  241. package/dist/platform/schema/property.d.ts +5 -0
  242. package/dist/platform/schema/schema-authoring.d.ts +14 -7
  243. package/dist/platform/schema/schema-authoring.js +5 -1
  244. package/dist/platform/versioning/dependents.d.ts +18 -0
  245. package/dist/platform/versioning/dependents.js +15 -0
  246. package/dist/platform/versioning/index.d.ts +5 -0
  247. package/dist/platform/versioning/index.js +5 -0
  248. package/dist/platform/versioning/name.d.ts +38 -0
  249. package/dist/platform/versioning/name.js +58 -0
  250. package/dist/platform/versioning/reference.d.ts +48 -0
  251. package/dist/platform/versioning/reference.js +95 -0
  252. package/dist/platform/versioning/version.d.ts +72 -0
  253. package/dist/platform/versioning/version.js +98 -0
  254. package/dist/project/admit.js +1 -5
  255. package/dist/project/define.d.ts +4 -4
  256. package/dist/project/define.js +55 -35
  257. package/dist/project/index.d.ts +1 -1
  258. package/dist/project/install-command.d.ts +6 -0
  259. package/dist/project/install-command.js +9 -0
  260. package/dist/project/project.d.ts +10 -8
  261. package/dist/testing/dataset/define.d.ts +1 -1
  262. package/dist/testing/load.js +1 -1
  263. package/dist/tooling/cli/adapter-command.d.ts +35 -0
  264. package/dist/tooling/cli/adapter-command.js +66 -0
  265. package/dist/tooling/cli/arguments.d.ts +17 -6
  266. package/dist/tooling/cli/arguments.js +175 -52
  267. package/dist/tooling/cli/build.d.ts +55 -0
  268. package/dist/tooling/cli/build.js +77 -0
  269. package/dist/tooling/cli/bun.d.ts +0 -1
  270. package/dist/tooling/cli/bun.js +0 -7
  271. package/dist/tooling/cli/commit.d.ts +35 -0
  272. package/dist/tooling/cli/commit.js +235 -0
  273. package/dist/tooling/cli/deploy-mode.d.ts +26 -0
  274. package/dist/tooling/cli/deploy-mode.js +59 -0
  275. package/dist/tooling/cli/deploy-result.d.ts +80 -0
  276. package/dist/tooling/cli/deploy-result.js +64 -0
  277. package/dist/tooling/cli/diff/declared.d.ts +7 -0
  278. package/dist/tooling/cli/diff/declared.js +27 -0
  279. package/dist/tooling/cli/diff/index.d.ts +30 -0
  280. package/dist/tooling/cli/diff/index.js +58 -0
  281. package/dist/tooling/cli/diff/render.d.ts +15 -0
  282. package/dist/tooling/cli/diff/render.js +131 -0
  283. package/dist/tooling/cli/diff/report.d.ts +88 -0
  284. package/dist/tooling/cli/diff/report.js +154 -0
  285. package/dist/tooling/cli/dotenv.d.ts +2 -2
  286. package/dist/tooling/cli/dotenv.js +3 -33
  287. package/dist/tooling/cli/help.js +173 -60
  288. package/dist/tooling/cli/immutable-deployment.d.ts +83 -0
  289. package/dist/tooling/cli/immutable-deployment.js +135 -0
  290. package/dist/tooling/cli/index.d.ts +12 -4
  291. package/dist/tooling/cli/index.js +6 -3
  292. package/dist/tooling/cli/installed-on.d.ts +83 -0
  293. package/dist/tooling/cli/installed-on.js +156 -0
  294. package/dist/tooling/cli/list.d.ts +152 -0
  295. package/dist/tooling/cli/list.js +331 -0
  296. package/dist/tooling/cli/log.d.ts +5 -0
  297. package/dist/tooling/cli/log.js +9 -0
  298. package/dist/tooling/cli/orchestrate.d.ts +0 -6
  299. package/dist/tooling/cli/orchestrate.js +246 -90
  300. package/dist/tooling/cli/project.d.ts +3 -3
  301. package/dist/tooling/cli/publish/index.d.ts +81 -0
  302. package/dist/tooling/cli/publish/index.js +383 -0
  303. package/dist/tooling/cli/publish/report.d.ts +49 -0
  304. package/dist/tooling/cli/publish/report.js +15 -0
  305. package/dist/tooling/cli/registry/client.d.ts +121 -0
  306. package/dist/tooling/cli/registry/client.js +354 -0
  307. package/dist/tooling/cli/registry/error.d.ts +11 -0
  308. package/dist/tooling/cli/registry/error.js +17 -0
  309. package/dist/tooling/cli/registry/executable.d.ts +35 -0
  310. package/dist/tooling/cli/registry/executable.js +96 -0
  311. package/dist/tooling/cli/registry/index.d.ts +9 -0
  312. package/dist/tooling/cli/registry/index.js +8 -0
  313. package/dist/tooling/cli/registry/installations.d.ts +67 -0
  314. package/dist/tooling/cli/registry/installations.js +108 -0
  315. package/dist/tooling/cli/registry/process.d.ts +36 -0
  316. package/dist/tooling/cli/registry/process.js +119 -0
  317. package/dist/tooling/cli/secrets.d.ts +9 -0
  318. package/dist/tooling/cli/secrets.js +19 -0
  319. package/dist/tooling/cli/yank.d.ts +34 -0
  320. package/dist/tooling/cli/yank.js +32 -0
  321. package/dist/tooling/linter/implementations/source/callable-requirements.d.ts +1 -1
  322. package/dist/tooling/linter/implementations/source/callable-requirements.js +10 -10
  323. package/dist/tooling/linter/implementations/source/dependencies.js +12 -10
  324. package/dist/tooling/linter/implementations/source/global.js +1 -2
  325. package/dist/tooling/linter/implementations/source/mutations.js +17 -17
  326. package/dist/tooling/linter/implementations/source/providers.js +5 -5
  327. package/dist/tooling/linter/implementations/source/verifiers.js +0 -2
  328. package/dist/tooling/linter/implementations/source/views.js +2 -2
  329. package/dist/tooling/linter/policy/generated.js +14 -63
  330. package/dist/tooling/linter/requirements/registry.js +1 -6
  331. package/dist/tooling/packaging/declarations/ownership.js +1 -1
  332. package/dist/tooling/packaging/finalize.d.ts +1 -1
  333. package/dist/tooling/packaging/finalize.js +1 -1
  334. package/package.json +39 -13
  335. package/dist/application/application.d.ts +0 -28
  336. package/dist/application/query/execution/projection.d.ts +0 -3
  337. package/dist/application/query/execution/projection.js +0 -3
  338. package/dist/deployment/adapter/deploy/context.d.ts +0 -15
  339. package/dist/deployment/adapter/deploy/index.d.ts +0 -2
  340. package/dist/deployment/adapter/deploy/result.d.ts +0 -50
  341. package/dist/deployment/adapter/prepare/artifact.d.ts +0 -33
  342. package/dist/deployment/adapter/prepare/context.d.ts +0 -23
  343. package/dist/deployment/adapter/prepare/index.d.ts +0 -2
  344. package/dist/deployment/deploy.d.ts +0 -20
  345. package/dist/deployment/deploy.js +0 -31
  346. package/dist/deployment/release/publication/index.d.ts +0 -6
  347. package/dist/deployment/release/publication/index.js +0 -6
  348. package/dist/deployment/release/publication/manifest.d.ts +0 -3
  349. package/dist/deployment/release/publication/manifest.js +0 -5
  350. package/dist/deployment/release/publication/requirements.d.ts +0 -3
  351. package/dist/deployment/release/publication/requirements.js +0 -3
  352. package/dist/deployment/release/publication/seal.d.ts +0 -10
  353. package/dist/deployment/release/publication/seal.js +0 -39
  354. package/dist/deployment/verify/preflight/artifact.d.ts +0 -6
  355. package/dist/deployment/verify/preflight/artifact.js +0 -122
  356. package/dist/deployment/verify/preflight/publication.d.ts +0 -4
  357. package/dist/deployment/verify/preflight/publication.js +0 -14
  358. package/dist/deployment/verify/readiness/deployment.d.ts +0 -3
  359. package/dist/deployment/verify/readiness/deployment.js +0 -151
  360. package/dist/deployment/verify/readiness/publication.d.ts +0 -11
  361. package/dist/deployment/verify/readiness/publication.js +0 -41
  362. package/dist/execution/service/errors.d.ts +0 -3
  363. package/dist/execution/service/errors.js +0 -3
  364. package/dist/execution/service/publication/delivery.d.ts +0 -2
  365. package/dist/execution/service/publication/installation.d.ts +0 -3
  366. package/dist/execution/service/publication/installation.js +0 -8
  367. package/dist/execution/service/publication/source.d.ts +0 -3
  368. package/dist/execution/service/publication/source.js +0 -11
  369. package/dist/platform/publication/index.d.ts +0 -2
  370. package/dist/platform/publication/index.js +0 -2
  371. package/dist/tooling/cli/astrale/authority.d.ts +0 -5
  372. package/dist/tooling/cli/astrale/authority.js +0 -11
  373. package/dist/tooling/cli/astrale/executable.d.ts +0 -2
  374. package/dist/tooling/cli/astrale/executable.js +0 -47
  375. package/dist/tooling/cli/astrale/failure.d.ts +0 -6
  376. package/dist/tooling/cli/astrale/failure.js +0 -48
  377. package/dist/tooling/cli/astrale/instance.d.ts +0 -11
  378. package/dist/tooling/cli/astrale/instance.js +0 -52
  379. package/dist/tooling/cli/astrale/process.d.ts +0 -13
  380. package/dist/tooling/cli/astrale/process.js +0 -94
  381. package/dist/tooling/cli/astrale/version.d.ts +0 -18
  382. package/dist/tooling/cli/astrale/version.js +0 -55
  383. package/dist/tooling/cli/credential.d.ts +0 -2
  384. package/dist/tooling/cli/credential.js +0 -57
  385. package/dist/tooling/cli/deprecations.d.ts +0 -9
  386. package/dist/tooling/cli/deprecations.js +0 -15
  387. package/dist/tooling/cli/development/candidate.d.ts +0 -25
  388. package/dist/tooling/cli/development/candidate.js +0 -176
  389. package/dist/tooling/cli/development/deployment.d.ts +0 -16
  390. package/dist/tooling/cli/development/deployment.js +0 -39
  391. package/dist/tooling/cli/development/develop.d.ts +0 -11
  392. package/dist/tooling/cli/development/develop.js +0 -243
  393. package/dist/tooling/cli/development/lease.d.ts +0 -18
  394. package/dist/tooling/cli/development/lease.js +0 -163
  395. package/dist/tooling/cli/development/lifecycle.d.ts +0 -9
  396. package/dist/tooling/cli/development/lifecycle.js +0 -43
  397. package/dist/tooling/cli/development/project-imports.d.ts +0 -22
  398. package/dist/tooling/cli/development/project-imports.js +0 -39
  399. package/dist/tooling/cli/development/project-lock.d.ts +0 -16
  400. package/dist/tooling/cli/development/project-lock.js +0 -41
  401. package/dist/tooling/cli/development/rebuild.d.ts +0 -13
  402. package/dist/tooling/cli/development/rebuild.js +0 -58
  403. package/dist/tooling/cli/development/release-evidence.d.ts +0 -4
  404. package/dist/tooling/cli/development/release-evidence.js +0 -10
  405. package/dist/tooling/cli/development/report.d.ts +0 -6
  406. package/dist/tooling/cli/development/report.js +0 -14
  407. package/dist/tooling/cli/development/session-file.d.ts +0 -53
  408. package/dist/tooling/cli/development/session-file.js +0 -337
  409. package/dist/tooling/cli/development/source-watch.d.ts +0 -14
  410. package/dist/tooling/cli/development/source-watch.js +0 -140
  411. package/dist/tooling/cli/development/sources.d.ts +0 -7
  412. package/dist/tooling/cli/development/sources.js +0 -48
  413. package/dist/tooling/cli/development/target-lock.d.ts +0 -16
  414. package/dist/tooling/cli/development/target-lock.js +0 -68
  415. package/dist/tooling/cli/development/view.d.ts +0 -28
  416. package/dist/tooling/cli/development/view.js +0 -151
  417. package/dist/tooling/cli/environment-release.d.ts +0 -21
  418. package/dist/tooling/cli/environment-release.js +0 -46
  419. package/dist/tooling/cli/evidence.d.ts +0 -11
  420. package/dist/tooling/cli/evidence.js +0 -53
  421. package/dist/tooling/cli/installation/index.d.ts +0 -2
  422. package/dist/tooling/cli/installation/index.js +0 -1
  423. package/dist/tooling/cli/installation/observation.d.ts +0 -10
  424. package/dist/tooling/cli/installation/observation.js +0 -44
  425. package/dist/tooling/cli/installation/reconcile.d.ts +0 -32
  426. package/dist/tooling/cli/installation/reconcile.js +0 -122
  427. package/dist/tooling/linter/implementations/source/migrations.d.ts +0 -2
  428. package/dist/tooling/linter/implementations/source/migrations.js +0 -113
  429. package/dist/tooling/linter/qualification/index.d.ts +0 -10
  430. package/dist/tooling/linter/qualification/index.js +0 -2
  431. package/dist/tooling/linter/qualification/query-fixtures.d.ts +0 -2
  432. package/dist/tooling/linter/qualification/query-fixtures.js +0 -68
  433. package/dist/tooling/linter/qualification/runner.d.ts +0 -3
  434. package/dist/tooling/linter/qualification/runner.js +0 -6
  435. /package/dist/application/{application.js → domain.js} +0 -0
  436. /package/dist/{deployment/adapter/deploy/context.js → application/workflow/durable.js} +0 -0
  437. /package/dist/deployment/adapter/{deploy/index.js → bundle/bundle.js} +0 -0
  438. /package/dist/deployment/adapter/{deploy/result.js → bundle/file.js} +0 -0
  439. /package/dist/deployment/adapter/{prepare → bundle}/index.js +0 -0
  440. /package/dist/deployment/adapter/{prepare/artifact.js → release/command.js} +0 -0
  441. /package/dist/deployment/adapter/{prepare → release}/context.js +0 -0
  442. /package/dist/deployment/release/{publication → served}/routes.d.ts +0 -0
  443. /package/dist/deployment/release/{publication → served}/routes.js +0 -0
  444. /package/dist/execution/service/{publication → serving}/index.js +0 -0
@@ -1,32 +1,34 @@
1
+ import { EXECUTION_CLAIM } from '@astrale-os/kernel-protocol/issuer/claims';
1
2
  import { SignJWT } from 'jose';
2
3
  import { protocolError } from '../invocation/result/index.js';
3
4
  import { requireLive } from './errors.js';
4
5
  export const maximumCallbackTtlSeconds = 120;
5
6
  export const maximumCallbackDelegationTtlSeconds = 60;
6
7
  const CALLBACK_DELEGATION_SKEW_SECONDS = 5;
7
- /** Exact callback Grant expressions corresponding to the Kernel Domain graph modes. */
8
+ /** The Domain's own authority, independent of any caller. */
9
+ export const selfIdentity = Object.freeze({ kind: 'identity', self: true });
10
+ /** Exact single-identity callback authority for each Kernel Domain graph mode. */
8
11
  export function callbackIdentities(nested) {
9
- const caller = Object.freeze({ kind: 'identity', credential: nested });
10
- const self = Object.freeze({ kind: 'identity', self: true });
11
12
  return Object.freeze({
12
- caller,
13
- self,
14
- union: Object.freeze({
15
- kind: 'union',
16
- operands: Object.freeze([self, caller]),
17
- }),
13
+ caller: Object.freeze({ kind: 'identity', credential: nested }),
14
+ self: selfIdentity,
18
15
  });
19
16
  }
20
17
  export async function signDomainCallback(signing, issuer, subject, audience, execution) {
21
- return (await sign(signing, issuer, subject, audience, { kind: 'identity', self: true }, execution)).credential;
18
+ return (await sign(signing, issuer, subject, audience, selfIdentity, execution)).credential;
22
19
  }
23
20
  export async function signCallback(signing, issuer, subject, audience, expression, carrier, execution) {
24
21
  const maximum = carrier.exp ?? Number.POSITIVE_INFINITY;
25
22
  return (await sign(signing, issuer, subject, audience, expression, execution, maximum)).credential;
26
23
  }
27
- /** Reuse one exact callback authority partition, refreshing only near its bounded expiry. */
28
- export function createCallbackCredentialResolver(signing, issuer, subject, audience, expression, carrier, execution) {
29
- const maximum = carrier.exp ?? Number.POSITIVE_INFINITY;
24
+ /**
25
+ * Reuse one exact callback authority partition, refreshing only near its bounded expiry. Without a
26
+ * carrier the callback is the Domain's own authority, bounded by the execution alone. An
27
+ * `executionId` is the durable Execution a step's executor credential names in `EXECUTION_CLAIM`;
28
+ * no caller-bound callback names one.
29
+ */
30
+ export function createCallbackCredentialResolver(signing, issuer, subject, audience, expression, carrier, execution, executionId) {
31
+ const maximum = carrier?.exp ?? Number.POSITIVE_INFINITY;
30
32
  let cached;
31
33
  let pending;
32
34
  return async (signal) => {
@@ -38,7 +40,7 @@ export function createCallbackCredentialResolver(signing, issuer, subject, audie
38
40
  return cached;
39
41
  }
40
42
  if (pending === undefined) {
41
- const current = sign(signing, issuer, subject, audience, expression, execution, maximum).then((signed) => {
43
+ const current = sign(signing, issuer, subject, audience, expression, execution, maximum, executionId).then((signed) => {
42
44
  const delegateTtlSeconds = Math.min(maximumCallbackDelegationTtlSeconds, signed.expiresAt - signed.issuedAt - CALLBACK_DELEGATION_SKEW_SECONDS);
43
45
  if (delegateTtlSeconds < 1) {
44
46
  throw protocolError('AUTH_INVALID', 'Credential is invalid.');
@@ -61,7 +63,7 @@ export function createCallbackCredentialResolver(signing, issuer, subject, audie
61
63
  return withSignal(pending, signal);
62
64
  };
63
65
  }
64
- async function sign(signing, issuer, subject, audience, expression, execution, maximum = Number.POSITIVE_INFINITY) {
66
+ async function sign(signing, issuer, subject, audience, expression, execution, maximum = Number.POSITIVE_INFINITY, executionId) {
65
67
  requireLive(execution);
66
68
  const privateKey = await withSignal(signing.privateKey, execution.signal);
67
69
  requireLive(execution);
@@ -70,7 +72,10 @@ async function sign(signing, issuer, subject, audience, expression, execution, m
70
72
  if (!Number.isFinite(expiresAt) || expiresAt <= now) {
71
73
  throw protocolError('AUTH_INVALID', 'Credential is invalid.');
72
74
  }
73
- const credential = await withSignal(new SignJWT({ grant: { v: 1, expr: expression } })
75
+ const credential = await withSignal(new SignJWT({
76
+ grant: { v: 1, expr: expression },
77
+ ...(executionId === undefined ? {} : { [EXECUTION_CLAIM]: executionId }),
78
+ })
74
79
  .setProtectedHeader({
75
80
  alg: signing.algorithm,
76
81
  ...(signing.keyId === undefined ? {} : { kid: signing.keyId }),
@@ -1,6 +1,8 @@
1
- import type { publication as serverPublication } from '@astrale-os/kernel-server';
2
- import * as publication from '@astrale-os/kernel-protocol/publication';
1
+ import type { release as serverRelease } from '@astrale-os/kernel-server';
2
+ import * as release from '@astrale-os/kernel-protocol/release';
3
3
  import type { IssuerId } from '../../platform/auth/index.js';
4
4
  import type { SigningMaterial } from './signing.js';
5
- /** Create one stateless, nonce-bound public Delivery provider for an exact Publication. */
6
- export declare function publicationDelivery(signing: SigningMaterial, issuer: IssuerId, subject: string, deployed: publication.Publication): serverPublication.delivery.Provider;
5
+ /**
6
+ * Create one stateless, nonce-bound public Delivery v2 provider for the exact deployment release.
7
+ */
8
+ export declare function releaseDelivery(signing: SigningMaterial, issuer: IssuerId, subject: string, deployed: release.DomainRelease): serverRelease.delivery.Provider;
@@ -1,34 +1,39 @@
1
- import * as publication from '@astrale-os/kernel-protocol/publication';
1
+ import * as release from '@astrale-os/kernel-protocol/release';
2
2
  import { SignJWT } from 'jose';
3
3
  const ATTESTATION_TTL_SECONDS = 60;
4
- /** Create one stateless, nonce-bound public Delivery provider for an exact Publication. */
5
- export function publicationDelivery(signing, issuer, subject, deployed) {
4
+ /**
5
+ * Create one stateless, nonce-bound public Delivery v2 provider for the exact deployment release.
6
+ */
7
+ export function releaseDelivery(signing, issuer, subject, deployed) {
6
8
  return Object.freeze({
7
9
  async create(request, context) {
8
10
  context.signal.throwIfAborted();
9
- const now = Math.floor(Date.now() / 1_000);
10
- const attestation = await new SignJWT({
11
- purpose: publication.delivery.PURPOSE,
11
+ const attestation = await attest(signing, issuer, subject, request.kernel, {
12
+ purpose: release.delivery.PURPOSE,
12
13
  nonce: request.nonce,
13
- etag: deployed.etag,
14
+ release: deployed.digest,
14
15
  schemaRevision: deployed.schema.revision,
15
- })
16
- .setProtectedHeader({
17
- alg: signing.algorithm,
18
- ...(signing.keyId === undefined ? {} : { kid: signing.keyId }),
19
- })
20
- .setIssuer(issuer)
21
- .setSubject(subject)
22
- .setAudience(request.kernel)
23
- .setExpirationTime(now + ATTESTATION_TTL_SECONDS)
24
- .sign(await signing.privateKey);
16
+ });
25
17
  context.signal.throwIfAborted();
26
- return publication.delivery.accept({
18
+ return release.delivery.accept({
27
19
  format: 'astrale.domain.delivery',
28
- version: 1,
29
- publication: deployed,
20
+ version: 2,
21
+ release: deployed,
30
22
  attestation,
31
23
  });
32
24
  },
33
25
  });
34
26
  }
27
+ async function attest(signing, issuer, subject, kernel, claims) {
28
+ const now = Math.floor(Date.now() / 1_000);
29
+ return new SignJWT(claims)
30
+ .setProtectedHeader({
31
+ alg: signing.algorithm,
32
+ ...(signing.keyId === undefined ? {} : { kid: signing.keyId }),
33
+ })
34
+ .setIssuer(issuer)
35
+ .setSubject(subject)
36
+ .setAudience(kernel)
37
+ .setExpirationTime(now + ATTESTATION_TTL_SECONDS)
38
+ .sign(await signing.privateKey);
39
+ }
@@ -1,7 +1,9 @@
1
1
  import type { Fetch } from '@astrale-os/kernel-client';
2
- import type * as publicationProtocol from '@astrale-os/kernel-protocol/publication';
3
- import type { Issuer, exchange, publication } from '@astrale-os/kernel-server';
2
+ import type * as releaseProtocol from '@astrale-os/kernel-protocol/release';
3
+ import type { Issuer, exchange, release } from '@astrale-os/kernel-server';
4
4
  import type { IssuerId, JsonWebKey } from '../../platform/auth/index.js';
5
+ import type { ClientSession } from '../../platform/client/session/index.js';
6
+ import type { NodeId } from '../../platform/graph/node/index.js';
5
7
  import type { InvocationAuthority } from '../invocation/index.js';
6
8
  import type { ExchangeOptions } from './exchange.js';
7
9
  import type { IdentityNetworkPolicy } from './jwks.js';
@@ -9,7 +11,19 @@ import type { IdentityNetworkPolicy } from './jwks.js';
9
11
  export interface Identity extends Issuer, InvocationAuthority {
10
12
  readonly subject: string;
11
13
  readonly tokenExchange?: exchange.Provider;
12
- delivery(publication: publicationProtocol.Publication): publication.delivery.Provider;
14
+ /**
15
+ * Delivery v2 for the exact release this deployment serves.
16
+ */
17
+ delivery(served: releaseProtocol.DomainRelease): release.delivery.Provider;
18
+ /**
19
+ * The Domain's own authority toward one Kernel for a step of the durable Execution `executionId`
20
+ * (`ctx.execution.id`), which no caller credential carries; its credentials name `executionId` in
21
+ * `EXECUTION_CLAIM`. Required to serve durable Workflows; the caller closes the Session.
22
+ */
23
+ executor?(kernel: IssuerId, executionId: NodeId, execution: {
24
+ readonly deadline: number;
25
+ readonly signal: AbortSignal;
26
+ }): ClientSession;
13
27
  }
14
28
  export interface IdentityInput extends IdentityNetworkPolicy {
15
29
  readonly issuer: IssuerId;
@@ -1,5 +1,5 @@
1
- import { admit, authenticate } from './authentication.js';
2
- import { publicationDelivery } from './delivery.js';
1
+ import { admit, authenticate, executorSession, selfInvocation } from './authentication.js';
2
+ import { releaseDelivery } from './delivery.js';
3
3
  import { httpIssuer } from './errors.js';
4
4
  import { maximumExchangeTtl, tokenExchange } from './exchange.js';
5
5
  import { createVerificationBasisResolver } from './jwks.js';
@@ -49,9 +49,11 @@ export function createIdentity(input) {
49
49
  ? {}
50
50
  : { loadIssuerPublicKeys: input.loadIssuerPublicKeys }),
51
51
  ...(exchangeProvider === undefined ? {} : { tokenExchange: exchangeProvider }),
52
- delivery: (publication) => publicationDelivery(material, issuer, input.subject, publication),
52
+ delivery: (served) => releaseDelivery(material, issuer, input.subject, served),
53
53
  admit: (request) => admit(request, configuration),
54
+ executor: (kernel, executionId, execution) => executorSession(kernel, executionId, execution, configuration),
54
55
  authenticate: (request) => authenticate(request.credential, request.via.issuer, request.context.execution, configuration),
56
+ self: async (request) => selfInvocation(request.via.issuer, request.context.execution, configuration),
55
57
  });
56
58
  }
57
59
  export function identity(input) {
@@ -67,6 +69,8 @@ export function identity(input) {
67
69
  'delivery',
68
70
  'admit',
69
71
  'authenticate',
72
+ 'self',
73
+ 'executor',
70
74
  ]);
71
75
  if (Reflect.ownKeys(input).some((key) => !allowed.has(key)) ||
72
76
  typeof input.subject !== 'string' ||
@@ -74,7 +78,9 @@ export function identity(input) {
74
78
  typeof input.loadPublicKeys !== 'function' ||
75
79
  typeof input.delivery !== 'function' ||
76
80
  typeof input.admit !== 'function' ||
77
- typeof input.authenticate !== 'function') {
81
+ typeof input.authenticate !== 'function' ||
82
+ typeof input.self !== 'function' ||
83
+ (input.executor !== undefined && typeof input.executor !== 'function')) {
78
84
  invalid();
79
85
  }
80
86
  const receiver = Object.freeze({ ...input });
@@ -92,6 +98,8 @@ export function identity(input) {
92
98
  delivery: receiver.delivery.bind(receiver),
93
99
  admit: receiver.admit.bind(receiver),
94
100
  authenticate: receiver.authenticate.bind(receiver),
101
+ self: receiver.self.bind(receiver),
102
+ ...(receiver.executor === undefined ? {} : { executor: receiver.executor.bind(receiver) }),
95
103
  });
96
104
  }
97
105
  function invalid() {
@@ -16,6 +16,11 @@ export interface VerificationBasisResolver {
16
16
  /**
17
17
  * Retain only recently admitted public issuer material for one execution Identity.
18
18
  * An unseen key ID may refresh once per cooldown; failures never replace a usable basis.
19
+ *
20
+ * Callers share admitted bases, never a discovery in flight: each refresh runs on its own caller's
21
+ * fetch and signal. A Worker binds a subrequest to the request that started it and, once that
22
+ * request is cancelled, never settles it, so a shared refresh would hold every later caller of the
23
+ * issuer until its own deadline, for as long as the isolate lives.
19
24
  */
20
25
  export declare function createVerificationBasisResolver(fetch: Fetch, policy: IdentityNetworkPolicy, now?: () => number): VerificationBasisResolver;
21
26
  export declare function verifyCredential(input: CredentialInput, audience: IssuerId, bases: VerificationBasisResolver, signal: AbortSignal, policy: IdentityNetworkPolicy): Promise<{
@@ -8,13 +8,37 @@ const MAXIMUM_DISCOVERY_BYTES = 256 * 1024;
8
8
  const MAXIMUM_VERIFICATION_BASES = 64;
9
9
  const VERIFICATION_BASIS_TTL_MS = 60_000;
10
10
  const UNKNOWN_KEY_REFRESH_COOLDOWN_MS = 60_000;
11
+ const DISCOVERY_RETRY_DELAY_MS = 250;
12
+ // Only typed transport failures are replayable. Browser TypeError, TLS, HTTP and document
13
+ // admission failures carry no evidence that repeating the request can safely recover.
14
+ const TRANSIENT_TRANSPORT_CODES = new Set([
15
+ 'ENOTFOUND',
16
+ 'EAI_AGAIN',
17
+ 'ECONNRESET',
18
+ 'ETIMEDOUT',
19
+ 'UND_ERR_CONNECT_TIMEOUT',
20
+ 'UND_ERR_SOCKET',
21
+ ]);
11
22
  /**
12
23
  * Retain only recently admitted public issuer material for one execution Identity.
13
24
  * An unseen key ID may refresh once per cooldown; failures never replace a usable basis.
25
+ *
26
+ * Callers share admitted bases, never a discovery in flight: each refresh runs on its own caller's
27
+ * fetch and signal. A Worker binds a subrequest to the request that started it and, once that
28
+ * request is cancelled, never settles it, so a shared refresh would hold every later caller of the
29
+ * issuer until its own deadline, for as long as the isolate lives.
14
30
  */
15
31
  export function createVerificationBasisResolver(fetch, policy, now = Date.now) {
16
32
  const bases = new Map();
17
- const pending = new Map();
33
+ const retain = (issuer, entry) => {
34
+ if (bases.size >= MAXIMUM_VERIFICATION_BASES && !bases.has(issuer)) {
35
+ const oldest = bases.keys().next().value;
36
+ if (oldest !== undefined)
37
+ bases.delete(oldest);
38
+ }
39
+ bases.delete(issuer);
40
+ bases.set(issuer, Object.freeze(entry));
41
+ };
18
42
  return Object.freeze({
19
43
  async resolve(issuer, keyId, signal) {
20
44
  signal.throwIfAborted();
@@ -27,66 +51,33 @@ export function createVerificationBasisResolver(fetch, policy, now = Date.now) {
27
51
  const unknownKeyCooldown = cached?.unknownKeyRefreshedAt !== undefined &&
28
52
  observedAt - cached.unknownKeyRefreshedAt >= 0 &&
29
53
  observedAt - cached.unknownKeyRefreshedAt < UNKNOWN_KEY_REFRESH_COOLDOWN_MS;
30
- if (fresh && knownKey) {
31
- bases.delete(issuer);
32
- bases.set(issuer, cached);
54
+ if (fresh && (knownKey || unknownKeyCooldown)) {
55
+ retain(issuer, cached);
33
56
  return cached.basis;
34
57
  }
35
58
  const unknownKeyRefresh = cached !== undefined && !knownKey;
36
- let refresh = pending.get(issuer);
37
- if (refresh === undefined && fresh && unknownKeyCooldown) {
38
- bases.delete(issuer);
39
- bases.set(issuer, cached);
40
- return cached.basis;
41
- }
42
- if (refresh === undefined && unknownKeyRefresh && cached !== undefined) {
43
- bases.set(issuer, Object.freeze({ ...cached, unknownKeyRefreshedAt: observedAt }));
59
+ let basis;
60
+ try {
61
+ basis = await discover(issuer, fetch, signal, policy);
44
62
  }
45
- if (refresh === undefined) {
46
- const controller = new AbortController();
47
- refresh = {
48
- controller,
49
- operation: undefined,
50
- subscribers: 0,
51
- settled: false,
52
- unknownKeyRefresh,
53
- requestedKeyIds: new Set(keyId === undefined ? [] : [keyId]),
54
- };
55
- const owned = refresh;
56
- owned.operation = discover(issuer, fetch, controller.signal, policy)
57
- .then((basis) => {
58
- controller.signal.throwIfAborted();
59
- const refreshedAt = now();
60
- if (bases.size >= MAXIMUM_VERIFICATION_BASES && !bases.has(issuer)) {
61
- const oldest = bases.keys().next().value;
62
- if (oldest !== undefined)
63
- bases.delete(oldest);
64
- }
65
- bases.delete(issuer);
66
- bases.set(issuer, Object.freeze({
67
- basis,
68
- refreshedAt,
69
- ...(owned.unknownKeyRefresh ||
70
- [...owned.requestedKeyIds].some((requested) => !basis.keys.some((candidate) => candidate.kid === requested))
71
- ? { unknownKeyRefreshedAt: refreshedAt }
72
- : {}),
73
- }));
74
- return basis;
75
- })
76
- .finally(() => {
77
- owned.settled = true;
78
- if (pending.get(issuer) === owned)
79
- pending.delete(issuer);
80
- });
81
- pending.set(issuer, owned);
63
+ catch (cause) {
64
+ // A failed unknown-key refresh spends the cooldown and keeps the usable basis.
65
+ const current = bases.get(issuer);
66
+ if (unknownKeyRefresh && !signal.aborted && current !== undefined) {
67
+ retain(issuer, { ...current, unknownKeyRefreshedAt: observedAt });
68
+ }
69
+ throw cause;
82
70
  }
83
- else if (unknownKeyRefresh) {
84
- refresh.unknownKeyRefresh = true;
85
- }
86
- if (keyId !== undefined)
87
- refresh.requestedKeyIds.add(keyId);
88
- const basis = await subscribe(refresh, issuer, pending, signal);
89
71
  signal.throwIfAborted();
72
+ const refreshedAt = now();
73
+ retain(issuer, {
74
+ basis,
75
+ refreshedAt,
76
+ ...(unknownKeyRefresh ||
77
+ (keyId !== undefined && !basis.keys.some((candidate) => candidate.kid === keyId))
78
+ ? { unknownKeyRefreshedAt: refreshedAt }
79
+ : {}),
80
+ });
90
81
  return basis;
91
82
  },
92
83
  });
@@ -116,41 +107,6 @@ export async function verifyCredential(input, audience, bases, signal, policy) {
116
107
  admitEndpoint(`${admittedIssuer.replace(/\/+$/u, '')}/invoke`, policy);
117
108
  return Object.freeze({ raw: input, verified: verified.verified, basis });
118
109
  }
119
- function subscribe(refresh, issuer, pending, signal) {
120
- signal.throwIfAborted();
121
- refresh.subscribers += 1;
122
- return new Promise((resolve, reject) => {
123
- let complete = false;
124
- const finish = () => {
125
- if (complete)
126
- return false;
127
- complete = true;
128
- signal.removeEventListener('abort', cancel);
129
- refresh.subscribers -= 1;
130
- if (!refresh.settled && refresh.subscribers === 0) {
131
- if (pending.get(issuer) === refresh)
132
- pending.delete(issuer);
133
- refresh.controller.abort(new DOMException('Issuer discovery was cancelled.', 'AbortError'));
134
- }
135
- return true;
136
- };
137
- const cancel = () => {
138
- if (!finish())
139
- return;
140
- reject(signal.reason);
141
- };
142
- signal.addEventListener('abort', cancel, { once: true });
143
- refresh.operation.then((basis) => {
144
- if (!finish())
145
- return;
146
- resolve(basis);
147
- }, (cause) => {
148
- if (!finish())
149
- return;
150
- reject(cause);
151
- });
152
- });
153
- }
154
110
  export async function verifyCredentialAgainst(input, audience, basis, preinspected) {
155
111
  let inspected;
156
112
  try {
@@ -220,21 +176,55 @@ async function discover(issuer, fetch, signal, policy) {
220
176
  });
221
177
  }
222
178
  async function request(fetch, url, signal) {
223
- try {
224
- const response = await fetch(url, { method: 'GET', redirect: 'error', signal });
225
- if (!response.ok) {
226
- await response.body?.cancel();
227
- throw new IssuerUnavailable(`Issuer discovery returned HTTP ${response.status}.`);
179
+ for (let attempt = 0;; attempt += 1) {
180
+ signal.throwIfAborted();
181
+ try {
182
+ const response = await fetch(url, { method: 'GET', redirect: 'error', signal });
183
+ if (!response.ok) {
184
+ await response.body?.cancel();
185
+ throw new IssuerUnavailable(`Issuer discovery returned HTTP ${response.status}.`);
186
+ }
187
+ return response;
188
+ }
189
+ catch (cause) {
190
+ if (signal.aborted)
191
+ throw signal.reason;
192
+ if (cause instanceof IssuerUnavailable)
193
+ throw cause;
194
+ // One retry belongs to the caller's issuer load, never to its business call.
195
+ if (attempt !== 0 || !transientTransport(cause)) {
196
+ throw new IssuerUnavailable('Issuer discovery request failed.', cause);
197
+ }
198
+ await retryDelay(signal);
228
199
  }
229
- return response;
230
200
  }
231
- catch (cause) {
232
- if (signal.aborted)
233
- throw signal.reason;
234
- if (cause instanceof IssuerUnavailable)
235
- throw cause;
236
- throw new IssuerUnavailable('Issuer discovery request failed.', cause);
201
+ }
202
+ function transientTransport(cause) {
203
+ // Node fetch wraps its transport Error; Bun may expose the code directly. Bound traversal
204
+ // of an external cause chain, including cycles, and do not look past a classified refusal.
205
+ for (let depth = 0; depth < 4; depth += 1) {
206
+ if (cause === null || typeof cause !== 'object')
207
+ return false;
208
+ const code = Reflect.get(cause, 'code');
209
+ if (typeof code === 'string')
210
+ return TRANSIENT_TRANSPORT_CODES.has(code);
211
+ cause = Reflect.get(cause, 'cause');
237
212
  }
213
+ return false;
214
+ }
215
+ function retryDelay(signal) {
216
+ signal.throwIfAborted();
217
+ return new Promise((resolve, reject) => {
218
+ const cancel = () => {
219
+ clearTimeout(timer);
220
+ reject(signal.reason);
221
+ };
222
+ const timer = setTimeout(() => {
223
+ signal.removeEventListener('abort', cancel);
224
+ resolve();
225
+ }, DISCOVERY_RETRY_DELAY_MS);
226
+ signal.addEventListener('abort', cancel, { once: true });
227
+ });
238
228
  }
239
229
  async function json(response, signal) {
240
230
  const bytes = new Uint8Array(await response.arrayBuffer());
@@ -1,5 +1,5 @@
1
1
  export { serve } from './serve.js';
2
- export type { ExecutionContext, ServedApplication, ServeInput } from './serve.js';
3
- export { createIdentity, type ExchangeOptions, type Identity, type IdentityInput, } from './identity/index.js';
4
- export { InvocationError } from './invocation/index.js';
5
- export type { InvocationErrorCode } from './invocation/index.js';
2
+ export type { ExecutionContext, ServedDomain, ServeInput } from './serve.js';
3
+ export { createIdentity, maximumExchangeTtl, type ExchangeOptions, type Identity, type IdentityInput, } from './identity/index.js';
4
+ export type { DurableEngine, DurableServing, DurableServingProvider } from './workflows/index.js';
5
+ export { isCanonicalDurableRequest } from './workflows/route.js';
@@ -1,3 +1,3 @@
1
1
  export { serve } from './serve.js';
2
- export { createIdentity, } from './identity/index.js';
3
- export { InvocationError } from './invocation/index.js';
2
+ export { createIdentity, maximumExchangeTtl, } from './identity/index.js';
3
+ export { isCanonicalDurableRequest } from './workflows/route.js';
@@ -1,17 +1,15 @@
1
1
  import type { HandlerRequest } from '@astrale-os/kernel-server';
2
- import type { AnonymousCaller, AuthenticatedCaller, ResolvedCallable } from '../../../application/action/index.js';
3
- import type { Release } from '../../../deployment/release/index.js';
2
+ import type { AnonymousCaller, ResolvedCallable } from '../../../application/action/index.js';
4
3
  import type { Domain } from '../../../platform/schema/index.js';
5
- import type { AuthenticatedInvocation, InvocationAuthority } from './authority.js';
6
- export interface AnonymousInvocation {
4
+ import type { AuthenticatedInvocation, InvocationAuthority, SelfInvocation } from './authority.js';
5
+ /** A call without a credential: no caller, and the installed Domain's own capabilities. */
6
+ export interface AnonymousInvocation extends SelfInvocation {
7
7
  readonly caller: AnonymousCaller;
8
- readonly kernel: null;
9
- readonly graph: null;
10
- close(): void;
11
8
  }
12
- interface AdmittedAuthenticatedInvocation extends Omit<AuthenticatedInvocation, 'caller'> {
13
- readonly caller: AuthenticatedCaller;
14
- }
15
- export type InvocationAuthentication = AnonymousInvocation | AdmittedAuthenticatedInvocation;
16
- export declare function authentication(callable: ResolvedCallable, request: HandlerRequest, release: Release, domain: Domain, authority: InvocationAuthority): Promise<InvocationAuthentication>;
17
- export {};
9
+ export type InvocationAuthentication = AnonymousInvocation | AuthenticatedInvocation;
10
+ /**
11
+ * The sessions one invocation holds toward its source Kernel: the Domain's own always, its
12
+ * caller's only when the call carried a credential.
13
+ */
14
+ export type InvocationSessions = InvocationAuthentication['graph'];
15
+ export declare function authentication(callable: ResolvedCallable, request: HandlerRequest, domain: Domain, authority: InvocationAuthority): Promise<InvocationAuthentication>;