alchemy 2.0.0-beta.84 → 2.0.0-beta.85

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 (758) hide show
  1. package/THIRD_PARTY_LICENSES.md +2 -2
  2. package/bin/cli.js +14 -6
  3. package/bin/register-oxc.js +16 -12
  4. package/lib/AdoptPolicy.d.ts +73 -0
  5. package/lib/AdoptPolicy.d.ts.map +1 -1
  6. package/lib/AdoptPolicy.js +54 -0
  7. package/lib/AdoptPolicy.js.map +1 -1
  8. package/lib/Alchemist/AuthRegistry.d.ts +31 -0
  9. package/lib/Alchemist/AuthRegistry.d.ts.map +1 -0
  10. package/lib/Alchemist/AuthRegistry.js +95 -0
  11. package/lib/Alchemist/AuthRegistry.js.map +1 -0
  12. package/lib/Alchemist/Drift.d.ts +70 -0
  13. package/lib/Alchemist/Drift.d.ts.map +1 -0
  14. package/lib/Alchemist/Drift.js +54 -0
  15. package/lib/Alchemist/Drift.js.map +1 -0
  16. package/lib/Alchemist/Entrypoint.d.ts +27 -3
  17. package/lib/Alchemist/Entrypoint.d.ts.map +1 -1
  18. package/lib/Alchemist/Entrypoint.js +34 -3
  19. package/lib/Alchemist/Entrypoint.js.map +1 -1
  20. package/lib/Alchemist/Errors.d.ts +1 -1
  21. package/lib/Alchemist/Errors.d.ts.map +1 -1
  22. package/lib/Alchemist/Errors.js +1 -1
  23. package/lib/Alchemist/Errors.js.map +1 -1
  24. package/lib/Alchemist/Logs.d.ts +46 -0
  25. package/lib/Alchemist/Logs.d.ts.map +1 -0
  26. package/lib/Alchemist/{routes/logs.js → Logs.js} +21 -26
  27. package/lib/Alchemist/Logs.js.map +1 -0
  28. package/lib/Alchemist/Nuke.d.ts +69 -0
  29. package/lib/Alchemist/Nuke.d.ts.map +1 -0
  30. package/lib/Alchemist/Nuke.js +35 -0
  31. package/lib/Alchemist/Nuke.js.map +1 -0
  32. package/lib/Alchemist/Operations.d.ts +168 -0
  33. package/lib/Alchemist/Operations.d.ts.map +1 -0
  34. package/lib/Alchemist/Operations.js +165 -0
  35. package/lib/Alchemist/Operations.js.map +1 -0
  36. package/lib/Alchemist/Profile.d.ts +132 -0
  37. package/lib/Alchemist/Profile.d.ts.map +1 -0
  38. package/lib/Alchemist/{routes/profile.js → Profile.js} +20 -21
  39. package/lib/Alchemist/Profile.js.map +1 -0
  40. package/lib/Alchemist/{routes/provider.d.ts → Provider.d.ts} +4 -4
  41. package/lib/Alchemist/Provider.d.ts.map +1 -0
  42. package/lib/Alchemist/{routes/provider.js → Provider.js} +7 -6
  43. package/lib/Alchemist/Provider.js.map +1 -0
  44. package/lib/Alchemist/Runtime.d.ts +10 -6
  45. package/lib/Alchemist/Runtime.d.ts.map +1 -1
  46. package/lib/Alchemist/Runtime.js +38 -2
  47. package/lib/Alchemist/Runtime.js.map +1 -1
  48. package/lib/Alchemist/{routes/state.d.ts → State.d.ts} +36 -16
  49. package/lib/Alchemist/State.d.ts.map +1 -0
  50. package/lib/Alchemist/{routes/state.js → State.js} +50 -15
  51. package/lib/Alchemist/State.js.map +1 -0
  52. package/lib/Alchemist/index.d.ts +11 -10
  53. package/lib/Alchemist/index.d.ts.map +1 -1
  54. package/lib/Alchemist/index.js +10 -9
  55. package/lib/Alchemist/index.js.map +1 -1
  56. package/lib/Apply.d.ts +2 -8
  57. package/lib/Apply.d.ts.map +1 -1
  58. package/lib/Apply.js +364 -184
  59. package/lib/Apply.js.map +1 -1
  60. package/lib/Auth/AuthProvider.d.ts +24 -11
  61. package/lib/Auth/AuthProvider.d.ts.map +1 -1
  62. package/lib/Auth/AuthProvider.js +28 -12
  63. package/lib/Auth/AuthProvider.js.map +1 -1
  64. package/lib/Auth/BrowserOAuth.d.ts +6 -8
  65. package/lib/Auth/BrowserOAuth.d.ts.map +1 -1
  66. package/lib/Auth/BrowserOAuth.js +25 -41
  67. package/lib/Auth/BrowserOAuth.js.map +1 -1
  68. package/lib/Auth/Credentials.d.ts.map +1 -1
  69. package/lib/Auth/Credentials.js +2 -2
  70. package/lib/Auth/Credentials.js.map +1 -1
  71. package/lib/Auth/Demand.d.ts +4 -4
  72. package/lib/Auth/Demand.d.ts.map +1 -1
  73. package/lib/Auth/Demand.js +16 -10
  74. package/lib/Auth/Demand.js.map +1 -1
  75. package/lib/Auth/Env.d.ts +2 -1
  76. package/lib/Auth/Env.d.ts.map +1 -1
  77. package/lib/Auth/Env.js +4 -2
  78. package/lib/Auth/Env.js.map +1 -1
  79. package/lib/Auth/Inspect.d.ts +2 -2
  80. package/lib/Auth/Inspect.d.ts.map +1 -1
  81. package/lib/Auth/Inspect.js +3 -1
  82. package/lib/Auth/Inspect.js.map +1 -1
  83. package/lib/Auth/Lock.d.ts.map +1 -1
  84. package/lib/Auth/Lock.js +4 -8
  85. package/lib/Auth/Lock.js.map +1 -1
  86. package/lib/Auth/OAuthFlow.d.ts +3 -12
  87. package/lib/Auth/OAuthFlow.d.ts.map +1 -1
  88. package/lib/Auth/OAuthFlow.js +7 -17
  89. package/lib/Auth/OAuthFlow.js.map +1 -1
  90. package/lib/Auth/Paths.d.ts +2 -1
  91. package/lib/Auth/Paths.d.ts.map +1 -1
  92. package/lib/Auth/Paths.js +3 -2
  93. package/lib/Auth/Paths.js.map +1 -1
  94. package/lib/Auth/Profile.d.ts +10 -0
  95. package/lib/Auth/Profile.d.ts.map +1 -1
  96. package/lib/Auth/Profile.js +19 -2
  97. package/lib/Auth/Profile.js.map +1 -1
  98. package/lib/Auth/Registry.d.ts +20 -0
  99. package/lib/Auth/Registry.d.ts.map +1 -0
  100. package/lib/Auth/Registry.js +17 -0
  101. package/lib/Auth/Registry.js.map +1 -0
  102. package/lib/Auth/Resolve.d.ts +34 -2
  103. package/lib/Auth/Resolve.d.ts.map +1 -1
  104. package/lib/Auth/Resolve.js +51 -3
  105. package/lib/Auth/Resolve.js.map +1 -1
  106. package/lib/Auth/StoredAuthProvider.d.ts +1 -1
  107. package/lib/Auth/StoredAuthProvider.d.ts.map +1 -1
  108. package/lib/Auth/StoredAuthProvider.js +1 -2
  109. package/lib/Auth/StoredAuthProvider.js.map +1 -1
  110. package/lib/Binding.d.ts.map +1 -1
  111. package/lib/Binding.js +3 -1
  112. package/lib/Binding.js.map +1 -1
  113. package/lib/Bundle/Bundle.d.ts +5 -0
  114. package/lib/Bundle/Bundle.d.ts.map +1 -1
  115. package/lib/Bundle/Bundle.js +36 -6
  116. package/lib/Bundle/Bundle.js.map +1 -1
  117. package/lib/Bundle/NamespaceImportPlugin.d.ts +55 -0
  118. package/lib/Bundle/NamespaceImportPlugin.d.ts.map +1 -0
  119. package/lib/Bundle/NamespaceImportPlugin.js +226 -0
  120. package/lib/Bundle/NamespaceImportPlugin.js.map +1 -0
  121. package/lib/Bundle/index.d.ts +1 -0
  122. package/lib/Bundle/index.d.ts.map +1 -1
  123. package/lib/Bundle/index.js +1 -0
  124. package/lib/Bundle/index.js.map +1 -1
  125. package/lib/Cli/Format.d.ts.map +1 -1
  126. package/lib/Cli/Format.js +2 -1
  127. package/lib/Cli/Format.js.map +1 -1
  128. package/lib/Cli/GlobalLog.d.ts +72 -26
  129. package/lib/Cli/GlobalLog.d.ts.map +1 -1
  130. package/lib/Cli/GlobalLog.js +151 -59
  131. package/lib/Cli/GlobalLog.js.map +1 -1
  132. package/lib/Cli/LoggingCli.d.ts.map +1 -1
  133. package/lib/Cli/LoggingCli.js +24 -18
  134. package/lib/Cli/LoggingCli.js.map +1 -1
  135. package/lib/Cli/PlainCliFormatter.d.ts.map +1 -1
  136. package/lib/Cli/PlainCliFormatter.js +4 -1
  137. package/lib/Cli/PlainCliFormatter.js.map +1 -1
  138. package/lib/Cli/Present.d.ts +14 -0
  139. package/lib/Cli/Present.d.ts.map +1 -0
  140. package/lib/Cli/Present.js +22 -0
  141. package/lib/Cli/Present.js.map +1 -0
  142. package/lib/Cli/SigilRenderer.d.ts +58 -0
  143. package/lib/Cli/SigilRenderer.d.ts.map +1 -0
  144. package/lib/Cli/SigilRenderer.js +39 -0
  145. package/lib/Cli/SigilRenderer.js.map +1 -0
  146. package/lib/Cli/checkVersion.d.ts +11 -14
  147. package/lib/Cli/checkVersion.d.ts.map +1 -1
  148. package/lib/Cli/checkVersion.js +19 -77
  149. package/lib/Cli/checkVersion.js.map +1 -1
  150. package/lib/Cli/commands/confirm.d.ts +2 -2
  151. package/lib/Cli/commands/confirm.d.ts.map +1 -1
  152. package/lib/Cli/commands/confirm.js +3 -3
  153. package/lib/Cli/commands/confirm.js.map +1 -1
  154. package/lib/Cli/commands/deploy.d.ts +4 -4
  155. package/lib/Cli/commands/deploy.d.ts.map +1 -1
  156. package/lib/Cli/commands/deploy.js +40 -39
  157. package/lib/Cli/commands/deploy.js.map +1 -1
  158. package/lib/Cli/commands/dev.d.ts.map +1 -1
  159. package/lib/Cli/commands/dev.js +41 -3
  160. package/lib/Cli/commands/dev.js.map +1 -1
  161. package/lib/Cli/commands/drift.d.ts +2 -2
  162. package/lib/Cli/commands/drift.d.ts.map +1 -1
  163. package/lib/Cli/commands/drift.js +14 -13
  164. package/lib/Cli/commands/drift.js.map +1 -1
  165. package/lib/Cli/commands/errors.d.ts.map +1 -1
  166. package/lib/Cli/commands/errors.js +2 -1
  167. package/lib/Cli/commands/errors.js.map +1 -1
  168. package/lib/Cli/commands/instrument.d.ts +15 -5
  169. package/lib/Cli/commands/instrument.d.ts.map +1 -1
  170. package/lib/Cli/commands/instrument.js +33 -8
  171. package/lib/Cli/commands/instrument.js.map +1 -1
  172. package/lib/Cli/commands/logs.d.ts +1 -1
  173. package/lib/Cli/commands/logs.d.ts.map +1 -1
  174. package/lib/Cli/commands/logs.js +22 -22
  175. package/lib/Cli/commands/logs.js.map +1 -1
  176. package/lib/Cli/commands/nuke.d.ts +3 -2
  177. package/lib/Cli/commands/nuke.d.ts.map +1 -1
  178. package/lib/Cli/commands/nuke.js +19 -17
  179. package/lib/Cli/commands/nuke.js.map +1 -1
  180. package/lib/Cli/commands/profile/commands.d.ts +3 -2
  181. package/lib/Cli/commands/profile/commands.d.ts.map +1 -1
  182. package/lib/Cli/commands/profile/commands.js +26 -27
  183. package/lib/Cli/commands/profile/commands.js.map +1 -1
  184. package/lib/Cli/commands/profile/flows.d.ts +6 -5
  185. package/lib/Cli/commands/profile/flows.d.ts.map +1 -1
  186. package/lib/Cli/commands/profile/flows.js +19 -17
  187. package/lib/Cli/commands/profile/flows.js.map +1 -1
  188. package/lib/Cli/commands/profile/hub.d.ts +1 -2
  189. package/lib/Cli/commands/profile/hub.d.ts.map +1 -1
  190. package/lib/Cli/commands/profile/hub.js +15 -17
  191. package/lib/Cli/commands/profile/hub.js.map +1 -1
  192. package/lib/Cli/commands/provider.d.ts +3 -1
  193. package/lib/Cli/commands/provider.d.ts.map +1 -1
  194. package/lib/Cli/commands/provider.js +4 -4
  195. package/lib/Cli/commands/provider.js.map +1 -1
  196. package/lib/Cli/commands/render.d.ts +2 -4
  197. package/lib/Cli/commands/render.d.ts.map +1 -1
  198. package/lib/Cli/commands/render.js +33 -56
  199. package/lib/Cli/commands/render.js.map +1 -1
  200. package/lib/Cli/commands/state.d.ts +1 -2
  201. package/lib/Cli/commands/state.d.ts.map +1 -1
  202. package/lib/Cli/commands/state.js +74 -27
  203. package/lib/Cli/commands/state.js.map +1 -1
  204. package/lib/Cli/components/capabilities.d.ts +4 -0
  205. package/lib/Cli/components/capabilities.d.ts.map +1 -0
  206. package/lib/Cli/components/capabilities.js +18 -0
  207. package/lib/Cli/components/capabilities.js.map +1 -0
  208. package/lib/Cli/components/types.d.ts +2 -81
  209. package/lib/Cli/components/types.d.ts.map +1 -1
  210. package/lib/Cli/components/types.js +1 -3
  211. package/lib/Cli/components/types.js.map +1 -1
  212. package/lib/Cli/components/ui/Environment.d.ts +3 -3
  213. package/lib/Cli/components/ui/Environment.d.ts.map +1 -1
  214. package/lib/Cli/components/ui/Environment.js.map +1 -1
  215. package/lib/Cli/components/ui/Interactive.d.ts +17 -4
  216. package/lib/Cli/components/ui/Interactive.d.ts.map +1 -1
  217. package/lib/Cli/components/ui/Interactive.js +7 -11
  218. package/lib/Cli/components/ui/Interactive.js.map +1 -1
  219. package/lib/Cli/components/ui/Layout.d.ts +1 -1
  220. package/lib/Cli/components/ui/Layout.d.ts.map +1 -1
  221. package/lib/Cli/components/ui/Layout.js +1 -1
  222. package/lib/Cli/components/ui/Layout.js.map +1 -1
  223. package/lib/Cli/components/ui/Typography.d.ts +1 -1
  224. package/lib/Cli/components/ui/Typography.d.ts.map +1 -1
  225. package/lib/Cli/components/ui/Typography.js +1 -1
  226. package/lib/Cli/components/ui/Typography.js.map +1 -1
  227. package/lib/Cli/components/ui/index.d.ts +2 -2
  228. package/lib/Cli/components/ui/index.js +2 -2
  229. package/lib/Cli/components/view/ApprovePlan.d.ts +1 -1
  230. package/lib/Cli/components/view/ApprovePlan.d.ts.map +1 -1
  231. package/lib/Cli/components/view/ApprovePlan.js +2 -1
  232. package/lib/Cli/components/view/ApprovePlan.js.map +1 -1
  233. package/lib/Cli/components/view/Format.d.ts +5 -0
  234. package/lib/Cli/components/view/Format.d.ts.map +1 -0
  235. package/lib/Cli/components/view/Format.js +39 -0
  236. package/lib/Cli/components/view/Format.js.map +1 -0
  237. package/lib/Cli/components/view/Help.d.ts +2 -2
  238. package/lib/Cli/components/view/Help.d.ts.map +1 -1
  239. package/lib/Cli/components/view/Help.js +7 -5
  240. package/lib/Cli/components/view/Help.js.map +1 -1
  241. package/lib/Cli/components/view/Logo.js +1 -1
  242. package/lib/Cli/components/view/Logo.js.map +1 -1
  243. package/lib/Cli/components/view/Nuke.d.ts +8 -9
  244. package/lib/Cli/components/view/Nuke.d.ts.map +1 -1
  245. package/lib/Cli/components/view/Nuke.js +49 -52
  246. package/lib/Cli/components/view/Nuke.js.map +1 -1
  247. package/lib/Cli/components/view/PlanDecision.d.ts +1 -1
  248. package/lib/Cli/components/view/PlanDecision.d.ts.map +1 -1
  249. package/lib/Cli/components/view/PlanDecision.js +1 -1
  250. package/lib/Cli/components/view/PlanDecision.js.map +1 -1
  251. package/lib/Cli/components/view/PlanRow.js +1 -1
  252. package/lib/Cli/components/view/PlanRow.js.map +1 -1
  253. package/lib/Cli/components/view/PlanTree.d.ts +1 -1
  254. package/lib/Cli/components/view/PlanTree.d.ts.map +1 -1
  255. package/lib/Cli/components/view/PlanTree.js +1 -1
  256. package/lib/Cli/components/view/PlanView.js +1 -1
  257. package/lib/Cli/components/view/PlanView.js.map +1 -1
  258. package/lib/Cli/components/view/Profile.d.ts +1 -1
  259. package/lib/Cli/components/view/Profile.js +2 -2
  260. package/lib/Cli/components/view/Profile.js.map +1 -1
  261. package/lib/Cli/components/view/ProfileDashboard.d.ts +4 -4
  262. package/lib/Cli/components/view/ProfileDashboard.d.ts.map +1 -1
  263. package/lib/Cli/components/view/ProfileDashboard.js +9 -8
  264. package/lib/Cli/components/view/ProfileDashboard.js.map +1 -1
  265. package/lib/Cli/components/view/Prompts.d.ts +3 -3
  266. package/lib/Cli/components/view/Prompts.d.ts.map +1 -1
  267. package/lib/Cli/components/view/Prompts.js +11 -18
  268. package/lib/Cli/components/view/Prompts.js.map +1 -1
  269. package/lib/Cli/components/view/Runtime.d.ts +5 -5
  270. package/lib/Cli/components/view/Runtime.d.ts.map +1 -1
  271. package/lib/Cli/components/view/Runtime.js +136 -219
  272. package/lib/Cli/components/view/Runtime.js.map +1 -1
  273. package/lib/Cli/components/view/SigilCli.d.ts +2 -2
  274. package/lib/Cli/components/view/SigilCli.d.ts.map +1 -1
  275. package/lib/Cli/components/view/SigilCli.js +7 -7
  276. package/lib/Cli/components/view/SigilCli.js.map +1 -1
  277. package/lib/Cli/components/view/StateExplorer.d.ts +1 -1
  278. package/lib/Cli/components/view/StateExplorer.d.ts.map +1 -1
  279. package/lib/Cli/components/view/StateExplorer.js +2 -1
  280. package/lib/Cli/components/view/StateExplorer.js.map +1 -1
  281. package/lib/Cli/components/view/statusStyle.d.ts +2 -2
  282. package/lib/Cli/components/view/statusStyle.d.ts.map +1 -1
  283. package/lib/Cli/components/view/statusStyle.js +1 -1
  284. package/lib/Cli/components/view/statusStyle.js.map +1 -1
  285. package/lib/Cli/exec.d.ts +6 -1
  286. package/lib/Cli/exec.d.ts.map +1 -1
  287. package/lib/Cli/exec.js +29 -34
  288. package/lib/Cli/exec.js.map +1 -1
  289. package/lib/Cli/main.d.ts.map +1 -1
  290. package/lib/Cli/main.js +35 -26
  291. package/lib/Cli/main.js.map +1 -1
  292. package/lib/Cli/selectCli.d.ts +2 -2
  293. package/lib/Cli/selectCli.d.ts.map +1 -1
  294. package/lib/Cli/selectCli.js +2 -2
  295. package/lib/Cli/selectCli.js.map +1 -1
  296. package/lib/Command/Command.js +1 -1
  297. package/lib/Command/Command.js.map +1 -1
  298. package/lib/Command/Dev.d.ts +58 -4
  299. package/lib/Command/Dev.d.ts.map +1 -1
  300. package/lib/Command/Dev.js +87 -30
  301. package/lib/Command/Dev.js.map +1 -1
  302. package/lib/Command/Local.d.ts +1 -1
  303. package/lib/Command/Memo.js +1 -1
  304. package/lib/Command/Memo.js.map +1 -1
  305. package/lib/Command/Providers.d.ts +1 -1
  306. package/lib/Command/Providers.d.ts.map +1 -1
  307. package/lib/Contributions.d.ts +2 -3
  308. package/lib/Contributions.d.ts.map +1 -1
  309. package/lib/Contributions.js +38 -6
  310. package/lib/Contributions.js.map +1 -1
  311. package/lib/DNS/Adapter.d.ts +204 -0
  312. package/lib/DNS/Adapter.d.ts.map +1 -0
  313. package/lib/DNS/Adapter.js +112 -0
  314. package/lib/DNS/Adapter.js.map +1 -0
  315. package/lib/DNS/index.d.ts +2 -0
  316. package/lib/DNS/index.d.ts.map +1 -0
  317. package/lib/DNS/index.js +2 -0
  318. package/lib/DNS/index.js.map +1 -0
  319. package/lib/Deploy.d.ts +7 -2
  320. package/lib/Deploy.d.ts.map +1 -1
  321. package/lib/Deploy.js +8 -3
  322. package/lib/Deploy.js.map +1 -1
  323. package/lib/Destroy.d.ts +5 -8
  324. package/lib/Destroy.d.ts.map +1 -1
  325. package/lib/Destroy.js +10 -7
  326. package/lib/Destroy.js.map +1 -1
  327. package/lib/Diff.d.ts.map +1 -1
  328. package/lib/Diff.js +14 -4
  329. package/lib/Diff.js.map +1 -1
  330. package/lib/Drift.d.ts +7 -7
  331. package/lib/Drift.d.ts.map +1 -1
  332. package/lib/Drift.js +184 -101
  333. package/lib/Drift.js.map +1 -1
  334. package/lib/EvalStack.d.ts +23 -0
  335. package/lib/EvalStack.d.ts.map +1 -0
  336. package/lib/EvalStack.js +47 -0
  337. package/lib/EvalStack.js.map +1 -0
  338. package/lib/Events.d.ts +210 -0
  339. package/lib/Events.d.ts.map +1 -0
  340. package/lib/Events.js +244 -0
  341. package/lib/Events.js.map +1 -0
  342. package/lib/Interaction.d.ts +159 -48
  343. package/lib/Interaction.d.ts.map +1 -1
  344. package/lib/Interaction.js +139 -58
  345. package/lib/Interaction.js.map +1 -1
  346. package/lib/Local/LocalProvider.d.ts.map +1 -1
  347. package/lib/Local/LocalProvider.js +31 -9
  348. package/lib/Local/LocalProvider.js.map +1 -1
  349. package/lib/Local/RpcProvider.d.ts.map +1 -1
  350. package/lib/Local/RpcProvider.js +10 -1
  351. package/lib/Local/RpcProvider.js.map +1 -1
  352. package/lib/Local/RpcProviderProxy.d.ts +16 -0
  353. package/lib/Local/RpcProviderProxy.d.ts.map +1 -1
  354. package/lib/Local/RpcProviderProxy.js +19 -10
  355. package/lib/Local/RpcProviderProxy.js.map +1 -1
  356. package/lib/Local/RpcSerialization.d.ts +3 -2
  357. package/lib/Local/RpcSerialization.d.ts.map +1 -1
  358. package/lib/Local/RpcSerialization.js +13 -10
  359. package/lib/Local/RpcSerialization.js.map +1 -1
  360. package/lib/Local/RpcServer.d.ts +2 -1
  361. package/lib/Local/RpcServer.d.ts.map +1 -1
  362. package/lib/Local/RpcServer.js +19 -14
  363. package/lib/Local/RpcServer.js.map +1 -1
  364. package/lib/Local/RpcServerBun.d.ts.map +1 -1
  365. package/lib/Local/RpcServerBun.js +8 -4
  366. package/lib/Local/RpcServerBun.js.map +1 -1
  367. package/lib/Local/RpcServerEnvironment.d.ts +2 -3
  368. package/lib/Local/RpcServerEnvironment.d.ts.map +1 -1
  369. package/lib/Local/RpcServerEnvironment.js +2 -2
  370. package/lib/Local/RpcServerEnvironment.js.map +1 -1
  371. package/lib/Local/RpcServerNode.d.ts.map +1 -1
  372. package/lib/Local/RpcServerNode.js +5 -1
  373. package/lib/Local/RpcServerNode.js.map +1 -1
  374. package/lib/Local/RpcServerSession.d.ts +1 -1
  375. package/lib/Local/RpcServerSession.d.ts.map +1 -1
  376. package/lib/Local/RpcServerSession.js.map +1 -1
  377. package/lib/Local/RpcSpawner.d.ts +6 -8
  378. package/lib/Local/RpcSpawner.d.ts.map +1 -1
  379. package/lib/Local/RpcSpawner.js +45 -36
  380. package/lib/Local/RpcSpawner.js.map +1 -1
  381. package/lib/Local/Sidecar.d.ts +23 -0
  382. package/lib/Local/Sidecar.d.ts.map +1 -1
  383. package/lib/Local/Sidecar.js +14 -9
  384. package/lib/Local/Sidecar.js.map +1 -1
  385. package/lib/Nuke.d.ts +5 -23
  386. package/lib/Nuke.d.ts.map +1 -1
  387. package/lib/Nuke.js +48 -13
  388. package/lib/Nuke.js.map +1 -1
  389. package/lib/Output.d.ts +19 -1
  390. package/lib/Output.d.ts.map +1 -1
  391. package/lib/Output.js +96 -3
  392. package/lib/Output.js.map +1 -1
  393. package/lib/Plan.d.ts +5 -1
  394. package/lib/Plan.d.ts.map +1 -1
  395. package/lib/Plan.js +111 -33
  396. package/lib/Plan.js.map +1 -1
  397. package/lib/Platform.d.ts.map +1 -1
  398. package/lib/Platform.js +31 -7
  399. package/lib/Platform.js.map +1 -1
  400. package/lib/Provider.d.ts +45 -0
  401. package/lib/Provider.d.ts.map +1 -1
  402. package/lib/Provider.js +2 -2
  403. package/lib/Provider.js.map +1 -1
  404. package/lib/Report.d.ts +17 -195
  405. package/lib/Report.d.ts.map +1 -1
  406. package/lib/Report.js +39 -12
  407. package/lib/Report.js.map +1 -1
  408. package/lib/Runtime/ManagedHttpShutdown.d.ts +17 -0
  409. package/lib/Runtime/ManagedHttpShutdown.d.ts.map +1 -1
  410. package/lib/Runtime/ManagedHttpShutdown.js +11 -2
  411. package/lib/Runtime/ManagedHttpShutdown.js.map +1 -1
  412. package/lib/RuntimeContext.js +1 -1
  413. package/lib/RuntimeContext.js.map +1 -1
  414. package/lib/Stack.d.ts +49 -29
  415. package/lib/Stack.d.ts.map +1 -1
  416. package/lib/Stack.js +25 -31
  417. package/lib/Stack.js.map +1 -1
  418. package/lib/State/BucketState.d.ts.map +1 -1
  419. package/lib/State/BucketState.js +43 -14
  420. package/lib/State/BucketState.js.map +1 -1
  421. package/lib/State/LocalState.d.ts.map +1 -1
  422. package/lib/State/LocalState.js +3 -3
  423. package/lib/State/LocalState.js.map +1 -1
  424. package/lib/State/Provisioning.d.ts +5 -0
  425. package/lib/State/Provisioning.d.ts.map +1 -1
  426. package/lib/State/Provisioning.js +3 -1
  427. package/lib/State/Provisioning.js.map +1 -1
  428. package/lib/State/ResourceState.d.ts +2 -0
  429. package/lib/State/ResourceState.d.ts.map +1 -1
  430. package/lib/State/State.d.ts +26 -0
  431. package/lib/State/State.d.ts.map +1 -1
  432. package/lib/State/StateEncoding.d.ts +7 -0
  433. package/lib/State/StateEncoding.d.ts.map +1 -1
  434. package/lib/State/StateEncoding.js +19 -0
  435. package/lib/State/StateEncoding.js.map +1 -1
  436. package/lib/State/index.js +2 -2
  437. package/lib/State/index.js.map +1 -1
  438. package/lib/Telemetry/Layer.d.ts +2 -5
  439. package/lib/Telemetry/Layer.d.ts.map +1 -1
  440. package/lib/Telemetry/Layer.js +3 -23
  441. package/lib/Telemetry/Layer.js.map +1 -1
  442. package/lib/Telemetry/Metrics.d.ts +1 -1
  443. package/lib/Telemetry/Metrics.d.ts.map +1 -1
  444. package/lib/TelemetryRelay.js +1 -1
  445. package/lib/TelemetryRelay.js.map +1 -1
  446. package/lib/TelemetryRuntime.d.ts +1 -1
  447. package/lib/TelemetryRuntime.d.ts.map +1 -1
  448. package/lib/TelemetryRuntime.js +4 -3
  449. package/lib/TelemetryRuntime.js.map +1 -1
  450. package/lib/Util/ConsoleSink.d.ts +23 -2
  451. package/lib/Util/ConsoleSink.d.ts.map +1 -1
  452. package/lib/Util/ConsoleSink.js +54 -14
  453. package/lib/Util/ConsoleSink.js.map +1 -1
  454. package/lib/Util/LogAnnotation.d.ts +19 -0
  455. package/lib/Util/LogAnnotation.d.ts.map +1 -0
  456. package/lib/Util/LogAnnotation.js +19 -0
  457. package/lib/Util/LogAnnotation.js.map +1 -0
  458. package/lib/Util/LogRecord.d.ts +281 -0
  459. package/lib/Util/LogRecord.d.ts.map +1 -0
  460. package/lib/Util/LogRecord.js +267 -0
  461. package/lib/Util/LogRecord.js.map +1 -0
  462. package/lib/Util/Node.d.ts +9 -0
  463. package/lib/Util/Node.d.ts.map +1 -1
  464. package/lib/Util/Node.js +10 -6
  465. package/lib/Util/Node.js.map +1 -1
  466. package/lib/Util/PlatformServices.d.ts +3 -2
  467. package/lib/Util/PlatformServices.d.ts.map +1 -1
  468. package/lib/Util/PlatformServices.js +6 -2
  469. package/lib/Util/PlatformServices.js.map +1 -1
  470. package/lib/Util/ResourceOutput.d.ts +18 -10
  471. package/lib/Util/ResourceOutput.d.ts.map +1 -1
  472. package/lib/Util/ResourceOutput.js +22 -23
  473. package/lib/Util/ResourceOutput.js.map +1 -1
  474. package/lib/Util/Shutdown.d.ts +10 -0
  475. package/lib/Util/Shutdown.d.ts.map +1 -0
  476. package/lib/Util/Shutdown.js +32 -0
  477. package/lib/Util/Shutdown.js.map +1 -0
  478. package/lib/Util/Terminal.d.ts +2 -4
  479. package/lib/Util/Terminal.d.ts.map +1 -1
  480. package/lib/Util/Terminal.js +3 -11
  481. package/lib/Util/Terminal.js.map +1 -1
  482. package/lib/Util/TraceParent.d.ts +32 -0
  483. package/lib/Util/TraceParent.d.ts.map +1 -0
  484. package/lib/Util/TraceParent.js +42 -0
  485. package/lib/Util/TraceParent.js.map +1 -0
  486. package/lib/Util/base64.d.ts +7 -0
  487. package/lib/Util/base64.d.ts.map +1 -0
  488. package/lib/Util/base64.js +24 -0
  489. package/lib/Util/base64.js.map +1 -0
  490. package/lib/Util/cached-function.d.ts +5 -0
  491. package/lib/Util/cached-function.d.ts.map +1 -1
  492. package/lib/Util/cached-function.js +13 -8
  493. package/lib/Util/cached-function.js.map +1 -1
  494. package/lib/Util/data.d.ts +1 -1
  495. package/lib/Util/data.d.ts.map +1 -1
  496. package/lib/Util/data.js +1 -1
  497. package/lib/Util/data.js.map +1 -1
  498. package/lib/Util/equal.d.ts.map +1 -1
  499. package/lib/Util/equal.js +3 -2
  500. package/lib/Util/equal.js.map +1 -1
  501. package/lib/Util/extraFiles.d.ts.map +1 -1
  502. package/lib/Util/extraFiles.js +5 -5
  503. package/lib/Util/extraFiles.js.map +1 -1
  504. package/lib/Util/interactive.js +1 -1
  505. package/lib/Website/AstroOutput.d.ts +42 -0
  506. package/lib/Website/AstroOutput.d.ts.map +1 -0
  507. package/lib/Website/AstroOutput.js +34 -0
  508. package/lib/Website/AstroOutput.js.map +1 -0
  509. package/lib/Website/FrontendCore.d.ts +1 -1
  510. package/lib/Workflows.d.ts +9 -0
  511. package/lib/Workflows.d.ts.map +1 -1
  512. package/lib/Workflows.js +8 -0
  513. package/lib/Workflows.js.map +1 -1
  514. package/lib/index.d.ts +1 -0
  515. package/lib/index.d.ts.map +1 -1
  516. package/lib/index.js +1 -0
  517. package/lib/index.js.map +1 -1
  518. package/package.json +21 -28
  519. package/src/AdoptPolicy.ts +76 -0
  520. package/src/Alchemist/AuthRegistry.ts +164 -0
  521. package/src/Alchemist/Drift.ts +103 -0
  522. package/src/Alchemist/Entrypoint.ts +51 -3
  523. package/src/Alchemist/Errors.ts +1 -1
  524. package/src/Alchemist/{routes/logs.ts → Logs.ts} +28 -30
  525. package/src/Alchemist/Nuke.ts +90 -0
  526. package/src/Alchemist/Operations.ts +309 -0
  527. package/src/Alchemist/{routes/profile.ts → Profile.ts} +22 -22
  528. package/src/Alchemist/{routes/provider.ts → Provider.ts} +7 -6
  529. package/src/Alchemist/Runtime.ts +46 -12
  530. package/src/Alchemist/{routes/state.ts → State.ts} +78 -21
  531. package/src/Alchemist/index.ts +32 -15
  532. package/src/Apply.ts +513 -274
  533. package/src/Auth/AuthProvider.ts +76 -23
  534. package/src/Auth/BrowserOAuth.ts +37 -60
  535. package/src/Auth/Credentials.ts +2 -4
  536. package/src/Auth/Demand.ts +27 -18
  537. package/src/Auth/Env.ts +13 -8
  538. package/src/Auth/Inspect.ts +5 -2
  539. package/src/Auth/Lock.ts +4 -8
  540. package/src/Auth/OAuthFlow.ts +12 -26
  541. package/src/Auth/Paths.ts +3 -2
  542. package/src/Auth/Profile.ts +30 -2
  543. package/src/Auth/Registry.ts +27 -0
  544. package/src/Auth/Resolve.ts +75 -3
  545. package/src/Auth/StoredAuthProvider.ts +1 -2
  546. package/src/Binding.ts +3 -4
  547. package/src/Bundle/Bundle.ts +58 -7
  548. package/src/Bundle/NamespaceImportPlugin.ts +259 -0
  549. package/src/Bundle/index.ts +1 -0
  550. package/src/Cli/Format.ts +2 -1
  551. package/src/Cli/GlobalLog.ts +206 -68
  552. package/src/Cli/LoggingCli.ts +33 -20
  553. package/src/Cli/PlainCliFormatter.ts +4 -1
  554. package/src/Cli/Present.ts +34 -0
  555. package/src/Cli/SigilRenderer.ts +75 -0
  556. package/src/Cli/checkVersion.ts +25 -78
  557. package/src/Cli/commands/confirm.ts +3 -3
  558. package/src/Cli/commands/deploy.ts +53 -44
  559. package/src/Cli/commands/dev.ts +65 -7
  560. package/src/Cli/commands/drift.ts +20 -16
  561. package/src/Cli/commands/errors.ts +2 -3
  562. package/src/Cli/commands/instrument.ts +39 -8
  563. package/src/Cli/commands/logs.ts +22 -30
  564. package/src/Cli/commands/nuke.ts +25 -26
  565. package/src/Cli/commands/profile/commands.ts +34 -34
  566. package/src/Cli/commands/profile/flows.ts +26 -20
  567. package/src/Cli/commands/profile/hub.ts +16 -18
  568. package/src/Cli/commands/provider.ts +4 -4
  569. package/src/Cli/commands/render.ts +43 -71
  570. package/src/Cli/commands/state.ts +113 -33
  571. package/src/Cli/components/capabilities.ts +20 -0
  572. package/src/Cli/components/types.ts +13 -99
  573. package/src/Cli/components/ui/Environment.tsx +5 -5
  574. package/src/Cli/components/ui/Interactive.tsx +24 -15
  575. package/src/Cli/components/ui/Layout.tsx +1 -1
  576. package/src/Cli/components/ui/Typography.tsx +1 -1
  577. package/src/Cli/components/ui/index.ts +2 -2
  578. package/src/Cli/components/view/ApprovePlan.tsx +2 -1
  579. package/src/Cli/components/view/Format.tsx +58 -0
  580. package/src/Cli/components/view/Help.tsx +14 -17
  581. package/src/Cli/components/view/Logo.tsx +1 -1
  582. package/src/Cli/components/view/Nuke.tsx +74 -49
  583. package/src/Cli/components/view/PlanDecision.tsx +1 -1
  584. package/src/Cli/components/view/PlanRow.tsx +1 -1
  585. package/src/Cli/components/view/PlanTree.ts +2 -2
  586. package/src/Cli/components/view/PlanView.tsx +2 -2
  587. package/src/Cli/components/view/Profile.tsx +2 -2
  588. package/src/Cli/components/view/ProfileDashboard.tsx +12 -11
  589. package/src/Cli/components/view/Prompts.tsx +37 -75
  590. package/src/Cli/components/view/Runtime.tsx +132 -238
  591. package/src/Cli/components/view/SigilCli.tsx +12 -12
  592. package/src/Cli/components/view/StateExplorer.tsx +2 -1
  593. package/src/Cli/components/view/statusStyle.ts +2 -2
  594. package/src/Cli/exec.ts +48 -41
  595. package/src/Cli/main.ts +52 -33
  596. package/src/Cli/selectCli.ts +3 -3
  597. package/src/Command/Command.ts +1 -1
  598. package/src/Command/Dev.ts +129 -36
  599. package/src/Command/Memo.ts +1 -1
  600. package/src/Contributions.ts +42 -8
  601. package/src/DNS/Adapter.ts +289 -0
  602. package/src/DNS/index.ts +1 -0
  603. package/src/Deploy.ts +11 -3
  604. package/src/Destroy.ts +19 -13
  605. package/src/Diff.ts +17 -4
  606. package/src/Drift.ts +256 -127
  607. package/src/EvalStack.ts +97 -0
  608. package/src/Events.ts +296 -0
  609. package/src/Interaction.ts +332 -97
  610. package/src/Local/LocalProvider.ts +40 -9
  611. package/src/Local/RpcProvider.ts +11 -1
  612. package/src/Local/RpcProviderProxy.ts +29 -21
  613. package/src/Local/RpcSerialization.ts +32 -17
  614. package/src/Local/RpcServer.ts +25 -17
  615. package/src/Local/RpcServerBun.ts +10 -6
  616. package/src/Local/RpcServerEnvironment.ts +2 -2
  617. package/src/Local/RpcServerNode.ts +8 -1
  618. package/src/Local/RpcServerSession.ts +2 -2
  619. package/src/Local/RpcSpawner.ts +61 -37
  620. package/src/Local/Sidecar.ts +10 -1
  621. package/src/Nuke.ts +66 -43
  622. package/src/Output.ts +120 -7
  623. package/src/Plan.ts +140 -52
  624. package/src/Platform.ts +47 -18
  625. package/src/Provider.ts +48 -3
  626. package/src/Report.ts +77 -275
  627. package/src/Runtime/ManagedHttpShutdown.ts +21 -4
  628. package/src/RuntimeContext.ts +1 -1
  629. package/src/Stack.ts +113 -135
  630. package/src/State/BucketState.ts +53 -21
  631. package/src/State/LocalState.ts +7 -9
  632. package/src/State/Provisioning.ts +8 -1
  633. package/src/State/ResourceState.ts +2 -0
  634. package/src/State/State.ts +30 -0
  635. package/src/State/StateEncoding.ts +22 -0
  636. package/src/State/index.ts +2 -2
  637. package/src/Telemetry/Layer.ts +3 -24
  638. package/src/Telemetry/Metrics.ts +1 -1
  639. package/src/TelemetryRelay.ts +1 -1
  640. package/src/TelemetryRuntime.ts +8 -8
  641. package/src/Util/ConsoleSink.ts +76 -13
  642. package/src/Util/LogAnnotation.ts +18 -0
  643. package/src/Util/LogRecord.ts +386 -0
  644. package/src/Util/Node.ts +20 -6
  645. package/src/Util/PlatformServices.ts +17 -4
  646. package/src/Util/ResourceOutput.ts +26 -25
  647. package/src/Util/Shutdown.ts +52 -0
  648. package/src/Util/Terminal.ts +3 -20
  649. package/src/Util/TraceParent.ts +70 -0
  650. package/src/Util/base64.ts +22 -0
  651. package/src/Util/cached-function.ts +30 -19
  652. package/src/Util/data.ts +2 -2
  653. package/src/Util/equal.ts +3 -2
  654. package/src/Util/extraFiles.ts +9 -8
  655. package/src/Util/interactive.ts +1 -1
  656. package/src/Website/AstroOutput.ts +83 -0
  657. package/src/Workflows.ts +11 -0
  658. package/src/index.ts +1 -0
  659. package/lib/Alchemist/Progress.d.ts +0 -16
  660. package/lib/Alchemist/Progress.d.ts.map +0 -1
  661. package/lib/Alchemist/Progress.js +0 -123
  662. package/lib/Alchemist/Progress.js.map +0 -1
  663. package/lib/Alchemist/Session.d.ts +0 -116
  664. package/lib/Alchemist/Session.d.ts.map +0 -1
  665. package/lib/Alchemist/Session.js +0 -212
  666. package/lib/Alchemist/Session.js.map +0 -1
  667. package/lib/Alchemist/routes/drift.d.ts +0 -55
  668. package/lib/Alchemist/routes/drift.d.ts.map +0 -1
  669. package/lib/Alchemist/routes/drift.js +0 -52
  670. package/lib/Alchemist/routes/drift.js.map +0 -1
  671. package/lib/Alchemist/routes/logs.d.ts +0 -41
  672. package/lib/Alchemist/routes/logs.d.ts.map +0 -1
  673. package/lib/Alchemist/routes/logs.js.map +0 -1
  674. package/lib/Alchemist/routes/nuke.d.ts +0 -46
  675. package/lib/Alchemist/routes/nuke.d.ts.map +0 -1
  676. package/lib/Alchemist/routes/nuke.js +0 -80
  677. package/lib/Alchemist/routes/nuke.js.map +0 -1
  678. package/lib/Alchemist/routes/profile.d.ts +0 -133
  679. package/lib/Alchemist/routes/profile.d.ts.map +0 -1
  680. package/lib/Alchemist/routes/profile.js.map +0 -1
  681. package/lib/Alchemist/routes/provider.d.ts.map +0 -1
  682. package/lib/Alchemist/routes/provider.js.map +0 -1
  683. package/lib/Alchemist/routes/stack.d.ts +0 -95
  684. package/lib/Alchemist/routes/stack.d.ts.map +0 -1
  685. package/lib/Alchemist/routes/stack.js +0 -73
  686. package/lib/Alchemist/routes/stack.js.map +0 -1
  687. package/lib/Alchemist/routes/state.d.ts.map +0 -1
  688. package/lib/Alchemist/routes/state.js.map +0 -1
  689. package/lib/Cli/CliKit/CliKit.d.ts +0 -92
  690. package/lib/Cli/CliKit/CliKit.d.ts.map +0 -1
  691. package/lib/Cli/CliKit/CliKit.js +0 -27
  692. package/lib/Cli/CliKit/CliKit.js.map +0 -1
  693. package/lib/Cli/CliKit/index.d.ts +0 -9
  694. package/lib/Cli/CliKit/index.d.ts.map +0 -1
  695. package/lib/Cli/CliKit/index.js +0 -9
  696. package/lib/Cli/CliKit/index.js.map +0 -1
  697. package/lib/Cli/CliKit/interaction.d.ts +0 -13
  698. package/lib/Cli/CliKit/interaction.d.ts.map +0 -1
  699. package/lib/Cli/CliKit/interaction.js +0 -17
  700. package/lib/Cli/CliKit/interaction.js.map +0 -1
  701. package/lib/Cli/CliKit/layer.d.ts +0 -7
  702. package/lib/Cli/CliKit/layer.d.ts.map +0 -1
  703. package/lib/Cli/CliKit/layer.js +0 -33
  704. package/lib/Cli/CliKit/layer.js.map +0 -1
  705. package/lib/Local/DevLog.d.ts +0 -32
  706. package/lib/Local/DevLog.d.ts.map +0 -1
  707. package/lib/Local/DevLog.js +0 -112
  708. package/lib/Local/DevLog.js.map +0 -1
  709. package/lib/Test/Alchemy.d.ts +0 -79
  710. package/lib/Test/Alchemy.d.ts.map +0 -1
  711. package/lib/Test/Alchemy.js +0 -193
  712. package/lib/Test/Alchemy.js.map +0 -1
  713. package/lib/Test/Bun.d.ts +0 -69
  714. package/lib/Test/Bun.d.ts.map +0 -1
  715. package/lib/Test/Bun.js +0 -126
  716. package/lib/Test/Bun.js.map +0 -1
  717. package/lib/Test/Core.d.ts +0 -277
  718. package/lib/Test/Core.d.ts.map +0 -1
  719. package/lib/Test/Core.js +0 -362
  720. package/lib/Test/Core.js.map +0 -1
  721. package/lib/Test/Http.d.ts +0 -109
  722. package/lib/Test/Http.d.ts.map +0 -1
  723. package/lib/Test/Http.js +0 -123
  724. package/lib/Test/Http.js.map +0 -1
  725. package/lib/Test/TestState.d.ts +0 -12
  726. package/lib/Test/TestState.d.ts.map +0 -1
  727. package/lib/Test/TestState.js +0 -15
  728. package/lib/Test/TestState.js.map +0 -1
  729. package/lib/Test/Vitest.d.ts +0 -60
  730. package/lib/Test/Vitest.d.ts.map +0 -1
  731. package/lib/Test/Vitest.js +0 -132
  732. package/lib/Test/Vitest.js.map +0 -1
  733. package/lib/Test/index.d.ts +0 -3
  734. package/lib/Test/index.d.ts.map +0 -1
  735. package/lib/Test/index.js +0 -3
  736. package/lib/Test/index.js.map +0 -1
  737. package/lib/Util/FileLogger.d.ts +0 -7
  738. package/lib/Util/FileLogger.d.ts.map +0 -1
  739. package/lib/Util/FileLogger.js +0 -16
  740. package/lib/Util/FileLogger.js.map +0 -1
  741. package/src/Alchemist/Progress.ts +0 -167
  742. package/src/Alchemist/Session.ts +0 -415
  743. package/src/Alchemist/routes/drift.ts +0 -87
  744. package/src/Alchemist/routes/nuke.ts +0 -131
  745. package/src/Alchemist/routes/stack.ts +0 -173
  746. package/src/Cli/CliKit/CliKit.ts +0 -159
  747. package/src/Cli/CliKit/index.ts +0 -41
  748. package/src/Cli/CliKit/interaction.ts +0 -19
  749. package/src/Cli/CliKit/layer.ts +0 -44
  750. package/src/Local/DevLog.ts +0 -122
  751. package/src/Test/Alchemy.ts +0 -334
  752. package/src/Test/Bun.ts +0 -230
  753. package/src/Test/Core.ts +0 -785
  754. package/src/Test/Http.ts +0 -201
  755. package/src/Test/TestState.ts +0 -35
  756. package/src/Test/Vitest.ts +0 -239
  757. package/src/Test/index.ts +0 -2
  758. package/src/Util/FileLogger.ts +0 -20
