@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,4 +1,4 @@
1
- import type * as publication from '@astrale-os/kernel-protocol/publication';
1
+ import type * as release from '@astrale-os/kernel-protocol/release';
2
2
  import type { Build } from '../../build/index.js';
3
3
  import type { Addressing } from '../addressing.js';
4
- export declare function views(build: Build, addressing: Addressing): readonly publication.ViewBinding[];
4
+ export declare function views(build: Build, addressing: Addressing): readonly release.ViewBinding[];
@@ -8,7 +8,6 @@ export function views(build, addressing) {
8
8
  view: route.view,
9
9
  href: new URL(route.path.replace(/^\//u, ''), base).href,
10
10
  handshake: route.handshake,
11
- ...(route.iframe === undefined ? {} : { iframe: route.iframe }),
12
11
  ...(route.host === undefined ? {} : { host: route.host }),
13
12
  })));
14
13
  }
@@ -1,5 +1,5 @@
1
1
  import type { ResolvedRuntimeReference } from './resolve.js';
2
- /** Prove that a resolved module exports the exact Runtime captured by an Application. */
3
- export declare function admit<RuntimeValue extends object>(application: {
2
+ /** Prove that a resolved module exports the exact Runtime captured by a Domain definition. */
3
+ export declare function admit<RuntimeValue extends object>(definition: {
4
4
  readonly runtime: RuntimeValue;
5
5
  }, resolved: ResolvedRuntimeReference): RuntimeValue;
@@ -1,11 +1,11 @@
1
1
  import { isResolvedRuntimeReference } from './resolve.js';
2
- /** Prove that a resolved module exports the exact Runtime captured by an Application. */
3
- export function admit(application, resolved) {
2
+ /** Prove that a resolved module exports the exact Runtime captured by a Domain definition. */
3
+ export function admit(definition, resolved) {
4
4
  if (!isResolvedRuntimeReference(resolved)) {
5
5
  throw new TypeError('Resolved Runtime reference is not admitted.');
6
6
  }
7
- if (resolved.runtime !== application.runtime) {
8
- throw new TypeError('Runtime module default export differs from the Application Runtime.');
7
+ if (resolved.runtime !== definition.runtime) {
8
+ throw new TypeError('Runtime module default export differs from the Domain Runtime.');
9
9
  }
10
- return application.runtime;
10
+ return definition.runtime;
11
11
  }
@@ -1,4 +1,3 @@
1
- export { preflight as verifyPreflight } from './preflight/index.js';
2
- export { isPreparedArtifact } from './preflight/index.js';
3
- export type { PreflightInput } from './preflight/index.js';
4
- export { readiness as verifyReadiness, verifyDeployment } from './readiness/index.js';
1
+ export { bundle as verifyBundle, isBundle, uploadedBuild as verifyUploadedBuild, } from './preflight/index.js';
2
+ export type { BundleInput } from './preflight/index.js';
3
+ export { readiness as verifyReadiness, readinessPaths } from './readiness/index.js';
@@ -1,3 +1,2 @@
1
- export { preflight as verifyPreflight } from './preflight/index.js';
2
- export { isPreparedArtifact } from './preflight/index.js';
3
- export { readiness as verifyReadiness, verifyDeployment } from './readiness/index.js';
1
+ export { bundle as verifyBundle, isBundle, uploadedBuild as verifyUploadedBuild, } from './preflight/index.js';
2
+ export { readiness as verifyReadiness, readinessPaths } from './readiness/index.js';
@@ -0,0 +1,18 @@
1
+ import type { Bundle, Bundler, BundleSource } from '../../adapter/bundle/index.js';
2
+ import type { Build, BuildDigest } from '../../build/index.js';
3
+ import type { ResolvedRuntimeReference } from '../../runtime/index.js';
4
+ export interface BundleInput<BuildValue extends Build = Build> {
5
+ readonly build: BuildValue;
6
+ readonly runtime: ResolvedRuntimeReference;
7
+ readonly bundler: Pick<Bundler, 'id' | 'version'>;
8
+ readonly source: BundleSource;
9
+ }
10
+ /** Detach bundler output and identify it by the build digest of its exact bytes. */
11
+ export declare function bundle<const BuildValue extends Build>(input: BundleInput<BuildValue>): Bundle<BuildValue>;
12
+ export declare function isBundle(input: unknown): input is Bundle;
13
+ /**
14
+ * `deploy` rebuilds (there is no `deploy --from`), so the exact upload of an immutable deployment
15
+ * must carry the build digest `astrale-domain build` prints for the same tree. A different digest
16
+ * refuses the deployment.
17
+ */
18
+ export declare function uploadedBuild(expected: Bundle, uploaded: BuildDigest): void;
@@ -0,0 +1,71 @@
1
+ import { buildDigest, buildManifest } from '../../build/index.js';
2
+ import { admit as admitRuntime } from '../../runtime/index.js';
3
+ import { build as verifyBuild } from './build.js';
4
+ const admittedBundles = new WeakSet();
5
+ /** Detach bundler output and identify it by the build digest of its exact bytes. */
6
+ export function bundle(input) {
7
+ verifyBuild(input.build);
8
+ admitRuntime({ runtime: input.build.runtime }, input.runtime);
9
+ const source = input.source;
10
+ if (source === null || typeof source !== 'object' || Array.isArray(source))
11
+ invalid();
12
+ if (Reflect.ownKeys(source).some((key) => key !== 'entrypoint' && key !== 'files'))
13
+ invalid();
14
+ if (!Array.isArray(source.files) || source.files.length === 0) {
15
+ throw new TypeError('Bundle files must be a non-empty array.');
16
+ }
17
+ const files = source.files.map((file) => {
18
+ if (file === null || typeof file !== 'object' || Array.isArray(file))
19
+ invalid();
20
+ if (Reflect.ownKeys(file).some((key) => key !== 'path' && key !== 'content') ||
21
+ !(file.content instanceof Uint8Array)) {
22
+ invalid();
23
+ }
24
+ return Object.freeze({ path: file.path, content: new Uint8Array(file.content) });
25
+ });
26
+ if (new Set(files.map((file) => file.path)).size !== files.length) {
27
+ throw new TypeError('Bundle files must have unique paths.');
28
+ }
29
+ const root = input.build.schema.compiled.root;
30
+ const manifest = buildManifest({
31
+ origin: root.origin,
32
+ revision: root.revision,
33
+ bundle: input.build.schema.bundle.ref.digest,
34
+ bundler: { id: input.bundler.id, version: input.bundler.version },
35
+ entrypoint: source.entrypoint,
36
+ files,
37
+ });
38
+ const contents = new Map(files.map((file) => [file.path, file.content]));
39
+ const admitted = Object.freeze({
40
+ kind: 'bundle',
41
+ build: input.build,
42
+ manifest,
43
+ digest: buildDigest(manifest),
44
+ entrypoint: manifest.entrypoint,
45
+ files: Object.freeze(manifest.files.map((file) => {
46
+ const content = contents.get(file.path);
47
+ return Object.freeze({ path: file.path, bytes: () => new Uint8Array(content) });
48
+ })),
49
+ });
50
+ admittedBundles.add(admitted);
51
+ return admitted;
52
+ }
53
+ export function isBundle(input) {
54
+ return input !== null && typeof input === 'object' && admittedBundles.has(input);
55
+ }
56
+ /**
57
+ * `deploy` rebuilds (there is no `deploy --from`), so the exact upload of an immutable deployment
58
+ * must carry the build digest `astrale-domain build` prints for the same tree. A different digest
59
+ * refuses the deployment.
60
+ */
61
+ export function uploadedBuild(expected, uploaded) {
62
+ if (!isBundle(expected))
63
+ throw new TypeError('Uploaded build check requires an admitted Bundle.');
64
+ if (uploaded === expected.digest)
65
+ return;
66
+ throw new TypeError(`The uploaded code has build digest ${uploaded}, not ${expected.digest} ` +
67
+ 'as `astrale-domain build` gives for this tree.');
68
+ }
69
+ function invalid() {
70
+ throw new TypeError('Bundle source is invalid.');
71
+ }
@@ -1,13 +1,2 @@
1
- import type { ArtifactSource, PreparedArtifact } from '../../adapter/prepare/index.js';
2
- import type { Build } from '../../build/index.js';
3
- import type { ResolvedRuntimeReference } from '../../runtime/index.js';
4
- export { artifact, isPreparedArtifact } from './artifact.js';
1
+ export { bundle, isBundle, uploadedBuild, type BundleInput } from './bundle.js';
5
2
  export { build } from './build.js';
6
- export { publication } from './publication.js';
7
- export interface PreflightInput<BuildValue extends Build = Build> {
8
- readonly build: BuildValue;
9
- readonly runtime: ResolvedRuntimeReference;
10
- readonly source: ArtifactSource;
11
- }
12
- /** Admit exact deployment material before any provider mutation. */
13
- export declare function preflight<const BuildValue extends Build>(input: PreflightInput<BuildValue>): PreparedArtifact<BuildValue>;
@@ -1,13 +1,2 @@
1
- import { artifact } from './artifact.js';
2
- import { build as verifyBuild } from './build.js';
3
- import { publication as verifyPublication } from './publication.js';
4
- export { artifact, isPreparedArtifact } from './artifact.js';
1
+ export { bundle, isBundle, uploadedBuild } from './bundle.js';
5
2
  export { build } from './build.js';
6
- export { publication } from './publication.js';
7
- /** Admit exact deployment material before any provider mutation. */
8
- export function preflight(input) {
9
- verifyBuild(input.build);
10
- const prepared = artifact(input.build, input.runtime, input.source);
11
- verifyPublication(prepared);
12
- return prepared;
13
- }
@@ -0,0 +1,13 @@
1
+ export type ReadinessFetch = (input: string, init: {
2
+ readonly redirect: 'error';
3
+ readonly signal?: AbortSignal;
4
+ }) => Promise<Response>;
5
+ export interface ReadinessOptions {
6
+ readonly fetch?: ReadinessFetch;
7
+ readonly signal?: AbortSignal;
8
+ }
9
+ export declare const MAXIMUM_DOCUMENT_BYTES: number;
10
+ export declare const MAXIMUM_BUNDLE_BYTES: number;
11
+ export declare function fetchRequired(fetcher: ReadinessFetch, url: string, signal: AbortSignal | undefined): Promise<Response>;
12
+ export declare function bounded(response: Response, url: string, maximum: number): Promise<ArrayBuffer>;
13
+ export declare function text(response: Response, url: string, maximum: number): Promise<string>;
@@ -0,0 +1,26 @@
1
+ export const MAXIMUM_DOCUMENT_BYTES = 1024 * 1024;
2
+ export const MAXIMUM_BUNDLE_BYTES = 16 * 1024 * 1024;
3
+ export async function fetchRequired(fetcher, url, signal) {
4
+ const response = await fetcher(url, {
5
+ redirect: 'error',
6
+ ...(signal === undefined ? {} : { signal }),
7
+ });
8
+ if (!response.ok)
9
+ throw new Error(`GET ${url} returned ${response.status}.`);
10
+ return response;
11
+ }
12
+ export async function bounded(response, url, maximum) {
13
+ const bytes = await response.arrayBuffer();
14
+ if (bytes.byteLength > maximum)
15
+ throw new Error(`GET ${url} exceeded ${maximum} bytes.`);
16
+ return bytes;
17
+ }
18
+ export async function text(response, url, maximum) {
19
+ const bytes = await bounded(response, url, maximum);
20
+ try {
21
+ return new TextDecoder('utf-8', { fatal: true, ignoreBOM: false }).decode(bytes);
22
+ }
23
+ catch (cause) {
24
+ throw new Error(`GET ${url} returned invalid UTF-8.`, { cause });
25
+ }
26
+ }
@@ -1,7 +1,4 @@
1
- import type { Addressing } from '../../release/index.js';
2
- import type { ReadinessFetch } from './publication.js';
1
+ import type { IssuerId } from '../../../platform/auth/index.js';
2
+ import type { ReadinessOptions } from './fetch.js';
3
3
  /** Verify issuer discovery and at least one admitted signing key at the serving identity. */
4
- export declare function verifyIdentity(addressing: Addressing, options?: {
5
- readonly fetch?: ReadinessFetch;
6
- readonly signal?: AbortSignal;
7
- }): Promise<void>;
4
+ export declare function verifyIdentity(serving: IssuerId, options?: ReadinessOptions): Promise<void>;
@@ -1,10 +1,10 @@
1
1
  import { issuer } from '@astrale-os/kernel-protocol';
2
2
  const MAXIMUM_IDENTITY_BYTES = 256 * 1024;
3
3
  /** Verify issuer discovery and at least one admitted signing key at the serving identity. */
4
- export async function verifyIdentity(addressing, options = {}) {
4
+ export async function verifyIdentity(serving, options = {}) {
5
5
  const fetcher = options.fetch ?? globalThis.fetch;
6
- const configurationUrl = new URL(issuer.paths(addressing.issuer).configuration, addressing.issuer);
7
- const configuration = issuer.acceptConfiguration(await json(fetcher, configurationUrl.href, options.signal), addressing.issuer);
6
+ const configurationUrl = new URL(issuer.paths(serving).configuration, serving);
7
+ const configuration = issuer.acceptConfiguration(await json(fetcher, configurationUrl.href, options.signal), serving);
8
8
  const keys = issuer.acceptKeySet(await json(fetcher, configuration.jwks_uri, options.signal), configuration.id_token_signing_alg_values_supported);
9
9
  if (keys.keys.length === 0)
10
10
  throw new Error('Serving issuer publishes no signing keys.');
@@ -1,10 +1,17 @@
1
1
  import type { Release } from '../../release/index.js';
2
- import type { ReadinessFetch } from './publication.js';
3
- export { verifyDeployment } from './deployment.js';
2
+ import type { ReadinessOptions } from './fetch.js';
4
3
  export { verifyIdentity } from './identity.js';
5
- export { verifyPublication, type ReadinessFetch } from './publication.js';
6
- /** Read-only verification of one exact live Release and serving identity. */
7
- export declare function readiness(release: Release, options?: {
8
- readonly fetch?: ReadinessFetch;
9
- readonly signal?: AbortSignal;
10
- }): Promise<void>;
4
+ export type { ReadinessFetch, ReadinessOptions } from './fetch.js';
5
+ export { verifyRelease } from './release.js';
6
+ /**
7
+ * Read-only verification of one exact live Release and its serving identity: an immutable
8
+ * deployment's release.json (release digest and build digest).
9
+ */
10
+ /**
11
+ * The local paths `readiness` reads of one immutable deployment, each answering 200 once the
12
+ * deployment serves its release: its `release.json`, its Bundle and its issuer documents (the
13
+ * OpenID configuration and its key set). A host that probes paths before it activates a
14
+ * deployment probes these.
15
+ */
16
+ export declare function readinessPaths(deployed: Release): readonly string[];
17
+ export declare function readiness(release: Release, options?: ReadinessOptions): Promise<void>;
@@ -1,10 +1,29 @@
1
+ import { issuer } from '@astrale-os/kernel-protocol';
2
+ import * as release from '@astrale-os/kernel-protocol/release';
1
3
  import { verifyIdentity } from './identity.js';
2
- import { verifyPublication } from './publication.js';
3
- export { verifyDeployment } from './deployment.js';
4
+ import { verifyRelease } from './release.js';
4
5
  export { verifyIdentity } from './identity.js';
5
- export { verifyPublication } from './publication.js';
6
- /** Read-only verification of one exact live Release and serving identity. */
6
+ export { verifyRelease } from './release.js';
7
+ /**
8
+ * Read-only verification of one exact live Release and its serving identity: an immutable
9
+ * deployment's release.json (release digest and build digest).
10
+ */
11
+ /**
12
+ * The local paths `readiness` reads of one immutable deployment, each answering 200 once the
13
+ * deployment serves its release: its `release.json`, its Bundle and its issuer documents (the
14
+ * OpenID configuration and its key set). A host that probes paths before it activates a
15
+ * deployment probes these.
16
+ */
17
+ export function readinessPaths(deployed) {
18
+ const { configuration, keys } = issuer.paths(deployed.url);
19
+ return Object.freeze([
20
+ new URL(release.url(deployed.url)).pathname,
21
+ new URL(deployed.document.schema.bundle.href).pathname,
22
+ configuration,
23
+ keys,
24
+ ]);
25
+ }
7
26
  export async function readiness(release, options = {}) {
8
- await verifyPublication(release, options);
9
- await verifyIdentity(release.addressing, options);
27
+ await verifyRelease(release, options);
28
+ await verifyIdentity(release.url, options);
10
29
  }
@@ -0,0 +1,8 @@
1
+ import * as release from '@astrale-os/kernel-protocol/release';
2
+ import type { Release } from '../../release/index.js';
3
+ import type { ReadinessOptions } from './fetch.js';
4
+ /**
5
+ * Fetch and verify the exact live release of one immutable deployment at its `release.json`: its
6
+ * release digest and the build digest of its code, then its Bundle.
7
+ */
8
+ export declare function verifyRelease(expected: Release, options?: ReadinessOptions): Promise<release.DomainRelease>;
@@ -0,0 +1,22 @@
1
+ import * as release from '@astrale-os/kernel-protocol/release';
2
+ import { bounded, fetchRequired, MAXIMUM_BUNDLE_BYTES, MAXIMUM_DOCUMENT_BYTES, text, } from './fetch.js';
3
+ /**
4
+ * Fetch and verify the exact live release of one immutable deployment at its `release.json`: its
5
+ * release digest and the build digest of its code, then its Bundle.
6
+ */
7
+ export async function verifyRelease(expected, options = {}) {
8
+ const fetcher = options.fetch ?? globalThis.fetch;
9
+ const releaseUrl = release.url(expected.url);
10
+ const response = await fetchRequired(fetcher, releaseUrl, options.signal);
11
+ const deployed = release.accept(JSON.parse(await text(response, releaseUrl, MAXIMUM_DOCUMENT_BYTES)));
12
+ if (!release.matchesReference(deployed, release.reference(expected.document))) {
13
+ throw new Error('Live release differs from the expected Release.');
14
+ }
15
+ if (deployed.build.digest !== expected.buildDigest) {
16
+ throw new Error('Live release build digest differs from the expected build.');
17
+ }
18
+ const bundleResponse = await fetchRequired(fetcher, deployed.schema.bundle.href, options.signal);
19
+ const bytes = new Uint8Array(await bounded(bundleResponse, deployed.schema.bundle.href, MAXIMUM_BUNDLE_BYTES));
20
+ release.decodeBundle(deployed, bytes);
21
+ return deployed;
22
+ }
@@ -0,0 +1,26 @@
1
+ import type { Digest } from '@astrale-os/kernel-protocol/artifact';
2
+ /**
3
+ * The name of a project a Worker host keeps Services for: lower-case letters, digits, `.`, `_`
4
+ * and `-`, starting and ending with a letter or a digit, at most 253 characters. A Domain origin is
5
+ * one (a Domain deployer names its project by its origin).
6
+ */
7
+ export declare const PROJECT_NAME: RegExp;
8
+ /**
9
+ * The name of the Service of one project in one environment: the first 80 bits of
10
+ * `sha256(utf8(project) ‖ 0x00 ‖ utf8(environment))` in lower-case base32, 16 characters. It is
11
+ * opaque, so a Service's URL says nothing of whose code it serves, and it is the line fingerprint
12
+ * of `@astrale-os/sdk/deployment/address` (`lineFingerprint`) when the project is a Domain origin:
13
+ * a Domain's Service keeps its name.
14
+ */
15
+ export declare function serviceName(project: string, environment: string): string;
16
+ /**
17
+ * The label of one Worker deployment, `<service>-<content>`: its Service's name, then the first
18
+ * 80 bits of `sha256(utf8(buildDigest) ‖ 0x00 ‖ utf8(configurationDigest))` in lower-case base32.
19
+ * The same code and configuration in the same Service always give the same label, so a redeploy
20
+ * of a release reuses its deployment; anything else gives another.
21
+ */
22
+ export declare function workerDeploymentLabel(input: {
23
+ readonly service: string;
24
+ readonly buildDigest: Digest;
25
+ readonly configurationDigest: Digest;
26
+ }): string;
@@ -0,0 +1,43 @@
1
+ import { first80 } from '../address/fingerprint.js';
2
+ import { deploymentLabel } from '../address/label.js';
3
+ import { ENVIRONMENT_NAME } from '../environment.js';
4
+ /**
5
+ * The name of a project a Worker host keeps Services for: lower-case letters, digits, `.`, `_`
6
+ * and `-`, starting and ending with a letter or a digit, at most 253 characters. A Domain origin is
7
+ * one (a Domain deployer names its project by its origin).
8
+ */
9
+ export const PROJECT_NAME = /^[a-z0-9](?:[a-z0-9._-]{0,251}[a-z0-9])?$/u;
10
+ /** The longest environment name a Service is named by. */
11
+ const MAXIMUM_ENVIRONMENT_LENGTH = 63;
12
+ /**
13
+ * The name of the Service of one project in one environment: the first 80 bits of
14
+ * `sha256(utf8(project) ‖ 0x00 ‖ utf8(environment))` in lower-case base32, 16 characters. It is
15
+ * opaque, so a Service's URL says nothing of whose code it serves, and it is the line fingerprint
16
+ * of `@astrale-os/sdk/deployment/address` (`lineFingerprint`) when the project is a Domain origin:
17
+ * a Domain's Service keeps its name.
18
+ */
19
+ export function serviceName(project, environment) {
20
+ if (typeof project !== 'string' || !PROJECT_NAME.test(project)) {
21
+ throw new TypeError('Worker project must be a lower-case project name.');
22
+ }
23
+ if (typeof environment !== 'string' ||
24
+ environment.length > MAXIMUM_ENVIRONMENT_LENGTH ||
25
+ !ENVIRONMENT_NAME.test(environment)) {
26
+ throw new TypeError('Worker environment must be a project environment name.');
27
+ }
28
+ return first80(project, environment);
29
+ }
30
+ /**
31
+ * The label of one Worker deployment, `<service>-<content>`: its Service's name, then the first
32
+ * 80 bits of `sha256(utf8(buildDigest) ‖ 0x00 ‖ utf8(configurationDigest))` in lower-case base32.
33
+ * The same code and configuration in the same Service always give the same label, so a redeploy
34
+ * of a release reuses its deployment; anything else gives another.
35
+ */
36
+ export function workerDeploymentLabel(input) {
37
+ for (const digest of [input.buildDigest, input.configurationDigest]) {
38
+ if (typeof digest !== 'string' || !/^sha256:[0-9a-f]{64}$/u.test(digest)) {
39
+ throw new TypeError('Worker deployment digests must be sha256 digests.');
40
+ }
41
+ }
42
+ return deploymentLabel(input.service, first80(input.buildDigest, input.configurationDigest));
43
+ }
@@ -0,0 +1,60 @@
1
+ import type { Value } from '@astrale-os/kernel-dsl/value';
2
+ import type { Digest } from '@astrale-os/kernel-protocol/artifact';
3
+ /** How Workers loads one module. */
4
+ export type WorkerModuleKind = 'esm' | 'wasm' | 'text' | 'data';
5
+ /** One module of a Worker, by the name the others import it by. */
6
+ export interface WorkerModule {
7
+ readonly name: string;
8
+ readonly kind: WorkerModuleKind;
9
+ readonly bytes: Uint8Array;
10
+ }
11
+ /** One static asset of a Worker, by the absolute URL path it is served at. */
12
+ export interface WorkerAsset {
13
+ readonly path: string;
14
+ readonly bytes: Uint8Array;
15
+ /** The media type the asset is uploaded with; not part of the build digest. */
16
+ readonly contentType?: string;
17
+ }
18
+ /**
19
+ * The members of a build manifest its deployer declares: at least its `format` and `version`,
20
+ * then whatever provenance the deployer identifies its builds by. A host never reads them: it only
21
+ * digests them with the `entrypoint` and `files` it computes from the uploaded bytes.
22
+ *
23
+ * A generic Worker declares `WORKER_BUILD_MANIFEST`. A Domain deployer declares its
24
+ * `BuildManifestV1` without `entrypoint` and `files` (`format`, `version`, `origin`, `schema`,
25
+ * `bundler`), so the digest is exactly the Domain's build digest.
26
+ */
27
+ export type WorkerBuildManifest = Readonly<Record<string, Value>> & {
28
+ readonly format: string;
29
+ readonly version: number;
30
+ };
31
+ /** The build manifest members of a Worker that declares no provenance of its own. */
32
+ export declare const WORKER_BUILD_MANIFEST: WorkerBuildManifest;
33
+ /** The code of one Worker: its modules, its main module, its static assets and its manifest. */
34
+ export interface WorkerCode {
35
+ readonly manifest: WorkerBuildManifest;
36
+ readonly mainModule: string;
37
+ readonly modules: readonly WorkerModule[];
38
+ readonly assets?: readonly WorkerAsset[];
39
+ }
40
+ /**
41
+ * The build manifest of one Worker: its declared members, its `entrypoint` (the main module) and
42
+ * its `files`, sorted by path (UTF-16 code units), each `{ path, digest, size }`. A module is the
43
+ * file of its own name, a static asset `/<path>` the file `assets/<path>`. A module whose kind is
44
+ * not the one its name implies (`wasm` for a `.wasm` name, `esm` otherwise) also records its
45
+ * `kind`, so a module loaded another way is another build. The code is admitted first.
46
+ */
47
+ export declare function workerBuildManifest(code: WorkerCode): Readonly<Record<string, Value>>;
48
+ /**
49
+ * The build digest of one Worker: `sha256` of the canonical JSON (RFC 8785) of its build manifest.
50
+ * A host binds it as `ASTRALE_BUILD_DIGEST`; with a Domain's declared members it is the Domain's
51
+ * build digest.
52
+ */
53
+ export declare function workerBuildDigest(code: WorkerCode): Digest;
54
+ /**
55
+ * Admit the code of one Worker: declared manifest members (a `format`, a positive `version`, no
56
+ * `entrypoint` nor `files`, at most `manifestSize` bytes of canonical JSON), one to `modules`
57
+ * modules with safe relative names, unique, the main module among them, and at most `assets`
58
+ * assets at unique canonical absolute paths. Sizes are bounded per file and for the whole Worker.
59
+ */
60
+ export declare function acceptWorkerCode(code: WorkerCode): WorkerCode;