@astrale-os/sdk 0.6.0-beta.4 → 0.6.0-beta.40

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 (514) hide show
  1. package/README.md +191 -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 +47 -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 +21 -10
  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/define.d.ts +8 -1
  15. package/dist/application/integration/index.d.ts +2 -2
  16. package/dist/application/integration/integration.d.ts +13 -1
  17. package/dist/application/integration/operation.d.ts +16 -3
  18. package/dist/application/mutation/authoring/properties.d.ts +5 -3
  19. package/dist/application/mutation/authoring/properties.js +35 -2
  20. package/dist/application/mutation/authoring/transition.js +4 -1
  21. package/dist/application/mutation/execution/execute.js +1 -1
  22. package/dist/application/mutation/failure.d.ts +6 -0
  23. package/dist/application/mutation/failure.js +24 -18
  24. package/dist/application/mutation/index.d.ts +1 -1
  25. package/dist/application/query/collection/union.js +11 -4
  26. package/dist/application/query/composite/plan.d.ts +0 -4
  27. package/dist/application/query/composite/plan.js +0 -2
  28. package/dist/application/query/conformance.d.ts +15 -0
  29. package/dist/application/query/conformance.js +46 -0
  30. package/dist/application/query/define.js +4 -3
  31. package/dist/application/query/execution/execute.d.ts +0 -1
  32. package/dist/application/query/execution/execute.js +7 -1
  33. package/dist/application/query/failure.d.ts +8 -0
  34. package/dist/application/query/failure.js +8 -0
  35. package/dist/application/query/index.d.ts +1 -1
  36. package/dist/application/query/index.js +1 -1
  37. package/dist/application/routes/admission.d.ts +2 -2
  38. package/dist/application/routes/admission.js +1 -1
  39. package/dist/application/routes/route.d.ts +2 -2
  40. package/dist/application/runtime/actions.js +3 -0
  41. package/dist/application/runtime/workflows.d.ts +3 -1
  42. package/dist/application/runtime/workflows.js +3 -4
  43. package/dist/application/view/define.js +4 -6
  44. package/dist/application/view/frontend.d.ts +2 -2
  45. package/dist/application/view/index.d.ts +1 -1
  46. package/dist/application/view/route.d.ts +0 -14
  47. package/dist/application/view/route.js +1 -64
  48. package/dist/application/workflow/authoring.d.ts +3 -2
  49. package/dist/application/workflow/context.d.ts +8 -2
  50. package/dist/application/workflow/define.d.ts +4 -4
  51. package/dist/application/workflow/define.js +14 -9
  52. package/dist/application/workflow/durable.d.ts +185 -0
  53. package/dist/application/workflow/index.d.ts +3 -2
  54. package/dist/application/workflow/runner/inline.js +3 -4
  55. package/dist/application/workflow/runner/runner.d.ts +2 -2
  56. package/dist/application/workflow/step/output.d.ts +2 -0
  57. package/dist/application/workflow/step/output.js +73 -0
  58. package/dist/application/workflow/workflow.d.ts +5 -3
  59. package/dist/deployment/adapter/adapter.d.ts +55 -13
  60. package/dist/deployment/adapter/bundle/bundle.d.ts +36 -0
  61. package/dist/deployment/adapter/bundle/file.d.ts +10 -0
  62. package/dist/deployment/adapter/bundle/index.d.ts +2 -0
  63. package/dist/deployment/adapter/define.d.ts +4 -3
  64. package/dist/deployment/adapter/define.js +107 -23
  65. package/dist/deployment/adapter/index.d.ts +4 -3
  66. package/dist/deployment/adapter/index.js +1 -0
  67. package/dist/deployment/adapter/release/command.d.ts +33 -0
  68. package/dist/deployment/adapter/release/context.d.ts +94 -0
  69. package/dist/deployment/adapter/release/index.d.ts +4 -0
  70. package/dist/deployment/adapter/release/index.js +1 -0
  71. package/dist/deployment/adapter/release/list.d.ts +53 -0
  72. package/dist/deployment/adapter/release/list.js +1 -0
  73. package/dist/deployment/adapter/release/refusal.d.ts +10 -0
  74. package/dist/deployment/adapter/release/refusal.js +14 -0
  75. package/dist/deployment/adapter/release/result.d.ts +56 -0
  76. package/dist/deployment/adapter/release/result.js +1 -0
  77. package/dist/deployment/address/configuration.d.ts +96 -0
  78. package/dist/deployment/address/configuration.js +274 -0
  79. package/dist/deployment/address/fingerprint.d.ts +5 -0
  80. package/dist/deployment/address/fingerprint.js +27 -0
  81. package/dist/deployment/address/index.d.ts +5 -0
  82. package/dist/deployment/address/index.js +4 -0
  83. package/dist/deployment/address/label.d.ts +42 -0
  84. package/dist/deployment/address/label.js +80 -0
  85. package/dist/deployment/address/line.d.ts +29 -0
  86. package/dist/deployment/address/line.js +53 -0
  87. package/dist/deployment/address/record.d.ts +73 -0
  88. package/dist/deployment/address/record.js +138 -0
  89. package/dist/deployment/address/summary.d.ts +30 -0
  90. package/dist/deployment/address/summary.js +1 -0
  91. package/dist/deployment/address/vectors.d.ts +60 -0
  92. package/dist/deployment/address/vectors.js +517 -0
  93. package/dist/deployment/authoring.d.ts +0 -2
  94. package/dist/deployment/authoring.js +0 -1
  95. package/dist/deployment/build/build.d.ts +8 -2
  96. package/dist/deployment/build/compile.d.ts +4 -4
  97. package/dist/deployment/build/compile.js +19 -17
  98. package/dist/deployment/build/frontend/compilation.d.ts +2 -4
  99. package/dist/deployment/build/frontend/compilation.js +0 -5
  100. package/dist/deployment/build/frontend/digest.js +1 -5
  101. package/dist/deployment/build/index.d.ts +1 -0
  102. package/dist/deployment/build/index.js +1 -0
  103. package/dist/deployment/build/manifest.d.ts +59 -0
  104. package/dist/deployment/build/manifest.js +118 -0
  105. package/dist/deployment/build/material.d.ts +2 -2
  106. package/dist/deployment/build/material.js +28 -13
  107. package/dist/deployment/build/schema.d.ts +2 -2
  108. package/dist/deployment/deployment.d.ts +3 -2
  109. package/dist/deployment/environment.d.ts +6 -0
  110. package/dist/deployment/environment.js +6 -0
  111. package/dist/deployment/index.d.ts +4 -6
  112. package/dist/deployment/index.js +1 -2
  113. package/dist/deployment/release/addressing.d.ts +6 -5
  114. package/dist/deployment/release/addressing.js +2 -3
  115. package/dist/deployment/release/assemble.d.ts +6 -3
  116. package/dist/deployment/release/assemble.js +12 -10
  117. package/dist/deployment/release/release.d.ts +16 -5
  118. package/dist/deployment/release/seal.d.ts +14 -0
  119. package/dist/deployment/release/seal.js +22 -0
  120. package/dist/deployment/release/{publication → served}/callables.d.ts +2 -2
  121. package/dist/deployment/release/{publication → served}/callables.js +2 -2
  122. package/dist/deployment/release/served/index.d.ts +11 -0
  123. package/dist/deployment/release/served/index.js +26 -0
  124. package/dist/deployment/release/{publication → served}/views.d.ts +2 -2
  125. package/dist/deployment/release/{publication → served}/views.js +0 -1
  126. package/dist/deployment/runtime/admission.d.ts +2 -2
  127. package/dist/deployment/runtime/admission.js +5 -5
  128. package/dist/deployment/verify/index.d.ts +3 -4
  129. package/dist/deployment/verify/index.js +2 -3
  130. package/dist/deployment/verify/preflight/bundle.d.ts +18 -0
  131. package/dist/deployment/verify/preflight/bundle.js +71 -0
  132. package/dist/deployment/verify/preflight/index.d.ts +1 -12
  133. package/dist/deployment/verify/preflight/index.js +1 -12
  134. package/dist/deployment/verify/readiness/fetch.d.ts +13 -0
  135. package/dist/deployment/verify/readiness/fetch.js +26 -0
  136. package/dist/deployment/verify/readiness/identity.d.ts +3 -6
  137. package/dist/deployment/verify/readiness/identity.js +3 -3
  138. package/dist/deployment/verify/readiness/index.d.ts +15 -8
  139. package/dist/deployment/verify/readiness/index.js +25 -6
  140. package/dist/deployment/verify/readiness/release.d.ts +8 -0
  141. package/dist/deployment/verify/readiness/release.js +22 -0
  142. package/dist/deployment/worker/address.d.ts +26 -0
  143. package/dist/deployment/worker/address.js +43 -0
  144. package/dist/deployment/worker/build.d.ts +60 -0
  145. package/dist/deployment/worker/build.js +172 -0
  146. package/dist/deployment/worker/configuration.d.ts +73 -0
  147. package/dist/deployment/worker/configuration.js +165 -0
  148. package/dist/deployment/worker/content.d.ts +38 -0
  149. package/dist/deployment/worker/content.js +169 -0
  150. package/dist/deployment/worker/index.d.ts +29 -0
  151. package/dist/deployment/worker/index.js +29 -0
  152. package/dist/deployment/worker/limits.d.ts +30 -0
  153. package/dist/deployment/worker/limits.js +30 -0
  154. package/dist/deployment/worker/record.d.ts +29 -0
  155. package/dist/deployment/worker/record.js +69 -0
  156. package/dist/deployment/worker/request.d.ts +118 -0
  157. package/dist/deployment/worker/request.js +280 -0
  158. package/dist/deployment/worker/response.d.ts +101 -0
  159. package/dist/deployment/worker/response.js +207 -0
  160. package/dist/execution/cache/cache.d.ts +17 -0
  161. package/dist/execution/cache/cache.js +11 -0
  162. package/dist/execution/cache/index.d.ts +2 -0
  163. package/dist/execution/cache/index.js +2 -0
  164. package/dist/execution/cache/memory.d.ts +13 -0
  165. package/dist/execution/cache/memory.js +48 -0
  166. package/dist/execution/identity/authentication.d.ts +33 -3
  167. package/dist/execution/identity/authentication.js +90 -36
  168. package/dist/execution/identity/callback.d.ts +20 -20
  169. package/dist/execution/identity/callback.js +34 -26
  170. package/dist/execution/identity/delivery.d.ts +6 -4
  171. package/dist/execution/identity/delivery.js +25 -20
  172. package/dist/execution/identity/identity.d.ts +17 -3
  173. package/dist/execution/identity/identity.js +12 -4
  174. package/dist/execution/identity/jwks.d.ts +5 -0
  175. package/dist/execution/identity/jwks.js +92 -102
  176. package/dist/execution/index.d.ts +6 -4
  177. package/dist/execution/index.js +4 -2
  178. package/dist/execution/invocation/admission/age.d.ts +57 -0
  179. package/dist/execution/invocation/admission/age.js +208 -0
  180. package/dist/execution/invocation/admission/authentication.d.ts +13 -13
  181. package/dist/execution/invocation/admission/authentication.js +52 -44
  182. package/dist/execution/invocation/admission/authority.d.ts +28 -6
  183. package/dist/execution/invocation/admission/authority.js +9 -2
  184. package/dist/execution/invocation/admission/index.d.ts +4 -3
  185. package/dist/execution/invocation/admission/index.js +3 -2
  186. package/dist/execution/invocation/admission/input.d.ts +2 -2
  187. package/dist/execution/invocation/admission/input.js +16 -2
  188. package/dist/execution/invocation/admission/target.d.ts +11 -0
  189. package/dist/execution/invocation/admission/target.js +22 -3
  190. package/dist/execution/invocation/capabilities/bind.d.ts +11 -0
  191. package/dist/execution/invocation/capabilities/bind.js +25 -0
  192. package/dist/execution/invocation/capabilities/index.d.ts +1 -0
  193. package/dist/execution/invocation/capabilities/index.js +1 -0
  194. package/dist/execution/invocation/dependency/bind.d.ts +3 -1
  195. package/dist/execution/invocation/dependency/bind.js +36 -16
  196. package/dist/execution/invocation/dispatch/context.d.ts +7 -6
  197. package/dist/execution/invocation/dispatch/context.js +11 -44
  198. package/dist/execution/invocation/dispatch/workflow.js +0 -4
  199. package/dist/execution/invocation/handler.js +8 -2
  200. package/dist/execution/invocation/index.d.ts +2 -2
  201. package/dist/execution/invocation/index.js +1 -1
  202. package/dist/execution/invocation/integration/authentication.d.ts +3 -3
  203. package/dist/execution/invocation/integration/authentication.js +7 -7
  204. package/dist/execution/invocation/integration/call.d.ts +2 -1
  205. package/dist/execution/invocation/integration/call.js +3 -3
  206. package/dist/execution/invocation/integration/clients.d.ts +1 -1
  207. package/dist/execution/invocation/integration/index.d.ts +1 -0
  208. package/dist/execution/invocation/integration/index.js +1 -0
  209. package/dist/execution/invocation/invocation.d.ts +6 -0
  210. package/dist/execution/invocation/invocation.js +129 -21
  211. package/dist/execution/invocation/lifecycle/active.d.ts +8 -2
  212. package/dist/execution/invocation/lifecycle/active.js +3 -3
  213. package/dist/execution/invocation/lifecycle/index.d.ts +1 -1
  214. package/dist/execution/invocation/result/errors.d.ts +0 -10
  215. package/dist/execution/invocation/result/errors.js +0 -17
  216. package/dist/execution/invocation/result/index.d.ts +2 -2
  217. package/dist/execution/invocation/result/index.js +1 -1
  218. package/dist/execution/invocation/result/project.js +41 -1
  219. package/dist/execution/node/serve.d.ts +2 -2
  220. package/dist/execution/node/serve.js +1 -1
  221. package/dist/execution/runtime/index.d.ts +1 -0
  222. package/dist/execution/runtime/index.js +1 -0
  223. package/dist/execution/runtime/load.d.ts +3 -3
  224. package/dist/execution/runtime/load.js +3 -2
  225. package/dist/execution/runtime/release.d.ts +17 -0
  226. package/dist/execution/runtime/release.js +7 -0
  227. package/dist/execution/serve.d.ts +18 -4
  228. package/dist/execution/serve.js +10 -0
  229. package/dist/execution/service/create.js +43 -7
  230. package/dist/execution/service/initialization.d.ts +4 -4
  231. package/dist/execution/service/initialization.js +23 -14
  232. package/dist/execution/service/release.d.ts +2 -2
  233. package/dist/execution/service/release.js +3 -2
  234. package/dist/execution/service/service.d.ts +20 -5
  235. package/dist/execution/service/serving/delivery.d.ts +5 -0
  236. package/dist/execution/service/{publication → serving}/delivery.js +4 -1
  237. package/dist/execution/service/{publication → serving}/index.d.ts +1 -1
  238. package/dist/execution/service/serving/installation.d.ts +4 -0
  239. package/dist/execution/service/serving/installation.js +9 -0
  240. package/dist/execution/service/serving/source.d.ts +11 -0
  241. package/dist/execution/service/serving/source.js +15 -0
  242. package/dist/execution/workflows/discovery.d.ts +14 -0
  243. package/dist/execution/workflows/discovery.js +151 -0
  244. package/dist/execution/workflows/engine.d.ts +89 -0
  245. package/dist/execution/workflows/engine.js +1 -0
  246. package/dist/execution/workflows/envelope.d.ts +12 -0
  247. package/dist/execution/workflows/envelope.js +46 -0
  248. package/dist/execution/workflows/failure.d.ts +46 -0
  249. package/dist/execution/workflows/failure.js +160 -0
  250. package/dist/execution/workflows/index.d.ts +4 -0
  251. package/dist/execution/workflows/index.js +3 -0
  252. package/dist/execution/workflows/integrations.d.ts +13 -0
  253. package/dist/execution/workflows/integrations.js +25 -0
  254. package/dist/execution/workflows/options.d.ts +66 -0
  255. package/dist/execution/workflows/options.js +148 -0
  256. package/dist/execution/workflows/receiver.d.ts +24 -0
  257. package/dist/execution/workflows/receiver.js +99 -0
  258. package/dist/execution/workflows/route.d.ts +12 -0
  259. package/dist/execution/workflows/route.js +35 -0
  260. package/dist/execution/workflows/run.d.ts +21 -0
  261. package/dist/execution/workflows/run.js +321 -0
  262. package/dist/execution/workflows/steps.d.ts +42 -0
  263. package/dist/execution/workflows/steps.js +67 -0
  264. package/dist/index.d.ts +4 -4
  265. package/dist/index.js +2 -2
  266. package/dist/platform/graph/alias.d.ts +1 -5
  267. package/dist/platform/graph/alias.js +1 -5
  268. package/dist/platform/graph/document/index.d.ts +1 -1
  269. package/dist/platform/graph/document/index.js +1 -1
  270. package/dist/platform/graph/index.d.ts +1 -1
  271. package/dist/platform/graph/index.js +1 -1
  272. package/dist/platform/release/index.d.ts +2 -0
  273. package/dist/platform/release/index.js +2 -0
  274. package/dist/platform/schema/callable-authoring.d.ts +21 -0
  275. package/dist/platform/schema/callable-authoring.js +27 -0
  276. package/dist/platform/schema/class-authoring.d.ts +61 -11
  277. package/dist/platform/schema/class-authoring.js +37 -4
  278. package/dist/platform/schema/class-icon-svg.d.ts +9 -0
  279. package/dist/platform/schema/class-icon-svg.js +29 -0
  280. package/dist/platform/schema/class-icon.d.ts +3 -8
  281. package/dist/platform/schema/class-icon.js +2 -29
  282. package/dist/platform/schema/index.d.ts +6 -4
  283. package/dist/platform/schema/index.js +2 -1
  284. package/dist/platform/schema/property.d.ts +5 -0
  285. package/dist/platform/schema/schema-authoring.d.ts +14 -7
  286. package/dist/platform/schema/schema-authoring.js +5 -1
  287. package/dist/platform/versioning/dependents.d.ts +18 -0
  288. package/dist/platform/versioning/dependents.js +15 -0
  289. package/dist/platform/versioning/index.d.ts +5 -0
  290. package/dist/platform/versioning/index.js +5 -0
  291. package/dist/platform/versioning/name.d.ts +38 -0
  292. package/dist/platform/versioning/name.js +58 -0
  293. package/dist/platform/versioning/reference.d.ts +48 -0
  294. package/dist/platform/versioning/reference.js +95 -0
  295. package/dist/platform/versioning/version.d.ts +72 -0
  296. package/dist/platform/versioning/version.js +98 -0
  297. package/dist/project/admit.js +1 -5
  298. package/dist/project/define.d.ts +4 -4
  299. package/dist/project/define.js +55 -35
  300. package/dist/project/index.d.ts +1 -1
  301. package/dist/project/install-command.d.ts +6 -0
  302. package/dist/project/install-command.js +9 -0
  303. package/dist/project/project.d.ts +10 -8
  304. package/dist/testing/dataset/define.d.ts +1 -1
  305. package/dist/testing/durable/engine.d.ts +121 -0
  306. package/dist/testing/durable/engine.js +614 -0
  307. package/dist/testing/durable/index.d.ts +3 -0
  308. package/dist/testing/durable/index.js +1 -0
  309. package/dist/testing/durable/steps.d.ts +30 -0
  310. package/dist/testing/durable/steps.js +40 -0
  311. package/dist/testing/index.d.ts +6 -1
  312. package/dist/testing/index.js +5 -1
  313. package/dist/testing/load.js +1 -1
  314. package/dist/tooling/cli/adapter-command.d.ts +35 -0
  315. package/dist/tooling/cli/adapter-command.js +66 -0
  316. package/dist/tooling/cli/arguments.d.ts +17 -6
  317. package/dist/tooling/cli/arguments.js +175 -52
  318. package/dist/tooling/cli/build.d.ts +55 -0
  319. package/dist/tooling/cli/build.js +77 -0
  320. package/dist/tooling/cli/bun.d.ts +0 -1
  321. package/dist/tooling/cli/bun.js +0 -7
  322. package/dist/tooling/cli/commit.d.ts +35 -0
  323. package/dist/tooling/cli/commit.js +235 -0
  324. package/dist/tooling/cli/deploy-mode.d.ts +26 -0
  325. package/dist/tooling/cli/deploy-mode.js +59 -0
  326. package/dist/tooling/cli/deploy-result.d.ts +80 -0
  327. package/dist/tooling/cli/deploy-result.js +64 -0
  328. package/dist/tooling/cli/diff/declared.d.ts +7 -0
  329. package/dist/tooling/cli/diff/declared.js +27 -0
  330. package/dist/tooling/cli/diff/index.d.ts +30 -0
  331. package/dist/tooling/cli/diff/index.js +58 -0
  332. package/dist/tooling/cli/diff/render.d.ts +15 -0
  333. package/dist/tooling/cli/diff/render.js +131 -0
  334. package/dist/tooling/cli/diff/report.d.ts +88 -0
  335. package/dist/tooling/cli/diff/report.js +154 -0
  336. package/dist/tooling/cli/dotenv.d.ts +5 -5
  337. package/dist/tooling/cli/dotenv.js +6 -36
  338. package/dist/tooling/cli/help.js +173 -60
  339. package/dist/tooling/cli/immutable-deployment.d.ts +83 -0
  340. package/dist/tooling/cli/immutable-deployment.js +135 -0
  341. package/dist/tooling/cli/index.d.ts +12 -4
  342. package/dist/tooling/cli/index.js +6 -3
  343. package/dist/tooling/cli/installed-on.d.ts +83 -0
  344. package/dist/tooling/cli/installed-on.js +156 -0
  345. package/dist/tooling/cli/list.d.ts +152 -0
  346. package/dist/tooling/cli/list.js +331 -0
  347. package/dist/tooling/cli/log.d.ts +5 -2
  348. package/dist/tooling/cli/log.js +9 -2
  349. package/dist/tooling/cli/orchestrate.d.ts +0 -6
  350. package/dist/tooling/cli/orchestrate.js +246 -90
  351. package/dist/tooling/cli/project.d.ts +3 -3
  352. package/dist/tooling/cli/publish/index.d.ts +81 -0
  353. package/dist/tooling/cli/publish/index.js +383 -0
  354. package/dist/tooling/cli/publish/report.d.ts +49 -0
  355. package/dist/tooling/cli/publish/report.js +15 -0
  356. package/dist/tooling/cli/registry/client.d.ts +121 -0
  357. package/dist/tooling/cli/registry/client.js +354 -0
  358. package/dist/tooling/cli/registry/error.d.ts +11 -0
  359. package/dist/tooling/cli/registry/error.js +17 -0
  360. package/dist/tooling/cli/registry/executable.d.ts +35 -0
  361. package/dist/tooling/cli/registry/executable.js +96 -0
  362. package/dist/tooling/cli/registry/index.d.ts +9 -0
  363. package/dist/tooling/cli/registry/index.js +8 -0
  364. package/dist/tooling/cli/registry/installations.d.ts +67 -0
  365. package/dist/tooling/cli/registry/installations.js +108 -0
  366. package/dist/tooling/cli/registry/process.d.ts +36 -0
  367. package/dist/tooling/cli/registry/process.js +119 -0
  368. package/dist/tooling/cli/secrets.d.ts +9 -0
  369. package/dist/tooling/cli/secrets.js +19 -0
  370. package/dist/tooling/cli/yank.d.ts +34 -0
  371. package/dist/tooling/cli/yank.js +32 -0
  372. package/dist/tooling/linter/adapters/typescript/imports.d.ts +0 -1
  373. package/dist/tooling/linter/adapters/typescript/imports.js +1 -5
  374. package/dist/tooling/linter/adapters/typescript/index.d.ts +1 -1
  375. package/dist/tooling/linter/adapters/typescript/index.js +1 -1
  376. package/dist/tooling/linter/adapters/typescript/syntax.d.ts +3 -3
  377. package/dist/tooling/linter/adapters/typescript/syntax.js +13 -25
  378. package/dist/tooling/linter/implementations/source/callable-requirements.d.ts +1 -2
  379. package/dist/tooling/linter/implementations/source/callable-requirements.js +11 -16
  380. package/dist/tooling/linter/implementations/source/dependencies.js +13 -72
  381. package/dist/tooling/linter/implementations/source/global.js +1 -2
  382. package/dist/tooling/linter/implementations/source/mutations.js +18 -29
  383. package/dist/tooling/linter/implementations/source/providers.js +5 -5
  384. package/dist/tooling/linter/implementations/source/queries.js +1 -17
  385. package/dist/tooling/linter/implementations/source/shared.d.ts +12 -4
  386. package/dist/tooling/linter/implementations/source/shared.js +101 -46
  387. package/dist/tooling/linter/implementations/source/verifiers.js +0 -2
  388. package/dist/tooling/linter/implementations/source/views.js +2 -2
  389. package/dist/tooling/linter/implementations/source/workflows.js +500 -17
  390. package/dist/tooling/linter/policy/generated.js +14 -63
  391. package/dist/tooling/linter/requirements/registry.js +6 -8
  392. package/dist/tooling/packaging/declarations/ownership.js +1 -1
  393. package/dist/tooling/packaging/finalize.d.ts +1 -1
  394. package/dist/tooling/packaging/finalize.js +1 -1
  395. package/docs/admission-age.md +88 -0
  396. package/docs/auth-api-migration.md +55 -0
  397. package/docs/business-errors.md +42 -0
  398. package/docs/domain-definition-migration.md +44 -0
  399. package/docs/domain-schema-migration.md +36 -0
  400. package/docs/durable-workflows.md +418 -0
  401. package/docs/handler-dependencies.md +213 -0
  402. package/docs/release.md +155 -0
  403. package/docs/schema-cost.md +124 -0
  404. package/package.json +45 -16
  405. package/dist/application/application.d.ts +0 -28
  406. package/dist/application/query/execution/projection.d.ts +0 -3
  407. package/dist/application/query/execution/projection.js +0 -3
  408. package/dist/deployment/adapter/deploy/context.d.ts +0 -15
  409. package/dist/deployment/adapter/deploy/index.d.ts +0 -2
  410. package/dist/deployment/adapter/deploy/result.d.ts +0 -50
  411. package/dist/deployment/adapter/prepare/artifact.d.ts +0 -33
  412. package/dist/deployment/adapter/prepare/context.d.ts +0 -23
  413. package/dist/deployment/adapter/prepare/index.d.ts +0 -2
  414. package/dist/deployment/deploy.d.ts +0 -20
  415. package/dist/deployment/deploy.js +0 -31
  416. package/dist/deployment/release/publication/index.d.ts +0 -6
  417. package/dist/deployment/release/publication/index.js +0 -6
  418. package/dist/deployment/release/publication/manifest.d.ts +0 -3
  419. package/dist/deployment/release/publication/manifest.js +0 -5
  420. package/dist/deployment/release/publication/requirements.d.ts +0 -3
  421. package/dist/deployment/release/publication/requirements.js +0 -3
  422. package/dist/deployment/release/publication/seal.d.ts +0 -10
  423. package/dist/deployment/release/publication/seal.js +0 -39
  424. package/dist/deployment/verify/preflight/artifact.d.ts +0 -6
  425. package/dist/deployment/verify/preflight/artifact.js +0 -122
  426. package/dist/deployment/verify/preflight/publication.d.ts +0 -4
  427. package/dist/deployment/verify/preflight/publication.js +0 -14
  428. package/dist/deployment/verify/readiness/deployment.d.ts +0 -3
  429. package/dist/deployment/verify/readiness/deployment.js +0 -151
  430. package/dist/deployment/verify/readiness/publication.d.ts +0 -11
  431. package/dist/deployment/verify/readiness/publication.js +0 -41
  432. package/dist/execution/service/errors.d.ts +0 -3
  433. package/dist/execution/service/errors.js +0 -3
  434. package/dist/execution/service/publication/delivery.d.ts +0 -2
  435. package/dist/execution/service/publication/installation.d.ts +0 -3
  436. package/dist/execution/service/publication/installation.js +0 -8
  437. package/dist/execution/service/publication/source.d.ts +0 -3
  438. package/dist/execution/service/publication/source.js +0 -11
  439. package/dist/platform/publication/index.d.ts +0 -2
  440. package/dist/platform/publication/index.js +0 -2
  441. package/dist/tooling/cli/astrale/authority.d.ts +0 -5
  442. package/dist/tooling/cli/astrale/authority.js +0 -11
  443. package/dist/tooling/cli/astrale/executable.d.ts +0 -2
  444. package/dist/tooling/cli/astrale/executable.js +0 -47
  445. package/dist/tooling/cli/astrale/failure.d.ts +0 -6
  446. package/dist/tooling/cli/astrale/failure.js +0 -48
  447. package/dist/tooling/cli/astrale/instance.d.ts +0 -11
  448. package/dist/tooling/cli/astrale/instance.js +0 -52
  449. package/dist/tooling/cli/astrale/process.d.ts +0 -13
  450. package/dist/tooling/cli/astrale/process.js +0 -94
  451. package/dist/tooling/cli/astrale/version.d.ts +0 -18
  452. package/dist/tooling/cli/astrale/version.js +0 -55
  453. package/dist/tooling/cli/credential.d.ts +0 -2
  454. package/dist/tooling/cli/credential.js +0 -57
  455. package/dist/tooling/cli/deprecations.d.ts +0 -9
  456. package/dist/tooling/cli/deprecations.js +0 -15
  457. package/dist/tooling/cli/development/candidate.d.ts +0 -25
  458. package/dist/tooling/cli/development/candidate.js +0 -176
  459. package/dist/tooling/cli/development/deployment.d.ts +0 -16
  460. package/dist/tooling/cli/development/deployment.js +0 -39
  461. package/dist/tooling/cli/development/develop.d.ts +0 -11
  462. package/dist/tooling/cli/development/develop.js +0 -243
  463. package/dist/tooling/cli/development/lease.d.ts +0 -18
  464. package/dist/tooling/cli/development/lease.js +0 -163
  465. package/dist/tooling/cli/development/lifecycle.d.ts +0 -9
  466. package/dist/tooling/cli/development/lifecycle.js +0 -43
  467. package/dist/tooling/cli/development/project-imports.d.ts +0 -22
  468. package/dist/tooling/cli/development/project-imports.js +0 -39
  469. package/dist/tooling/cli/development/project-lock.d.ts +0 -16
  470. package/dist/tooling/cli/development/project-lock.js +0 -41
  471. package/dist/tooling/cli/development/rebuild.d.ts +0 -13
  472. package/dist/tooling/cli/development/rebuild.js +0 -58
  473. package/dist/tooling/cli/development/release-evidence.d.ts +0 -4
  474. package/dist/tooling/cli/development/release-evidence.js +0 -10
  475. package/dist/tooling/cli/development/report.d.ts +0 -6
  476. package/dist/tooling/cli/development/report.js +0 -14
  477. package/dist/tooling/cli/development/session-file.d.ts +0 -53
  478. package/dist/tooling/cli/development/session-file.js +0 -337
  479. package/dist/tooling/cli/development/source-watch.d.ts +0 -14
  480. package/dist/tooling/cli/development/source-watch.js +0 -140
  481. package/dist/tooling/cli/development/sources.d.ts +0 -7
  482. package/dist/tooling/cli/development/sources.js +0 -48
  483. package/dist/tooling/cli/development/target-lock.d.ts +0 -16
  484. package/dist/tooling/cli/development/target-lock.js +0 -68
  485. package/dist/tooling/cli/development/view.d.ts +0 -28
  486. package/dist/tooling/cli/development/view.js +0 -151
  487. package/dist/tooling/cli/environment-release.d.ts +0 -21
  488. package/dist/tooling/cli/environment-release.js +0 -46
  489. package/dist/tooling/cli/evidence.d.ts +0 -11
  490. package/dist/tooling/cli/evidence.js +0 -53
  491. package/dist/tooling/cli/installation/index.d.ts +0 -2
  492. package/dist/tooling/cli/installation/index.js +0 -1
  493. package/dist/tooling/cli/installation/observation.d.ts +0 -10
  494. package/dist/tooling/cli/installation/observation.js +0 -44
  495. package/dist/tooling/cli/installation/reconcile.d.ts +0 -32
  496. package/dist/tooling/cli/installation/reconcile.js +0 -122
  497. package/dist/tooling/linter/implementations/source/migrations.d.ts +0 -2
  498. package/dist/tooling/linter/implementations/source/migrations.js +0 -113
  499. package/dist/tooling/linter/qualification/index.d.ts +0 -10
  500. package/dist/tooling/linter/qualification/index.js +0 -2
  501. package/dist/tooling/linter/qualification/query-fixtures.d.ts +0 -2
  502. package/dist/tooling/linter/qualification/query-fixtures.js +0 -68
  503. package/dist/tooling/linter/qualification/runner.d.ts +0 -3
  504. package/dist/tooling/linter/qualification/runner.js +0 -6
  505. /package/dist/application/{application.js → domain.js} +0 -0
  506. /package/dist/{deployment/adapter/deploy/context.js → application/workflow/durable.js} +0 -0
  507. /package/dist/deployment/adapter/{deploy/index.js → bundle/bundle.js} +0 -0
  508. /package/dist/deployment/adapter/{deploy/result.js → bundle/file.js} +0 -0
  509. /package/dist/deployment/adapter/{prepare → bundle}/index.js +0 -0
  510. /package/dist/deployment/adapter/{prepare/artifact.js → release/command.js} +0 -0
  511. /package/dist/deployment/adapter/{prepare → release}/context.js +0 -0
  512. /package/dist/deployment/release/{publication → served}/routes.d.ts +0 -0
  513. /package/dist/deployment/release/{publication → served}/routes.js +0 -0
  514. /package/dist/execution/service/{publication → serving}/index.js +0 -0