@@ -0,0 +1,309 @@
1
+ /**
2
+ * The core of the Alchemist operations: the builds they choose from (with
3
+ * or without the stack's program, or providers only), and the stack
4
+ * {@link plan} → {@link apply} pair deploys and destroys share. Drift and
5
+ * nuke have their own namespaces.
6
+ */
7
+ import * as ConfigProvider from "effect/ConfigProvider";
8
+ import * as Context from "effect/Context";
9
+ import * as Effect from "effect/Effect";
10
+ import * as Layer from "effect/Layer";
11
+ import * as Logger from "effect/Logger";
12
+ import * as Option from "effect/Option";
13
+ import { CurrentLogAnnotations, CurrentLogSpans, MinimumLogLevel } from "effect/References";
14
+ import * as Tracer from "effect/Tracer";
15
+ import { AdoptPolicy } from "../AdoptPolicy.ts";
16
+ import { AlchemyContext } from "../AlchemyContext.ts";
17
+ import * as Apply from "../Apply.ts";
18
+ import { ArtifactStore, createArtifactStore } from "../Artifacts.ts";
19
+ import { withProfileOverride } from "../Auth/Resolve.ts";
20
+ import { emit, type PlannedAction, type PlannedResource } from "../Events.ts";
21
+ import * as Plan from "../Plan.ts";
22
+ import type { ResourceSelection, SelectionOutput } from "../ResourceSelection.ts";
23
+ import * as Stack from "../Stack.ts";
24
+ import { Stage } from "../Stage.ts";
25
+ import type { State } from "../State/State.ts";
26
+ import { loadConfigProvider, StackConfigOverrides } from "../Util/ConfigProvider.ts";
27
+
28
+ /** Which credentials and config a stack build sees. */
29
+ export interface ConfigOptions {
30
+ /** `.env` file layered under the process environment. */
31
+ readonly envFile?: string;
32
+ /** Profile whose credentials the run uses. Falls back to the active profile. */
33
+ readonly profile?: string;
34
+ }
35
+
36
+ export interface BuildOptions extends ConfigOptions {
37
+ readonly stage: string;
38
+ /** Run local (emulated) providers instead of the real cloud. */
39
+ readonly dev?: boolean;
40
+ /** Adopt pre-existing cloud resources instead of failing on conflict. */
41
+ readonly adopt?: boolean;
42
+ /** Upgrade an out-of-date state store without prompting. */
43
+ readonly updateStateStore?: boolean;
44
+ }
45
+
46
+ /** Config services shared by every stack build. */
47
+ export const configServices = Effect.fn("Alchemist.configServices")(function* (
48
+ options: ConfigOptions,
49
+ ) {
50
+ const envFile = Option.fromNullishOr(options.envFile);
51
+ const commandConfig = yield* loadConfigProvider(envFile);
52
+ // `envFile` only steers a stack's default secrets list and `profile`
53
+ // pins the profile inside it; see stackConfigLayer.
54
+ return Layer.mergeAll(
55
+ Layer.succeed(StackConfigOverrides, {
56
+ envFile: options.envFile,
57
+ profile: options.profile,
58
+ }),
59
+ ConfigProvider.layer(withProfileOverride(commandConfig, options.profile)),
60
+ );
61
+ });
62
+
63
+ // TODO(unify stack builds): the one stack build everything should use; see
64
+ // the TODO in `EvalStack.ts` for the other paths still to migrate here.
65
+
66
+ /** The per-build services a stack's providers and program run under. */
67
+ const buildServices = Effect.fn("Alchemist.buildServices")(function* (options: BuildOptions) {
68
+ yield* emit({ type: "plan.phase", phase: "resolving-services" });
69
+ return yield* Layer.build(
70
+ Layer.mergeAll(
71
+ Layer.effect(
72
+ AlchemyContext,
73
+ Effect.map(AlchemyContext, (context) => ({
74
+ ...context,
75
+ dev: options.dev ?? context.dev,
76
+ adopt: options.adopt ?? false,
77
+ updateStateStore: options.updateStateStore ?? false,
78
+ })),
79
+ ),
80
+ Layer.succeedContext(
81
+ Context.make(AdoptPolicy, options.adopt ?? false).pipe(
82
+ Context.add(ArtifactStore, createArtifactStore()),
83
+ Context.add(Stage, options.stage),
84
+ ),
85
+ ),
86
+ yield* configServices(options),
87
+ ),
88
+ );
89
+ });
90
+
91
+ /**
92
+ * The building fiber's logging and tracing, dropped from a built context:
93
+ * a plan or scan is applied later, and possibly under other loggers (an
94
+ * `onEvent` subscriber around `apply`), which providing the captured ones
95
+ * would silently replace.
96
+ */
97
+ const withoutFiberLogging = Context.omit(
98
+ Logger.CurrentLoggers,
99
+ MinimumLogLevel,
100
+ CurrentLogAnnotations,
101
+ CurrentLogSpans,
102
+ Tracer.ParentSpan,
103
+ );
104
+
105
+ /**
106
+ * Build a stack's providers and state store and run its program.
107
+ *
108
+ * @internal used by {@link plan} and `Logs`.
109
+ */
110
+ export const buildStack = Effect.fn("Alchemist.build")(function* <Output, Req>(
111
+ stack: Stack.ConfiguredStack<Output, Req>,
112
+ options: BuildOptions,
113
+ ) {
114
+ const baseContext = yield* buildServices(options);
115
+ const compiled = yield* Effect.provide(stack, baseContext);
116
+ return {
117
+ stack: compiled,
118
+ /** The stack's own providers and state store over the build's services. */
119
+ context: withoutFiberLogging(Context.merge(baseContext, compiled.services)),
120
+ };
121
+ });
122
+
123
+ /**
124
+ * Build a stack's providers and state store without running its program:
125
+ * all that destroy, drift, and state access need, and safe when the
126
+ * program itself no longer runs.
127
+ *
128
+ * @internal used by {@link plan}, `Drift.scan`, and `State.store`.
129
+ */
130
+ export const buildWithoutProgram = Effect.fn("Alchemist.buildWithoutProgram")(function* <Req>(
131
+ stack: Stack.ConfiguredStack<unknown, Req>,
132
+ options: BuildOptions,
133
+ ) {
134
+ const baseContext = yield* buildServices(options);
135
+ const stackServices = yield* Effect.provide(
136
+ Stack.build({
137
+ name: stack.stackName,
138
+ providers: stack.providers,
139
+ state: stack.state,
140
+ secrets: stack.secrets,
141
+ }),
142
+ baseContext,
143
+ );
144
+ return {
145
+ stack: { ...Context.get(stackServices, Stack.Stack), output: undefined },
146
+ context: withoutFiberLogging(Context.merge(baseContext, stackServices)),
147
+ };
148
+ });
149
+
150
+ export interface PlanSummary {
151
+ readonly create: number;
152
+ readonly update: number;
153
+ readonly adopted: number;
154
+ readonly replace: number;
155
+ readonly delete: number;
156
+ readonly orphaned: number;
157
+ /** Actions that will run. */
158
+ readonly run: number;
159
+ readonly noop: number;
160
+ }
161
+
162
+ /** Whether a plan or drift scan proposes any cloud mutations (i.e. approval-worthy work). */
163
+ export const hasChanges = ({ summary }: { readonly summary: PlanSummary }): boolean =>
164
+ summary.create +
165
+ summary.update +
166
+ summary.adopted +
167
+ summary.replace +
168
+ summary.delete +
169
+ summary.orphaned +
170
+ summary.run >
171
+ 0;
172
+
173
+ export const summarize = (plan: Plan.Plan): PlanSummary => {
174
+ const summary: { -readonly [K in keyof PlanSummary]: PlanSummary[K] } = {
175
+ create: 0,
176
+ update: 0,
177
+ adopted: 0,
178
+ replace: 0,
179
+ delete: 0,
180
+ orphaned: 0,
181
+ run: 0,
182
+ noop: 0,
183
+ };
184
+ for (const node of Object.values(plan.resources)) summary[node.action]++;
185
+ for (const node of Object.values(plan.actions)) summary[node.action]++;
186
+ for (const node of [...Object.values(plan.deletions), ...Object.values(plan.actionDeletions)]) {
187
+ if (node !== undefined) summary[node.action]++;
188
+ }
189
+ return summary;
190
+ };
191
+
192
+ /** The services a stack plan is applied under. */
193
+ type StackContext = Context.Context<State | Stack.Stack | Stage>;
194
+
195
+ /**
196
+ * A deploy or destroy plan: what will change, and the built stack it was
197
+ * planned against so {@link apply} runs without rebuilding.
198
+ */
199
+ export interface StackPlan<Output = unknown> {
200
+ readonly stack: { readonly name: string; readonly stage: string };
201
+ readonly summary: PlanSummary;
202
+ /** Serializable resource rows (including orphan deletions). */
203
+ readonly resources: ReadonlyArray<PlannedResource>;
204
+ /** Serializable stack-action rows. */
205
+ readonly actions: ReadonlyArray<PlannedAction>;
206
+ /**
207
+ * The engine plan `apply` executes, for renderers.
208
+ * @internal its shape may change.
209
+ */
210
+ readonly native: Plan.Plan<Output>;
211
+ /**
212
+ * The stack services the plan was computed under; they live in the caller's `Scope`.
213
+ * @internal `apply` runs in them.
214
+ */
215
+ readonly context: StackContext;
216
+ }
217
+
218
+ /** Describe an engine plan computed on a built stack. */
219
+ export const describeStackPlan = Effect.fn("Alchemist.describeStackPlan")(function* <Output>(
220
+ built: {
221
+ readonly stack: { readonly name: string; readonly stage: string };
222
+ readonly context: StackContext;
223
+ },
224
+ native: Plan.Plan<Output>,
225
+ ) {
226
+ yield* emit({ type: "plan.phase", phase: "plan-ready" });
227
+ return {
228
+ stack: { name: built.stack.name, stage: built.stack.stage },
229
+ summary: summarize(native),
230
+ ...Plan.describePlan(native),
231
+ native,
232
+ context: built.context,
233
+ } satisfies StackPlan<Output>;
234
+ });
235
+
236
+ /**
237
+ * Run the stack's program and plan what to create, update, replace, and
238
+ * delete so the stage matches it.
239
+ */
240
+ export interface DeployPlanOptions extends BuildOptions, ResourceSelection {
241
+ readonly operation: "deploy";
242
+ /** Re-run every Action regardless of input drift. */
243
+ readonly force?: boolean;
244
+ }
245
+
246
+ /**
247
+ * Plan deleting everything the stage owns. The program never runs, so this
248
+ * works even when it no longer does. Always the whole stage.
249
+ */
250
+ export interface DestroyPlanOptions extends BuildOptions {
251
+ readonly operation: "destroy";
252
+ }
253
+
254
+ export type PlanOptions = DeployPlanOptions | DestroyPlanOptions;
255
+
256
+ /** What applying a plan made with `O` returns. */
257
+ export type PlanOutput<Output, O extends PlanOptions> = O extends { readonly operation: "destroy" }
258
+ ? undefined
259
+ : SelectionOutput<Output, O>;
260
+
261
+ /**
262
+ * Plan a deploy or a destroy of `stack`. A filtered deploy plan applies to
263
+ * `undefined` and leaves the persisted stack output untouched. The build,
264
+ * and the stage's state-store lease, stay open until the surrounding
265
+ * `Scope` closes.
266
+ */
267
+ export const plan = Effect.fn("Alchemist.plan")(function* <
268
+ Output,
269
+ Req,
270
+ const O extends PlanOptions,
271
+ >(input: O & { readonly stack: Stack.ConfiguredStack<Output, Req> }) {
272
+ if (input.operation === "destroy") {
273
+ const built = yield* buildWithoutProgram(input.stack, input);
274
+ const native = yield* Plan.destroy(built.stack).pipe(Effect.provide(built.context));
275
+ // SAFETY: `operation: "destroy"` is exactly when PlanOutput is `undefined`.
276
+ return (yield* describeStackPlan(built, native)) as StackPlan<PlanOutput<Output, O>>;
277
+ }
278
+ // `operation` is "deploy" here; a generic `O` doesn't narrow.
279
+ const deploy: DeployPlanOptions = input;
280
+ const built = yield* buildStack(input.stack, deploy);
281
+ const native = yield* Plan.make(built.stack, {
282
+ force: deploy.force,
283
+ include: deploy.include,
284
+ exclude: deploy.exclude,
285
+ }).pipe(Effect.provide(built.context));
286
+ // SAFETY: for `deploy`, PlanOutput is the selection's output.
287
+ return (yield* describeStackPlan(built, native)) as StackPlan<PlanOutput<Output, O>>;
288
+ });
289
+
290
+ /** Run a plan; a deploy returns the stack's output. */
291
+ export const apply = Effect.fn("Alchemist.apply")(function* <Output>(plan: StackPlan<Output>) {
292
+ return yield* Effect.provide(Apply.apply(plan.native), plan.context);
293
+ });
294
+
295
+ /** Stage used when a stack's providers are built without addressing a deployment. */
296
+ export const PLACEHOLDER_STAGE = "placeholder";
297
+
298
+ /**
299
+ * Build a stack's providers and state store without running its program or
300
+ * addressing a stage: what account-wide operations like `Nuke.scan` need.
301
+ */
302
+ export const buildProviders = <Req>(
303
+ stack: Stack.ConfiguredStack<unknown, Req>,
304
+ options: ConfigOptions = {},
305
+ ) =>
306
+ Effect.map(
307
+ buildWithoutProgram(stack, { ...options, stage: PLACEHOLDER_STAGE }),
308
+ (built) => built.context,
309
+ );
@@ -1,17 +1,18 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Option from "effect/Option";
3
3
  import * as Redacted from "effect/Redacted";
