@astrale-os/sdk 0.6.0-beta.2 → 0.6.0-beta.21

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 (403) hide show
  1. package/README.md +74 -14
  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 +17 -8
  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 +5 -5
  8. package/dist/application/define.js +13 -13
  9. package/dist/application/dependency/index.d.ts +1 -1
  10. package/dist/application/dependency/invoker.d.ts +11 -6
  11. package/dist/application/domain.d.ts +28 -0
  12. package/dist/application/index.d.ts +3 -3
  13. package/dist/application/index.js +1 -1
  14. package/dist/application/mutation/authoring/properties.d.ts +5 -3
  15. package/dist/application/mutation/authoring/properties.js +35 -2
  16. package/dist/application/mutation/authoring/transition.js +4 -1
  17. package/dist/application/routes/admission.d.ts +2 -2
  18. package/dist/application/routes/admission.js +1 -1
  19. package/dist/application/routes/route.d.ts +2 -2
  20. package/dist/application/runtime/actions.js +3 -0
  21. package/dist/application/runtime/workflows.d.ts +2 -0
  22. package/dist/application/runtime/workflows.js +5 -0
  23. package/dist/application/workflow/authoring.d.ts +3 -2
  24. package/dist/application/workflow/context.d.ts +8 -2
  25. package/dist/application/workflow/define.d.ts +3 -3
  26. package/dist/application/workflow/define.js +19 -3
  27. package/dist/application/workflow/durable.d.ts +83 -0
  28. package/dist/application/workflow/index.d.ts +3 -2
  29. package/dist/application/workflow/runner/inline.js +3 -4
  30. package/dist/application/workflow/runner/runner.d.ts +2 -2
  31. package/dist/application/workflow/step/output.d.ts +2 -0
  32. package/dist/application/workflow/step/output.js +73 -0
  33. package/dist/application/workflow/workflow.d.ts +12 -0
  34. package/dist/deployment/adapter/adapter.d.ts +59 -11
  35. package/dist/deployment/adapter/bundle/bundle.d.ts +36 -0
  36. package/dist/deployment/adapter/bundle/file.d.ts +10 -0
  37. package/dist/deployment/adapter/bundle/index.d.ts +2 -0
  38. package/dist/deployment/adapter/define.d.ts +25 -3
  39. package/dist/deployment/adapter/define.js +101 -24
  40. package/dist/deployment/adapter/index.d.ts +6 -3
  41. package/dist/deployment/adapter/index.js +1 -0
  42. package/dist/deployment/adapter/legacy/adapter.d.ts +40 -0
  43. package/dist/deployment/adapter/{deploy → legacy/deploy}/context.d.ts +6 -2
  44. package/dist/deployment/adapter/legacy/deploy/index.d.ts +2 -0
  45. package/dist/deployment/adapter/legacy/deploy/index.js +1 -0
  46. package/dist/deployment/adapter/legacy/deploy/result.d.ts +89 -0
  47. package/dist/deployment/adapter/legacy/deploy/result.js +1 -0
  48. package/dist/deployment/adapter/legacy/index.d.ts +24 -0
  49. package/dist/deployment/adapter/legacy/index.js +1 -0
  50. package/dist/deployment/adapter/legacy/prepare/artifact.d.ts +43 -0
  51. package/dist/deployment/adapter/legacy/prepare/artifact.js +1 -0
  52. package/dist/deployment/adapter/legacy/prepare/context.d.ts +33 -0
  53. package/dist/deployment/adapter/legacy/prepare/context.js +1 -0
  54. package/dist/deployment/adapter/legacy/prepare/index.d.ts +2 -0
  55. package/dist/deployment/adapter/legacy/prepare/index.js +1 -0
  56. package/dist/deployment/adapter/release/context.d.ts +95 -0
  57. package/dist/deployment/adapter/release/context.js +1 -0
  58. package/dist/deployment/adapter/release/index.d.ts +3 -0
  59. package/dist/deployment/adapter/release/index.js +1 -0
  60. package/dist/deployment/adapter/release/list.d.ts +53 -0
  61. package/dist/deployment/adapter/release/list.js +1 -0
  62. package/dist/deployment/adapter/release/refusal.d.ts +10 -0
  63. package/dist/deployment/adapter/release/refusal.js +14 -0
  64. package/dist/deployment/adapter/release/result.d.ts +56 -0
  65. package/dist/deployment/adapter/release/result.js +1 -0
  66. package/dist/deployment/address/configuration.d.ts +83 -0
  67. package/dist/deployment/address/configuration.js +262 -0
  68. package/dist/deployment/address/fingerprint.d.ts +5 -0
  69. package/dist/deployment/address/fingerprint.js +27 -0
  70. package/dist/deployment/address/index.d.ts +5 -0
  71. package/dist/deployment/address/index.js +5 -0
  72. package/dist/deployment/address/label.d.ts +42 -0
  73. package/dist/deployment/address/label.js +80 -0
  74. package/dist/deployment/address/line.d.ts +29 -0
  75. package/dist/deployment/address/line.js +53 -0
  76. package/dist/deployment/address/record.d.ts +52 -0
  77. package/dist/deployment/address/record.js +104 -0
  78. package/dist/deployment/address/summary.d.ts +57 -0
  79. package/dist/deployment/address/summary.js +117 -0
  80. package/dist/deployment/address/vectors.d.ts +60 -0
  81. package/dist/deployment/address/vectors.js +517 -0
  82. package/dist/deployment/build/build.d.ts +2 -2
  83. package/dist/deployment/build/compile.d.ts +4 -4
  84. package/dist/deployment/build/compile.js +17 -17
  85. package/dist/deployment/build/index.d.ts +1 -0
  86. package/dist/deployment/build/index.js +1 -0
  87. package/dist/deployment/build/manifest.d.ts +59 -0
  88. package/dist/deployment/build/manifest.js +118 -0
  89. package/dist/deployment/build/material.js +2 -2
  90. package/dist/deployment/build/schema.d.ts +2 -2
  91. package/dist/deployment/deploy.d.ts +10 -10
  92. package/dist/deployment/deploy.js +3 -3
  93. package/dist/deployment/deployment.d.ts +9 -4
  94. package/dist/deployment/environment.d.ts +6 -0
  95. package/dist/deployment/environment.js +6 -0
  96. package/dist/deployment/index.d.ts +4 -4
  97. package/dist/deployment/index.js +1 -1
  98. package/dist/deployment/release/addressing.d.ts +9 -1
  99. package/dist/deployment/release/assemble.d.ts +6 -3
  100. package/dist/deployment/release/assemble.js +12 -10
  101. package/dist/deployment/release/index.d.ts +2 -0
  102. package/dist/deployment/release/index.js +2 -0
  103. package/dist/deployment/release/legacy/admission.d.ts +3 -0
  104. package/dist/deployment/release/legacy/admission.js +8 -0
  105. package/dist/deployment/release/legacy/assemble.d.ts +5 -0
  106. package/dist/deployment/release/legacy/assemble.js +20 -0
  107. package/dist/deployment/release/legacy/index.d.ts +35 -0
  108. package/dist/deployment/release/legacy/index.js +34 -0
  109. package/dist/deployment/release/legacy/release.d.ts +12 -0
  110. package/dist/deployment/release/legacy/release.js +1 -0
  111. package/dist/deployment/release/{publication → legacy}/seal.d.ts +3 -3
  112. package/dist/deployment/release/legacy/seal.js +17 -0
  113. package/dist/deployment/release/release.d.ts +16 -5
  114. package/dist/deployment/release/runtime.d.ts +2 -0
  115. package/dist/deployment/release/runtime.js +2 -0
  116. package/dist/deployment/release/seal.d.ts +14 -0
  117. package/dist/deployment/release/seal.js +22 -0
  118. package/dist/deployment/release/{publication → served}/callables.d.ts +2 -2
  119. package/dist/deployment/release/{publication → served}/callables.js +2 -2
  120. package/dist/deployment/release/served/index.d.ts +12 -0
  121. package/dist/deployment/release/served/index.js +22 -0
  122. package/dist/deployment/release/{publication → served}/views.d.ts +2 -2
  123. package/dist/deployment/runtime/admission.d.ts +2 -2
  124. package/dist/deployment/runtime/admission.js +5 -5
  125. package/dist/deployment/verify/index.d.ts +2 -1
  126. package/dist/deployment/verify/index.js +1 -0
  127. package/dist/deployment/verify/preflight/artifact.d.ts +1 -1
  128. package/dist/deployment/verify/preflight/bundle.d.ts +18 -0
  129. package/dist/deployment/verify/preflight/bundle.js +71 -0
  130. package/dist/deployment/verify/preflight/index.d.ts +2 -1
  131. package/dist/deployment/verify/preflight/index.js +1 -0
  132. package/dist/deployment/verify/preflight/publication.d.ts +2 -2
  133. package/dist/deployment/verify/preflight/publication.js +4 -3
  134. package/dist/deployment/verify/readiness/deployment.js +7 -15
  135. package/dist/deployment/verify/readiness/fetch.d.ts +13 -0
  136. package/dist/deployment/verify/readiness/fetch.js +26 -0
  137. package/dist/deployment/verify/readiness/identity.d.ts +3 -6
  138. package/dist/deployment/verify/readiness/identity.js +3 -3
  139. package/dist/deployment/verify/readiness/index.d.ts +11 -7
  140. package/dist/deployment/verify/readiness/index.js +15 -4
  141. package/dist/deployment/verify/readiness/legacy/index.d.ts +2 -0
  142. package/dist/deployment/verify/readiness/legacy/index.js +2 -0
  143. package/dist/deployment/verify/readiness/legacy/publication.d.ts +12 -0
  144. package/dist/deployment/verify/readiness/legacy/publication.js +23 -0
  145. package/dist/deployment/verify/readiness/release.d.ts +8 -0
  146. package/dist/deployment/verify/readiness/release.js +22 -0
  147. package/dist/execution/identity/authentication.d.ts +23 -2
  148. package/dist/execution/identity/authentication.js +64 -40
  149. package/dist/execution/identity/callback.d.ts +16 -15
  150. package/dist/execution/identity/callback.js +21 -16
  151. package/dist/execution/identity/delivery.d.ts +11 -4
  152. package/dist/execution/identity/delivery.js +47 -20
  153. package/dist/execution/identity/identity.d.ts +18 -3
  154. package/dist/execution/identity/identity.js +8 -4
  155. package/dist/execution/identity/jwks.js +57 -12
  156. package/dist/execution/index.d.ts +4 -2
  157. package/dist/execution/index.js +2 -1
  158. package/dist/execution/invocation/admission/authentication.d.ts +3 -8
  159. package/dist/execution/invocation/admission/authentication.js +10 -24
  160. package/dist/execution/invocation/admission/authority.d.ts +15 -8
  161. package/dist/execution/invocation/admission/authority.js +5 -0
  162. package/dist/execution/invocation/admission/input.d.ts +2 -2
  163. package/dist/execution/invocation/admission/input.js +16 -2
  164. package/dist/execution/invocation/dependency/bind.d.ts +1 -1
  165. package/dist/execution/invocation/dependency/bind.js +35 -14
  166. package/dist/execution/invocation/dispatch/context.d.ts +2 -1
  167. package/dist/execution/invocation/dispatch/context.js +1 -1
  168. package/dist/execution/invocation/invocation.js +58 -16
  169. package/dist/execution/invocation/result/project.js +41 -1
  170. package/dist/execution/node/serve.d.ts +2 -2
  171. package/dist/execution/node/serve.js +1 -1
  172. package/dist/execution/runtime/index.d.ts +1 -0
  173. package/dist/execution/runtime/index.js +1 -0
  174. package/dist/execution/runtime/load.d.ts +3 -3
  175. package/dist/execution/runtime/load.js +3 -2
  176. package/dist/execution/runtime/release.d.ts +22 -0
  177. package/dist/execution/runtime/release.js +14 -0
  178. package/dist/execution/serve.d.ts +10 -4
  179. package/dist/execution/serve.js +3 -0
  180. package/dist/execution/service/create.js +39 -7
  181. package/dist/execution/service/initialization.d.ts +4 -4
  182. package/dist/execution/service/initialization.js +23 -14
  183. package/dist/execution/service/release.d.ts +2 -2
  184. package/dist/execution/service/release.js +3 -2
  185. package/dist/execution/service/service.d.ts +15 -5
  186. package/dist/execution/service/serving/delivery.d.ts +6 -0
  187. package/dist/execution/service/{publication → serving}/delivery.js +5 -1
  188. package/dist/execution/service/{publication → serving}/index.d.ts +1 -1
  189. package/dist/execution/service/serving/installation.d.ts +4 -0
  190. package/dist/execution/service/serving/installation.js +9 -0
  191. package/dist/execution/service/serving/legacy/index.d.ts +15 -0
  192. package/dist/execution/service/serving/legacy/index.js +19 -0
  193. package/dist/execution/service/serving/source.d.ts +18 -0
  194. package/dist/execution/service/serving/source.js +19 -0
  195. package/dist/execution/workflows/discovery.d.ts +14 -0
  196. package/dist/execution/workflows/discovery.js +151 -0
  197. package/dist/execution/workflows/engine.d.ts +52 -0
  198. package/dist/execution/workflows/engine.js +1 -0
  199. package/dist/execution/workflows/envelope.d.ts +12 -0
  200. package/dist/execution/workflows/envelope.js +46 -0
  201. package/dist/execution/workflows/failure.d.ts +11 -0
  202. package/dist/execution/workflows/failure.js +43 -0
  203. package/dist/execution/workflows/index.d.ts +4 -0
  204. package/dist/execution/workflows/index.js +3 -0
  205. package/dist/execution/workflows/options.d.ts +40 -0
  206. package/dist/execution/workflows/options.js +83 -0
  207. package/dist/execution/workflows/receiver.d.ts +22 -0
  208. package/dist/execution/workflows/receiver.js +99 -0
  209. package/dist/execution/workflows/route.d.ts +14 -0
  210. package/dist/execution/workflows/route.js +40 -0
  211. package/dist/execution/workflows/run.d.ts +22 -0
  212. package/dist/execution/workflows/run.js +211 -0
  213. package/dist/index.d.ts +3 -3
  214. package/dist/index.js +1 -1
  215. package/dist/platform/release/index.d.ts +27 -0
  216. package/dist/platform/release/index.js +27 -0
  217. package/dist/platform/schema/index.d.ts +2 -1
  218. package/dist/platform/schema/property-input.d.ts +15 -0
  219. package/dist/platform/schema/property-input.js +1 -0
  220. package/dist/platform/schema/property.d.ts +5 -0
  221. package/dist/platform/versioning/dependents.d.ts +18 -0
  222. package/dist/platform/versioning/dependents.js +15 -0
  223. package/dist/platform/versioning/index.d.ts +5 -0
  224. package/dist/platform/versioning/index.js +5 -0
  225. package/dist/platform/versioning/name.d.ts +38 -0
  226. package/dist/platform/versioning/name.js +58 -0
  227. package/dist/platform/versioning/reference.d.ts +48 -0
  228. package/dist/platform/versioning/reference.js +95 -0
  229. package/dist/platform/versioning/version.d.ts +72 -0
  230. package/dist/platform/versioning/version.js +98 -0
  231. package/dist/project/admit.js +2 -2
  232. package/dist/project/define.d.ts +4 -4
  233. package/dist/project/define.js +55 -35
  234. package/dist/project/index.d.ts +1 -1
  235. package/dist/project/install-command.d.ts +10 -0
  236. package/dist/project/install-command.js +13 -0
  237. package/dist/project/project.d.ts +10 -8
  238. package/dist/testing/dataset/builder.d.ts +3 -3
  239. package/dist/testing/dataset/define.d.ts +1 -1
  240. package/dist/testing/load.js +1 -1
  241. package/dist/tooling/cli/arguments.d.ts +10 -5
  242. package/dist/tooling/cli/arguments.js +123 -52
  243. package/dist/tooling/cli/build.d.ts +55 -0
  244. package/dist/tooling/cli/build.js +77 -0
  245. package/dist/tooling/cli/bun.d.ts +0 -1
  246. package/dist/tooling/cli/bun.js +0 -7
  247. package/dist/tooling/cli/commit.d.ts +35 -0
  248. package/dist/tooling/cli/commit.js +235 -0
  249. package/dist/tooling/cli/deploy-mode.d.ts +82 -0
  250. package/dist/tooling/cli/deploy-mode.js +135 -0
  251. package/dist/tooling/cli/deploy-result.d.ts +85 -0
  252. package/dist/tooling/cli/deploy-result.js +64 -0
  253. package/dist/tooling/cli/diff/declared.d.ts +7 -0
  254. package/dist/tooling/cli/diff/declared.js +27 -0
  255. package/dist/tooling/cli/diff/index.d.ts +30 -0
  256. package/dist/tooling/cli/diff/index.js +58 -0
  257. package/dist/tooling/cli/diff/render.d.ts +15 -0
  258. package/dist/tooling/cli/diff/render.js +131 -0
  259. package/dist/tooling/cli/diff/report.d.ts +88 -0
  260. package/dist/tooling/cli/diff/report.js +154 -0
  261. package/dist/tooling/cli/dotenv.d.ts +2 -2
  262. package/dist/tooling/cli/dotenv.js +3 -33
  263. package/dist/tooling/cli/help.js +176 -59
  264. package/dist/tooling/cli/immutable-deployment.d.ts +83 -0
  265. package/dist/tooling/cli/immutable-deployment.js +135 -0
  266. package/dist/tooling/cli/index.d.ts +10 -4
  267. package/dist/tooling/cli/index.js +5 -3
  268. package/dist/tooling/cli/installed-on.d.ts +83 -0
  269. package/dist/tooling/cli/installed-on.js +156 -0
  270. package/dist/tooling/cli/legacy/deploy-result.d.ts +28 -0
  271. package/dist/tooling/cli/legacy/deploy-result.js +37 -0
  272. package/dist/tooling/cli/legacy/stable-target-adapter.d.ts +21 -0
  273. package/dist/tooling/cli/legacy/stable-target-adapter.js +14 -0
  274. package/dist/tooling/cli/legacy/stable-target-deploy.d.ts +40 -0
  275. package/dist/tooling/cli/legacy/stable-target-deploy.js +102 -0
  276. package/dist/tooling/cli/legacy/uploaded-build.d.ts +11 -0
  277. package/dist/tooling/cli/legacy/uploaded-build.js +22 -0
  278. package/dist/tooling/cli/list.d.ts +154 -0
  279. package/dist/tooling/cli/list.js +381 -0
  280. package/dist/tooling/cli/log.d.ts +5 -0
  281. package/dist/tooling/cli/log.js +9 -0
  282. package/dist/tooling/cli/orchestrate.d.ts +0 -6
  283. package/dist/tooling/cli/orchestrate.js +236 -88
  284. package/dist/tooling/cli/project.d.ts +3 -3
  285. package/dist/tooling/cli/publish/index.d.ts +73 -0
  286. package/dist/tooling/cli/publish/index.js +346 -0
  287. package/dist/tooling/cli/publish/report.d.ts +49 -0
  288. package/dist/tooling/cli/publish/report.js +15 -0
  289. package/dist/tooling/cli/registry/client.d.ts +114 -0
  290. package/dist/tooling/cli/registry/client.js +346 -0
  291. package/dist/tooling/cli/registry/error.d.ts +11 -0
  292. package/dist/tooling/cli/registry/error.js +17 -0
  293. package/dist/tooling/cli/registry/executable.d.ts +29 -0
  294. package/dist/tooling/cli/registry/executable.js +90 -0
  295. package/dist/tooling/cli/registry/index.d.ts +9 -0
  296. package/dist/tooling/cli/registry/index.js +8 -0
  297. package/dist/tooling/cli/registry/installations.d.ts +67 -0
  298. package/dist/tooling/cli/registry/installations.js +108 -0
  299. package/dist/tooling/cli/registry/process.d.ts +36 -0
  300. package/dist/tooling/cli/registry/process.js +119 -0
  301. package/dist/tooling/cli/secrets.d.ts +9 -0
  302. package/dist/tooling/cli/secrets.js +19 -0
  303. package/dist/tooling/cli/yank.d.ts +34 -0
  304. package/dist/tooling/cli/yank.js +32 -0
  305. package/dist/tooling/linter/implementations/source/callable-requirements.d.ts +1 -1
  306. package/dist/tooling/linter/implementations/source/callable-requirements.js +10 -10
  307. package/dist/tooling/linter/implementations/source/dependencies.js +12 -10
  308. package/dist/tooling/linter/implementations/source/global.js +1 -1
  309. package/dist/tooling/linter/implementations/source/mutations.js +17 -17
  310. package/dist/tooling/linter/implementations/source/providers.js +5 -5
  311. package/dist/tooling/linter/implementations/source/views.js +2 -2
  312. package/dist/tooling/linter/policy/generated.js +16 -16
  313. package/dist/tooling/packaging/declarations/ownership.js +1 -1
  314. package/dist/tooling/packaging/finalize.d.ts +1 -1
  315. package/dist/tooling/packaging/finalize.js +1 -1
  316. package/package.json +32 -11
  317. package/dist/application/application.d.ts +0 -28
  318. package/dist/deployment/adapter/deploy/index.d.ts +0 -2
  319. package/dist/deployment/adapter/deploy/result.d.ts +0 -50
  320. package/dist/deployment/adapter/prepare/artifact.d.ts +0 -33
  321. package/dist/deployment/adapter/prepare/context.d.ts +0 -23
  322. package/dist/deployment/adapter/prepare/index.d.ts +0 -2
  323. package/dist/deployment/release/publication/index.d.ts +0 -6
  324. package/dist/deployment/release/publication/index.js +0 -6
  325. package/dist/deployment/release/publication/manifest.d.ts +0 -3
  326. package/dist/deployment/release/publication/manifest.js +0 -5
  327. package/dist/deployment/release/publication/requirements.d.ts +0 -3
  328. package/dist/deployment/release/publication/requirements.js +0 -3
  329. package/dist/deployment/release/publication/seal.js +0 -39
  330. package/dist/deployment/verify/readiness/publication.d.ts +0 -11
  331. package/dist/deployment/verify/readiness/publication.js +0 -41
  332. package/dist/execution/service/publication/delivery.d.ts +0 -2
  333. package/dist/execution/service/publication/installation.d.ts +0 -3
  334. package/dist/execution/service/publication/installation.js +0 -8
  335. package/dist/execution/service/publication/source.d.ts +0 -3
  336. package/dist/execution/service/publication/source.js +0 -11
  337. package/dist/platform/publication/index.d.ts +0 -2
  338. package/dist/platform/publication/index.js +0 -2
  339. package/dist/tooling/cli/astrale/authority.d.ts +0 -5
  340. package/dist/tooling/cli/astrale/authority.js +0 -11
  341. package/dist/tooling/cli/astrale/executable.d.ts +0 -2
  342. package/dist/tooling/cli/astrale/executable.js +0 -47
  343. package/dist/tooling/cli/astrale/failure.d.ts +0 -6
  344. package/dist/tooling/cli/astrale/failure.js +0 -48
  345. package/dist/tooling/cli/astrale/instance.d.ts +0 -11
  346. package/dist/tooling/cli/astrale/instance.js +0 -52
  347. package/dist/tooling/cli/astrale/process.d.ts +0 -13
  348. package/dist/tooling/cli/astrale/process.js +0 -94
  349. package/dist/tooling/cli/astrale/version.d.ts +0 -18
  350. package/dist/tooling/cli/astrale/version.js +0 -55
  351. package/dist/tooling/cli/credential.d.ts +0 -2
  352. package/dist/tooling/cli/credential.js +0 -57
  353. package/dist/tooling/cli/development/candidate.d.ts +0 -25
  354. package/dist/tooling/cli/development/candidate.js +0 -176
  355. package/dist/tooling/cli/development/deployment.d.ts +0 -16
  356. package/dist/tooling/cli/development/deployment.js +0 -39
  357. package/dist/tooling/cli/development/develop.d.ts +0 -11
  358. package/dist/tooling/cli/development/develop.js +0 -243
  359. package/dist/tooling/cli/development/lease.d.ts +0 -18
  360. package/dist/tooling/cli/development/lease.js +0 -163
  361. package/dist/tooling/cli/development/lifecycle.d.ts +0 -9
  362. package/dist/tooling/cli/development/lifecycle.js +0 -43
  363. package/dist/tooling/cli/development/project-imports.d.ts +0 -22
  364. package/dist/tooling/cli/development/project-imports.js +0 -39
  365. package/dist/tooling/cli/development/project-lock.d.ts +0 -16
  366. package/dist/tooling/cli/development/project-lock.js +0 -41
  367. package/dist/tooling/cli/development/rebuild.d.ts +0 -13
  368. package/dist/tooling/cli/development/rebuild.js +0 -58
  369. package/dist/tooling/cli/development/release-evidence.d.ts +0 -4
  370. package/dist/tooling/cli/development/release-evidence.js +0 -10
  371. package/dist/tooling/cli/development/report.d.ts +0 -6
  372. package/dist/tooling/cli/development/report.js +0 -14
  373. package/dist/tooling/cli/development/session-file.d.ts +0 -53
  374. package/dist/tooling/cli/development/session-file.js +0 -337
  375. package/dist/tooling/cli/development/source-watch.d.ts +0 -14
  376. package/dist/tooling/cli/development/source-watch.js +0 -140
  377. package/dist/tooling/cli/development/sources.d.ts +0 -7
  378. package/dist/tooling/cli/development/sources.js +0 -48
  379. package/dist/tooling/cli/development/target-lock.d.ts +0 -16
  380. package/dist/tooling/cli/development/target-lock.js +0 -68
  381. package/dist/tooling/cli/development/view.d.ts +0 -28
  382. package/dist/tooling/cli/development/view.js +0 -151
  383. package/dist/tooling/cli/environment-release.d.ts +0 -21
  384. package/dist/tooling/cli/environment-release.js +0 -46
  385. package/dist/tooling/cli/evidence.d.ts +0 -11
  386. package/dist/tooling/cli/evidence.js +0 -53
  387. package/dist/tooling/cli/installation/index.d.ts +0 -2
  388. package/dist/tooling/cli/installation/index.js +0 -1
  389. package/dist/tooling/cli/installation/observation.d.ts +0 -10
  390. package/dist/tooling/cli/installation/observation.js +0 -44
  391. package/dist/tooling/cli/installation/reconcile.d.ts +0 -32
  392. package/dist/tooling/cli/installation/reconcile.js +0 -122
  393. /package/dist/application/{application.js → domain.js} +0 -0
  394. /package/dist/{deployment/adapter/deploy/context.js → application/workflow/durable.js} +0 -0
  395. /package/dist/deployment/adapter/{deploy/index.js → bundle/bundle.js} +0 -0
  396. /package/dist/deployment/adapter/{deploy/result.js → bundle/file.js} +0 -0
  397. /package/dist/deployment/adapter/{prepare → bundle}/index.js +0 -0
  398. /package/dist/deployment/adapter/{prepare/artifact.js → legacy/adapter.js} +0 -0
  399. /package/dist/deployment/adapter/{prepare → legacy/deploy}/context.js +0 -0
  400. /package/dist/deployment/release/{publication → served}/routes.d.ts +0 -0
  401. /package/dist/deployment/release/{publication → served}/routes.js +0 -0
  402. /package/dist/deployment/release/{publication → served}/views.js +0 -0
  403. /package/dist/execution/service/{publication → serving}/index.js +0 -0