@@ -1,4 +1,5 @@
1
- import type { IssuerId, UnresolvedIdentityExpr, VerifiedCredential } from '../../platform/auth/index.js';
1
+ import type { IssuerId, UnresolvedIdentityExpr } from '../../platform/auth/index.js';
2
+ import type { NodeId } from '../../platform/graph/node/index.js';
2
3
  import type { SigningMaterial } from './signing.js';
3
4
  export declare const maximumCallbackTtlSeconds = 120;
4
5
  export declare const maximumCallbackDelegationTtlSeconds = 60;
@@ -7,8 +8,13 @@ export interface SignedCallback {
7
8
  readonly expiresAt: number;
8
9
  readonly delegateTtlSeconds: number;
9
10
  }
10
- export type CallbackGrantMode = 'caller' | 'self' | 'union';
11
- /** Exact callback Grant expressions corresponding to the Kernel Domain graph modes. */
11
+ export type CallbackMode = 'caller' | 'self';
12
+ /** The Domain's own authority, independent of any caller. */
13
+ export declare const selfIdentity: Readonly<{
14
+ kind: 'identity';
15
+ self: true;
16
+ }>;
17
+ /** Exact single-identity callback authority for each Kernel Domain graph mode. */
12
18
  export declare function callbackIdentities(nested: string | Uint8Array): Readonly<{
13
19
  caller: Readonly<{
14
20
  kind: 'identity';
@@ -18,27 +24,21 @@ export declare function callbackIdentities(nested: string | Uint8Array): Readonl
18
24
  kind: 'identity';
19
25
  self: true;
20
26
  }>;
21
- union: Readonly<{
22
- kind: 'union';
23
- operands: readonly (Readonly<{
24
- kind: 'identity';
25
- credential: string | Uint8Array<ArrayBufferLike>;
26
- }> | Readonly<{
27
- kind: 'identity';
28
- self: true;
29
- }>)[];
30
- }>;
31
27
  }>;