4
- import { AuthError } from "../../Auth/AuthProvider.ts";
5
- import { CredentialsStore } from "../../Auth/Credentials.ts";
6
- import { inspectProvider, type ProviderConnection } from "../../Auth/Inspect.ts";
7
- import { withProfileCredentialsLock } from "../../Auth/Lock.ts";
8
- import { ProfileStore } from "../../Auth/Profile.ts";
9
- import type { Interaction } from "../../Interaction.ts";
10
- import { AlchemistInvalidInput, AlchemistNotFound } from "../Errors.ts";
11
- import { Progress } from "../Progress.ts";
12
- import { collectAuthProviders, DEFAULT_ENTRYPOINT, type Target } from "../Session.ts";
4
+ import { AuthError } from "../Auth/AuthProvider.ts";
5
+ import { CredentialsStore } from "../Auth/Credentials.ts";
6
+ import { inspectProvider, type ProviderConnection } from "../Auth/Inspect.ts";
7
+ import { withProfileCredentialsLock } from "../Auth/Lock.ts";
8
+ import { ProfileStore, reloadProviderConfig } from "../Auth/Profile.ts";
9
+ import { emit } from "../Events.ts";
10
+ import type { Interaction } from "../Interaction.ts";
11
+ import { collectAuthProviders } from "./AuthRegistry.ts";
12
+ import { DEFAULT_ENTRYPOINT, type Target } from "./Entrypoint.ts";
13
+ import { AlchemistInvalidInput, AlchemistNotFound } from "./Errors.ts";
13
14
 