@@ -1,14 +1,18 @@
1
- import { isApplication } from '../application/index.js';
1
+ import { isDomainDefinition } from '../application/index.js';
2
2
  import { isDeployment } from '../deployment/deployment.js';
3
+ import { ENVIRONMENT_NAME } from '../deployment/environment.js';
3
4
  import { isTests } from '../testing/index.js';
5
+ import { installCommand } from './install-command.js';
4
6
  const admittedProjects = new WeakSet();
5
- const ENVIRONMENT_NAME = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/u;
6
7
  /** Capture one inert Project definition without loading entrypoints or performing effects. */
7
8
  export function defineProject(input) {
8
9
  const value = record(input, 'Project definition');
9
- exact(value, ['application', 'environments'], ['entrypoints', 'tests'], invalid);
10
- if (!isApplication(input.application))
11
- throw new TypeError('Project Application is not admitted.');
10
+ if (Object.hasOwn(value, 'application')) {
11
+ throw new TypeError('Project `application` is now `domain`: defineProject({ domain, environments }).');
12
+ }
13
+ exact(value, ['domain', 'environments'], ['entrypoints', 'tests'], invalid);
14
+ if (!isDomainDefinition(input.domain))
15
+ throw new TypeError('Project Domain is not admitted.');
12
16
  const environments = record(input.environments, 'Project environments');
13
17
  if (Reflect.ownKeys(environments).some((key) => typeof key !== 'string')) {
14
18
  throw new TypeError('Project Environment names must be strings.');
@@ -16,27 +20,28 @@ export function defineProject(input) {
16
20
  const names = Object.keys(environments);
17
21
  if (names.length === 0)
18
22
  throw new TypeError('Project must declare at least one Environment.');
19
- const captured = Object.create(null);
20
- for (const name of names) {
23
+ const declared = names.map((name) => {
21
24
  if (!ENVIRONMENT_NAME.test(name)) {
22
25
  throw new TypeError(`Project Environment name "${name}" is not normalized.`);
23
26
  }
24
- const environment = record(environments[name], `Project Environment ${name}`);
25
- exact(environment, ['deployment'], ['installation'], () => invalidEnvironment(name));
27
+ return [name, record(environments[name], `Project Environment ${name}`)];
28
+ });
29
+ // One refusal names every Environment that declares installation, each with its own commands.
30
+ const installations = declared
31
+ .filter(([, environment]) => Object.hasOwn(environment, 'installation'))
32
+ .map(([name, environment]) => installationRefusal(environment, name));
33
+ if (installations.length > 0)
34
+ throw new TypeError(installations.join('\n'));
35
+ const captured = Object.create(null);
36
+ for (const [name, environment] of declared) {
37
+ exact(environment, ['deployment'], [], () => invalidEnvironment(name));
26
38
  if (!isDeployment(environment.deployment)) {
27
39
  throw new TypeError(`Project Environment ${name} deployment is not admitted.`);
28
40
  }
29
- const installation = environment.installation === undefined
30
- ? undefined
31
- : admitInstallation(environment.installation, name);
32
41
  environment.deployment.adapter.admit?.(environment.deployment.parameters, {
33
42
  environment: name,
34
- ...(installation === undefined ? {} : { installation }),
35
- });
36
- captured[name] = Object.freeze({
37
- deployment: environment.deployment,
38
- ...(installation === undefined ? {} : { installation }),
39
43
  });
44
+ captured[name] = Object.freeze({ deployment: environment.deployment });
40
45
  }
41
46
  const entrypoints = input.entrypoints === undefined ? undefined : admitEntrypoints(input.entrypoints);
42
47
  if (input.tests !== undefined && !isTests(input.tests)) {
@@ -44,7 +49,7 @@ export function defineProject(input) {
44
49
  }
45
50
  const project = Object.freeze({
46
51
  kind: 'project',
47
- application: input.application,
52
+ domain: input.domain,
48
53
  environments: Object.freeze(captured),
49
54
  ...(entrypoints === undefined ? {} : { entrypoints }),
50
55
  ...(input.tests === undefined ? {} : { tests: input.tests }),
@@ -68,22 +73,37 @@ function admitEntrypoints(input) {
68
73
  }
69
74
  return Object.freeze({ runtime: input.runtime });
70
75
  }
71
- function admitInstallation(input, environment) {
72
- const value = record(input, `Project Environment ${environment} installation`);
73
- exact(value, ['instance'], ['identity'], () => {
74
- throw new TypeError(`Project Environment ${environment} installation may contain only instance and identity.`);
75
- });
76
- const instance = stableCoordinate(value.instance, 'installation instance');
77
- const identity = value.identity === undefined
78
- ? undefined
79
- : stableCoordinate(value.identity, 'installation identity');
80
- return Object.freeze({ instance, ...(identity === undefined ? {} : { identity }) });
81
- }
82
- function stableCoordinate(input, label) {
83
- if (typeof input !== 'string' || input.length === 0 || input.trim() !== input) {
84
- throw new TypeError(`Project ${label} must be a non-empty stable string.`);
76
+ /**
77
+ * A deploy no longer installs (DX [.81399], AM-72): an Environment that still declares
78
+ * `installation` is refused before any effect, with the commands that replace it. Its only
79
+ * consumer pins an SDK older than this refusal.
80
+ *
81
+ * adapter-astrale deploys on Admin's Services, never through the installation's instance. The
82
+ * installation's instance and identity move to the install command.
83
+ */
84
+ function installationRefusal(environment, name) {
85
+ const declared = environment.installation;
86
+ if (declared === undefined) {
87
+ return (`Project Environment ${name} declares \`installation\`, which a deploy no longer reads: a ` +
88
+ 'deploy never installs. Remove the key.');
85
89
  }
86
- return input;
90
+ const installation = declared !== null && typeof declared === 'object'
91
+ ? declared
92
+ : {};
93
+ const instance = stable(installation.instance);
94
+ const identity = stable(installation.identity);
95
+ return (`Project Environment ${name} declares installation, and a deploy no longer installs. ` +
96
+ `Remove \`installation\`, run \`astrale-domain deploy ${name}\`, ` +
97
+ `then install the URL it prints with \`${installCommand(instance, identity)}\`.`);
98
+ }
99
+ /** A declared coordinate worth repeating in guidance: a non-empty single-line trimmed string. */
100
+ function stable(input) {
101
+ return typeof input === 'string' &&
102
+ input.length > 0 &&
103
+ input.trim() === input &&
104
+ !/[\s`]/u.test(input)
105
+ ? input
106
+ : undefined;
87
107
  }
88
108
  function record(input, label) {
89
109
  if (input === null || typeof input !== 'object' || Array.isArray(input)) {
@@ -99,8 +119,8 @@ function exact(input, required, optional, fail) {
99
119
  }
100
120
  }
101
121
  function invalid() {
102
- throw new TypeError('Project definition may contain only application, environments, entrypoints, and tests.');
122
+ throw new TypeError('Project definition may contain only domain, environments, entrypoints, and tests.');
103
123
  }
104
124
  function invalidEnvironment(name) {
105
- throw new TypeError(`Project Environment ${name} may contain only deployment and installation.`);
125
+ throw new TypeError(`Project Environment ${name} may contain only deployment.`);
106
126
  }
@@ -1,4 +1,4 @@
1
1
  export { admitProjectModule, PROJECT_EXPORT_HINT } from './admit.js';
2
2
  export { defineProject, isProject } from './define.js';
3
3
  export type { ProjectInput } from './define.js';
4
- export type { ApplicationOfProject, EnvironmentsOfProject, Project, ProjectEntrypoints, ProjectEnvironment, } from './project.js';
4
+ export type { DomainDefinitionOfProject, EnvironmentsOfProject, Project, ProjectEntrypoints, ProjectEnvironment, } from './project.js';
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The command that installs a deployed URL on an instance, as every SDK refusal and help text
3
+ * names it. A deploy never installs (DX [.81399], AM-72): `astrale-domain deploy <environment>`
4
+ * prints a URL, and this command installs it.
5
+ *
6
+ * `--direct` sends a URL install to the instance Kernel, which the astrale CLI requires today and
7
+ * accepts until D13. When the CLI retires it, this is the one SDK text to change; the adapter and
8
+ * scaffold READMEs and templates repeat it as prose.
9
+ */
10
+ export declare function installCommand(instance?: string, identity?: string): string;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The command that installs a deployed URL on an instance, as every SDK refusal and help text
3
+ * names it. A deploy never installs (DX [.81399], AM-72): `astrale-domain deploy <environment>`
4
+ * prints a URL, and this command installs it.
5
+ *
6
+ * `--direct` sends a URL install to the instance Kernel, which the astrale CLI requires today and
7
+ * accepts until D13. When the CLI retires it, this is the one SDK text to change; the adapter and
8
+ * scaffold READMEs and templates repeat it as prose.
9
+ */
10
+ export function installCommand(instance = '<instance>', identity) {
11
+ return (`astrale domain install <url> --direct -i ${instance}` +
12
+ (identity === undefined ? '' : ` --as ${identity}`));
13
+ }
@@ -1,24 +1,26 @@
1
- import type { ApplicationIdentity } from '../application/index.js';
2
- import type { InstallationTarget } from '../deployment/adapter/index.js';
1
+ import type { DomainDefinitionIdentity } from '../application/index.js';
3
2
  import type { Tests } from '../testing/index.js';
4
3
  export interface ProjectEntrypoints {
5
4
  readonly runtime: string;
6
5
  }
6
+ /**
7
+ * One Environment of a Project: where and how its deployments are made. It never names an
8
+ * instance: a deploy installs nothing, and `astrale domain install <url>` installs a deployment.
9
+ */
7
10
  export interface ProjectEnvironment<DeploymentValue = unknown> {
8
11
  readonly deployment: DeploymentValue;
9
- readonly installation?: InstallationTarget;
10
12
  }
11
13
  /** The complete independently executable software-product definition in astrale.config.ts. */
12
- export interface Project<ApplicationValue extends ApplicationIdentity = ApplicationIdentity, EnvironmentsValue extends Readonly<Record<string, ProjectEnvironment>> = Readonly<Record<string, ProjectEnvironment>>, TestsValue extends Tests | undefined = undefined> {
14
+ export interface Project<DomainDefinitionValue extends DomainDefinitionIdentity = DomainDefinitionIdentity, EnvironmentsValue extends Readonly<Record<string, ProjectEnvironment>> = Readonly<Record<string, ProjectEnvironment>>, TestsValue extends Tests | undefined = undefined> {
13
15
  readonly kind: 'project';
14
- readonly application: ApplicationValue;
16
+ readonly domain: DomainDefinitionValue;
15
17
  readonly environments: EnvironmentsValue;
16
18
  readonly entrypoints?: ProjectEntrypoints;
17
19
  readonly tests?: TestsValue;
18
20
  }
19
- export type ApplicationOfProject<Value> = Value extends {
20
- readonly application: infer ApplicationValue;
21
- } ? Extract<ApplicationValue, ApplicationIdentity> : never;
21
+ export type DomainDefinitionOfProject<Value> = Value extends {
22
+ readonly domain: infer DomainDefinitionValue;
23
+ } ? Extract<DomainDefinitionValue, DomainDefinitionIdentity> : never;
22
24
  export type EnvironmentsOfProject<Value> = Value extends {
23
25
  readonly environments: infer EnvironmentsValue;
24
26
  } ? EnvironmentsValue : never;
@@ -1,6 +1,6 @@
1
1
  import type { Edge } from '../../platform/graph/edge/index.js';
2
2
  import type { Node, NodeId } from '../../platform/graph/node/index.js';
3
- import type { PropertyInputOf, ResolvedClass, schema } from '../../platform/schema/index.js';
3
+ import type { ResolvedClass, schema, StoredPropertyInputOf } from '../../platform/schema/index.js';
4
4
  import type { DatasetNode, DatasetReferences } from './dataset.js';
5
5
  import { type DatasetReferenceInput } from './references.js';
6
6
  /** Resolved Classes of the exact authored Schema, keyed by their authored names. */
@@ -10,11 +10,11 @@ export type DatasetEndpoint = Node | NodeId | string;
10
10
  export interface DatasetNodeInput<Class extends ResolvedClass<'node'>> {
11
11
  /** Stable identity within the Dataset; derived from the Class name and insertion order when omitted. */
12
12
  readonly id?: string;
13
- readonly props?: PropertyInputOf<Class>;
13
+ readonly props?: StoredPropertyInputOf<Class>;
14
14
  }
15
15
  export interface DatasetEdgeInput<Class extends ResolvedClass<'edge'>> {
16
16
  readonly slug?: string;
17
- readonly props?: PropertyInputOf<Class>;
17
+ readonly props?: StoredPropertyInputOf<Class>;
18
18
  }
19
19
  /** Graph authoring surface handed to one Dataset definition. Facts are canonical Kernel values. */
20
20
  export interface DatasetGraph<Schema extends schema.DomainSchema> {
@@ -7,7 +7,7 @@ export type AuthoredDatasetVariables = DatasetVariables | void;
7
7
  /** The exact variables record retained by a Dataset for one authored return type. */
8
8
  export type DatasetVariablesOf<Value> = [Value] extends [void] ? Readonly<Record<never, never>> : Value extends DatasetVariables ? Value : never;
9
9
  export interface DatasetInput<Schema extends schemaLanguage.DomainSchema, Variables extends AuthoredDatasetVariables> {
10
- /** Stable lowercase identity, unique within one Application. */
10
+ /** Stable lowercase identity, unique within one Domain. */
11
11
  readonly id: string;
12
12
  readonly title?: string;
13
13
  readonly description?: string;
@@ -21,7 +21,7 @@ export async function loadDataset(reference, load, source) {
21
21
  throw new TypeError(`Dataset module ${reference.path} default export is not an admitted Dataset.`);
22
22
  }
23
23
  if (dataset.schema !== source) {
24
- throw new TypeError(`Dataset ${dataset.id} (${reference.path}) targets Schema ${dataset.schema.origin}, not the exact Application Schema.`);
24
+ throw new TypeError(`Dataset ${dataset.id} (${reference.path}) targets Schema ${dataset.schema.origin}, not the exact Domain Schema.`);
25
25
  }
26
26
  return Object.freeze({ reference, dataset });
27
27
  }
@@ -1,19 +1,24 @@
1
1
  import type { LintReportFormat } from '../linter/index.js';
2
- export declare const COMMANDS: readonly ['dev', 'build', 'deploy', 'test', 'lint', 'package', 'upgrade'];
2
+ import { type Version } from '../../platform/versioning/index.js';
3
+ export declare const COMMANDS: readonly ['build', 'deploy', 'diff', 'list', 'publish', 'test', 'lint', 'package', 'upgrade', 'yank'];
3
4
  export type Command = (typeof COMMANDS)[number];
4
5
  export interface ParsedArgs {
5
6
  readonly command: Command;
6
7
  readonly env: string;
7
8
  readonly fix?: boolean;
8
9
  readonly format?: LintReportFormat;
9
- readonly deployOnly?: boolean;
10
10
  readonly identity?: string;
11
- readonly credentialFile?: string;
12
11
  readonly suite?: string;
13
- readonly sessionFile?: string;
14
- readonly secretsFile?: string;
15
12
  readonly channel?: string;
16
13
  readonly check?: boolean;
14
+ readonly json?: boolean;
15
+ /** `yank`: the published version it names. */
16
+ readonly version?: Version;
17
+ /** `yank --undo`: restore the version instead of yanking it. */
18
+ readonly undo?: boolean;
19
+ readonly allowDirty?: boolean;
20
+ /** `list`: instances to ask what they run, in argument order. */
21
+ readonly instances?: readonly string[];
17
22
  }
18
23
  /** Parse the frozen `astrale-domain` command grammar without performing effects. */
19
24
  export declare function parseArgs(argv: readonly string[]): ParsedArgs;
@@ -1,5 +1,17 @@
1
- import { isAbsolute, normalize } from 'node:path';
2
- export const COMMANDS = ['dev', 'build', 'deploy', 'test', 'lint', 'package', 'upgrade'];
1
+ import { acceptVersion } from '../../platform/versioning/index.js';
2
+ import { installCommand } from '../../project/install-command.js';
3
+ export const COMMANDS = [
4
+ 'build',
5
+ 'deploy',
6
+ 'diff',
7
+ 'list',
8
+ 'publish',
9
+ 'test',
10
+ 'lint',
11
+ 'package',
12
+ 'upgrade',
13
+ 'yank',
14
+ ];
3
15
  /** Parse the frozen `astrale-domain` command grammar without performing effects. */
4
16
  export function parseArgs(argv) {
5
17
  const [command, ...rest] = argv;
@@ -7,35 +19,18 @@ export function parseArgs(argv) {
7
19
  return parseUpgrade(rest);
8
20
  const fix = rest.includes('--fix');
9
21
  const deployOnly = rest.includes('--deploy-only');
10
- let sessionFile;
11
- let secretsFile;
12
- let credentialFile;
22
+ const json = rest.includes('--json');
23
+ const undo = rest.includes('--undo');
24
+ const allowDirty = rest.includes('--allow-dirty');
13
25
  let identity;
14
26
  let suite;
15
27
  let format;
16
28
  let environment;
29
+ const instances = [];
17
30
  const cleaned = [];
18
31
  for (let index = 0; index < rest.length; index += 1) {
19
32
  const argument = rest[index];
20
- if (argument === '--session-file') {
21
- sessionFile = absoluteFilePath('--session-file', rest[++index]);
22
- }
23
- else if (argument.startsWith('--session-file=')) {
24
- sessionFile = absoluteFilePath('--session-file', argument.slice('--session-file='.length));
25
- }
26
- else if (argument === '--credential-file') {
27
- credentialFile = absoluteFilePath('--credential-file', rest[++index]);
28
- }
29
- else if (argument.startsWith('--credential-file=')) {
30
- credentialFile = absoluteFilePath('--credential-file', argument.slice('--credential-file='.length));
31
- }
32
- else if (argument === '--secrets-file') {
33
- secretsFile = absoluteFilePath('--secrets-file', rest[++index]);
34
- }
35
- else if (argument.startsWith('--secrets-file=')) {
36
- secretsFile = absoluteFilePath('--secrets-file', argument.slice('--secrets-file='.length));
37
- }
38
- else if (argument === '--as') {
33
+ if (argument === '--as') {
39
34
  identity = requiredValue('--as', rest[++index]);
40
35
  }
41
36
  else if (argument.startsWith('--as=')) {
@@ -53,13 +48,24 @@ export function parseArgs(argv) {
53
48
  else if (argument.startsWith('--environment=')) {
54
49
  environment = requiredValue('--environment', argument.slice('--environment='.length));
55
50
  }
51
+ else if (command === 'list' && argument === '--instance') {
52
+ // Only `list` asks instances; elsewhere `--instance` stays unknown, as deploy removed it.
53
+ instances.push(requiredValue('--instance', rest[++index]));
54
+ }
55
+ else if (command === 'list' && argument.startsWith('--instance=')) {
56
+ instances.push(requiredValue('--instance', argument.slice('--instance='.length)));
57
+ }
56
58
  else if (argument === '--suite') {
57
59
  suite = requiredValue('--suite', rest[++index]);
58
60
  }
59
61
  else if (argument.startsWith('--suite=')) {
60
62
  suite = requiredValue('--suite', argument.slice('--suite='.length));
61
63
  }
62
- else if (argument === '--fix' || argument === '--deploy-only') {
64
+ else if (argument === '--fix' ||
65
+ argument === '--deploy-only' ||
66
+ argument === '--json' ||
67
+ argument === '--undo' ||
68
+ argument === '--allow-dirty') {
63
69
  continue;
64
70
  }
65
71
  else if (argument.startsWith('-')) {
@@ -71,23 +77,37 @@ export function parseArgs(argv) {
71
77
  }
72
78
  if (fix && command !== 'lint')
73
79
  throw new Error('`--fix` is only valid for `lint`.');
74
- if (format !== undefined && command !== 'lint') {
75
- throw new Error('`--format` is only valid for `lint`.');
80
+ if (json &&
81
+ command !== 'build' &&
82
+ command !== 'deploy' &&
83
+ command !== 'diff' &&
84
+ command !== 'list' &&
85
+ command !== 'publish' &&
86
+ command !== 'yank') {
87
+ throw new Error('`--json` is only valid for `build`, `deploy`, `diff`, `list`, `publish` or `yank`.');
76
88
  }
77
- if ((sessionFile !== undefined || credentialFile !== undefined || secretsFile !== undefined) &&
78
- command !== 'dev') {
79
- throw new Error('`--session-file`, `--credential-file`, and `--secrets-file` are only valid for `dev`.');
89
+ if (allowDirty && command !== 'publish') {
90
+ throw new Error('`--allow-dirty` is only valid for `publish`.');
80
91
  }
81
- if (identity !== undefined && credentialFile !== undefined) {
82
- throw new Error('Choose either `--as` or `--credential-file`, not both.');
92
+ if (undo && command !== 'yank')
93
+ throw new Error('`--undo` is only valid for `yank`.');
94
+ if (format !== undefined && command !== 'lint') {
95
+ throw new Error('`--format` is only valid for `lint`.');
83
96
  }
84
- if ((deployOnly || identity !== undefined) && command !== 'dev' && command !== 'deploy') {
85
- throw new Error('`--deploy-only` and `--as` are only valid for `dev` or `deploy`.');
97
+ if (deployOnly && command !== 'deploy')
98
+ refuseDeployOnly(undefined);
99
+ if (identity !== undefined &&
100
+ command !== 'deploy' &&
101
+ command !== 'diff' &&
102
+ command !== 'list' &&
103
+ command !== 'publish') {
104
+ throw new Error('`--as` is only valid for `deploy`, `diff`, `list` or `publish`.');
86
105
  }
87
- if (environment !== undefined && command !== 'dev' && command !== 'deploy') {
88
- if (command !== 'test') {
89
- throw new Error('`--environment` is only valid for `dev`, `deploy`, or `test`.');
90
- }
106
+ if (environment !== undefined &&
107
+ command !== 'deploy' &&
108
+ command !== 'list' &&
109
+ command !== 'test') {
110
+ throw new Error('`--environment` is only valid for `deploy`, `list` or `test`.');
91
111
  }
92
112
  if (suite !== undefined && command !== 'test') {
93
113
  throw new Error('`--suite` is only valid for `test`.');
@@ -97,31 +117,65 @@ export function parseArgs(argv) {
97
117
  throw new Error('Choose either a positional Environment or `--environment`, not both.');
98
118
  }
99
119
  switch (command) {
100
- case 'dev':
101
120
  case 'deploy': {
102
121
  if (positionals.length > 1) {
103
122
  throw new Error(`\`${command}\` accepts exactly one Environment.`);
104
123
  }
105
- const env = environment ?? positionals[0] ?? (command === 'dev' ? 'development' : undefined);
124
+ const env = environment ?? positionals[0];
106
125
  if (!env) {
107
126
  throw new Error(`\`${command}\` requires an Environment, e.g. \`${command} development\`.`);
108
127
  }
128
+ if (deployOnly)
129
+ refuseDeployOnly(command, env);
109
130
  return {
110
131
  command,
111
132
  env,
112
- ...(deployOnly ? { deployOnly: true } : {}),
133
+ ...(json ? { json: true } : {}),
113
134
  ...(identity === undefined ? {} : { identity }),
114
- ...(credentialFile === undefined ? {} : { credentialFile }),
115
- ...(sessionFile === undefined ? {} : { sessionFile }),
116
- ...(secretsFile === undefined ? {} : { secretsFile }),
117
135
  };
118
136
  }
137
+ case 'list':
138
+ // Every Environment of the Project, or the one `--environment` names.
139
+ if (positionals.length > 0) {
140
+ throw new Error('`list` does not accept positional arguments; use `--environment`.');
141
+ }
142
+ return {
143
+ command: 'list',
144
+ env: environment ?? '',
145
+ ...(json ? { json: true } : {}),
146
+ ...(identity === undefined ? {} : { identity }),
147
+ ...(instances.length === 0 ? {} : { instances: [...new Set(instances)] }),
148
+ };
119
149
  case 'build':
120
150
  case 'package':
121
151
  if (positionals.length > 0) {
122
152
  throw new Error(`\`${command}\` does not accept positional arguments.`);
123
153
  }
124
- return { command, env: '' };
154
+ return { command, env: '', ...(json ? { json: true } : {}) };
155
+ case 'diff':
156
+ // The version is package.json's: no command takes a version number (tech Versioning).
157
+ if (positionals.length > 0) {
158
+ throw new Error('`diff` does not accept positional arguments; it reads package.json.');
159
+ }
160
+ return {
161
+ command: 'diff',
162
+ env: '',
163
+ ...(json ? { json: true } : {}),
164
+ ...(identity === undefined ? {} : { identity }),
165
+ };
166
+ case 'publish': {
167
+ // The version is package.json's: the one positional names the Environment (tech Versioning).
168
+ if (positionals.length !== 1) {
169
+ throw new Error('`publish` takes exactly one Environment, e.g. `publish production`; it reads the version from package.json.');
170
+ }
171
+ return {
172
+ command: 'publish',
173
+ env: positionals[0],
174
+ ...(json ? { json: true } : {}),
175
+ ...(allowDirty ? { allowDirty: true } : {}),
176
+ ...(identity === undefined ? {} : { identity }),
177
+ };
178
+ }
125
179
  case 'test':
126
180
  if (positionals.length > 0) {
127
181
  throw new Error('`test` does not accept positional arguments; use `--environment`.');
@@ -131,6 +185,18 @@ export function parseArgs(argv) {
131
185
  env: environment ?? '',
132
186
  ...(suite === undefined ? {} : { suite }),
133
187
  };
188
+ case 'yank': {
189
+ if (positionals.length !== 1) {
190
+ throw new Error('`yank` takes exactly one published version, e.g. `yank 1.5.0`.');
191
+ }
192
+ return {
193
+ command: 'yank',
194
+ env: '',
195
+ version: acceptVersion(positionals[0]),
196
+ ...(undo ? { undo: true } : {}),
197
+ ...(json ? { json: true } : {}),
198
+ };
199
+ }
134
200
  case 'lint':
135
201
  if (positionals.length > 0)
136
202
  throw new Error('`lint` does not accept positional arguments.');
@@ -144,6 +210,18 @@ export function parseArgs(argv) {
144
210
  throw new Error(command ? `Unknown command "${command}".` : 'Missing command.');
145
211
  }
146
212
  }
213
+ /**
214
+ * `--deploy-only` suppressed the installation a deploy used to make. A deploy never installs
215
+ * (DX [.81399], AM-72), so the flag is refused before any effect, naming the commands that
216
+ * replace it. Its only consumer pins an SDK older than this refusal.
217
+ */
218
+ function refuseDeployOnly(command, environment) {
219
+ const refusal = '`--deploy-only` is no longer accepted: a deploy never installs.';
220
+ if (command === undefined || environment === undefined)
221
+ throw new Error(refusal);
222
+ throw new Error(`${refusal} Run \`astrale-domain ${command} ${environment}\` without it, then install the ` +
223
+ `URL it prints with \`${installCommand()}\`.`);
224
+ }
147
225
  function parseUpgrade(args) {
148
226
  let channel = 'beta';
149
227
  let check = false;
@@ -173,10 +251,3 @@ function requiredValue(flag, input) {
173
251
  throw new Error(`${flag} needs a value.`);
174
252
  return input;
175
253
  }
176
- function absoluteFilePath(flag, input) {
177
- const value = requiredValue(flag, input);
178
- if (!isAbsolute(value) || normalize(value) !== value) {
179
- throw new Error(`${flag} needs a normalized absolute path, got "${value}"`);
180
- }
181
- return value;
182
- }
@@ -0,0 +1,55 @@
1
+ import type { Build, BuildDigest, BuildManifestV1, Bundle, Bundler, ResolvedRuntimeReference } from '../../deployment/index.js';
2
+ import type { LoadedProject } from './project.js';
3
+ /** `astrale-domain build --json`: the build digest of every distinct bundler of the Project. */
4
+ export interface BuildResultV1 {
5
+ readonly format: 'astrale.build-result';
6
+ readonly version: 1;
7
+ readonly origin: string;
8
+ readonly schema: {
9
+ readonly revision: BuildManifestV1['schema']['revision'];
10
+ };
11
+ readonly builds: readonly {
12
+ readonly bundler: {
13
+ readonly id: string;
14
+ readonly version: string;
15
+ };
16
+ readonly digest: BuildDigest;
17
+ }[];
18
+ }
19
+ /** One bundler a Project declares, with the Environments whose adapters declare it. */
20
+ export interface ProjectBundler {
21
+ readonly bundler: Bundler;
22
+ readonly environments: readonly {
23
+ readonly name: string;
24
+ /** `<adapter name>@<adapter version>` */
25
+ readonly adapter: string;
26
+ }[];
27
+ }
28
+ /**
29
+ * The distinct bundlers of a Project's Environments, in declaration order. Environments whose
30
+ * adapters declare one bundler object share its build. Two copies of one bundler (two installed
31
+ * versions of its package) are two bundlers even under one id and version, since their code can
32
+ * differ.
33
+ */
34
+ export declare function projectBundlers(project: LoadedProject): readonly ProjectBundler[];
35
+ /** Bundle one Build without any Environment and identify the bytes by their build digest. */
36
+ export declare function bundleBuild<const BuildValue extends Build>(input: {
37
+ readonly bundler: Bundler;
38
+ readonly projectDir: string;
39
+ readonly build: BuildValue;
40
+ readonly runtime: ResolvedRuntimeReference;
41
+ readonly signal: AbortSignal;
42
+ }): Promise<Bundle<BuildValue>>;
43
+ /**
44
+ * One entry per distinct build: copies of one bundler that produced the same bytes give one entry,
45
+ * copies that produced different bytes give one entry each.
46
+ */
47
+ export declare function buildResult(build: Build, bundles: readonly Bundle[]): BuildResultV1;
48
+ /**
49
+ * A warning for every bundler id and version whose copies produced different bytes: each copy's
50
+ * Environments deploy their own build, so the Project has more than one build for that bundler.
51
+ */
52
+ export declare function bundlerCopyWarnings(built: readonly {
53
+ readonly source: ProjectBundler;
54
+ readonly bundle: Bundle;
55
+ }[]): readonly string[];