32
28
  export declare function signDomainCallback(signing: SigningMaterial, issuer: IssuerId, subject: string, audience: IssuerId, execution: {
33
29
  readonly deadline: number;
34
30
  readonly signal: AbortSignal;
35
31
  }): Promise<string>;
36
- export declare function signCallback(signing: SigningMaterial, issuer: IssuerId, subject: string, audience: IssuerId, expression: UnresolvedIdentityExpr, carrier: VerifiedCredential, execution: {
37
- readonly deadline: number;
38
- readonly signal: AbortSignal;
39
- }): Promise<string>;
40
- /** Reuse one exact callback authority partition, refreshing only near its bounded expiry. */
41
- export declare function createCallbackCredentialResolver(signing: SigningMaterial, issuer: IssuerId, subject: string, audience: IssuerId, expression: UnresolvedIdentityExpr, carrier: VerifiedCredential, execution: {
32
+ /**
33
+ * Reuse one exact callback authority partition, refreshing only near its bounded expiry. No callback
34
+ * outlives `validUntil`, the earliest expiry in Unix seconds of the credentials it derives from: the
35
+ * Kernel folds each of them into the callback's validity, so a longer callback could not carry its
36
+ * delegation. Without it the callback is the Domain's own authority, bounded by the execution alone.
37
+ * Once that authority can no longer carry a callback, the call ends as DEADLINE_EXCEEDED. An
38
+ * `executionId` is the durable Execution a step's executor credential names in `EXECUTION_CLAIM`;
39
+ * no caller-bound callback names one.
40
+ */
41
+ export declare function createCallbackCredentialResolver(signing: SigningMaterial, issuer: IssuerId, subject: string, audience: IssuerId, expression: UnresolvedIdentityExpr, validUntil: number | undefined, execution: {
42
42
  readonly deadline: number;
43
43
  readonly signal: AbortSignal;
44
- }): (signal: AbortSignal) => Promise<SignedCallback>;
44
+ }, executionId?: NodeId): (signal: AbortSignal) => Promise<SignedCallback>;
@@ -1,32 +1,33 @@
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
- export async function signCallback(signing, issuer, subject, audience, expression, carrier, execution) {
24
- const maximum = carrier.exp ?? Number.POSITIVE_INFINITY;
25
- return (await sign(signing, issuer, subject, audience, expression, execution, maximum)).credential;
26
- }
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;
20
+ /**
21
+ * Reuse one exact callback authority partition, refreshing only near its bounded expiry. No callback
22
+ * outlives `validUntil`, the earliest expiry in Unix seconds of the credentials it derives from: the
23
+ * Kernel folds each of them into the callback's validity, so a longer callback could not carry its
24
+ * delegation. Without it the callback is the Domain's own authority, bounded by the execution alone.
25
+ * Once that authority can no longer carry a callback, the call ends as DEADLINE_EXCEEDED. An
26
+ * `executionId` is the durable Execution a step's executor credential names in `EXECUTION_CLAIM`;
27
+ * no caller-bound callback names one.
28
+ */
29
+ export function createCallbackCredentialResolver(signing, issuer, subject, audience, expression, validUntil, execution, executionId) {
30
+ const maximum = validUntil ?? Number.POSITIVE_INFINITY;
30
31
  let cached;
31
32
  let pending;
32
33
  return async (signal) => {
@@ -38,11 +39,10 @@ export function createCallbackCredentialResolver(signing, issuer, subject, audie
38
39
  return cached;
39
40
  }
40
41
  if (pending === undefined) {
41
- const current = sign(signing, issuer, subject, audience, expression, execution, maximum).then((signed) => {
42
+ const current = sign(signing, issuer, subject, audience, expression, execution, maximum, executionId).then((signed) => {
42
43
  const delegateTtlSeconds = Math.min(maximumCallbackDelegationTtlSeconds, signed.expiresAt - signed.issuedAt - CALLBACK_DELEGATION_SKEW_SECONDS);
43
- if (delegateTtlSeconds < 1) {
44
- throw protocolError('AUTH_INVALID', 'Credential is invalid.');
45
- }
44
+ if (delegateTtlSeconds < 1)
45
+ throw exhausted(execution, maximum);
46
46
  return (cached = Object.freeze({
47
47
  credential: signed.credential,
48
48
  expiresAt: signed.expiresAt,
@@ -61,16 +61,18 @@ export function createCallbackCredentialResolver(signing, issuer, subject, audie
61
61
  return withSignal(pending, signal);
62
62
  };
63
63
  }
64
- async function sign(signing, issuer, subject, audience, expression, execution, maximum = Number.POSITIVE_INFINITY) {
64
+ async function sign(signing, issuer, subject, audience, expression, execution, maximum = Number.POSITIVE_INFINITY, executionId) {
65
65
  requireLive(execution);
66
66
  const privateKey = await withSignal(signing.privateKey, execution.signal);
67
67
  requireLive(execution);
68
68
  const now = Math.floor(Date.now() / 1_000);
69
69
  const expiresAt = Math.min(maximum, Math.floor(execution.deadline / 1_000), now + maximumCallbackTtlSeconds);
70
- if (!Number.isFinite(expiresAt) || expiresAt <= now) {
71
- throw protocolError('AUTH_INVALID', 'Credential is invalid.');
72
- }
73
- const credential = await withSignal(new SignJWT({ grant: { v: 1, expr: expression } })
70
+ if (!Number.isFinite(expiresAt) || expiresAt <= now)
71
+ throw exhausted(execution, maximum);
72
+ const credential = await withSignal(new SignJWT({
73
+ grant: { v: 1, expr: expression },
74
+ ...(executionId === undefined ? {} : { [EXECUTION_CLAIM]: executionId }),
75
+ })
74
76
  .setProtectedHeader({
75
77
  alg: signing.algorithm,
76
78
  ...(signing.keyId === undefined ? {} : { kid: signing.keyId }),
@@ -84,6 +86,12 @@ async function sign(signing, issuer, subject, audience, expression, execution, m
84
86
  requireLive(execution);
85
87
  return Object.freeze({ credential, issuedAt: now, expiresAt });
86
88
  }
89
+ /** The authority a callback derives from ends before the callback could serve a call. */
90
+ function exhausted(execution, maximum) {
91
+ return protocolError('DEADLINE_EXCEEDED', maximum * 1_000 < execution.deadline
92
+ ? 'Caller authority has expired.'
93
+ : 'Invocation deadline was exceeded.');
94
+ }
87
95
  function withSignal(operation, signal) {
88
96
  if (signal.aborted)
89
97
  return Promise.reject(signal.reason);
@@ -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,7 @@
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 { DEFAULT_MEMORY_CACHE_ENTRIES, memoryCache, type DeploymentCache, type MemoryCacheOptions, } from './cache/index.js';
4
+ export { createIdentity, maximumExchangeTtl, type ExchangeOptions, type Identity, type IdentityInput, } from './identity/index.js';
5
+ export type { DurableEngine, DurableServing, DurableServingProvider } from './workflows/index.js';
6
+ export { DURABLE_ENGINE_EXPORTS, isDurableEngine } from './workflows/options.js';
7
+ export { isCanonicalDurableRequest } from './workflows/route.js';
@@ -1,3 +1,5 @@
1
1
  export { serve } from './serve.js';
2
- export { createIdentity, } from './identity/index.js';
3
- export { InvocationError } from './invocation/index.js';
2
+ export { DEFAULT_MEMORY_CACHE_ENTRIES, memoryCache, } from './cache/index.js';
3
+ export { createIdentity, maximumExchangeTtl, } from './identity/index.js';
4
+ export { DURABLE_ENGINE_EXPORTS, isDurableEngine } from './workflows/options.js';
5
+ export { isCanonicalDurableRequest } from './workflows/route.js';