14
- /** Which project/profile pair a provider-scoped route resolves against. */
15
+ /** Which project/profile pair a provider-scoped operation resolves against. */
15
16
  export interface ProviderContext extends Target {
16
17
  readonly profile: string;
17
18
  }
@@ -25,7 +26,7 @@ export interface ProfileSummary {
25
26
  }>;
26
27
  }
27
28
 
28
- export type { ProviderConnection } from "../../Auth/Inspect.ts";
29
+ export type { ProviderConnection } from "../Auth/Inspect.ts";
29
30
 
30
31
  export interface ProfileSnapshot {
31
32
  readonly name: string;
@@ -139,7 +140,7 @@ export const get = Effect.fn("Alchemist.profile.get")(function* (input: {
139
140
  }),
140
141
  ),
141
142
  ),
142
- )
143
+ ).pipe(Effect.provideService(ProfileStore, profiles))
143
144
  : Effect.succeed({
144
145
  name: provider,
145
146
  method: config.method ?? "unknown",
@@ -234,15 +235,14 @@ export const configureForm = Effect.fn("Alchemist.profile.configureForm")(functi
234
235
 
235
236
  /**
236
237
  * Connect or reconfigure a provider in a profile. Reported through
237
- * {@link Progress} as `ProviderConfigureStarted`; interactive providers drive
238
+ * the `provider.configure.started` event; interactive providers drive
238
239
  * their own prompts.
239
240
  */
240
241
  export const configure = Effect.fn("Alchemist.profile.configure")(function* (
241
242
  input: ConfigureInput,
242
243
  ) {
243
- const report = yield* Progress;
244
- yield* report({
245
- _tag: "provider.configure.started",
244
+ yield* emit({
245
+ type: "provider.configure.started",
246
246
  provider: input.provider,
247
247
  });
248
248
  const profiles = yield* ProfileStore;
@@ -278,8 +278,8 @@ export const configure = Effect.fn("Alchemist.profile.configure")(function* (
278
278
  : undefined,
279
279
  );
280
280
  yield* profiles.setProviderConfig(input.profile, input.provider, config);
281
- yield* report({
282
- _tag: "provider.configure.completed",
281
+ yield* emit({
282
+ type: "provider.configure.completed",
283
283
  provider: input.provider,
284
284
  });
285
285
  return yield* get({
@@ -317,14 +317,13 @@ export const removeProvider = Effect.fn("Alchemist.profile.removeProvider")(func
317
317
 
318
318
  /**
319
319
  * Re-run login for connected providers without reconfiguring them. Each
320
- * provider is reported through {@link Progress} as `ProviderRefreshStarted`.
320
+ * provider is reported as the `provider.refresh.started` event.
321
321
  */
322
322
  export const refresh = Effect.fn("Alchemist.profile.refresh")(function* (
323
323
  input: ProviderContext & {
324
324
  readonly providers?: ReadonlyArray<string>;
325
325
  },
326
326
  ) {
327
- const report = yield* Progress;
328
327
  const profiles = yield* ProfileStore;
329
328
  const stored = yield* profiles.ensureProfile(input.profile);
330
329
  const registered = yield* registry(input);
@@ -356,7 +355,7 @@ export const refresh = Effect.fn("Alchemist.profile.refresh")(function* (
356
355
  message: `Provider '${name}' is not connected or registered.`,
357
356
  });
358
357
  }
359
- yield* report({ _tag: "provider.refresh.started", provider: name });
358
+ yield* emit({ type: "provider.refresh.started", provider: name });
360
359
  const refreshed = yield* provider.login(
361
360
  input.profile,
362
361
  yield* provider.decodeConfig(input.profile, config),
@@ -369,11 +368,12 @@ export const refresh = Effect.fn("Alchemist.profile.refresh")(function* (
369
368
  }),
370
369
  ),
371
370
  ),
371
+ reloadProviderConfig(profiles, provider, input.profile),
372
372
  );
373
373
  if (refreshed !== undefined) {
374
374
  yield* profiles.setProviderConfig(input.profile, name, refreshed);
375
375
  }
376
- yield* report({ _tag: "provider.refresh.completed", provider: name });
376
+ yield* emit({ type: "provider.refresh.completed", provider: name });
377
377
  }
378
378
  return yield* get({
379
379
  name: input.profile,
@@ -1,12 +1,13 @@
1
1
  import * as ConfigProvider from "effect/ConfigProvider";
2
2
  import * as Effect from "effect/Effect";
3
3
  import * as Option from "effect/Option";
4
- import type { EnvironmentVariable } from "../../Auth/AuthProvider.ts";
5
- import { getEnv } from "../../Auth/Env.ts";
6
- import { resolveProfileName } from "../../Auth/Resolve.ts";
7
- import { loadConfigProvider } from "../../Util/ConfigProvider.ts";
8
- import { AlchemistInvalidInput } from "../Errors.ts";
9
- import { collectAuthProviders, DEFAULT_ENTRYPOINT, type Target } from "../Session.ts";
4
+ import type { EnvironmentVariable } from "../Auth/AuthProvider.ts";
5
+ import { getEnv } from "../Auth/Env.ts";
6
+ import { resolveProfileName } from "../Auth/Resolve.ts";
7
+ import { loadConfigProvider } from "../Util/ConfigProvider.ts";
8
+ import { collectAuthProviders } from "./AuthRegistry.ts";
9
+ import { DEFAULT_ENTRYPOINT, type Target } from "./Entrypoint.ts";
10
+ import { AlchemistInvalidInput } from "./Errors.ts";
10
11
 
11
12
  export interface CheckEnvironmentInput extends Target {
12
13
  /** Providers to check. Omitted means every registered provider. */
@@ -1,20 +1,56 @@
1
1
  import * as ConfigProvider from "effect/ConfigProvider";
2
+ import * as Effect from "effect/Effect";
2
3
  import * as FetchHttpClient from "effect/http/FetchHttpClient";
4
+ import type { HttpClient } from "effect/http/HttpClient";
3
5
  import * as Layer from "effect/Layer";
4
- import { AlchemyContextLive } from "../AlchemyContext.ts";
6
+ import * as Logger from "effect/Logger";
7
+ import * as LogLevel from "effect/LogLevel";
8
+ import type { PlatformError } from "effect/PlatformError";
9
+ import { type AlchemyContext, AlchemyContextLive } from "../AlchemyContext.ts";
5
10
  import { ArtifactStore, createArtifactStore } from "../Artifacts.ts";
6
- import { CredentialsStoreLive } from "../Auth/Credentials.ts";
7
- import { ProfileStoreLive } from "../Auth/Profile.ts";
11
+ import { type CredentialsStore, CredentialsStoreLive } from "../Auth/Credentials.ts";
12
+ import { type ProfileStore, ProfileStoreLive } from "../Auth/Profile.ts";
8
13
  import * as Interaction from "../Interaction.ts";
14
+ import { makePlainConsoleSink } from "../Util/ConsoleSink.ts";
9
15
  import { PlatformServices } from "../Util/PlatformServices.ts";
10
- import { routeCacheLayer } from "./Session.ts";
16
+ import { authRegistryLayer } from "./AuthRegistry.ts";
17
+
18
+ /** The services {@link layer} provides; every Alchemist operation runs under them. */
19
+ export type Services =
20
+ | AlchemyContext
21
+ | ArtifactStore
22
+ | CredentialsStore
23
+ | HttpClient
24
+ | Interaction.Interaction
25
+ | ProfileStore
26
+ | PlatformServices;
27
+
28
+ /**
29
+ * Log lines on the console. The caller's own loggers stay; only Effect's
30
+ * default console logger gives way to this sink, so lines print once. Typed
31
+ * events are left to `onEvent` subscribers (a renderer, or the caller's own
32
+ * handler).
33
+ *
34
+ * Info and above only: records replayed from sidecars and child processes
35
+ * bypass the fiber's minimum level, so the sink applies its own.
36
+ */
37
+ const consoleSink = makePlainConsoleSink();
38
+ const ConsoleLog = Layer.unwrap(
39
+ Effect.map(Logger.CurrentLoggers, (current) =>
40
+ Logger.layer([
41
+ ...[...current].filter((logger) => logger !== Logger.defaultLogger),
42
+ Logger.make<unknown, void>((options) => {
43
+ if (LogLevel.isGreaterThanOrEqualTo(options.logLevel, "Info")) consoleSink.log(options);
44
+ }),
45
+ ]),
46
+ ),
47
+ );
11
48
 
12
49
  /**
13
50
  * All services required by the programmatic Alchemist API.
14
51
  *
15
- * Progress reporting remains caller-controlled: without an override the
16
- * default reporter is a no-op, while interactive and plain renderers can
17
- * provide {@link import("./Progress.ts").Progress} around individual calls.
52
+ * Log lines print on the console. Typed events are log records too; observe
53
+ * them around a call with {@link import("../Events.ts").onEvent}.
18
54
  * The non-interactive Interaction default serves the engine paths that need
19
55
  * one (state-store confirms fail typed; profile probes never prompt).
20
56
  *
@@ -25,10 +61,7 @@ import { routeCacheLayer } from "./Session.ts";
25
61
  * )
26
62
  * ```
27
63
  */
28
- /** The services {@link layer} provides; every Alchemist route runs under them. */
29
- export type Services = Layer.Success<ReturnType<typeof layer>>;
30
-
31
- export const layer = () =>
64
+ export const layer = (): Layer.Layer<Services, PlatformError> =>
32
65
  Layer.mergeAll(
33
66
  Layer.mergeAll(AlchemyContextLive, ProfileStoreLive, CredentialsStoreLive).pipe(
34
67
  Layer.provideMerge(PlatformServices),
@@ -36,6 +69,7 @@ export const layer = () =>
36
69
  FetchHttpClient.layer,
37
70
  ConfigProvider.layer(ConfigProvider.fromEnv()),
38
71
  Layer.succeed(ArtifactStore, createArtifactStore()),
39
- routeCacheLayer,
40
72
  Interaction.layerNonInteractive(),
73
+ ConsoleLog,
74
+ authRegistryLayer,
41
75
  );