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

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 (516) 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 +197 -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/attempts.d.ts +87 -0
  243. package/dist/execution/workflows/attempts.js +205 -0
  244. package/dist/execution/workflows/discovery.d.ts +14 -0
  245. package/dist/execution/workflows/discovery.js +151 -0
  246. package/dist/execution/workflows/engine.d.ts +83 -0
  247. package/dist/execution/workflows/engine.js +1 -0
  248. package/dist/execution/workflows/envelope.d.ts +12 -0
  249. package/dist/execution/workflows/envelope.js +46 -0
  250. package/dist/execution/workflows/failure.d.ts +39 -0
  251. package/dist/execution/workflows/failure.js +143 -0
  252. package/dist/execution/workflows/index.d.ts +4 -0
  253. package/dist/execution/workflows/index.js +3 -0
  254. package/dist/execution/workflows/integrations.d.ts +13 -0
  255. package/dist/execution/workflows/integrations.js +25 -0
  256. package/dist/execution/workflows/options.d.ts +81 -0
  257. package/dist/execution/workflows/options.js +158 -0
  258. package/dist/execution/workflows/receiver.d.ts +24 -0
  259. package/dist/execution/workflows/receiver.js +99 -0
  260. package/dist/execution/workflows/route.d.ts +12 -0
  261. package/dist/execution/workflows/route.js +35 -0
  262. package/dist/execution/workflows/run.d.ts +23 -0
  263. package/dist/execution/workflows/run.js +365 -0
  264. package/dist/execution/workflows/steps.d.ts +48 -0
  265. package/dist/execution/workflows/steps.js +93 -0
  266. package/dist/index.d.ts +4 -4
  267. package/dist/index.js +2 -2
  268. package/dist/platform/graph/alias.d.ts +1 -5
  269. package/dist/platform/graph/alias.js +1 -5
  270. package/dist/platform/graph/document/index.d.ts +1 -1
  271. package/dist/platform/graph/document/index.js +1 -1
  272. package/dist/platform/graph/index.d.ts +1 -1
  273. package/dist/platform/graph/index.js +1 -1
  274. package/dist/platform/release/index.d.ts +2 -0
  275. package/dist/platform/release/index.js +2 -0
  276. package/dist/platform/schema/callable-authoring.d.ts +21 -0
  277. package/dist/platform/schema/callable-authoring.js +27 -0
  278. package/dist/platform/schema/class-authoring.d.ts +61 -11
  279. package/dist/platform/schema/class-authoring.js +37 -4
  280. package/dist/platform/schema/class-icon-svg.d.ts +9 -0
  281. package/dist/platform/schema/class-icon-svg.js +29 -0
  282. package/dist/platform/schema/class-icon.d.ts +3 -8
  283. package/dist/platform/schema/class-icon.js +2 -29
  284. package/dist/platform/schema/index.d.ts +6 -4
  285. package/dist/platform/schema/index.js +2 -1
  286. package/dist/platform/schema/property.d.ts +5 -0
  287. package/dist/platform/schema/schema-authoring.d.ts +14 -7
  288. package/dist/platform/schema/schema-authoring.js +5 -1
  289. package/dist/platform/versioning/dependents.d.ts +18 -0
  290. package/dist/platform/versioning/dependents.js +15 -0
  291. package/dist/platform/versioning/index.d.ts +5 -0
  292. package/dist/platform/versioning/index.js +5 -0
  293. package/dist/platform/versioning/name.d.ts +38 -0
  294. package/dist/platform/versioning/name.js +58 -0
  295. package/dist/platform/versioning/reference.d.ts +48 -0
  296. package/dist/platform/versioning/reference.js +95 -0
  297. package/dist/platform/versioning/version.d.ts +72 -0
  298. package/dist/platform/versioning/version.js +98 -0
  299. package/dist/project/admit.js +1 -5
  300. package/dist/project/define.d.ts +4 -4
  301. package/dist/project/define.js +55 -35
  302. package/dist/project/index.d.ts +1 -1
  303. package/dist/project/install-command.d.ts +6 -0
  304. package/dist/project/install-command.js +9 -0
  305. package/dist/project/project.d.ts +10 -8
  306. package/dist/testing/dataset/define.d.ts +1 -1
  307. package/dist/testing/durable/engine.d.ts +128 -0
  308. package/dist/testing/durable/engine.js +619 -0
  309. package/dist/testing/durable/index.d.ts +3 -0
  310. package/dist/testing/durable/index.js +1 -0
  311. package/dist/testing/durable/steps.d.ts +30 -0
  312. package/dist/testing/durable/steps.js +45 -0
  313. package/dist/testing/index.d.ts +6 -1
  314. package/dist/testing/index.js +5 -1
  315. package/dist/testing/load.js +1 -1
  316. package/dist/tooling/cli/adapter-command.d.ts +35 -0
  317. package/dist/tooling/cli/adapter-command.js +66 -0
  318. package/dist/tooling/cli/arguments.d.ts +17 -6
  319. package/dist/tooling/cli/arguments.js +175 -52
  320. package/dist/tooling/cli/build.d.ts +55 -0
  321. package/dist/tooling/cli/build.js +77 -0
  322. package/dist/tooling/cli/bun.d.ts +0 -1
  323. package/dist/tooling/cli/bun.js +0 -7
  324. package/dist/tooling/cli/commit.d.ts +35 -0
  325. package/dist/tooling/cli/commit.js +235 -0
  326. package/dist/tooling/cli/deploy-mode.d.ts +26 -0
  327. package/dist/tooling/cli/deploy-mode.js +59 -0
  328. package/dist/tooling/cli/deploy-result.d.ts +80 -0
  329. package/dist/tooling/cli/deploy-result.js +64 -0
  330. package/dist/tooling/cli/diff/declared.d.ts +7 -0
  331. package/dist/tooling/cli/diff/declared.js +27 -0
  332. package/dist/tooling/cli/diff/index.d.ts +30 -0
  333. package/dist/tooling/cli/diff/index.js +58 -0
  334. package/dist/tooling/cli/diff/render.d.ts +15 -0
  335. package/dist/tooling/cli/diff/render.js +131 -0
  336. package/dist/tooling/cli/diff/report.d.ts +88 -0
  337. package/dist/tooling/cli/diff/report.js +154 -0
  338. package/dist/tooling/cli/dotenv.d.ts +5 -5
  339. package/dist/tooling/cli/dotenv.js +6 -36
  340. package/dist/tooling/cli/help.js +173 -60
  341. package/dist/tooling/cli/immutable-deployment.d.ts +83 -0
  342. package/dist/tooling/cli/immutable-deployment.js +135 -0
  343. package/dist/tooling/cli/index.d.ts +12 -4
  344. package/dist/tooling/cli/index.js +6 -3
  345. package/dist/tooling/cli/installed-on.d.ts +83 -0
  346. package/dist/tooling/cli/installed-on.js +156 -0
  347. package/dist/tooling/cli/list.d.ts +152 -0
  348. package/dist/tooling/cli/list.js +331 -0
  349. package/dist/tooling/cli/log.d.ts +5 -2
  350. package/dist/tooling/cli/log.js +9 -2
  351. package/dist/tooling/cli/orchestrate.d.ts +0 -6
  352. package/dist/tooling/cli/orchestrate.js +246 -90
  353. package/dist/tooling/cli/project.d.ts +3 -3
  354. package/dist/tooling/cli/publish/index.d.ts +81 -0
  355. package/dist/tooling/cli/publish/index.js +383 -0
  356. package/dist/tooling/cli/publish/report.d.ts +49 -0
  357. package/dist/tooling/cli/publish/report.js +15 -0
  358. package/dist/tooling/cli/registry/client.d.ts +121 -0
  359. package/dist/tooling/cli/registry/client.js +354 -0
  360. package/dist/tooling/cli/registry/error.d.ts +11 -0
  361. package/dist/tooling/cli/registry/error.js +17 -0
  362. package/dist/tooling/cli/registry/executable.d.ts +35 -0
  363. package/dist/tooling/cli/registry/executable.js +96 -0
  364. package/dist/tooling/cli/registry/index.d.ts +9 -0
  365. package/dist/tooling/cli/registry/index.js +8 -0
  366. package/dist/tooling/cli/registry/installations.d.ts +67 -0
  367. package/dist/tooling/cli/registry/installations.js +108 -0
  368. package/dist/tooling/cli/registry/process.d.ts +36 -0
  369. package/dist/tooling/cli/registry/process.js +119 -0
  370. package/dist/tooling/cli/secrets.d.ts +9 -0
  371. package/dist/tooling/cli/secrets.js +19 -0
  372. package/dist/tooling/cli/yank.d.ts +34 -0
  373. package/dist/tooling/cli/yank.js +32 -0
  374. package/dist/tooling/linter/adapters/typescript/imports.d.ts +0 -1
  375. package/dist/tooling/linter/adapters/typescript/imports.js +1 -5
  376. package/dist/tooling/linter/adapters/typescript/index.d.ts +1 -1
  377. package/dist/tooling/linter/adapters/typescript/index.js +1 -1
  378. package/dist/tooling/linter/adapters/typescript/syntax.d.ts +3 -3
  379. package/dist/tooling/linter/adapters/typescript/syntax.js +13 -25
  380. package/dist/tooling/linter/implementations/source/callable-requirements.d.ts +1 -2
  381. package/dist/tooling/linter/implementations/source/callable-requirements.js +11 -16
  382. package/dist/tooling/linter/implementations/source/dependencies.js +13 -72
  383. package/dist/tooling/linter/implementations/source/global.js +1 -2
  384. package/dist/tooling/linter/implementations/source/mutations.js +18 -29
  385. package/dist/tooling/linter/implementations/source/providers.js +5 -5
  386. package/dist/tooling/linter/implementations/source/queries.js +1 -17
  387. package/dist/tooling/linter/implementations/source/shared.d.ts +12 -4
  388. package/dist/tooling/linter/implementations/source/shared.js +101 -46
  389. package/dist/tooling/linter/implementations/source/verifiers.js +0 -2
  390. package/dist/tooling/linter/implementations/source/views.js +2 -2
  391. package/dist/tooling/linter/implementations/source/workflows.js +499 -17
  392. package/dist/tooling/linter/policy/generated.js +14 -63
  393. package/dist/tooling/linter/requirements/registry.js +6 -8
  394. package/dist/tooling/packaging/declarations/ownership.js +1 -1
  395. package/dist/tooling/packaging/finalize.d.ts +1 -1
  396. package/dist/tooling/packaging/finalize.js +1 -1
  397. package/docs/admission-age.md +88 -0
  398. package/docs/auth-api-migration.md +55 -0
  399. package/docs/business-errors.md +42 -0
  400. package/docs/domain-definition-migration.md +44 -0
  401. package/docs/domain-schema-migration.md +36 -0
  402. package/docs/durable-workflows.md +445 -0
  403. package/docs/handler-dependencies.md +213 -0
  404. package/docs/release.md +155 -0
  405. package/docs/schema-cost.md +124 -0
  406. package/package.json +45 -16
  407. package/dist/application/application.d.ts +0 -28
  408. package/dist/application/query/execution/projection.d.ts +0 -3
  409. package/dist/application/query/execution/projection.js +0 -3
  410. package/dist/deployment/adapter/deploy/context.d.ts +0 -15
  411. package/dist/deployment/adapter/deploy/index.d.ts +0 -2
  412. package/dist/deployment/adapter/deploy/result.d.ts +0 -50
  413. package/dist/deployment/adapter/prepare/artifact.d.ts +0 -33
  414. package/dist/deployment/adapter/prepare/context.d.ts +0 -23
  415. package/dist/deployment/adapter/prepare/index.d.ts +0 -2
  416. package/dist/deployment/deploy.d.ts +0 -20
  417. package/dist/deployment/deploy.js +0 -31
  418. package/dist/deployment/release/publication/index.d.ts +0 -6
  419. package/dist/deployment/release/publication/index.js +0 -6
  420. package/dist/deployment/release/publication/manifest.d.ts +0 -3
  421. package/dist/deployment/release/publication/manifest.js +0 -5
  422. package/dist/deployment/release/publication/requirements.d.ts +0 -3
  423. package/dist/deployment/release/publication/requirements.js +0 -3
  424. package/dist/deployment/release/publication/seal.d.ts +0 -10
  425. package/dist/deployment/release/publication/seal.js +0 -39
  426. package/dist/deployment/verify/preflight/artifact.d.ts +0 -6
  427. package/dist/deployment/verify/preflight/artifact.js +0 -122
  428. package/dist/deployment/verify/preflight/publication.d.ts +0 -4
  429. package/dist/deployment/verify/preflight/publication.js +0 -14
  430. package/dist/deployment/verify/readiness/deployment.d.ts +0 -3
  431. package/dist/deployment/verify/readiness/deployment.js +0 -151
  432. package/dist/deployment/verify/readiness/publication.d.ts +0 -11
  433. package/dist/deployment/verify/readiness/publication.js +0 -41
  434. package/dist/execution/service/errors.d.ts +0 -3
  435. package/dist/execution/service/errors.js +0 -3
  436. package/dist/execution/service/publication/delivery.d.ts +0 -2
  437. package/dist/execution/service/publication/installation.d.ts +0 -3
  438. package/dist/execution/service/publication/installation.js +0 -8
  439. package/dist/execution/service/publication/source.d.ts +0 -3
  440. package/dist/execution/service/publication/source.js +0 -11
  441. package/dist/platform/publication/index.d.ts +0 -2
  442. package/dist/platform/publication/index.js +0 -2
  443. package/dist/tooling/cli/astrale/authority.d.ts +0 -5
  444. package/dist/tooling/cli/astrale/authority.js +0 -11
  445. package/dist/tooling/cli/astrale/executable.d.ts +0 -2
  446. package/dist/tooling/cli/astrale/executable.js +0 -47
  447. package/dist/tooling/cli/astrale/failure.d.ts +0 -6
  448. package/dist/tooling/cli/astrale/failure.js +0 -48
  449. package/dist/tooling/cli/astrale/instance.d.ts +0 -11
  450. package/dist/tooling/cli/astrale/instance.js +0 -52
  451. package/dist/tooling/cli/astrale/process.d.ts +0 -13
  452. package/dist/tooling/cli/astrale/process.js +0 -94
  453. package/dist/tooling/cli/astrale/version.d.ts +0 -18
  454. package/dist/tooling/cli/astrale/version.js +0 -55
  455. package/dist/tooling/cli/credential.d.ts +0 -2
  456. package/dist/tooling/cli/credential.js +0 -57
  457. package/dist/tooling/cli/deprecations.d.ts +0 -9
  458. package/dist/tooling/cli/deprecations.js +0 -15
  459. package/dist/tooling/cli/development/candidate.d.ts +0 -25
  460. package/dist/tooling/cli/development/candidate.js +0 -176
  461. package/dist/tooling/cli/development/deployment.d.ts +0 -16
  462. package/dist/tooling/cli/development/deployment.js +0 -39
  463. package/dist/tooling/cli/development/develop.d.ts +0 -11
  464. package/dist/tooling/cli/development/develop.js +0 -243
  465. package/dist/tooling/cli/development/lease.d.ts +0 -18
  466. package/dist/tooling/cli/development/lease.js +0 -163
  467. package/dist/tooling/cli/development/lifecycle.d.ts +0 -9
  468. package/dist/tooling/cli/development/lifecycle.js +0 -43
  469. package/dist/tooling/cli/development/project-imports.d.ts +0 -22
  470. package/dist/tooling/cli/development/project-imports.js +0 -39
  471. package/dist/tooling/cli/development/project-lock.d.ts +0 -16
  472. package/dist/tooling/cli/development/project-lock.js +0 -41
  473. package/dist/tooling/cli/development/rebuild.d.ts +0 -13
  474. package/dist/tooling/cli/development/rebuild.js +0 -58
  475. package/dist/tooling/cli/development/release-evidence.d.ts +0 -4
  476. package/dist/tooling/cli/development/release-evidence.js +0 -10
  477. package/dist/tooling/cli/development/report.d.ts +0 -6
  478. package/dist/tooling/cli/development/report.js +0 -14
  479. package/dist/tooling/cli/development/session-file.d.ts +0 -53
  480. package/dist/tooling/cli/development/session-file.js +0 -337
  481. package/dist/tooling/cli/development/source-watch.d.ts +0 -14
  482. package/dist/tooling/cli/development/source-watch.js +0 -140
  483. package/dist/tooling/cli/development/sources.d.ts +0 -7
  484. package/dist/tooling/cli/development/sources.js +0 -48
  485. package/dist/tooling/cli/development/target-lock.d.ts +0 -16
  486. package/dist/tooling/cli/development/target-lock.js +0 -68
  487. package/dist/tooling/cli/development/view.d.ts +0 -28
  488. package/dist/tooling/cli/development/view.js +0 -151
  489. package/dist/tooling/cli/environment-release.d.ts +0 -21
  490. package/dist/tooling/cli/environment-release.js +0 -46
  491. package/dist/tooling/cli/evidence.d.ts +0 -11
  492. package/dist/tooling/cli/evidence.js +0 -53
  493. package/dist/tooling/cli/installation/index.d.ts +0 -2
  494. package/dist/tooling/cli/installation/index.js +0 -1
  495. package/dist/tooling/cli/installation/observation.d.ts +0 -10
  496. package/dist/tooling/cli/installation/observation.js +0 -44
  497. package/dist/tooling/cli/installation/reconcile.d.ts +0 -32
  498. package/dist/tooling/cli/installation/reconcile.js +0 -122
  499. package/dist/tooling/linter/implementations/source/migrations.d.ts +0 -2
  500. package/dist/tooling/linter/implementations/source/migrations.js +0 -113
  501. package/dist/tooling/linter/qualification/index.d.ts +0 -10
  502. package/dist/tooling/linter/qualification/index.js +0 -2
  503. package/dist/tooling/linter/qualification/query-fixtures.d.ts +0 -2
  504. package/dist/tooling/linter/qualification/query-fixtures.js +0 -68
  505. package/dist/tooling/linter/qualification/runner.d.ts +0 -3
  506. package/dist/tooling/linter/qualification/runner.js +0 -6
  507. /package/dist/application/{application.js → domain.js} +0 -0
  508. /package/dist/{deployment/adapter/deploy/context.js → application/workflow/durable.js} +0 -0
  509. /package/dist/deployment/adapter/{deploy/index.js → bundle/bundle.js} +0 -0
  510. /package/dist/deployment/adapter/{deploy/result.js → bundle/file.js} +0 -0
  511. /package/dist/deployment/adapter/{prepare → bundle}/index.js +0 -0
  512. /package/dist/deployment/adapter/{prepare/artifact.js → release/command.js} +0 -0
  513. /package/dist/deployment/adapter/{prepare → release}/context.js +0 -0
  514. /package/dist/deployment/release/{publication → served}/routes.d.ts +0 -0
  515. /package/dist/deployment/release/{publication → served}/routes.js +0 -0
  516. /package/dist/execution/service/{publication → serving}/index.js +0 -0
