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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (514) hide show
  1. package/README.md +191 -58
  2. package/dist/application/action/action.d.ts +6 -0
  3. package/dist/application/action/authoring.d.ts +1 -1
  4. package/dist/application/action/context.d.ts +47 -31
  5. package/dist/application/action/define.d.ts +3 -3
  6. package/dist/application/action/index.d.ts +1 -1
  7. package/dist/application/define.d.ts +8 -6
  8. package/dist/application/define.js +28 -14
  9. package/dist/application/dependency/index.d.ts +1 -1
  10. package/dist/application/dependency/invoker.d.ts +21 -10
  11. package/dist/application/domain.d.ts +30 -0
  12. package/dist/application/index.d.ts +4 -4
  13. package/dist/application/index.js +1 -1
  14. package/dist/application/integration/define.d.ts +8 -1
  15. package/dist/application/integration/index.d.ts +2 -2
  16. package/dist/application/integration/integration.d.ts +13 -1
  17. package/dist/application/integration/operation.d.ts +16 -3
  18. package/dist/application/mutation/authoring/properties.d.ts +5 -3
  19. package/dist/application/mutation/authoring/properties.js +35 -2
  20. package/dist/application/mutation/authoring/transition.js +4 -1
  21. package/dist/application/mutation/execution/execute.js +1 -1
  22. package/dist/application/mutation/failure.d.ts +6 -0
  23. package/dist/application/mutation/failure.js +24 -18
  24. package/dist/application/mutation/index.d.ts +1 -1
  25. package/dist/application/query/collection/union.js +11 -4
  26. package/dist/application/query/composite/plan.d.ts +0 -4
  27. package/dist/application/query/composite/plan.js +0 -2
  28. package/dist/application/query/conformance.d.ts +15 -0
  29. package/dist/application/query/conformance.js +46 -0
  30. package/dist/application/query/define.js +4 -3
  31. package/dist/application/query/execution/execute.d.ts +0 -1
  32. package/dist/application/query/execution/execute.js +7 -1
  33. package/dist/application/query/failure.d.ts +8 -0
  34. package/dist/application/query/failure.js +8 -0
  35. package/dist/application/query/index.d.ts +1 -1
  36. package/dist/application/query/index.js +1 -1
  37. package/dist/application/routes/admission.d.ts +2 -2
  38. package/dist/application/routes/admission.js +1 -1
  39. package/dist/application/routes/route.d.ts +2 -2
  40. package/dist/application/runtime/actions.js +3 -0
  41. package/dist/application/runtime/workflows.d.ts +3 -1
  42. package/dist/application/runtime/workflows.js +3 -4
  43. package/dist/application/view/define.js +4 -6
  44. package/dist/application/view/frontend.d.ts +2 -2
  45. package/dist/application/view/index.d.ts +1 -1
  46. package/dist/application/view/route.d.ts +0 -14
  47. package/dist/application/view/route.js +1 -64
  48. package/dist/application/workflow/authoring.d.ts +3 -2
  49. package/dist/application/workflow/context.d.ts +8 -2
  50. package/dist/application/workflow/define.d.ts +4 -4
  51. package/dist/application/workflow/define.js +14 -9
  52. package/dist/application/workflow/durable.d.ts +185 -0
  53. package/dist/application/workflow/index.d.ts +3 -2
  54. package/dist/application/workflow/runner/inline.js +3 -4
  55. package/dist/application/workflow/runner/runner.d.ts +2 -2
  56. package/dist/application/workflow/step/output.d.ts +2 -0
  57. package/dist/application/workflow/step/output.js +73 -0
  58. package/dist/application/workflow/workflow.d.ts +5 -3
  59. package/dist/deployment/adapter/adapter.d.ts +55 -13
  60. package/dist/deployment/adapter/bundle/bundle.d.ts +36 -0
  61. package/dist/deployment/adapter/bundle/file.d.ts +10 -0
  62. package/dist/deployment/adapter/bundle/index.d.ts +2 -0
  63. package/dist/deployment/adapter/define.d.ts +4 -3
  64. package/dist/deployment/adapter/define.js +107 -23
  65. package/dist/deployment/adapter/index.d.ts +4 -3
  66. package/dist/deployment/adapter/index.js +1 -0
  67. package/dist/deployment/adapter/release/command.d.ts +33 -0
  68. package/dist/deployment/adapter/release/context.d.ts +94 -0
  69. package/dist/deployment/adapter/release/index.d.ts +4 -0
  70. package/dist/deployment/adapter/release/index.js +1 -0
  71. package/dist/deployment/adapter/release/list.d.ts +53 -0
  72. package/dist/deployment/adapter/release/list.js +1 -0
  73. package/dist/deployment/adapter/release/refusal.d.ts +10 -0
  74. package/dist/deployment/adapter/release/refusal.js +14 -0
  75. package/dist/deployment/adapter/release/result.d.ts +56 -0
  76. package/dist/deployment/adapter/release/result.js +1 -0
  77. package/dist/deployment/address/configuration.d.ts +96 -0
  78. package/dist/deployment/address/configuration.js +274 -0
  79. package/dist/deployment/address/fingerprint.d.ts +5 -0
  80. package/dist/deployment/address/fingerprint.js +27 -0
  81. package/dist/deployment/address/index.d.ts +5 -0
  82. package/dist/deployment/address/index.js +4 -0
  83. package/dist/deployment/address/label.d.ts +42 -0
  84. package/dist/deployment/address/label.js +80 -0
  85. package/dist/deployment/address/line.d.ts +29 -0
  86. package/dist/deployment/address/line.js +53 -0
  87. package/dist/deployment/address/record.d.ts +73 -0
  88. package/dist/deployment/address/record.js +138 -0
  89. package/dist/deployment/address/summary.d.ts +30 -0
  90. package/dist/deployment/address/summary.js +1 -0
  91. package/dist/deployment/address/vectors.d.ts +60 -0
  92. package/dist/deployment/address/vectors.js +517 -0
  93. package/dist/deployment/authoring.d.ts +0 -2
  94. package/dist/deployment/authoring.js +0 -1
  95. package/dist/deployment/build/build.d.ts +8 -2
  96. package/dist/deployment/build/compile.d.ts +4 -4
  97. package/dist/deployment/build/compile.js +19 -17
  98. package/dist/deployment/build/frontend/compilation.d.ts +2 -4
  99. package/dist/deployment/build/frontend/compilation.js +0 -5
  100. package/dist/deployment/build/frontend/digest.js +1 -5
  101. package/dist/deployment/build/index.d.ts +1 -0
  102. package/dist/deployment/build/index.js +1 -0
  103. package/dist/deployment/build/manifest.d.ts +59 -0
  104. package/dist/deployment/build/manifest.js +118 -0
  105. package/dist/deployment/build/material.d.ts +2 -2
  106. package/dist/deployment/build/material.js +28 -13
  107. package/dist/deployment/build/schema.d.ts +2 -2
  108. package/dist/deployment/deployment.d.ts +3 -2
  109. package/dist/deployment/environment.d.ts +6 -0
  110. package/dist/deployment/environment.js +6 -0
  111. package/dist/deployment/index.d.ts +4 -6
  112. package/dist/deployment/index.js +1 -2
  113. package/dist/deployment/release/addressing.d.ts +6 -5
  114. package/dist/deployment/release/addressing.js +2 -3
  115. package/dist/deployment/release/assemble.d.ts +6 -3
  116. package/dist/deployment/release/assemble.js +12 -10
  117. package/dist/deployment/release/release.d.ts +16 -5
  118. package/dist/deployment/release/seal.d.ts +14 -0
  119. package/dist/deployment/release/seal.js +22 -0
  120. package/dist/deployment/release/{publication → served}/callables.d.ts +2 -2
  121. package/dist/deployment/release/{publication → served}/callables.js +2 -2
  122. package/dist/deployment/release/served/index.d.ts +11 -0
  123. package/dist/deployment/release/served/index.js +26 -0
  124. package/dist/deployment/release/{publication → served}/views.d.ts +2 -2
  125. package/dist/deployment/release/{publication → served}/views.js +0 -1
  126. package/dist/deployment/runtime/admission.d.ts +2 -2
  127. package/dist/deployment/runtime/admission.js +5 -5
  128. package/dist/deployment/verify/index.d.ts +3 -4
  129. package/dist/deployment/verify/index.js +2 -3
  130. package/dist/deployment/verify/preflight/bundle.d.ts +18 -0
  131. package/dist/deployment/verify/preflight/bundle.js +71 -0
  132. package/dist/deployment/verify/preflight/index.d.ts +1 -12
  133. package/dist/deployment/verify/preflight/index.js +1 -12
  134. package/dist/deployment/verify/readiness/fetch.d.ts +13 -0
  135. package/dist/deployment/verify/readiness/fetch.js +26 -0
  136. package/dist/deployment/verify/readiness/identity.d.ts +3 -6
  137. package/dist/deployment/verify/readiness/identity.js +3 -3
  138. package/dist/deployment/verify/readiness/index.d.ts +15 -8
  139. package/dist/deployment/verify/readiness/index.js +25 -6
  140. package/dist/deployment/verify/readiness/release.d.ts +8 -0
  141. package/dist/deployment/verify/readiness/release.js +22 -0
  142. package/dist/deployment/worker/address.d.ts +26 -0
  143. package/dist/deployment/worker/address.js +43 -0
  144. package/dist/deployment/worker/build.d.ts +60 -0
  145. package/dist/deployment/worker/build.js +172 -0
  146. package/dist/deployment/worker/configuration.d.ts +73 -0
  147. package/dist/deployment/worker/configuration.js +165 -0
  148. package/dist/deployment/worker/content.d.ts +38 -0
  149. package/dist/deployment/worker/content.js +169 -0
  150. package/dist/deployment/worker/index.d.ts +29 -0
  151. package/dist/deployment/worker/index.js +29 -0
  152. package/dist/deployment/worker/limits.d.ts +30 -0
  153. package/dist/deployment/worker/limits.js +30 -0
  154. package/dist/deployment/worker/record.d.ts +29 -0
  155. package/dist/deployment/worker/record.js +69 -0
  156. package/dist/deployment/worker/request.d.ts +118 -0
  157. package/dist/deployment/worker/request.js +280 -0
  158. package/dist/deployment/worker/response.d.ts +101 -0
  159. package/dist/deployment/worker/response.js +207 -0
  160. package/dist/execution/cache/cache.d.ts +17 -0
  161. package/dist/execution/cache/cache.js +11 -0
  162. package/dist/execution/cache/index.d.ts +2 -0
  163. package/dist/execution/cache/index.js +2 -0
  164. package/dist/execution/cache/memory.d.ts +13 -0
  165. package/dist/execution/cache/memory.js +48 -0
  166. package/dist/execution/identity/authentication.d.ts +33 -3
  167. package/dist/execution/identity/authentication.js +90 -36
  168. package/dist/execution/identity/callback.d.ts +20 -20
  169. package/dist/execution/identity/callback.js +34 -26
  170. package/dist/execution/identity/delivery.d.ts +6 -4
  171. package/dist/execution/identity/delivery.js +25 -20
  172. package/dist/execution/identity/identity.d.ts +17 -3
  173. package/dist/execution/identity/identity.js +12 -4
  174. package/dist/execution/identity/jwks.d.ts +5 -0
  175. package/dist/execution/identity/jwks.js +92 -102
  176. package/dist/execution/index.d.ts +6 -4
  177. package/dist/execution/index.js +4 -2
  178. package/dist/execution/invocation/admission/age.d.ts +57 -0
  179. package/dist/execution/invocation/admission/age.js +208 -0
  180. package/dist/execution/invocation/admission/authentication.d.ts +13 -13
  181. package/dist/execution/invocation/admission/authentication.js +52 -44
  182. package/dist/execution/invocation/admission/authority.d.ts +28 -6
  183. package/dist/execution/invocation/admission/authority.js +9 -2
  184. package/dist/execution/invocation/admission/index.d.ts +4 -3
  185. package/dist/execution/invocation/admission/index.js +3 -2
  186. package/dist/execution/invocation/admission/input.d.ts +2 -2
  187. package/dist/execution/invocation/admission/input.js +16 -2
  188. package/dist/execution/invocation/admission/target.d.ts +11 -0
  189. package/dist/execution/invocation/admission/target.js +22 -3
  190. package/dist/execution/invocation/capabilities/bind.d.ts +11 -0
  191. package/dist/execution/invocation/capabilities/bind.js +25 -0
  192. package/dist/execution/invocation/capabilities/index.d.ts +1 -0
  193. package/dist/execution/invocation/capabilities/index.js +1 -0
  194. package/dist/execution/invocation/dependency/bind.d.ts +3 -1
  195. package/dist/execution/invocation/dependency/bind.js +36 -16
  196. package/dist/execution/invocation/dispatch/context.d.ts +7 -6
  197. package/dist/execution/invocation/dispatch/context.js +11 -44
  198. package/dist/execution/invocation/dispatch/workflow.js +0 -4
  199. package/dist/execution/invocation/handler.js +8 -2
  200. package/dist/execution/invocation/index.d.ts +2 -2
  201. package/dist/execution/invocation/index.js +1 -1
  202. package/dist/execution/invocation/integration/authentication.d.ts +3 -3
  203. package/dist/execution/invocation/integration/authentication.js +7 -7
  204. package/dist/execution/invocation/integration/call.d.ts +2 -1
  205. package/dist/execution/invocation/integration/call.js +3 -3
  206. package/dist/execution/invocation/integration/clients.d.ts +1 -1
  207. package/dist/execution/invocation/integration/index.d.ts +1 -0
  208. package/dist/execution/invocation/integration/index.js +1 -0
  209. package/dist/execution/invocation/invocation.d.ts +6 -0
  210. package/dist/execution/invocation/invocation.js +129 -21
  211. package/dist/execution/invocation/lifecycle/active.d.ts +8 -2
  212. package/dist/execution/invocation/lifecycle/active.js +3 -3
  213. package/dist/execution/invocation/lifecycle/index.d.ts +1 -1
  214. package/dist/execution/invocation/result/errors.d.ts +0 -10
  215. package/dist/execution/invocation/result/errors.js +0 -17
  216. package/dist/execution/invocation/result/index.d.ts +2 -2
  217. package/dist/execution/invocation/result/index.js +1 -1
  218. package/dist/execution/invocation/result/project.js +41 -1
  219. package/dist/execution/node/serve.d.ts +2 -2
  220. package/dist/execution/node/serve.js +1 -1
  221. package/dist/execution/runtime/index.d.ts +1 -0
  222. package/dist/execution/runtime/index.js +1 -0
  223. package/dist/execution/runtime/load.d.ts +3 -3
  224. package/dist/execution/runtime/load.js +3 -2
  225. package/dist/execution/runtime/release.d.ts +17 -0
  226. package/dist/execution/runtime/release.js +7 -0
  227. package/dist/execution/serve.d.ts +18 -4
  228. package/dist/execution/serve.js +10 -0
  229. package/dist/execution/service/create.js +43 -7
  230. package/dist/execution/service/initialization.d.ts +4 -4
  231. package/dist/execution/service/initialization.js +23 -14
  232. package/dist/execution/service/release.d.ts +2 -2
  233. package/dist/execution/service/release.js +3 -2
  234. package/dist/execution/service/service.d.ts +20 -5
  235. package/dist/execution/service/serving/delivery.d.ts +5 -0
  236. package/dist/execution/service/{publication → serving}/delivery.js +4 -1
  237. package/dist/execution/service/{publication → serving}/index.d.ts +1 -1
  238. package/dist/execution/service/serving/installation.d.ts +4 -0
  239. package/dist/execution/service/serving/installation.js +9 -0
  240. package/dist/execution/service/serving/source.d.ts +11 -0
  241. package/dist/execution/service/serving/source.js +15 -0
  242. package/dist/execution/workflows/discovery.d.ts +14 -0
  243. package/dist/execution/workflows/discovery.js +151 -0
  244. package/dist/execution/workflows/engine.d.ts +89 -0
  245. package/dist/execution/workflows/engine.js +1 -0
  246. package/dist/execution/workflows/envelope.d.ts +12 -0
  247. package/dist/execution/workflows/envelope.js +46 -0
  248. package/dist/execution/workflows/failure.d.ts +46 -0
  249. package/dist/execution/workflows/failure.js +160 -0
  250. package/dist/execution/workflows/index.d.ts +4 -0
  251. package/dist/execution/workflows/index.js +3 -0
  252. package/dist/execution/workflows/integrations.d.ts +13 -0
  253. package/dist/execution/workflows/integrations.js +25 -0
  254. package/dist/execution/workflows/options.d.ts +66 -0
  255. package/dist/execution/workflows/options.js +148 -0
  256. package/dist/execution/workflows/receiver.d.ts +24 -0
  257. package/dist/execution/workflows/receiver.js +99 -0
  258. package/dist/execution/workflows/route.d.ts +12 -0
  259. package/dist/execution/workflows/route.js +35 -0
  260. package/dist/execution/workflows/run.d.ts +21 -0
  261. package/dist/execution/workflows/run.js +321 -0
  262. package/dist/execution/workflows/steps.d.ts +42 -0
  263. package/dist/execution/workflows/steps.js +67 -0
  264. package/dist/index.d.ts +4 -4
  265. package/dist/index.js +2 -2
  266. package/dist/platform/graph/alias.d.ts +1 -5
  267. package/dist/platform/graph/alias.js +1 -5
  268. package/dist/platform/graph/document/index.d.ts +1 -1
  269. package/dist/platform/graph/document/index.js +1 -1
  270. package/dist/platform/graph/index.d.ts +1 -1
  271. package/dist/platform/graph/index.js +1 -1
  272. package/dist/platform/release/index.d.ts +2 -0
  273. package/dist/platform/release/index.js +2 -0
  274. package/dist/platform/schema/callable-authoring.d.ts +21 -0
  275. package/dist/platform/schema/callable-authoring.js +27 -0
  276. package/dist/platform/schema/class-authoring.d.ts +61 -11
  277. package/dist/platform/schema/class-authoring.js +37 -4
  278. package/dist/platform/schema/class-icon-svg.d.ts +9 -0
  279. package/dist/platform/schema/class-icon-svg.js +29 -0
  280. package/dist/platform/schema/class-icon.d.ts +3 -8
  281. package/dist/platform/schema/class-icon.js +2 -29
  282. package/dist/platform/schema/index.d.ts +6 -4
  283. package/dist/platform/schema/index.js +2 -1
  284. package/dist/platform/schema/property.d.ts +5 -0
  285. package/dist/platform/schema/schema-authoring.d.ts +14 -7
  286. package/dist/platform/schema/schema-authoring.js +5 -1
  287. package/dist/platform/versioning/dependents.d.ts +18 -0
  288. package/dist/platform/versioning/dependents.js +15 -0
  289. package/dist/platform/versioning/index.d.ts +5 -0
  290. package/dist/platform/versioning/index.js +5 -0
  291. package/dist/platform/versioning/name.d.ts +38 -0
  292. package/dist/platform/versioning/name.js +58 -0
  293. package/dist/platform/versioning/reference.d.ts +48 -0
  294. package/dist/platform/versioning/reference.js +95 -0
  295. package/dist/platform/versioning/version.d.ts +72 -0
  296. package/dist/platform/versioning/version.js +98 -0
  297. package/dist/project/admit.js +1 -5
  298. package/dist/project/define.d.ts +4 -4
  299. package/dist/project/define.js +55 -35
  300. package/dist/project/index.d.ts +1 -1
  301. package/dist/project/install-command.d.ts +6 -0
  302. package/dist/project/install-command.js +9 -0
  303. package/dist/project/project.d.ts +10 -8
  304. package/dist/testing/dataset/define.d.ts +1 -1
  305. package/dist/testing/durable/engine.d.ts +121 -0
  306. package/dist/testing/durable/engine.js +614 -0
  307. package/dist/testing/durable/index.d.ts +3 -0
  308. package/dist/testing/durable/index.js +1 -0
  309. package/dist/testing/durable/steps.d.ts +30 -0
  310. package/dist/testing/durable/steps.js +40 -0
  311. package/dist/testing/index.d.ts +6 -1
  312. package/dist/testing/index.js +5 -1
  313. package/dist/testing/load.js +1 -1
  314. package/dist/tooling/cli/adapter-command.d.ts +35 -0
  315. package/dist/tooling/cli/adapter-command.js +66 -0
  316. package/dist/tooling/cli/arguments.d.ts +17 -6
  317. package/dist/tooling/cli/arguments.js +175 -52
  318. package/dist/tooling/cli/build.d.ts +55 -0
  319. package/dist/tooling/cli/build.js +77 -0
  320. package/dist/tooling/cli/bun.d.ts +0 -1
  321. package/dist/tooling/cli/bun.js +0 -7
  322. package/dist/tooling/cli/commit.d.ts +35 -0
  323. package/dist/tooling/cli/commit.js +235 -0
  324. package/dist/tooling/cli/deploy-mode.d.ts +26 -0
  325. package/dist/tooling/cli/deploy-mode.js +59 -0
  326. package/dist/tooling/cli/deploy-result.d.ts +80 -0
  327. package/dist/tooling/cli/deploy-result.js +64 -0
  328. package/dist/tooling/cli/diff/declared.d.ts +7 -0
  329. package/dist/tooling/cli/diff/declared.js +27 -0
  330. package/dist/tooling/cli/diff/index.d.ts +30 -0
  331. package/dist/tooling/cli/diff/index.js +58 -0
  332. package/dist/tooling/cli/diff/render.d.ts +15 -0
  333. package/dist/tooling/cli/diff/render.js +131 -0
  334. package/dist/tooling/cli/diff/report.d.ts +88 -0
  335. package/dist/tooling/cli/diff/report.js +154 -0
  336. package/dist/tooling/cli/dotenv.d.ts +5 -5
  337. package/dist/tooling/cli/dotenv.js +6 -36
  338. package/dist/tooling/cli/help.js +173 -60
  339. package/dist/tooling/cli/immutable-deployment.d.ts +83 -0
  340. package/dist/tooling/cli/immutable-deployment.js +135 -0
  341. package/dist/tooling/cli/index.d.ts +12 -4
  342. package/dist/tooling/cli/index.js +6 -3
  343. package/dist/tooling/cli/installed-on.d.ts +83 -0
  344. package/dist/tooling/cli/installed-on.js +156 -0
  345. package/dist/tooling/cli/list.d.ts +152 -0
  346. package/dist/tooling/cli/list.js +331 -0
  347. package/dist/tooling/cli/log.d.ts +5 -2
  348. package/dist/tooling/cli/log.js +9 -2
  349. package/dist/tooling/cli/orchestrate.d.ts +0 -6
  350. package/dist/tooling/cli/orchestrate.js +246 -90
  351. package/dist/tooling/cli/project.d.ts +3 -3
  352. package/dist/tooling/cli/publish/index.d.ts +81 -0
  353. package/dist/tooling/cli/publish/index.js +383 -0
  354. package/dist/tooling/cli/publish/report.d.ts +49 -0
  355. package/dist/tooling/cli/publish/report.js +15 -0
  356. package/dist/tooling/cli/registry/client.d.ts +121 -0
  357. package/dist/tooling/cli/registry/client.js +354 -0
  358. package/dist/tooling/cli/registry/error.d.ts +11 -0
  359. package/dist/tooling/cli/registry/error.js +17 -0
  360. package/dist/tooling/cli/registry/executable.d.ts +35 -0
  361. package/dist/tooling/cli/registry/executable.js +96 -0
  362. package/dist/tooling/cli/registry/index.d.ts +9 -0
  363. package/dist/tooling/cli/registry/index.js +8 -0
  364. package/dist/tooling/cli/registry/installations.d.ts +67 -0
  365. package/dist/tooling/cli/registry/installations.js +108 -0
  366. package/dist/tooling/cli/registry/process.d.ts +36 -0
  367. package/dist/tooling/cli/registry/process.js +119 -0
  368. package/dist/tooling/cli/secrets.d.ts +9 -0
  369. package/dist/tooling/cli/secrets.js +19 -0
  370. package/dist/tooling/cli/yank.d.ts +34 -0
  371. package/dist/tooling/cli/yank.js +32 -0
  372. package/dist/tooling/linter/adapters/typescript/imports.d.ts +0 -1
  373. package/dist/tooling/linter/adapters/typescript/imports.js +1 -5
  374. package/dist/tooling/linter/adapters/typescript/index.d.ts +1 -1
  375. package/dist/tooling/linter/adapters/typescript/index.js +1 -1
  376. package/dist/tooling/linter/adapters/typescript/syntax.d.ts +3 -3
  377. package/dist/tooling/linter/adapters/typescript/syntax.js +13 -25
  378. package/dist/tooling/linter/implementations/source/callable-requirements.d.ts +1 -2
  379. package/dist/tooling/linter/implementations/source/callable-requirements.js +11 -16
  380. package/dist/tooling/linter/implementations/source/dependencies.js +13 -72
  381. package/dist/tooling/linter/implementations/source/global.js +1 -2
  382. package/dist/tooling/linter/implementations/source/mutations.js +18 -29
  383. package/dist/tooling/linter/implementations/source/providers.js +5 -5
  384. package/dist/tooling/linter/implementations/source/queries.js +1 -17
  385. package/dist/tooling/linter/implementations/source/shared.d.ts +12 -4
  386. package/dist/tooling/linter/implementations/source/shared.js +101 -46
  387. package/dist/tooling/linter/implementations/source/verifiers.js +0 -2
  388. package/dist/tooling/linter/implementations/source/views.js +2 -2
  389. package/dist/tooling/linter/implementations/source/workflows.js +500 -17
  390. package/dist/tooling/linter/policy/generated.js +14 -63
  391. package/dist/tooling/linter/requirements/registry.js +6 -8
  392. package/dist/tooling/packaging/declarations/ownership.js +1 -1
  393. package/dist/tooling/packaging/finalize.d.ts +1 -1
  394. package/dist/tooling/packaging/finalize.js +1 -1
  395. package/docs/admission-age.md +88 -0
  396. package/docs/auth-api-migration.md +55 -0
  397. package/docs/business-errors.md +42 -0
  398. package/docs/domain-definition-migration.md +44 -0
  399. package/docs/domain-schema-migration.md +36 -0
  400. package/docs/durable-workflows.md +418 -0
  401. package/docs/handler-dependencies.md +213 -0
  402. package/docs/release.md +155 -0
  403. package/docs/schema-cost.md +124 -0
  404. package/package.json +45 -16
  405. package/dist/application/application.d.ts +0 -28
  406. package/dist/application/query/execution/projection.d.ts +0 -3
  407. package/dist/application/query/execution/projection.js +0 -3
  408. package/dist/deployment/adapter/deploy/context.d.ts +0 -15
  409. package/dist/deployment/adapter/deploy/index.d.ts +0 -2
  410. package/dist/deployment/adapter/deploy/result.d.ts +0 -50
  411. package/dist/deployment/adapter/prepare/artifact.d.ts +0 -33
  412. package/dist/deployment/adapter/prepare/context.d.ts +0 -23
  413. package/dist/deployment/adapter/prepare/index.d.ts +0 -2
  414. package/dist/deployment/deploy.d.ts +0 -20
  415. package/dist/deployment/deploy.js +0 -31
  416. package/dist/deployment/release/publication/index.d.ts +0 -6
  417. package/dist/deployment/release/publication/index.js +0 -6
  418. package/dist/deployment/release/publication/manifest.d.ts +0 -3
  419. package/dist/deployment/release/publication/manifest.js +0 -5
  420. package/dist/deployment/release/publication/requirements.d.ts +0 -3
  421. package/dist/deployment/release/publication/requirements.js +0 -3
  422. package/dist/deployment/release/publication/seal.d.ts +0 -10
  423. package/dist/deployment/release/publication/seal.js +0 -39
  424. package/dist/deployment/verify/preflight/artifact.d.ts +0 -6
  425. package/dist/deployment/verify/preflight/artifact.js +0 -122
  426. package/dist/deployment/verify/preflight/publication.d.ts +0 -4
  427. package/dist/deployment/verify/preflight/publication.js +0 -14
  428. package/dist/deployment/verify/readiness/deployment.d.ts +0 -3
  429. package/dist/deployment/verify/readiness/deployment.js +0 -151
  430. package/dist/deployment/verify/readiness/publication.d.ts +0 -11
  431. package/dist/deployment/verify/readiness/publication.js +0 -41
  432. package/dist/execution/service/errors.d.ts +0 -3
  433. package/dist/execution/service/errors.js +0 -3
  434. package/dist/execution/service/publication/delivery.d.ts +0 -2
  435. package/dist/execution/service/publication/installation.d.ts +0 -3
  436. package/dist/execution/service/publication/installation.js +0 -8
  437. package/dist/execution/service/publication/source.d.ts +0 -3
  438. package/dist/execution/service/publication/source.js +0 -11
  439. package/dist/platform/publication/index.d.ts +0 -2
  440. package/dist/platform/publication/index.js +0 -2
  441. package/dist/tooling/cli/astrale/authority.d.ts +0 -5
  442. package/dist/tooling/cli/astrale/authority.js +0 -11
  443. package/dist/tooling/cli/astrale/executable.d.ts +0 -2
  444. package/dist/tooling/cli/astrale/executable.js +0 -47
  445. package/dist/tooling/cli/astrale/failure.d.ts +0 -6
  446. package/dist/tooling/cli/astrale/failure.js +0 -48
  447. package/dist/tooling/cli/astrale/instance.d.ts +0 -11
  448. package/dist/tooling/cli/astrale/instance.js +0 -52
  449. package/dist/tooling/cli/astrale/process.d.ts +0 -13
  450. package/dist/tooling/cli/astrale/process.js +0 -94
  451. package/dist/tooling/cli/astrale/version.d.ts +0 -18
  452. package/dist/tooling/cli/astrale/version.js +0 -55
  453. package/dist/tooling/cli/credential.d.ts +0 -2
  454. package/dist/tooling/cli/credential.js +0 -57
  455. package/dist/tooling/cli/deprecations.d.ts +0 -9
  456. package/dist/tooling/cli/deprecations.js +0 -15
  457. package/dist/tooling/cli/development/candidate.d.ts +0 -25
  458. package/dist/tooling/cli/development/candidate.js +0 -176
  459. package/dist/tooling/cli/development/deployment.d.ts +0 -16
  460. package/dist/tooling/cli/development/deployment.js +0 -39
  461. package/dist/tooling/cli/development/develop.d.ts +0 -11
  462. package/dist/tooling/cli/development/develop.js +0 -243
  463. package/dist/tooling/cli/development/lease.d.ts +0 -18
  464. package/dist/tooling/cli/development/lease.js +0 -163
  465. package/dist/tooling/cli/development/lifecycle.d.ts +0 -9
  466. package/dist/tooling/cli/development/lifecycle.js +0 -43
  467. package/dist/tooling/cli/development/project-imports.d.ts +0 -22
  468. package/dist/tooling/cli/development/project-imports.js +0 -39
  469. package/dist/tooling/cli/development/project-lock.d.ts +0 -16
  470. package/dist/tooling/cli/development/project-lock.js +0 -41
  471. package/dist/tooling/cli/development/rebuild.d.ts +0 -13
  472. package/dist/tooling/cli/development/rebuild.js +0 -58
  473. package/dist/tooling/cli/development/release-evidence.d.ts +0 -4
  474. package/dist/tooling/cli/development/release-evidence.js +0 -10
  475. package/dist/tooling/cli/development/report.d.ts +0 -6
  476. package/dist/tooling/cli/development/report.js +0 -14
  477. package/dist/tooling/cli/development/session-file.d.ts +0 -53
  478. package/dist/tooling/cli/development/session-file.js +0 -337
  479. package/dist/tooling/cli/development/source-watch.d.ts +0 -14
  480. package/dist/tooling/cli/development/source-watch.js +0 -140
  481. package/dist/tooling/cli/development/sources.d.ts +0 -7
  482. package/dist/tooling/cli/development/sources.js +0 -48
  483. package/dist/tooling/cli/development/target-lock.d.ts +0 -16
  484. package/dist/tooling/cli/development/target-lock.js +0 -68
  485. package/dist/tooling/cli/development/view.d.ts +0 -28
  486. package/dist/tooling/cli/development/view.js +0 -151
  487. package/dist/tooling/cli/environment-release.d.ts +0 -21
  488. package/dist/tooling/cli/environment-release.js +0 -46
  489. package/dist/tooling/cli/evidence.d.ts +0 -11
  490. package/dist/tooling/cli/evidence.js +0 -53
  491. package/dist/tooling/cli/installation/index.d.ts +0 -2
  492. package/dist/tooling/cli/installation/index.js +0 -1
  493. package/dist/tooling/cli/installation/observation.d.ts +0 -10
  494. package/dist/tooling/cli/installation/observation.js +0 -44
  495. package/dist/tooling/cli/installation/reconcile.d.ts +0 -32
  496. package/dist/tooling/cli/installation/reconcile.js +0 -122
  497. package/dist/tooling/linter/implementations/source/migrations.d.ts +0 -2
  498. package/dist/tooling/linter/implementations/source/migrations.js +0 -113
  499. package/dist/tooling/linter/qualification/index.d.ts +0 -10
  500. package/dist/tooling/linter/qualification/index.js +0 -2
  501. package/dist/tooling/linter/qualification/query-fixtures.d.ts +0 -2
  502. package/dist/tooling/linter/qualification/query-fixtures.js +0 -68
  503. package/dist/tooling/linter/qualification/runner.d.ts +0 -3
  504. package/dist/tooling/linter/qualification/runner.js +0 -6
  505. /package/dist/application/{application.js → domain.js} +0 -0
  506. /package/dist/{deployment/adapter/deploy/context.js → application/workflow/durable.js} +0 -0
  507. /package/dist/deployment/adapter/{deploy/index.js → bundle/bundle.js} +0 -0
  508. /package/dist/deployment/adapter/{deploy/result.js → bundle/file.js} +0 -0
  509. /package/dist/deployment/adapter/{prepare → bundle}/index.js +0 -0
  510. /package/dist/deployment/adapter/{prepare/artifact.js → release/command.js} +0 -0
  511. /package/dist/deployment/adapter/{prepare → release}/context.js +0 -0
  512. /package/dist/deployment/release/{publication → served}/routes.d.ts +0 -0
  513. /package/dist/deployment/release/{publication → served}/routes.js +0 -0
  514. /package/dist/execution/service/{publication → serving}/index.js +0 -0
