@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 +0,0 @@
1
- export interface SourceWatch {
2
- update(sources: ReadonlySet<string>): void;
3
- stop(): Promise<void>;
4
- }
5
- /** Observe only the admitted authored module closure and declared secrets. */
6
- export declare function watchSources(input: {
7
- readonly projectDir: string;
8
- readonly configPath: string;
9
- readonly sources: ReadonlySet<string>;
10
- readonly onInvalidate: () => void;
11
- readonly onRestartRequired: () => void;
12
- readonly onError: (cause: unknown) => void;
13
- readonly debounceMs?: number;
14
- }): SourceWatch;
@@ -1,140 +0,0 @@
1
- import { statSync, watch } from 'node:fs';
2
- import { resolve } from 'node:path';
3
- /** Observe only the admitted authored module closure and declared secrets. */
4
- export function watchSources(input) {
5
- let sources = canonicalSources(input.sources);
6
- let closed = false;
7
- let timer;
8
- let dirty = false;
9
- let restart = false;
10
- const config = resolve(input.configPath);
11
- let configFingerprint = fingerprint(config);
12
- let sourceFingerprints = fingerprints(sources);
13
- const directoryWatchers = new Map();
14
- const watcher = watch(input.projectDir, { recursive: true }, () => {
15
- if (closed)
16
- return;
17
- let changed = false;
18
- try {
19
- const nextConfig = fingerprint(config);
20
- if (nextConfig !== configFingerprint) {
21
- configFingerprint = nextConfig;
22
- restart = true;
23
- changed = true;
24
- }
25
- for (const path of sources) {
26
- const next = fingerprint(path);
27
- if (next === sourceFingerprints.get(path))
28
- continue;
29
- sourceFingerprints.set(path, next);
30
- dirty = true;
31
- changed = true;
32
- }
33
- }
34
- catch (cause) {
35
- input.onError(cause);
36
- return;
37
- }
38
- if (!changed)
39
- return;
40
- schedule();
41
- });
42
- watcher.on('error', input.onError);
43
- syncDirectoryWatchers();
44
- function schedule() {
45
- if (timer !== undefined)
46
- clearTimeout(timer);
47
- timer = setTimeout(flush, input.debounceMs ?? 80);
48
- }
49
- function syncDirectoryWatchers() {
50
- const directories = new Set([...sourceFingerprints]
51
- .filter(([, value]) => value.startsWith('directory:'))
52
- .map(([path]) => path));
53
- for (const [path, owned] of directoryWatchers) {
54
- if (directories.has(path))
55
- continue;
56
- owned.off('error', input.onError);
57
- owned.close();
58
- directoryWatchers.delete(path);
59
- }
60
- for (const path of directories) {
61
- if (directoryWatchers.has(path))
62
- continue;
63
- const owned = watch(path, () => {
64
- if (closed)
65
- return;
66
- dirty = true;
67
- schedule();
68
- });
69
- owned.on('error', input.onError);
70
- directoryWatchers.set(path, owned);
71
- }
72
- }
73
- function flush() {
74
- timer = undefined;
75
- if (closed)
76
- return;
77
- if (restart)
78
- input.onRestartRequired();
79
- else if (dirty)
80
- input.onInvalidate();
81
- restart = false;
82
- dirty = false;
83
- }
84
- return Object.freeze({
85
- update(next) {
86
- const nextSources = canonicalSources(next);
87
- const nextFingerprints = fingerprints(nextSources);
88
- // A completed build does not prove it consumed the current file contents.
89
- // Retain edits that raced its commit, even if the OS event is still queued.
90
- let changed = false;
91
- for (const [path, value] of nextFingerprints) {
92
- if (sourceFingerprints.has(path) && sourceFingerprints.get(path) !== value) {
93
- dirty = true;
94
- changed = true;
95
- }
96
- }
97
- sources = nextSources;
98
- sourceFingerprints = nextFingerprints;
99
- syncDirectoryWatchers();
100
- if (changed)
101
- schedule();
102
- },
103
- async stop() {
104
- if (closed)
105
- return;
106
- closed = true;
107
- if (timer !== undefined)
108
- clearTimeout(timer);
109
- watcher.off('error', input.onError);
110
- watcher.close();
111
- for (const owned of directoryWatchers.values()) {
112
- owned.off('error', input.onError);
113
- owned.close();
114
- }
115
- directoryWatchers.clear();
116
- },
117
- });
118
- }
119
- function canonicalSources(input) {
120
- return new Set([...input].map((path) => resolve(path)));
121
- }
122
- function fingerprints(paths) {
123
- return new Map([...paths].map((path) => [path, fingerprint(path)]));
124
- }
125
- function fingerprint(path) {
126
- try {
127
- const value = statSync(path, { bigint: true });
128
- return `${value.isDirectory() ? 'directory' : 'file'}:${value.size}:${value.mtimeNs}:${value.ctimeNs}`;
129
- }
130
- catch (cause) {
131
- if (errorCode(cause) === 'ENOENT')
132
- return 'missing';
133
- throw cause;
134
- }
135
- }
136
- function errorCode(input) {
137
- return input !== null && typeof input === 'object' && 'code' in input
138
- ? String(Reflect.get(input, 'code'))
139
- : undefined;
140
- }
@@ -1,7 +0,0 @@
1
- /** Own the canonical project-local files and directories that invalidate a candidate. */
2
- export declare class DevelopmentSources {
3
- #private;
4
- constructor(projectDir: string);
5
- record: (path: string) => void;
6
- snapshot(): ReadonlySet<string>;
7
- }
@@ -1,48 +0,0 @@
1
- import { realpathSync } from 'node:fs';
2
- import { isAbsolute, relative, resolve, sep } from 'node:path';
3
- /** Own the canonical project-local files and directories that invalidate a candidate. */
4
- export class DevelopmentSources {
5
- #declaredProjectDir;
6
- #projectDir;
7
- #sources = new Set();
8
- constructor(projectDir) {
9
- this.#declaredProjectDir = resolve(projectDir);
10
- try {
11
- this.#projectDir = realpathSync.native(this.#declaredProjectDir);
12
- }
13
- catch {
14
- this.#projectDir = this.#declaredProjectDir;
15
- }
16
- }
17
- record = (path) => {
18
- if (typeof path !== 'string' || path.length === 0 || path.includes('\0')) {
19
- throw new TypeError('An adapter reported an invalid preparation source path.');
20
- }
21
- const declared = isAbsolute(path) ? resolve(path) : resolve(this.#declaredProjectDir, path);
22
- let absolute;
23
- try {
24
- absolute = realpathSync.native(declared);
25
- }
26
- catch (cause) {
27
- if (errorCode(cause) !== 'ENOENT')
28
- throw cause;
29
- absolute = declared.startsWith(`${this.#declaredProjectDir}${sep}`)
30
- ? resolve(this.#projectDir, relative(this.#declaredProjectDir, declared))
31
- : declared;
32
- }
33
- if (!absolute.startsWith(`${this.#projectDir}${sep}`))
34
- return;
35
- const topLevel = relative(this.#projectDir, absolute).split(sep)[0];
36
- if (topLevel === '.astrale' || topLevel === '.git' || topLevel === 'node_modules')
37
- return;
38
- this.#sources.add(absolute);
39
- };
40
- snapshot() {
41
- return new Set(this.#sources);
42
- }
43
- }
44
- function errorCode(input) {
45
- return input !== null && typeof input === 'object' && 'code' in input
46
- ? String(Reflect.get(input, 'code'))
47
- : undefined;
48
- }
@@ -1,16 +0,0 @@
1
- import type { DevelopmentLease } from './lease.js';
2
- export declare class DevelopmentTargetLockError extends Error {
3
- readonly code: 'DEVELOPMENT_TARGET_LOCKED' | 'DEVELOPMENT_TARGET_LOCK_LOST';
4
- readonly name = "DevelopmentTargetLockError";
5
- constructor(code: 'DEVELOPMENT_TARGET_LOCKED' | 'DEVELOPMENT_TARGET_LOCK_LOST', message: string, options?: ErrorOptions);
6
- }
7
- /** Exclude local sessions targeting one installed Domain across separate checkouts. */
8
- export declare function acquireDevelopmentTargetLock(input: {
9
- readonly issuer: string;
10
- readonly origin: string;
11
- }, dependencies?: {
12
- readonly root?: string;
13
- readonly pid?: number;
14
- readonly sessionId?: string;
15
- readonly processAlive?: (pid: number) => boolean;
16
- }): Promise<DevelopmentLease>;
@@ -1,68 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { mkdir, rmdir } from 'node:fs/promises';
3
- import { tmpdir } from 'node:os';
4
- import { join } from 'node:path';
5
- import { acquireDevelopmentLease, DevelopmentLeaseError } from './lease.js';
6
- export class DevelopmentTargetLockError extends Error {
7
- code;
8
- name = 'DevelopmentTargetLockError';
9
- constructor(code, message, options) {
10
- super(message, options);
11
- this.code = code;
12
- }
13
- }
14
- /** Exclude local sessions targeting one installed Domain across separate checkouts. */
15
- export async function acquireDevelopmentTargetLock(input, dependencies = {}) {
16
- const coordinate = `${input.issuer}#${input.origin}`;
17
- const root = dependencies.root ?? join(tmpdir(), 'astrale-domain-development-targets');
18
- const key = createHash('sha256')
19
- .update(input.issuer)
20
- .update('\0')
21
- .update(input.origin)
22
- .digest('hex');
23
- const directory = join(root, key);
24
- await mkdir(root, { recursive: true, mode: 0o700 });
25
- let lease;
26
- try {
27
- lease = await acquireDevelopmentLease({
28
- directory,
29
- coordinate,
30
- ...(dependencies.pid === undefined ? {} : { pid: dependencies.pid }),
31
- ...(dependencies.sessionId === undefined ? {} : { sessionId: dependencies.sessionId }),
32
- ...(dependencies.processAlive === undefined
33
- ? {}
34
- : { processAlive: dependencies.processAlive }),
35
- });
36
- }
37
- catch (cause) {
38
- if (cause instanceof DevelopmentLeaseError) {
39
- throw new DevelopmentTargetLockError('DEVELOPMENT_TARGET_LOCKED', cause.message, { cause });
40
- }
41
- throw cause;
42
- }
43
- return Object.freeze({
44
- ...lease,
45
- async release() {
46
- try {
47
- await lease.release();
48
- }
49
- catch (cause) {
50
- if (cause instanceof DevelopmentLeaseError) {
51
- throw new DevelopmentTargetLockError('DEVELOPMENT_TARGET_LOCK_LOST', cause.message, {
52
- cause,
53
- });
54
- }
55
- throw cause;
56
- }
57
- await rmdir(directory).catch(ignoreNonEmpty);
58
- await rmdir(root).catch(ignoreNonEmpty);
59
- },
60
- });
61
- }
62
- function ignoreNonEmpty(cause) {
63
- const code = cause !== null && typeof cause === 'object' && 'code' in cause
64
- ? String(Reflect.get(cause, 'code'))
65
- : undefined;
66
- if (!['ENOENT', 'ENOTEMPTY', 'EEXIST'].includes(code ?? ''))
67
- throw cause;
68
- }
@@ -1,28 +0,0 @@
1
- import type { Release } from '../../../deployment/release/index.js';
2
- import type { AstraleProcessResult } from '../astrale/process.js';
3
- export interface DevelopmentViewDependencies {
4
- run(input: {
5
- readonly executable: string;
6
- readonly args: readonly string[];
7
- readonly projectDir: string;
8
- readonly signal: AbortSignal;
9
- readonly timeoutMs: number;
10
- }): Promise<AstraleProcessResult>;
11
- }
12
- /** Keep one browser tab alive across successful remote deployments. */
13
- export declare class DevelopmentView {
14
- #private;
15
- constructor(input: {
16
- readonly executable: string;
17
- readonly projectDir: string;
18
- readonly instance: string;
19
- readonly identity?: string;
20
- readonly credential?: string;
21
- readonly dependencies?: DevelopmentViewDependencies;
22
- });
23
- /** Require in-place refresh before publishing anything that depends on this CLI feature. */
24
- prepare(signal: AbortSignal): Promise<void>;
25
- /** Called after each committed deployment; the development loop owns candidate deduplication. */
26
- refresh(release: Release, signal: AbortSignal): Promise<string | undefined>;
27
- close(signal: AbortSignal): Promise<void>;
28
- }
@@ -1,151 +0,0 @@
1
- import { astraleAuthorityArguments } from '../astrale/authority.js';
2
- import { runAstrale } from '../astrale/process.js';
3
- /** Keep one browser tab alive across successful remote deployments. */
4
- export class DevelopmentView {
5
- #executable;
6
- #projectDir;
7
- #instance;
8
- #authority;
9
- #dependencies;
10
- #current;
11
- #prepared = false;
12
- constructor(input) {
13
- this.#executable = input.executable;
14
- this.#projectDir = input.projectDir;
15
- this.#instance = input.instance;
16
- this.#authority = astraleAuthorityArguments({
17
- ...(input.identity === undefined ? {} : { identity: input.identity }),
18
- ...(input.credential === undefined ? {} : { credential: input.credential }),
19
- });
20
- this.#dependencies = input.dependencies ?? { run: runAstrale };
21
- }
22
- /** Require in-place refresh before publishing anything that depends on this CLI feature. */
23
- async prepare(signal) {
24
- if (this.#prepared)
25
- return;
26
- const result = await this.#dependencies.run({
27
- executable: this.#executable,
28
- projectDir: this.#projectDir,
29
- signal,
30
- timeoutMs: 10_000,
31
- args: ['view', '--help'],
32
- });
33
- if (result.code !== 0 || !result.stdout.includes('--refresh <id>')) {
34
- throw new Error('This Astrale CLI cannot refresh development Views. Run astrale update before pnpm dev.');
35
- }
36
- this.#prepared = true;
37
- }
38
- /** Called after each committed deployment; the development loop owns candidate deduplication. */
39
- async refresh(release, signal) {
40
- const frontend = release.build.frontend;
41
- if (frontend === undefined) {
42
- await this.close(AbortSignal.timeout(30_000));
43
- return undefined;
44
- }
45
- const path = `/:${frontend.entrypoint.origin}:view.${frontend.entrypoint.name}`;
46
- const previous = this.#current;
47
- if (previous?.path === path) {
48
- const refreshed = await this.#dependencies.run({
49
- executable: this.#executable,
50
- projectDir: this.#projectDir,
51
- signal,
52
- timeoutMs: 60_000,
53
- args: ['--ci', '--no-prompt', 'view', '--refresh', previous.id, '--json'],
54
- });
55
- if (refreshed.code !== 0)
56
- throw new Error('Astrale CLI could not refresh the development View.');
57
- return previous.pageUrl;
58
- }
59
- const next = await this.#open(path, signal);
60
- if (previous !== undefined) {
61
- try {
62
- await this.#close(previous.id, AbortSignal.timeout(30_000));
63
- }
64
- catch (cause) {
65
- try {
66
- await this.#close(next.id, AbortSignal.timeout(30_000));
67
- }
68
- catch (rollback) {
69
- throw new AggregateError([cause, rollback], 'Astrale View replacement and rollback cleanup failed.');
70
- }
71
- throw cause;
72
- }
73
- }
74
- this.#current = next;
75
- return next.pageUrl;
76
- }
77
- async close(signal) {
78
- const current = this.#current;
79
- if (current === undefined)
80
- return;
81
- await this.#close(current.id, signal);
82
- if (this.#current === current) {
83
- this.#current = undefined;
84
- }
85
- }
86
- async #open(path, signal) {
87
- const result = await this.#dependencies.run({
88
- executable: this.#executable,
89
- projectDir: this.#projectDir,
90
- signal,
91
- timeoutMs: 60_000,
92
- args: [
93
- '--ci',
94
- '--no-prompt',
95
- 'view',
96
- path,
97
- '--browser',
98
- '--instance',
99
- this.#instance,
100
- '--json',
101
- ...this.#authority,
102
- ],
103
- });
104
- if (result.code !== 0)
105
- throw new Error('Astrale CLI could not open the development View.');
106
- return { ...decodeOpenedView(result.stdout), path };
107
- }
108
- async #close(id, signal) {
109
- const result = await this.#dependencies.run({
110
- executable: this.#executable,
111
- projectDir: this.#projectDir,
112
- signal,
113
- timeoutMs: 30_000,
114
- args: ['--ci', '--no-prompt', 'view', '--close', id, '--json'],
115
- });
116
- if (result.code !== 0)
117
- throw new Error('Astrale CLI could not close the development View.');
118
- }
119
- }
120
- function decodeOpenedView(input) {
121
- let value;
122
- try {
123
- value = JSON.parse(input);
124
- }
125
- catch (cause) {
126
- throw new TypeError('Astrale View output is invalid.', { cause });
127
- }
128
- const session = record(value) ? value.session : undefined;
129
- const id = record(session) ? session.id : undefined;
130
- const pageUrl = record(session) ? session.pageUrl : undefined;
131
- if (typeof id !== 'string' || id.length === 0 || !webUrl(pageUrl)) {
132
- throw new TypeError('Astrale View output is invalid.');
133
- }
134
- return Object.freeze({ id, pageUrl });
135
- }
136
- function webUrl(input) {
137
- if (typeof input !== 'string' || input.length === 0 || input.length > 2_048)
138
- return false;
139
- try {
140
- const value = new URL(input);
141
- return ((value.protocol === 'http:' || value.protocol === 'https:') &&
142
- value.username === '' &&
143
- value.password === '');
144
- }
145
- catch {
146
- return false;
147
- }
148
- }
149
- function record(input) {
150
- return input !== null && typeof input === 'object' && !Array.isArray(input);
151
- }
@@ -1,21 +0,0 @@
1
- import type { Adapter, InstallationTarget, ReadyDeployResult } from '../../deployment/adapter/index.js';
2
- import type { InstallationEvidence } from './installation/index.js';
3
- import { writeDeploymentEvidence } from './evidence.js';
4
- import { reconcileInstallation } from './installation/index.js';
5
- export interface EnvironmentReleaseDependencies {
6
- readonly writeEvidence: typeof writeDeploymentEvidence;
7
- readonly reconcileInstallation: typeof reconcileInstallation;
8
- }
9
- /** Retain verified provider evidence and reconcile one optional durable Kernel installation. */
10
- export declare function reconcileEnvironmentRelease(input: {
11
- readonly projectDir: string;
12
- readonly environment: string;
13
- readonly adapter: Adapter<object>;
14
- readonly deployment: ReadyDeployResult;
15
- readonly installation?: InstallationTarget;
16
- readonly deployOnly: boolean;
17
- readonly identity?: string;
18
- readonly credential?: string;
19
- readonly installationExecutable?: string;
20
- readonly signal: AbortSignal;
21
- }, dependencies?: EnvironmentReleaseDependencies): Promise<InstallationEvidence | undefined>;
@@ -1,46 +0,0 @@
1
- import { writeDeploymentEvidence } from './evidence.js';
2
- import { reconcileInstallation } from './installation/index.js';
3
- /** Retain verified provider evidence and reconcile one optional durable Kernel installation. */
4
- export async function reconcileEnvironmentRelease(input, dependencies = {
5
- writeEvidence: writeDeploymentEvidence,
6
- reconcileInstallation,
7
- }) {
8
- try {
9
- await dependencies.writeEvidence({
10
- projectDir: input.projectDir,
11
- environment: input.environment,
12
- adapter: input.adapter,
13
- deployment: input.deployment,
14
- });
15
- }
16
- catch (cause) {
17
- throw new TypeError(`Domain ${input.deployment.release.publication.origin} remains deployed, but its local evidence could not be saved. Kernel installation was not attempted.`, { cause });
18
- }
19
- if (input.installation === undefined || input.deployOnly)
20
- return undefined;
21
- if (input.installationExecutable === undefined) {
22
- throw new TypeError('A compatible Astrale CLI must be pinned before deploying an installed Environment.');
23
- }
24
- const installation = await dependencies.reconcileInstallation({
25
- projectDir: input.projectDir,
26
- target: input.installation,
27
- executable: input.installationExecutable,
28
- ...(input.identity === undefined ? {} : { identity: input.identity }),
29
- ...(input.credential === undefined ? {} : { credential: input.credential }),
30
- release: input.deployment.release,
31
- signal: input.signal,
32
- });
33
- try {
34
- await dependencies.writeEvidence({
35
- projectDir: input.projectDir,
36
- environment: input.environment,
37
- adapter: input.adapter,
38
- deployment: input.deployment,
39
- installation,
40
- });
41
- }
42
- catch (cause) {
43
- throw new TypeError(`Domain ${installation.origin} remains installed on ${installation.instance}, but its local evidence could not be saved. The installation was not rolled back.`, { cause });
44
- }
45
- return installation;
46
- }
@@ -1,11 +0,0 @@
1
- import type { Adapter, ReadyDeployResult } from '../../deployment/adapter/index.js';
2
- import type { InstallationEvidence } from './installation/index.js';
3
- export declare const DEPLOYMENT_EVIDENCE_VERSION: 1;
4
- /** Persist one non-secret, non-authoritative continuity observation atomically. */
5
- export declare function writeDeploymentEvidence(input: {
6
- readonly projectDir: string;
7
- readonly environment: string;
8
- readonly adapter: Adapter<object>;
9
- readonly deployment: ReadyDeployResult;
10
- readonly installation?: InstallationEvidence;
11
- }): Promise<string>;
@@ -1,53 +0,0 @@
1
- import { randomUUID } from 'node:crypto';
2
- import { mkdir, rename, unlink, writeFile } from 'node:fs/promises';
3
- import { join } from 'node:path';
4
- export const DEPLOYMENT_EVIDENCE_VERSION = 1;
5
- /** Persist one non-secret, non-authoritative continuity observation atomically. */
6
- export async function writeDeploymentEvidence(input) {
7
- const directory = join(input.projectDir, '.astrale', 'environments', input.environment);
8
- const path = join(directory, 'deployment.json');
9
- await mkdir(directory, { recursive: true });
10
- const provider = input.deployment.progress.provider.evidence;
11
- const value = Object.freeze({
12
- version: DEPLOYMENT_EVIDENCE_VERSION,
13
- environment: input.environment,
14
- adapter: Object.freeze({ name: input.adapter.name, version: input.adapter.version }),
15
- deployment: Object.freeze({
16
- provider: provider.provider,
17
- id: provider.deployment,
18
- artifact: provider.artifact,
19
- issuer: input.deployment.release.addressing.issuer,
20
- publicUrl: input.deployment.release.addressing.publicUrl,
21
- origin: input.deployment.release.publication.origin,
22
- revision: input.deployment.release.publication.schema.revision,
23
- etag: input.deployment.release.publication.etag,
24
- readiness: 'ready',
25
- ...(provider.preflight === undefined ? {} : { preflight: provider.preflight }),
26
- }),
27
- ...(input.installation === undefined
28
- ? {}
29
- : {
30
- installation: Object.freeze({
31
- instance: input.installation.instance,
32
- origin: input.installation.origin,
33
- issuer: input.installation.issuer,
34
- revision: input.installation.revision,
35
- etag: input.installation.etag,
36
- generation: input.installation.generation,
37
- status: input.installation.status,
38
- }),
39
- }),
40
- });
41
- const staging = join(directory, `.deployment-${randomUUID()}.json`);
42
- await writeFile(staging, `${JSON.stringify(value, null, 2)}\n`, { mode: 0o600, flag: 'wx' });
43
- try {
44
- await rename(staging, path);
45
- }
46
- finally {
47
- await unlink(staging).catch((cause) => {
48
- if (cause.code !== 'ENOENT')
49
- throw cause;
50
- });
51
- }
52
- return path;
53
- }
@@ -1,2 +0,0 @@
1
- export { reconcileInstallation } from './reconcile.js';
2
- export type { AstraleCommandResult, InstallationDependencies, InstallationEvidence, } from './reconcile.js';
@@ -1 +0,0 @@
1
- export { reconcileInstallation } from './reconcile.js';
@@ -1,10 +0,0 @@
1
- export interface InstallationObservation {
2
- readonly origin: string;
3
- readonly revision: string;
4
- readonly issuer: string;
5
- readonly generation: string;
6
- readonly etag: string;
7
- }
8
- /** Admit exact installed Release evidence returned by Kernel introspection. */
9
- export declare function decodeInstallationObservation(input: string): InstallationObservation;
10
- export declare function canonicalIssuer(input: string): string;
@@ -1,44 +0,0 @@
1
- /** Admit exact installed Release evidence returned by Kernel introspection. */
2
- export function decodeInstallationObservation(input) {
3
- let decoded;
4
- try {
5
- decoded = JSON.parse(input);
6
- }
7
- catch (cause) {
8
- throw new TypeError('Astrale introspection did not return one JSON value.', { cause });
9
- }
10
- const root = record(decoded);
11
- const publication = record(root.publication);
12
- const identity = record(publication.identity);
13
- if (typeof root.origin !== 'string' ||
14
- typeof root.revision !== 'string' ||
15
- typeof root.generation !== 'string' ||
16
- !/^sha256:[0-9a-f]{64}$/u.test(root.generation) ||
17
- publication.origin !== root.origin ||
18
- publication.revision !== root.revision ||
19
- typeof identity.issuer !== 'string' ||
20
- typeof publication.etag !== 'string' ||
21
- !/^sha256:[0-9a-f]{64}$/u.test(publication.etag)) {
22
- throw new TypeError('Astrale introspection returned invalid installed Domain evidence.');
23
- }
24
- return Object.freeze({
25
- origin: root.origin,
26
- revision: root.revision,
27
- issuer: canonicalIssuer(identity.issuer),
28
- generation: root.generation,
29
- etag: publication.etag,
30
- });
31
- }
32
- export function canonicalIssuer(input) {
33
- const url = new URL(input);
34
- if (url.href !== url.origin && url.href !== `${url.origin}/`) {
35
- throw new TypeError('Release issuer must be one canonical origin.');
36
- }
37
- return url.origin;
38
- }
39
- function record(input) {
40
- if (input === null || typeof input !== 'object' || Array.isArray(input)) {
41
- throw new TypeError('Astrale introspection returned invalid installed Domain evidence.');
42
- }
43
- return input;
44
- }