@@ -1,6 +1,6 @@
1
1
  export { defineCollectionQuery, defineCompositeQuery, defineQuery, realizeQuery } from './define.js';
2
2
  export { executeQuery } from './execution/index.js';
3
- export { QueryPaginationError, } from './failure.js';
3
+ export { QueryPaginationError, QueryValueMismatchError, } from './failure.js';
4
4
  export { queryResult } from './single/index.js';
5
5
  /** Canonical Query language and authoring values accept DSL ResolvedClass directly. */
6
6
  export * from '@astrale-os/kernel-core/graph/query';
@@ -1,5 +1,5 @@
1
- import type { publication } from '@astrale-os/kernel-protocol';
1
+ import type { release } from '@astrale-os/kernel-protocol';
2
2
  import type { RuntimeRegistry } from '../runtime/index.js';
3
3
  import type { Routes } from './collection.js';
4
4
  /** Lower recipe identities to canonical callable keys after Runtime admission. */
5
- export declare function admit(input: Routes | undefined, registry: RuntimeRegistry): readonly publication.HttpRouteDeclaration[];
5
+ export declare function admit(input: Routes | undefined, registry: RuntimeRegistry): readonly release.HttpRouteDeclaration[];
@@ -4,7 +4,7 @@ export function admit(input, registry) {
4
4
  if (input === undefined)
5
5
  return Object.freeze([]);
6
6
  if (!isRoutes(input))
7
- throw new TypeError('Application routes are not admitted.');
7
+ throw new TypeError('Domain routes are not admitted.');
8
8
  return Object.freeze(input.entries.map(({ target, ...declaration }) => {
9
9
  const implementation = registry.implementations.find(({ definition }) => definition === target);
10
10
  if (implementation === undefined) {
@@ -1,9 +1,9 @@
1
- import type { publication } from '@astrale-os/kernel-protocol';
1
+ import type { release } from '@astrale-os/kernel-protocol';
2
2
  export interface RouteTarget {
3
3
  readonly kind: 'action' | 'workflow';
4
4
  readonly address: string;
5
5
  }
6
- export type RouteInput = Omit<publication.HttpRouteDeclaration, 'callable'>;
6
+ export type RouteInput = Omit<release.HttpRouteDeclaration, 'callable'>;
7
7
  /** One provider-neutral HTTP route targeting an admitted Action or Workflow recipe. */
8
8
  export interface Route<Target extends RouteTarget = RouteTarget> extends RouteInput {
9
9
  readonly target: Target;
@@ -16,6 +16,9 @@ export function admitActions(callables, input) {
16
16
  if (callable === undefined) {
17
17
  throw new TypeError(`Runtime Action ${definition.address} is not root-local and executable.`);
18
18
  }
19
+ if (callable.execution?.durable === true) {
20
+ throw new TypeError(`Runtime Action ${definition.address} is durable; implement it with defineWorkflow.`);
21
+ }
19
22
  return Object.freeze({
20
23
  kind: 'action',
21
24
  address: definition.address,
@@ -6,6 +6,8 @@ export interface RuntimeWorkflow {
6
6
  readonly address: string;
7
7
  readonly callable: ResolvedCallable;
8
8
  readonly definition: WorkflowDefinition;
9
+ /** Declared `execution: { durable: true }`: runs on the workflow engine, never inline. */
10
+ readonly durable: boolean;
9
11
  }
10
- /** Associate admitted Workflows with their exact authenticated value callables. */
12
+ /** Associate admitted Workflows with their exact value callables. */
11
13
  export declare function admitWorkflows(callables: readonly RuntimeCallable[], input: unknown): readonly RuntimeWorkflow[];
@@ -1,6 +1,6 @@
1
1
  import { isWorkflow } from '../workflow/index.js';
2
2
  import { runtimeCallableAt } from './callables.js';
3
- /** Associate admitted Workflows with their exact authenticated value callables. */
3
+ /** Associate admitted Workflows with their exact value callables. */
4
4
  export function admitWorkflows(callables, input) {
5
5
  if (!Array.isArray(input))
6
6
  throw new TypeError('Runtime workflows must be an array.');
@@ -16,17 +16,16 @@ export function admitWorkflows(callables, input) {
16
16
  if (callable === undefined) {
17
17
  throw new TypeError(`Runtime Workflow ${definition.address} is not root-local and executable.`);
18
18
  }
19
- if (callable.auth === 'anonymous') {
20
- throw new TypeError(`Runtime Workflow ${definition.address} must be authenticated.`);
21
- }
22
19
  if (callable.output.mode !== 'value') {
23
20
  throw new TypeError(`Runtime Workflow ${definition.address} must have value output.`);
24
21
  }
22
+ const durable = callable.execution?.durable === true;
25
23
  return Object.freeze({
26
24
  kind: 'workflow',
27
25
  address: definition.address,
28
26
  callable,
29
27
  definition,
28
+ durable,
30
29
  });
31
30
  });
32
31
  return Object.freeze(workflows);
@@ -5,7 +5,10 @@ import { isFrontendSource } from './source.js';
5
5
  export function defineFrontend(input) {
6
6
  if (input === null || typeof input !== 'object' || Array.isArray(input))
7
7
  invalid();
8
- if (Reflect.ownKeys(input).some((key) => key !== 'schema' && key !== 'source' && key !== 'routes' && key !== 'entrypoint')) {
8
+ if (Object.hasOwn(input, 'entrypoint')) {
9
+ throw new TypeError('Frontend entrypoint is removed: declare it with defineSchema(origin, { entrypoint }).');
10
+ }
11
+ if (Reflect.ownKeys(input).some((key) => key !== 'schema' && key !== 'source' && key !== 'routes')) {
9
12
  invalid();
10
13
  }
11
14
  const names = Object.keys(input.schema.views).sort(compare);
@@ -18,10 +21,6 @@ export function defineFrontend(input) {
18
21
  const unknown = Reflect.ownKeys(authored).find((name) => typeof name !== 'string' || !names.includes(name));
19
22
  if (unknown !== undefined)
20
23
  throw new TypeError(`Frontend route ${String(unknown)} is unknown.`);
21
- const entrypoint = input.entrypoint ?? (names.length === 1 ? names[0] : undefined);
22
- if (entrypoint === undefined || !names.includes(entrypoint)) {
23
- throw new TypeError('Frontend entrypoint must name one Schema View.');
24
- }
25
24
  const paths = new Set();
26
25
  const routes = {};
27
26
  for (const name of names) {
@@ -36,7 +35,6 @@ export function defineFrontend(input) {
36
35
  schema: input.schema,
37
36
  source,
38
37
  routes: Object.freeze(routes),
39
- entrypoint: entrypoint,
40
38
  }));
41
39
  }
42
40
  function admitSource(input) {
@@ -8,12 +8,12 @@ export interface FrontendInput<Schema extends schema.DomainSchema> {
8
8
  readonly schema: Schema;
9
9
  readonly source: FrontendSource;
10
10
  readonly routes?: FrontendRouteInputs<Schema>;
11
- readonly entrypoint?: ViewName<Schema>;
11
+ /** Removed: the Schema declares its entrypoint with `defineSchema(origin, { entrypoint })`. */
12
+ readonly entrypoint?: never;
12
13
  }
13
14
  export interface Frontend<Schema extends schema.DomainSchema = schema.DomainSchema> {
14
15
  readonly kind: 'frontend';
15
16
  readonly schema: Schema;
16
17
  readonly source: FrontendSource;
17
18
  readonly routes: FrontendRoutes<Schema>;
18
- readonly entrypoint: ViewName<Schema>;
19
19
  }
@@ -1,6 +1,6 @@
1
1
  export { isFrontend } from './admission.js';
2
2
  export { defineFrontend } from './define.js';
3
3
  export type { Frontend, FrontendInput, FrontendRouteInputs, FrontendRoutes, ViewName, } from './frontend.js';
4
- export type { FrontendHandshake, FrontendRoute, FrontendRouteInput, IframeRequirements, ViewHostRequirements, } from './route.js';
4
+ export type { FrontendHandshake, FrontendRoute, FrontendRouteInput, ViewHostRequirements, } from './route.js';
5
5
  export { external, isFrontendSource, vite } from './source.js';
6
6
  export type { ExternalSource, FrontendSource, ViteSource } from './source.js';
@@ -1,30 +1,16 @@
1
1
  import { type ViewHostRequirements } from '@astrale-os/kernel-core/schema/kernel/syscalls/view-resolution';
2
2
  export type { ViewHostRequirements } from '@astrale-os/kernel-core/schema/kernel/syscalls/view-resolution';
3
3
  export type FrontendHandshake = 'shell' | 'none';
4
- /**
5
- * @deprecated Every trusted View receives the Shell's shared browser profile: requirements within
6
- * it are redundant, and Astrale hosts refuse any beyond it. Declare none.
7
- */
8
- export interface IframeRequirements {
9
- readonly sandbox?: readonly string[];
10
- readonly allow?: readonly string[];
11
- }
12
4
  export type FrontendRouteInput = string | {
13
5
  readonly path?: string;
14
6
  readonly document?: string;
15
7
  readonly handshake?: FrontendHandshake;
16
- /**
17
- * @deprecated Every trusted View receives the Shell's shared browser profile: requirements
18
- * within it are redundant, and Astrale hosts refuse any beyond it. Remove this field.
19
- */
20
- readonly iframe?: IframeRequirements;
21
8
  readonly host?: ViewHostRequirements;
22
9
  };
23
10
  export interface FrontendRoute {
24
11
  readonly path: string;
25
12
  readonly document: string;
26
13
  readonly handshake: FrontendHandshake;
27
- readonly iframe?: IframeRequirements;
28
14
  readonly host?: ViewHostRequirements;
29
15
  }
30
16
  export declare function normalizeRoute(input: FrontendRouteInput | undefined, fallback: string): FrontendRoute;
@@ -1,16 +1,10 @@
1
1
  import { acceptViewHostRequirements, } from '@astrale-os/kernel-core/schema/kernel/syscalls/view-resolution';
2
- const TOKEN = /^[a-z][a-z0-9-]*$/u;
3
- const BASELINES = Object.freeze({
4
- none: iframeRequirements(['allow-scripts'], []),
5
- shell: iframeRequirements(['allow-same-origin', 'allow-scripts'], ['clipboard-write']),
6
- });
7
2
  export function normalizeRoute(input, fallback) {
8
3
  if (typeof input === 'string') {
9
4
  return Object.freeze({ path: routePath(input), document: 'index.html', handshake: 'shell' });
10
5
  }
11
6
  const value = plainRecord(input ?? {});
12
- if (Reflect.ownKeys(value).some((key) => typeof key !== 'string' ||
13
- !['path', 'document', 'handshake', 'iframe', 'host'].includes(key))) {
7
+ if (Reflect.ownKeys(value).some((key) => typeof key !== 'string' || !['path', 'document', 'handshake', 'host'].includes(key))) {
14
8
  invalid();
15
9
  }
16
10
  const authoredHandshake = dataValue(value, 'handshake');
@@ -20,59 +14,14 @@ export function normalizeRoute(input, fallback) {
20
14
  invalid();
21
15
  }
22
16
  const handshake = authoredHandshake ?? 'shell';
23
- const iframe = normalizeIframeRequirements(dataValue(value, 'iframe'), handshake);
24
17
  const host = acceptViewHostRequirements(dataValue(value, 'host'), handshake, true);
25
18
  return Object.freeze({
26
19
  path: routePath(dataValue(value, 'path') ?? fallback),
27
20
  document: filePath(dataValue(value, 'document') ?? 'index.html'),
28
21
  handshake,
29
- ...(iframe === undefined ? {} : { iframe }),
30
22
  ...(host === undefined ? {} : { host }),
31
23
  });
32
24
  }
33
- function normalizeIframeRequirements(input, handshake) {
34
- if (input === undefined)
35
- return undefined;
36
- const value = plainRecord(input);
37
- if (Reflect.ownKeys(value).some((key) => key !== 'sandbox' && key !== 'allow'))
38
- invalid();
39
- const authored = iframeRequirements(tokenArray(dataValue(value, 'sandbox')), tokenArray(dataValue(value, 'allow')));
40
- assertSandboxRelationships(authored.sandbox);
41
- const baseline = BASELINES[handshake];
42
- const sandbox = authored.sandbox.filter((token) => !baseline.sandbox.includes(token));
43
- const allow = authored.allow.filter((feature) => !baseline.allow.includes(feature));
44
- return sandbox.length === 0 && allow.length === 0 ? undefined : iframeRequirements(sandbox, allow);
45
- }
46
- function iframeRequirements(sandbox, allow) {
47
- return Object.freeze({
48
- sandbox: Object.freeze([...new Set(sandbox)].sort()),
49
- allow: Object.freeze([...new Set(allow)].sort()),
50
- });
51
- }
52
- function tokenArray(input) {
53
- if (input === undefined)
54
- return [];
55
- if (!Array.isArray(input))
56
- invalid();
57
- const descriptors = Object.getOwnPropertyDescriptors(input);
58
- const result = [];
59
- for (let index = 0; index < input.length; index += 1) {
60
- const descriptor = descriptors[String(index)];
61
- if (descriptor === undefined || !('value' in descriptor))
62
- invalid();
63
- if (typeof descriptor.value !== 'string' || !TOKEN.test(descriptor.value))
64
- invalid();
65
- result.push(descriptor.value);
66
- }
67
- for (const key of Reflect.ownKeys(descriptors)) {
68
- if (key === 'length')
69
- continue;
70
- if (typeof key !== 'string' || !/^(0|[1-9][0-9]*)$/u.test(key) || Number(key) >= input.length) {
71
- invalid();
72
- }
73
- }
74
- return result;
75
- }
76
25
  function plainRecord(input) {
77
26
  if (typeof input !== 'object' || input === null || Array.isArray(input))
78
27
  invalid();
@@ -89,18 +38,6 @@ function dataValue(input, key) {
89
38
  invalid();
90
39
  return descriptor.value;
91
40
  }
92
- function assertSandboxRelationships(sandbox) {
93
- const tokens = new Set(sandbox);
94
- if (tokens.has('allow-popups-to-escape-sandbox') && !tokens.has('allow-popups'))
95
- invalid();
96
- if (tokens.has('allow-top-navigation') && tokens.has('allow-top-navigation-by-user-activation')) {
97
- invalid();
98
- }
99
- if (tokens.has('allow-top-navigation-to-custom-protocols') &&
100
- (tokens.has('allow-top-navigation') || tokens.has('allow-popups'))) {
101
- invalid();
102
- }
103
- }
104
41
  export function defaultRoute(name) {
105
42
  return routePath(`/${name
106
43
  .replace(/([a-z0-9])([A-Z])/gu, '$1-$2')
@@ -1,4 +1,5 @@
1
1
  export { defineWorkflow } from './define.js';
2
- export type { WorkflowContext } from './context.js';
3
- export type { Workflow, WorkflowAddress, WorkflowDefinition } from './workflow.js';
2
+ export type { InlineWorkflowContext, WorkflowContext } from './context.js';
3
+ export type { DurableCallable, DurableExecution, DurableParallelOutputs, DurableParallelStep, DurableParallelSteps, DurableStep, DurableStepAuthority, DurableStepDeclaration, DurableStepId, DurableStepRetry, DurableWorkflowContext, SignalOutcome, } from './durable.js';
4
+ export type { Workflow, WorkflowAddress, WorkflowDefinition, WorkflowOptions } from './workflow.js';
4
5
  export type { DeclaredErrorDefinition, DeclaredErrorFactory, DeclaredErrorFamily, DeclaredErrorOptions, DeclaredErrors, } from '../error/index.js';
@@ -2,8 +2,14 @@ import type { Domain } from '../../platform/schema/index.js';
2
2
  import type { ActionContext, ResolvedCallable } from '../action/index.js';
3
3
  import type { DeclaredErrors, NoDeclaredErrors } from '../error/index.js';
4
4
  import type { Integrations } from '../integration/index.js';
5
+ import type { DurableCallable, DurableWorkflowContext } from './durable.js';
5
6
  import type { WorkflowStep } from './step/index.js';
6
- /** Exact multi-step Workflow context for one authenticated value-output callable. */
7
- export type WorkflowContext<Callable extends ResolvedCallable, DomainValue extends Domain = Domain, Definitions extends Integrations = Readonly<Record<never, never>>, Errors extends DeclaredErrors = NoDeclaredErrors> = ActionContext<Callable, DomainValue, Definitions, Errors> & {
7
+ /** Multi-step context of one value-output callable run inside its invocation. */
8
+ export type InlineWorkflowContext<Callable extends ResolvedCallable, DomainValue extends Domain = Domain, Definitions extends Integrations = Readonly<Record<never, never>>, Errors extends DeclaredErrors = NoDeclaredErrors> = ActionContext<Callable, DomainValue, Definitions, Errors> & {
8
9
  readonly step: WorkflowStep;
9
10
  };
11
+ /**
12
+ * Exact Workflow context for one callable: engine-journaled when its Schema declares
13
+ * `execution: { durable: true }`, otherwise run inside its invocation.
14
+ */
15
+ export type WorkflowContext<Callable extends ResolvedCallable, DomainValue extends Domain = Domain, Definitions extends Integrations = Readonly<Record<never, never>>, Errors extends DeclaredErrors = NoDeclaredErrors> = Callable extends DurableCallable ? DurableWorkflowContext<Callable, DomainValue, Definitions, Errors> : InlineWorkflowContext<Callable, DomainValue, Definitions, Errors>;
@@ -1,11 +1,11 @@
1
1
  import type { schema } from '../../platform/schema/index.js';
2
2
  import type { ResolvedDomainOf } from '../action/index.js';
3
- import type { DeclaredErrorOptions, DeclaredErrors, NoDeclaredErrors } from '../error/index.js';
3
+ import type { DeclaredErrors, NoDeclaredErrors } from '../error/index.js';
4
4
  import type { Integrations } from '../integration/index.js';
5
- import type { CallableAtWorkflowAddress, Workflow, WorkflowAddress, WorkflowDefinition } from './workflow.js';
6
- /** Define one authenticated multi-step value-output implementation by its SDK Action address. */
5
+ import type { CallableAtWorkflowAddress, Workflow, WorkflowAddress, WorkflowDefinition, WorkflowOptions } from './workflow.js';
6
+ /** Define one multi-step value-output implementation by its SDK Action address. */
7
7
  export declare function defineWorkflow<Schema extends schema.DomainSchema, Definitions extends Integrations = Readonly<Record<never, never>>>(): {
8
8
  <const Address extends WorkflowAddress<Schema>>(address: Address, run: Workflow<CallableAtWorkflowAddress<Schema, Address>, Definitions, ResolvedDomainOf<Schema>, NoDeclaredErrors>): WorkflowDefinition<Schema, Address, Definitions, NoDeclaredErrors>;
9
- <const Address extends WorkflowAddress<Schema>, const Errors extends DeclaredErrors>(address: Address, options: DeclaredErrorOptions<Errors>, run: Workflow<CallableAtWorkflowAddress<Schema, Address>, Definitions, ResolvedDomainOf<Schema>, Errors>): WorkflowDefinition<Schema, Address, Definitions, Errors>;
9
+ <const Address extends WorkflowAddress<Schema>, const Errors extends DeclaredErrors = NoDeclaredErrors>(address: Address, options: WorkflowOptions<Errors>, run: Workflow<CallableAtWorkflowAddress<Schema, Address>, Definitions, ResolvedDomainOf<Schema>, Errors>): WorkflowDefinition<Schema, Address, Definitions, Errors>;
10
10
  };
11
11
  export declare function isWorkflow(input: unknown): input is WorkflowDefinition;
@@ -1,25 +1,30 @@
1
1
  import { patterns } from '@astrale-os/kernel-dsl/v1/addressing';
2
2
  import { rememberDeclaredErrors } from '../error/index.js';
3
3
  const admittedWorkflows = new WeakSet();
4
- /** Define one authenticated multi-step value-output implementation by its SDK Action address. */
4
+ /** Define one multi-step value-output implementation by its SDK Action address. */
5
5
  export function defineWorkflow() {
6
6
  return function define(address, optionsOrRun, possibleRun) {
7
7
  acceptWorkflowAddress(address);
8
- const options = possibleRun === undefined ? undefined : optionsOrRun;
8
+ const options = possibleRun === undefined ? undefined : acceptOptions(optionsOrRun);
9
9
  const run = possibleRun ?? optionsOrRun;
10
10
  if (typeof run !== 'function')
11
11
  throw new TypeError('Workflow run must be a function.');
12
- const workflow = Object.freeze({
13
- kind: 'workflow',
14
- address,
15
- run,
16
- });
17
- if (options !== undefined)
18
- rememberDeclaredErrors(workflow, options);
12
+ const workflow = Object.freeze({ kind: 'workflow', address, run });
13
+ if (options?.errors !== undefined)
14
+ rememberDeclaredErrors(workflow, { errors: options.errors });
19
15
  admittedWorkflows.add(workflow);
20
16
  return workflow;
21
17
  };
22
18
  }
19
+ function acceptOptions(input) {
20
+ if (input === null ||
21
+ typeof input !== 'object' ||
22
+ Array.isArray(input) ||
23
+ Reflect.ownKeys(input).some((key) => key !== 'errors')) {
24
+ throw new TypeError('Workflow options accept only errors.');
25
+ }
26
+ return input;
27
+ }
23
28
  export function isWorkflow(input) {
24
29
  return input !== null && typeof input === 'object' && admittedWorkflows.has(input);
25
30
  }
@@ -0,0 +1,197 @@
1
+ import type { IssuerId } from '../../platform/auth/index.js';
2
+ import type { NodeId } from '../../platform/graph/node/index.js';
3
+ import type { CallableInputOf, Domain, ResolvedMethod } from '../../platform/schema/index.js';
4
+ import type { Value } from '../../platform/value/index.js';
5
+ import type { DomainCapabilities, DomainKernelSessions } from '../action/index.js';
6
+ import type { HandlerDependencies } from '../dependency/index.js';
7
+ import type { DeclaredErrorFactory, DeclaredErrors, NoDeclaredErrors } from '../error/index.js';
8
+ import type { Integrations, ReplayableIntegrationClients } from '../integration/index.js';
9
+ import type { Mutation, MutationExecutor } from '../mutation/index.js';
10
+ import type { QueryDefinition } from '../query/index.js';
11
+ /** A callable whose Schema declares `execution: { durable: true }`. */
12
+ export interface DurableCallable {
13
+ readonly execution: {
14
+ readonly durable: true;
15
+ };
16
+ }
17
+ /** Attested facts of the running Execution. They are data, never authority. */
18
+ export interface DurableExecution {
19
+ /** The `K.Execution` node recording this call. */
20
+ readonly id: NodeId;
21
+ readonly function: {
22
+ readonly id: NodeId;
23
+ readonly version: `sha256:${string}`;
24
+ };
25
+ /** Kernel that recorded the Execution; every Step calls it back as the Domain. */
26
+ readonly kernel: IssuerId;
27
+ /** Who started the Execution. The Workflow never receives their credential. */
28
+ readonly initiator: {
29
+ readonly principal: NodeId;
30
+ readonly caller: NodeId;
31
+ };
32
+ /** Receiver of a durable instance Method. */
33
+ readonly receiver?: NodeId;
34
+ }
35
+ /**
36
+ * What one Step holds: the capabilities of an Action, acting as the Domain alone. Kernel access
37
+ * exists only here, so every Kernel call belongs to a journaled Step and a replay never repeats it.
38
+ * Every key below comes from one sequence derived from the Execution, the Step and the position of
39
+ * the call, which restarts with each attempt: a retried Step sends the same keys again.
40
+ */
41
+ export interface DurableStepAuthority<DomainValue extends Domain = Domain, Definitions extends Integrations = Readonly<Record<never, never>>> extends DomainCapabilities<DomainValue, 'self'> {
42
+ /**
43
+ * Kernel Session acting as the Domain. Each `invoke` of a durable callable without an explicit
44
+ * `idempotencyKey` carries the next derived key, so a retried Step reaches the same durable child
45
+ * Execution. An `invoke` of any other callable carries no key, which the Kernel would refuse, and
46
+ * runs again when the Step is retried.
47
+ */
48
+ readonly kernel: DomainKernelSessions<'self'>;
49
+ /** Dependency invokers acting as the Domain, keyed like `kernel.invoke`. */
50
+ readonly dependencies: HandlerDependencies<DomainValue, 'self'>;
51
+ /**
52
+ * Each Mutation carries the next derived key. The Kernel commits a receipt with the write and
53
+ * answers a retried Step with its first result.
54
+ */
55
+ readonly mutate: MutationExecutor<DomainValue>;
56
+ /**
57
+ * Operations a retried Step may attempt again. A keyed operation of source `execution` receives
58
+ * the next derived key as its idempotency key. An operation whose decision may be `unsafe` is
59
+ * absent, and refused before its Provider runs if its decision is `unsafe` anyway.
60
+ */
61
+ readonly integrations: ReplayableIntegrationClients<Definitions>;
62
+ }
63
+ /**
64
+ * How long a failing Step is retried. Its limits, `maxAttempts` and `maxDurationMs`, go together: a
65
+ * Step that declares either replaces both limits of the deployment, and the one it omits does not
66
+ * bound it. The budget is spent at the first limit reached.
67
+ *
68
+ * Only a failure of the Step's own spends an attempt. A Kernel that refuses with a prescribed delay
69
+ * (capacity, draining, maintenance), or that does not answer a Query or a keyed call, is waited out
70
+ * without spending one; a request the Kernel can never accept fails the Step at once.
71
+ */
72
+ export interface DurableStepRetry {
73
+ /**
74
+ * Attempts that may fail on the Step's own account, the first one included: 1 to 1,000. A wait for
75
+ * the platform spends none.
76
+ */
77
+ readonly maxAttempts?: number;
78
+ /**
79
+ * Time from the first attempt after which a failed attempt is not retried, whatever it failed on,
80
+ * 1 ms to 365 days; an attempt already scheduled, such as after a long prescribed delay, still
81
+ * runs. The only bound on waiting for the platform.
82
+ */
83
+ readonly maxDurationMs?: number;
84
+ /** Delay before the first retry, doubled on each failure: 1 ms to one hour. */
85
+ readonly initialIntervalMs?: number;
86
+ /**
87
+ * Longest backoff between two attempts: `initialIntervalMs` to one day. A longer delay the Kernel
88
+ * prescribes is still waited.
89
+ */
90
+ readonly maxIntervalMs?: number;
91
+ }
92
+ /** A Step: its id, and the retry budget and timeout it declares instead of the deployment's. */
93
+ export interface DurableStepDeclaration {
94
+ readonly id: string;
95
+ readonly retry?: DurableStepRetry;
96
+ /** Deadline of one attempt, including its Kernel calls: one second to ten minutes. */
97
+ readonly timeoutMs?: number;
98
+ }
99
+ /**
100
+ * A Step's id alone, under the deployment's retry budget and Step timeout, or a declaration of its
101
+ * own. A Step that spends its budget, or that the Kernel refuses for good, throws an error
102
+ * `exhausted` recognizes; uncaught, the Execution ends `failed` with code `STEP_EXHAUSTED`.
103
+ */
104
+ export type DurableStepId = string | DurableStepDeclaration;
105
+ export interface DurableStep<DomainValue extends Domain = Domain, Definitions extends Integrations = Readonly<Record<never, never>>> {
106
+ /**
107
+ * Run `execute` once and journal its portable output; a replay returns the journaled output. A
108
+ * Step may run again when its outcome was not journaled: its Mutations, durable calls and keyed
109
+ * Integration operations are answered from their keys, and any other effect must be idempotent.
110
+ */
111
+ run<Output>(step: DurableStepId, execute: (authority: DurableStepAuthority<DomainValue, Definitions>) => Output | Promise<Output>): Promise<Output>;
112
+ /**
113
+ * One journaled Query. A replay returns the result of its first run, so a later Step that depends
114
+ * on it resends the same request whenever it is retried.
115
+ */
116
+ query<Output>(step: DurableStepId, query: QueryDefinition<DomainValue, void, Output>): Promise<Output>;
117
+ query<Input, Output>(step: DurableStepId, query: QueryDefinition<DomainValue, Input, Output>, input: Input): Promise<Output>;
118
+ /**
119
+ * One journaled Mutation. A Step replayed after its commit receives the result of that commit
120
+ * from the Kernel's receipt instead of writing again.
121
+ */
122
+ mutate<Input, Output>(step: DurableStepId, mutation: Mutation<DomainValue, Input, Output>, input: Input): Promise<Output>;
123
+ /**
124
+ * Run the Steps `declare` declares together, in one round trip to the engine, the one way to await
125
+ * several Steps at once. Each keeps its id, retry budget, timeout and keys. Once every Step has
126
+ * settled, resolves with their outputs in declaration order, or throws the failure of the first
127
+ * failed Step in that order, as that Step alone would throw it; the other Steps' effects stand.
128
+ * An empty list resolves with `[]`.
129
+ */
130
+ parallel<const Steps extends readonly [] | readonly DurableParallelStep<unknown>[]>(declare: (steps: DurableParallelSteps<DomainValue, Definitions>) => Steps): Promise<DurableParallelOutputs<Steps>>;
131
+ }
132
+ declare const PARALLEL_STEP: unique symbol;
133
+ /** A Step `step.parallel` starts with its siblings. It runs nothing on its own and is never awaited. */
134
+ export interface DurableParallelStep<out Output> {
135
+ readonly [PARALLEL_STEP]: Output;
136
+ }
137
+ /** The Steps one `step.parallel` declares, with the arguments of `step.run`, `query` and `mutate`. */
138
+ export interface DurableParallelSteps<DomainValue extends Domain = Domain, Definitions extends Integrations = Readonly<Record<never, never>>> {
139
+ run<Output>(step: DurableStepId, execute: (authority: DurableStepAuthority<DomainValue, Definitions>) => Output | Promise<Output>): DurableParallelStep<Output>;
140
+ query<Output>(step: DurableStepId, query: QueryDefinition<DomainValue, void, Output>): DurableParallelStep<Output>;
141
+ query<Input, Output>(step: DurableStepId, query: QueryDefinition<DomainValue, Input, Output>, input: Input): DurableParallelStep<Output>;
142
+ mutate<Input, Output>(step: DurableStepId, mutation: Mutation<DomainValue, Input, Output>, input: Input): DurableParallelStep<Output>;
143
+ }
144
+ /** The outputs of parallel Steps, in their declaration order. */
145
+ export type DurableParallelOutputs<Steps extends readonly DurableParallelStep<unknown>[]> = {
146
+ -readonly [Index in keyof Steps]: Steps[Index] extends DurableParallelStep<infer Output> ? Output : never;
147
+ };
148
+ type DurableSelfOf<Callable> = Callable extends ResolvedMethod<unknown, unknown, false> ? {
149
+ readonly self: NodeId;
150
+ } : {
151
+ readonly self?: never;
152
+ };
153
+ /** What a bounded wait for a signal ended with: the signal's value, or its timeout. */
154
+ export type SignalOutcome<Signal extends Value = Value> = {
155
+ readonly kind: 'signal';
156
+ readonly value: Signal;
157
+ } | {
158
+ readonly kind: 'timeout';
159
+ };
160
+ /** Context of a durable Workflow: engine-journaled, acting as its Domain. */
161
+ export type DurableWorkflowContext<Callable, DomainValue extends Domain = Domain, Definitions extends Integrations = Readonly<Record<never, never>>, Errors extends DeclaredErrors = NoDeclaredErrors> = {
162
+ readonly domain: DomainValue;
163
+ readonly input: CallableInputOf<Callable>;
164
+ readonly execution: DurableExecution;
165
+ /** Construct one implementation-declared safe business error for `throw error(...)`. */
166
+ readonly error: DeclaredErrorFactory<Errors>;
167
+ readonly step: DurableStep<DomainValue, Definitions>;
168
+ /** Durable timer kept by the engine, even while the Domain is idle or down. */
169
+ sleep(durationMs: number): Promise<void>;
170
+ /**
171
+ * Wait for the value `Execution.signal({ name, value })` delivers once under `name`, whether it
172
+ * was sent before or during the wait.
173
+ */
174
+ awaitSignal<Signal extends Value = Value>(name: string): Promise<Signal>;
175
+ /**
176
+ * Wait at most `timeoutMs` for the signal `name`. The engine journals which came first, so a
177
+ * replay answers the same. A signal sent after the timeout is kept for a later wait.
178
+ */
179
+ awaitSignal<Signal extends Value = Value>(name: string, options: {
180
+ readonly timeoutMs: number;
181
+ }): Promise<SignalOutcome<Signal>>;
182
+ /** Whether `error` is the engine's cooperative cancellation, which the Workflow may compensate. */
183
+ cancelled(error: unknown): boolean;
184
+ /**
185
+ * Whether `error` is a Step that spent its retry budget, or that the Kernel refused for good,
186
+ * which the Workflow may handle.
187
+ */
188
+ exhausted(error: unknown): boolean;
189
+ /**
190
+ * The failure of a Step attempt, to throw inside the Step, that the engine attempts again after
191
+ * exactly `delayMs` (at most one hour), as an HTTP `Retry-After` asks. The attempt spends the
192
+ * Step's budget, since only the Step knows whether its cause clears. A Kernel refusal that
193
+ * prescribes a delay is waited out already, without spending it.
194
+ */
195
+ retryAfter(delayMs: number, cause?: unknown): Error;
196
+ } & DurableSelfOf<Callable>;
197
+ export {};
@@ -1,6 +1,7 @@
1
1
  export { defineWorkflow, isWorkflow } from './define.js';
2
- export type { WorkflowContext } from './context.js';
3
- export type { CallableAtWorkflowAddress, Workflow, WorkflowAddress, WorkflowCallable, WorkflowDefinition, } from './workflow.js';
2
+ export type { InlineWorkflowContext, WorkflowContext } from './context.js';
3
+ export type { DurableCallable, DurableExecution, DurableParallelOutputs, DurableParallelStep, DurableParallelSteps, DurableStep, DurableStepAuthority, DurableStepDeclaration, DurableStepId, DurableStepRetry, DurableWorkflowContext, SignalOutcome, } from './durable.js';
4
+ export type { CallableAtWorkflowAddress, Workflow, WorkflowAddress, WorkflowCallable, WorkflowDefinition, WorkflowOptions, } from './workflow.js';
4
5
  export * as step from './step/index.js';
5
6
  export * as runner from './runner/index.js';
6
7
  export type { DeclaredErrorDefinition, DeclaredErrorFactory, DeclaredErrorFamily, DeclaredErrorOptions, DeclaredErrors, } from '../error/index.js';
@@ -1,11 +1,12 @@
1
- import * as value from '../../../platform/value/index.js';
2
1
  import { acceptStepId } from '../step/index.js';
2
+ import { acceptStepOutput } from '../step/output.js';
3
3
  /** Process-local runner for tests and explicitly non-durable embeddings. */
4
4
  export function createInlineWorkflowRunner() {
5
5
  async function run(workflow, context) {
6
6
  const execution = createInlineStep(context.execution.signal);
7
7
  const complete = Object.freeze({ ...context, step: execution.step });
8
8
  try {
9
+ // Runtime dispatches only non-durable Workflows inline; durable ones run on the engine.
9
10
  return await workflow.run(complete);
10
11
  }
11
12
  finally {
@@ -37,10 +38,8 @@ function createInlineStep(signal) {
37
38
  started.add(accepted);
38
39
  execution = (async () => {
39
40
  const output = await execute();
40
- if (output === undefined)
41
- return output;
42
41
  try {
43
- return value.accept(output);
42
+ return acceptStepOutput(output);
44
43
  }
45
44
  catch (cause) {
46
45
  throw new TypeError(`Workflow Step ${accepted} output must be portable.`, {
@@ -2,9 +2,9 @@ import type { Domain, schema } from '../../../platform/schema/index.js';
2
2
  import type { ActionOutputOf, ResolvedCallable, ResolvedDomainOf } from '../../action/index.js';
3
3
  import type { DeclaredErrors, NoDeclaredErrors } from '../../error/index.js';
4
4
  import type { Integrations } from '../../integration/index.js';
5
- import type { WorkflowContext } from '../context.js';
5
+ import type { InlineWorkflowContext } from '../context.js';
6
6
  import type { CallableAtWorkflowAddress, WorkflowAddress, WorkflowDefinition } from '../workflow.js';
7
- export type WorkflowExecutionContext<Callable extends ResolvedCallable, Definitions extends Integrations, DomainValue extends Domain = Domain, Errors extends DeclaredErrors = NoDeclaredErrors> = Omit<WorkflowContext<Callable, DomainValue, Definitions, Errors>, 'step'>;
7
+ export type WorkflowExecutionContext<Callable extends ResolvedCallable, Definitions extends Integrations, DomainValue extends Domain = Domain, Errors extends DeclaredErrors = NoDeclaredErrors> = Omit<InlineWorkflowContext<Callable, DomainValue, Definitions, Errors>, 'step'>;
8
8
  export interface WorkflowRunner {
9
9
  run<Schema extends schema.DomainSchema, Address extends WorkflowAddress<Schema>, Definitions extends Integrations, Errors extends DeclaredErrors, Callable extends CallableAtWorkflowAddress<Schema, Address> = CallableAtWorkflowAddress<Schema, Address>>(workflow: WorkflowDefinition<Schema, Address, Definitions, Errors>, context: WorkflowExecutionContext<Callable, Definitions, ResolvedDomainOf<Schema>, Errors>): Promise<ActionOutputOf<Callable>>;
10
10
  }
@@ -0,0 +1,2 @@
1
+ /** Capture optional Object fields as absence without changing portable Array or scalar semantics. */
2
+ export declare function acceptStepOutput<Output>(input: Output): Output;