@@ -0,0 +1,35 @@
1
+ import type { DeploymentCommitV1 } from '../../deployment/address/index.js';
2
+ /**
3
+ * The commit provenance a canonical deploy declares in its deployment record (CT18 `commit`): the
4
+ * commit of the repository the Project lives in, whether the working tree holds changes that
5
+ * commit does not, and the last release of the Domain before it, as `git describe` finds it.
6
+ *
7
+ * - `dirty` covers tracked changes and untracked files, over the whole working tree; ignored files
8
+ * never count. Unlike `git describe --dirty`, an untracked file counts, since a build can import
9
+ * it.
10
+ * - `base` is the nearest release tag of the package the Domain is released from: the
11
+ * release-please package that holds the Domain's runtime module (see {@link releaseTagPrefixes}).
12
+ * The tag prefix is stripped, and a tag whose rest is not a canonical SemVer version is left
13
+ * out, so the record never carries a base a deployment name would refuse (AM-57). A Domain no
14
+ * release line holds declares no base: it is never given another package's version.
15
+ * - Outside a git repository, without git, or in a repository whose commits are not SHA-1, the
16
+ * deploy declares no commit (`null`); a deploy never fails for want of provenance.
17
+ */
18
+ export declare function deploymentCommit(input: {
19
+ readonly projectDir: string;
20
+ /** The Domain's runtime module, as the Project's `entrypoints.runtime` resolves it. */
21
+ readonly runtimeModule: string;
22
+ readonly signal: AbortSignal;
23
+ }): Promise<DeploymentCommitV1 | null>;
24
+ /**
25
+ * Whether a remote-tracking branch of the repository already holds a commit. A Publication records
26
+ * the commit it was built from, and release-please computes the next number from the pushed
27
+ * history: publishing a commit nobody pushed risks the same number being computed again (tech
28
+ * Versioning [.73872]). Nothing when git cannot tell. Reads the local remote-tracking refs only,
29
+ * never the network.
30
+ */
31
+ export declare function commitPushed(input: {
32
+ readonly projectDir: string;
33
+ readonly sha: string;
34
+ readonly signal: AbortSignal;
35
+ }): Promise<boolean | undefined>;
@@ -0,0 +1,235 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { dirname, join } from 'node:path';
4
+ import { isVersion } from '../../platform/versioning/version.js';
5
+ /** A commit as `DeploymentCommitV1` holds it: the full SHA-1 git prints, in lower case. */
6
+ const SHA = /^[0-9a-f]{40}$/u;
7
+ /** `git describe --long` output: `<tag>-<commits since the tag>-g<abbreviated commit>`. */
8
+ const DESCRIBED = /^(?<tag>.+)-(?<distance>\d+)-g[0-9a-f]+$/u;
9
+ /** A tag prefix this module can hand to `git describe --match` without escaping a glob. */
10
+ const LITERAL_PREFIX = /^[^*?[\]\\\s]*$/u;
11
+ /** The configuration files release-please reads at a repository root, the dotted name first. */
12
+ const RELEASE_PLEASE_CONFIGS = ['.release-please-config.json', 'release-please-config.json'];
13
+ const GIT_TIMEOUT_MS = 30_000;
14
+ /**
15
+ * The commit provenance a canonical deploy declares in its deployment record (CT18 `commit`): the
16
+ * commit of the repository the Project lives in, whether the working tree holds changes that
17
+ * commit does not, and the last release of the Domain before it, as `git describe` finds it.
18
+ *
19
+ * - `dirty` covers tracked changes and untracked files, over the whole working tree; ignored files
20
+ * never count. Unlike `git describe --dirty`, an untracked file counts, since a build can import
21
+ * it.
22
+ * - `base` is the nearest release tag of the package the Domain is released from: the
23
+ * release-please package that holds the Domain's runtime module (see {@link releaseTagPrefixes}).
24
+ * The tag prefix is stripped, and a tag whose rest is not a canonical SemVer version is left
25
+ * out, so the record never carries a base a deployment name would refuse (AM-57). A Domain no
26
+ * release line holds declares no base: it is never given another package's version.
27
+ * - Outside a git repository, without git, or in a repository whose commits are not SHA-1, the
28
+ * deploy declares no commit (`null`); a deploy never fails for want of provenance.
29
+ */
30
+ export async function deploymentCommit(input) {
31
+ const head = await git(input.projectDir, input.signal, ['rev-parse', '--verify', 'HEAD']);
32
+ if (head === undefined || !SHA.test(head))
33
+ return null;
34
+ const status = await git(input.projectDir, input.signal, [
35
+ 'status',
36
+ '--porcelain',
37
+ '--untracked-files=normal',
38
+ ]);
39
+ if (status === undefined)
40
+ return null;
41
+ const prefixes = await releaseTagPrefixes(input);
42
+ const base = prefixes === undefined ? undefined : await describedBase(input, prefixes);
43
+ return Object.freeze({
44
+ sha: head,
45
+ dirty: status.length > 0,
46
+ ...(base === undefined ? {} : { base }),
47
+ });
48
+ }
49
+ /**
50
+ * Whether a remote-tracking branch of the repository already holds a commit. A Publication records
51
+ * the commit it was built from, and release-please computes the next number from the pushed
52
+ * history: publishing a commit nobody pushed risks the same number being computed again (tech
53
+ * Versioning [.73872]). Nothing when git cannot tell. Reads the local remote-tracking refs only,
54
+ * never the network.
55
+ */
56
+ export async function commitPushed(input) {
57
+ if (!SHA.test(input.sha))
58
+ return undefined;
59
+ const branches = await git(input.projectDir, input.signal, [
60
+ 'branch',
61
+ '--remotes',
62
+ '--contains',
63
+ input.sha,
64
+ '--format=%(refname)',
65
+ ]);
66
+ return branches === undefined ? undefined : branches.length > 0;
67
+ }
68
+ /**
69
+ * The prefixes of the release tags of the package the Domain is released from, or nothing when
70
+ * no release line holds the Domain.
71
+ *
72
+ * In a repository with a release-please configuration at its root, that package is the configured
73
+ * package whose path is the nearest one holding the runtime module's directory, unless one of its
74
+ * `exclude-paths` holds it. Its tags are named as release-please names them: `<component>`, its
75
+ * `tag-separator` (`-`) and `v` before the version, without the component when
76
+ * `include-component-in-tag` is false and without the `v` when `include-v-in-tag` is false; the
77
+ * component is the package's `component`, else its unscoped `package-name`, else the unscoped name
78
+ * in its `package.json`. Root-level options are the packages' defaults, as in release-please.
79
+ *
80
+ * Without a configuration, the tags are those `npm version` writes (`v<version>`) and
81
+ * `<name>-v<version>`, where the name is the unscoped one in the Project's `package.json`.
82
+ */
83
+ async function releaseTagPrefixes(input) {
84
+ const root = await git(input.projectDir, input.signal, ['rev-parse', '--show-toplevel']);
85
+ if (root === undefined)
86
+ return undefined;
87
+ const config = await releasePleaseConfig(root);
88
+ if (config === undefined) {
89
+ const name = unscoped(await packageName(input.projectDir));
90
+ return literal(['v', ...(name === undefined ? [] : [`${name}-v`])]);
91
+ }
92
+ // Git names the module's directory relative to its repository, symbolic links resolved.
93
+ const located = await git(dirname(input.runtimeModule), input.signal, [
94
+ 'rev-parse',
95
+ '--show-toplevel',
96
+ '--show-prefix',
97
+ ]);
98
+ const [moduleRoot, prefix = ''] = located?.split('\n') ?? [];
99
+ if (moduleRoot !== root)
100
+ return undefined;
101
+ const path = prefix.replace(/\/$/u, '');
102
+ const found = releasePackage(config, path);
103
+ if (found === undefined)
104
+ return undefined;
105
+ const option = (key) => found.options[key] ?? config[key];
106
+ const v = option('include-v-in-tag') === false ? '' : 'v';
107
+ if (option('include-component-in-tag') === false)
108
+ return literal([v]);
109
+ const separator = option('tag-separator') ?? '-';
110
+ const component = option('component') ??
111
+ unscoped(option('package-name')) ??
112
+ unscoped(await packageName(join(root, found.path)));
113
+ if (typeof component !== 'string' || component.length === 0 || typeof separator !== 'string') {
114
+ return undefined;
115
+ }
116
+ return literal([`${component}${separator}${v}`]);
117
+ }
118
+ /**
119
+ * The configured package that holds `path` (relative to the repository root, `''` for the root),
120
+ * the nearest one first, or nothing when none holds it or its `exclude-paths` do.
121
+ */
122
+ function releasePackage(config, path) {
123
+ const packages = config.packages;
124
+ if (packages === null || typeof packages !== 'object' || Array.isArray(packages))
125
+ return undefined;
126
+ let found;
127
+ for (const [key, options] of Object.entries(packages)) {
128
+ if (options === null || typeof options !== 'object' || Array.isArray(options))
129
+ continue;
130
+ const packagePath = key === '.' ? '' : key.replace(/^\.\//u, '').replace(/\/$/u, '');
131
+ if (!holds(packagePath, path))
132
+ continue;
133
+ if (found === undefined || packagePath.length > found.path.length) {
134
+ found = { path: packagePath, options: options };
135
+ }
136
+ }
137
+ if (found === undefined)
138
+ return undefined;
139
+ const excluded = found.options['exclude-paths'] ?? config['exclude-paths'];
140
+ if (Array.isArray(excluded)) {
141
+ for (const exclusion of excluded) {
142
+ if (typeof exclusion !== 'string')
143
+ continue;
144
+ const relative = exclusion.replace(/^\.\//u, '').replace(/\/$/u, '');
145
+ if (holds(found.path === '' ? relative : `${found.path}/${relative}`, path))
146
+ return undefined;
147
+ }
148
+ }
149
+ return found;
150
+ }
151
+ /** Whether the directory `outer` holds `inner`, both relative to the repository root. */
152
+ function holds(outer, inner) {
153
+ return outer === '' || inner === outer || inner.startsWith(`${outer}/`);
154
+ }
155
+ /** The canonical version and distance of the nearest tag with one of these prefixes, or nothing. */
156
+ async function describedBase(input, prefixes) {
157
+ const described = await git(input.projectDir, input.signal, [
158
+ 'describe',
159
+ '--tags',
160
+ '--long',
161
+ '--abbrev=40',
162
+ ...prefixes.flatMap((prefix) => ['--match', `${prefix}[0-9]*`]),
163
+ 'HEAD',
164
+ ]);
165
+ const match = described === undefined ? null : DESCRIBED.exec(described);
166
+ if (match?.groups === undefined)
167
+ return undefined;
168
+ const tag = match.groups.tag;
169
+ const distance = Number(match.groups.distance);
170
+ const version = prefixes
171
+ .filter((prefix) => tag.startsWith(prefix))
172
+ .map((prefix) => tag.slice(prefix.length))
173
+ .find((rest) => isVersion(rest));
174
+ if (version === undefined || !Number.isSafeInteger(distance))
175
+ return undefined;
176
+ return Object.freeze({ version, distance });
177
+ }
178
+ /** The repository's release-please configuration, if its root has one that is a JSON object. */
179
+ async function releasePleaseConfig(root) {
180
+ for (const name of RELEASE_PLEASE_CONFIGS) {
181
+ const config = await readJson(join(root, name));
182
+ if (config !== undefined)
183
+ return config;
184
+ }
185
+ return undefined;
186
+ }
187
+ /** The `name` of the `package.json` in a directory, if it has one. */
188
+ async function packageName(directory) {
189
+ return (await readJson(join(directory, 'package.json')))?.name;
190
+ }
191
+ /** A package name without its npm scope, as release-please makes a component of it. */
192
+ function unscoped(name) {
193
+ if (typeof name !== 'string' || name.length === 0)
194
+ return undefined;
195
+ return name.startsWith('@') ? name.slice(name.indexOf('/') + 1) || undefined : name;
196
+ }
197
+ /** The prefixes, unless one would be read as a glob by `git describe --match`. */
198
+ function literal(prefixes) {
199
+ return prefixes.every((prefix) => LITERAL_PREFIX.test(prefix)) ? prefixes : undefined;
200
+ }
201
+ async function readJson(path) {
202
+ let value;
203
+ try {
204
+ value = JSON.parse(await readFile(path, 'utf8'));
205
+ }
206
+ catch {
207
+ return undefined;
208
+ }
209
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
210
+ ? value
211
+ : undefined;
212
+ }
213
+ /**
214
+ * Run one read-only git command in a directory and return its trimmed stdout, or nothing when git
215
+ * is missing or the command fails. An interrupted deploy still stops here.
216
+ */
217
+ function git(cwd, signal, args) {
218
+ signal.throwIfAborted();
219
+ return new Promise((resolve, reject) => {
220
+ execFile('git', [...args], {
221
+ cwd,
222
+ // Never take the index lock: a deploy only reads the repository.
223
+ env: { ...process.env, GIT_OPTIONAL_LOCKS: '0' },
224
+ signal,
225
+ timeout: GIT_TIMEOUT_MS,
226
+ windowsHide: true,
227
+ }, (error, stdout) => {
228
+ if (signal.aborted) {
229
+ reject(signal.reason);
230
+ return;
231
+ }
232
+ resolve(error === null ? stdout.trim() : undefined);
233
+ });
234
+ });
235
+ }
@@ -0,0 +1,26 @@
1
+ /** A supported immutable deployment, or a configuration refused before provider effects. */
2
+ export type DeployMode = {
3
+ readonly kind: 'canonical';
4
+ } | {
5
+ readonly kind: 'refused';
6
+ readonly refusals: readonly DeployRefusal[];
7
+ };
8
+ export interface DeployRefusal {
9
+ readonly reason: 'invalid-parameters' | 'missing-namespace' | 'scheduled-triggers' | 'unsupported-adapter';
10
+ readonly guidance: string;
11
+ }
12
+ export type DeployModeCommand = 'deploy' | 'publish';
13
+ /** Inspect one Environment's deployment contract without building or changing any provider. */
14
+ export declare function selectDeployMode(input: {
15
+ readonly command: DeployModeCommand;
16
+ readonly environment: string;
17
+ readonly definition: {
18
+ readonly deployment: {
19
+ readonly adapter: {
20
+ readonly name: string;
21
+ readonly deployRelease?: unknown;
22
+ };
23
+ readonly parameters: object;
24
+ };
25
+ };
26
+ }): DeployMode;
@@ -0,0 +1,59 @@
1
+ /** Inspect one Environment's deployment contract without building or changing any provider. */
2
+ export function selectDeployMode(input) {
3
+ const { adapter, parameters } = input.definition.deployment;
4
+ const values = parameters;
5
+ const refusals = [];
6
+ if (typeof adapter.deployRelease !== 'function') {
7
+ refusals.push({
8
+ reason: 'unsupported-adapter',
9
+ guidance: `Adapter ${adapter.name} must implement configure, placement and deployRelease for immutable deployments.`,
10
+ });
11
+ }
12
+ if (adapter.name === 'cloudflare') {
13
+ if (values.namespace === undefined) {
14
+ refusals.push({
15
+ reason: 'missing-namespace',
16
+ guidance: 'cloudflare requires namespace: { name, routingDomain }. Use astrale() for managed deployments.',
17
+ });
18
+ }
19
+ const allowed = [
20
+ 'namespace',
21
+ 'secrets',
22
+ 'vars',
23
+ 'maximumRequestBytes',
24
+ 'invocationTimeoutMs',
25
+ 'tokenExchange',
26
+ 'durable',
27
+ 'wrangler',
28
+ 'router',
29
+ ];
30
+ const unknown = Reflect.ownKeys(values).filter((key) => typeof key !== 'string' || !allowed.includes(key));
31
+ if (unknown.length > 0)
32
+ refusals.push({
33
+ reason: 'invalid-parameters',
34
+ guidance: `Cloudflare Environment ${input.environment} declares unknown parameters ${unknown.map(String).join(', ')}.`,
35
+ });
36
+ const wrangler = values.wrangler;
37
+ if (wrangler !== undefined && Object.hasOwn(wrangler, 'triggers')) {
38
+ refusals.push({
39
+ reason: 'scheduled-triggers',
40
+ guidance: 'Immutable deployments run no cron of their own. Remove wrangler.triggers.',
41
+ });
42
+ }
43
+ }
44
+ if (adapter.name === 'astrale') {
45
+ const allowed = ['admin', 'secrets', 'vars', 'maximumRequestBytes', 'tokenExchange', 'durable'];
46
+ const unknown = Reflect.ownKeys(values).filter((key) => typeof key !== 'string' || !allowed.includes(key));
47
+ if (unknown.length > 0)
48
+ refusals.push({
49
+ reason: 'invalid-parameters',
50
+ guidance: `Astrale Environment ${input.environment} declares unknown parameters ${unknown.map(String).join(', ')}.`,
51
+ });
52
+ }
53
+ return refusals.length === 0
54
+ ? Object.freeze({ kind: 'canonical' })
55
+ : Object.freeze({
56
+ kind: 'refused',
57
+ refusals: Object.freeze(refusals.map((r) => Object.freeze(r))),
58
+ });
59
+ }
@@ -0,0 +1,80 @@
1
+ import type { Revision } from '@astrale-os/kernel-dsl/v1/addressing';
2
+ import type { ReleaseDigest } from '@astrale-os/kernel-protocol/release';
3
+ import type { DeploymentCommitV1 } from '../../deployment/address/index.js';
4
+ import type { BuildDigest, DeploymentSecretsState, ReadyReleaseDeployResult, Release } from '../../deployment/index.js';
5
+ export type { DeploymentSecretsState } from '../../deployment/index.js';
6
+ /**
7
+ * `astrale-domain deploy <environment> --json` on stdout: the one deployment the deploy made or
8
+ * reused, which CI installs by its URL. Progress and warnings go to stderr. It names no instance
9
+ * and no version: a deploy numbers nothing and installs nothing.
10
+ */
11
+ export interface DeployResultV1 {
12
+ readonly format: 'astrale.deploy-result';
13
+ readonly version: 1;
14
+ readonly origin: string;
15
+ readonly environment: string;
16
+ /**
17
+ * The URL `astrale domain install <url>` takes: an immutable deployment's URL, which is also its
18
+ * issuer.
19
+ */
20
+ readonly url: string;
21
+ /**
22
+ * The digest of the DomainRelease v4 served at release.json.
23
+ */
24
+ readonly release: {
25
+ readonly digest: ReleaseDigest;
26
+ };
27
+ /**
28
+ * The build digest of the code the deployment runs, as astrale-domain build prints it.
29
+ */
30
+ readonly build: {
31
+ readonly digest: BuildDigest;
32
+ };
33
+ readonly schema: {
34
+ readonly revision: Revision;
35
+ };
36
+ readonly deployment: {
37
+ /** `<adapter name>@<adapter version>` */
38
+ readonly adapter: string;
39
+ /**
40
+ * The provider script that serves this deployment: an immutable deployment's label, which is
41
+ * also the first label of its URL.
42
+ */
43
+ readonly script: string;
44
+ /**
45
+ * `created`: a new immutable deployment. `reused`: the immutable deployment of this exact
46
+ * release already existed.
47
+ */
48
+ readonly state: 'created' | 'reused';
49
+ };
50
+ /**
51
+ * Immutable deployments only: the environment's current secrets were `bound` to a new
52
+ * deployment, or `updated` or left `unchanged` in place on the reused one. A deploy never writes
53
+ * the secrets of any other deployment.
54
+ */
55
+ readonly secrets: {
56
+ readonly state: DeploymentSecretsState;
57
+ };
58
+ /**
59
+ * The commit the deployment was built from, as its deployment record declares it: the commit of
60
+ * the deploy that created it. A reused deployment keeps its record, so this can be an earlier
61
+ * commit than the one the deploy ran from; the label covers the release, never the commit.
62
+ */
63
+ readonly commit: DeploymentCommitV1 | null;
64
+ }
65
+ /**
66
+ * The deploy result of one immutable deployment, from the ready result of the adapter's
67
+ * `deployRelease`. Its release, build, Schema revision and URL are those the SDK sealed before
68
+ * deploying; the deployment record the adapter returned must declare exactly that release at that
69
+ * URL, so the result never names a release the deployment does not serve. Its commit is the
70
+ * record's, which a reused deployment kept from the deploy that created it.
71
+ */
72
+ export declare function deployResult(input: {
73
+ readonly environment: string;
74
+ readonly adapter: {
75
+ readonly name: string;
76
+ readonly version: string;
77
+ };
78
+ readonly release: Release;
79
+ readonly deployment: ReadyReleaseDeployResult;
80
+ }): DeployResultV1;
@@ -0,0 +1,64 @@
1
+ import { acceptDeploymentRecord } from '../../deployment/address/index.js';
2
+ import { addressing, isRelease } from '../../deployment/index.js';
3
+ const SECRETS_BY_STATE = Object.freeze({
4
+ created: Object.freeze(['bound']),
5
+ reused: Object.freeze(['updated', 'unchanged']),
6
+ });
7
+ /**
8
+ * The deploy result of one immutable deployment, from the ready result of the adapter's
9
+ * `deployRelease`. Its release, build, Schema revision and URL are those the SDK sealed before
10
+ * deploying; the deployment record the adapter returned must declare exactly that release at that
11
+ * URL, so the result never names a release the deployment does not serve. Its commit is the
12
+ * record's, which a reused deployment kept from the deploy that created it.
13
+ */
14
+ export function deployResult(input) {
15
+ const { release, deployment } = input;
16
+ if (!isRelease(release))
17
+ throw new TypeError('Deploy result requires a sealed Release.');
18
+ if (deployment.status !== 'ready') {
19
+ throw new TypeError('Deploy result requires the ready result of deployRelease.');
20
+ }
21
+ const record = acceptDeploymentRecord(deployment.record);
22
+ const { document } = release;
23
+ expectSame('origin', record.origin, document.origin);
24
+ expectSame('environment', record.environment, input.environment);
25
+ expectSame('release digest', record.releaseDigest, document.digest);
26
+ expectSame('build digest', record.buildDigest, release.buildDigest);
27
+ expectSame('Schema revision', record.schemaRevision, document.schema.revision);
28
+ const url = addressing(deployment.url).issuer;
29
+ expectSame('URL', url, release.url);
30
+ if (new URL(url).hostname.split('.')[0] !== record.providerScript) {
31
+ throw new TypeError(`Deployment URL ${url} is not addressed by its provider script ${record.providerScript}.`);
32
+ }
33
+ const allowed = Object.hasOwn(SECRETS_BY_STATE, deployment.state)
34
+ ? SECRETS_BY_STATE[deployment.state]
35
+ : undefined;
36
+ if (allowed === undefined)
37
+ throw new TypeError('Deployment state must be created or reused.');
38
+ const secrets = deployment.secrets?.state;
39
+ if (!allowed.includes(secrets)) {
40
+ throw new TypeError(`A ${deployment.state} deployment has its secrets ${allowed.join(' or ')}, not ${String(secrets)}.`);
41
+ }
42
+ return Object.freeze({
43
+ format: 'astrale.deploy-result',
44
+ version: 1,
45
+ origin: document.origin,
46
+ environment: record.environment,
47
+ url,
48
+ release: Object.freeze({ digest: document.digest }),
49
+ build: Object.freeze({ digest: release.buildDigest }),
50
+ schema: Object.freeze({ revision: record.schemaRevision }),
51
+ deployment: Object.freeze({
52
+ adapter: `${input.adapter.name}@${input.adapter.version}`,
53
+ script: record.providerScript,
54
+ state: deployment.state,
55
+ }),
56
+ secrets: Object.freeze({ state: secrets }),
57
+ commit: record.commit,
58
+ });
59
+ }
60
+ function expectSame(member, declared, expected) {
61
+ if (declared !== expected) {
62
+ throw new TypeError(`Deployment declares ${member} ${declared}, not ${expected}.`);
63
+ }
64
+ }
@@ -0,0 +1,7 @@
1
+ import type { Version } from '../../../platform/versioning/index.js';
2
+ /**
3
+ * The version the author declares for the next release: `package.json` `version` in the Project
4
+ * directory, as release-please and `npm version` write it (tech Versioning [.21210]). No command
5
+ * takes a version number.
6
+ */
7
+ export declare function declaredVersion(projectDir: string): Promise<Version>;
@@ -0,0 +1,27 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { acceptVersion } from '../../../platform/versioning/index.js';
4
+ /**
5
+ * The version the author declares for the next release: `package.json` `version` in the Project
6
+ * directory, as release-please and `npm version` write it (tech Versioning [.21210]). No command
7
+ * takes a version number.
8
+ */
9
+ export async function declaredVersion(projectDir) {
10
+ const path = join(projectDir, 'package.json');
11
+ let manifest;
12
+ try {
13
+ manifest = JSON.parse(await readFile(path, 'utf8'));
14
+ }
15
+ catch (cause) {
16
+ throw new TypeError(`Cannot read the Domain's version: ${path} is not a readable JSON file.`, {
17
+ cause,
18
+ });
19
+ }
20
+ const version = typeof manifest === 'object' && manifest !== null && !Array.isArray(manifest)
21
+ ? manifest.version
22
+ : undefined;
23
+ if (typeof version !== 'string') {
24
+ throw new TypeError(`${path} declares no version. The Domain's version is the package.json version, for example written by npm version minor.`);
25
+ }
26
+ return acceptVersion(version);
27
+ }
@@ -0,0 +1,30 @@
1
+ import type { Build } from '../../../deployment/index.js';
2
+ import type { DomainRegistry } from '../registry/index.js';
3
+ export type { DiffChangeV1, DiffReportV1 } from './report.js';
4
+ export interface DiffCommandInput {
5
+ readonly projectDir: string;
6
+ readonly build: Build;
7
+ /** The build digest of every distinct bundler of the Project, bundled on demand. */
8
+ readonly builds: () => Promise<readonly string[]>;
9
+ readonly identity?: string;
10
+ readonly json: boolean;
11
+ readonly signal: AbortSignal;
12
+ }
13
+ export interface DiffCommandDependencies {
14
+ readonly open: (input: {
15
+ readonly projectDir: string;
16
+ readonly identity?: string;
17
+ readonly signal: AbortSignal;
18
+ }) => Promise<DomainRegistry>;
19
+ readonly stdout: (text: string) => void;
20
+ readonly stderr: (text: string) => void;
21
+ }
22
+ /**
23
+ * `astrale-domain diff [--as <identity>] [--json]`: the changes since the highest published stable
24
+ * version up to the declared one, and the smallest version they admit (tech Versioning [.72565]).
25
+ * On a feature branch the declared version is still the published one and the report is
26
+ * informational (exit 0); on a release PR an unpublished version that is too low fails (exit 1)
27
+ * with the [.105820] message. Reads the registry through the Astrale CLI under the caller's own
28
+ * credential and changes nothing.
29
+ */
30
+ export declare function runDiff(input: DiffCommandInput, dependencies?: DiffCommandDependencies): Promise<number>;
@@ -0,0 +1,58 @@
1
+ import * as bundle from '@astrale-os/kernel-dsl/v1/bundle/transport';
2
+ import { DIM, RED, RESET } from '../log.js';
3
+ import { RegistryCliError, openDomainRegistry } from '../registry/index.js';
4
+ import { declaredVersion } from './declared.js';
5
+ import { diffExitCode, renderDiff } from './render.js';
6
+ import { diffReport, publishedSchema } from './report.js';
7
+ /**
8
+ * `astrale-domain diff [--as <identity>] [--json]`: the changes since the highest published stable
9
+ * version up to the declared one, and the smallest version they admit (tech Versioning [.72565]).
10
+ * On a feature branch the declared version is still the published one and the report is
11
+ * informational (exit 0); on a release PR an unpublished version that is too low fails (exit 1)
12
+ * with the [.105820] message. Reads the registry through the Astrale CLI under the caller's own
13
+ * credential and changes nothing.
14
+ */
15
+ export async function runDiff(input, dependencies = {
16
+ open: openDomainRegistry,
17
+ stdout: (text) => void process.stdout.write(text),
18
+ stderr: (text) => void process.stderr.write(text),
19
+ }) {
20
+ const root = input.build.schema.compiled.root;
21
+ let report;
22
+ try {
23
+ const declared = await declaredVersion(input.projectDir);
24
+ const registry = await dependencies.open({
25
+ projectDir: input.projectDir,
26
+ ...(input.identity === undefined ? {} : { identity: input.identity }),
27
+ signal: input.signal,
28
+ });
29
+ report = await diffReport({
30
+ origin: root.origin,
31
+ declared,
32
+ revision: root.revision,
33
+ index: await registry.index(root.origin),
34
+ current: () => bundle.decode(input.build.schema.bundle.bytes()).root,
35
+ builds: input.builds,
36
+ published: async (publication) => publishedSchema(await registry.bundle(root.origin, publication), publication, root.origin),
37
+ });
38
+ }
39
+ catch (cause) {
40
+ if (!(cause instanceof RegistryCliError))
41
+ throw cause;
42
+ // Nothing on stdout: a JSON consumer reads one report or nothing.
43
+ dependencies.stderr(`${RED}✗${RESET} Domain registry: ${cause.code}: ${cause.message}\n`);
44
+ return 1;
45
+ }
46
+ const rendered = renderDiff(report);
47
+ // With --json, stdout carries only the report and the summary moves to stderr, as for deploy.
48
+ const summary = input.json ? dependencies.stderr : dependencies.stdout;
49
+ // The sentence takes the progress mark; the member rows below it keep their indentation.
50
+ for (const line of rendered.summary) {
51
+ summary(line.startsWith(' ') ? `${line}\n` : `${DIM}›${RESET} ${line}\n`);
52
+ }
53
+ if (rendered.refusal.length > 0)
54
+ dependencies.stderr(`${rendered.refusal.join('\n')}\n`);
55
+ if (input.json)
56
+ dependencies.stdout(`${JSON.stringify(report, null, 2)}\n`);
57
+ return diffExitCode(report);
58
+ }
@@ -0,0 +1,15 @@
1
+ import type { DiffReportV1 } from './report.js';
2
+ /**
3
+ * 0 when the declared version is accepted, already published (the report is then informational:
4
+ * a feature branch keeps the last published number until its release), or has nothing to compare
5
+ * with; 1 when an unpublished declared version is too low.
6
+ */
7
+ export declare function diffExitCode(report: DiffReportV1): 0 | 1;
8
+ /**
9
+ * The report for a person. `summary` describes the comparison; `refusal` is the [.105820] message
10
+ * for an unpublished version that is too low (tech Versioning), printed as an error.
11
+ */
12
+ export declare function renderDiff(report: DiffReportV1): {
13
+ readonly summary: readonly string[];
14
+ readonly refusal: readonly string[];
15
+ };