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,164 @@
1
+ import * as Cause from "effect/Cause";
2
+ import * as Context from "effect/Context";
3
+ import * as Duration from "effect/Duration";
4
+ import * as Effect from "effect/Effect";
5
+ import * as FileSystem from "effect/FileSystem";
6
+ import * as Layer from "effect/Layer";
7
+ import * as Option from "effect/Option";
8
+ import type { PlatformError } from "effect/PlatformError";
9
+ import * as Schema from "effect/Schema";
10
+ import * as Scope from "effect/Scope";
11
+ import { AuthError, AuthProviders } from "../Auth/AuthProvider.ts";
12
+ import { SuppressMissingProviderConfig } from "../Auth/Profile.ts";
13
+ import * as Contributions from "../Contributions.ts";
14
+ import type { ContributionError } from "../Contributions.ts";
15
+ import { makeCachedFunction } from "../Util/cached-function.ts";
16
+ import { DEFAULT_ENTRYPOINT, importStack } from "./Entrypoint.ts";
17
+ import * as Operations from "./Operations.ts";
18
+ import type { Services } from "./Runtime.ts";
19
+
20
+ // Every auth provider a project can reach: what `alchemy profile` and
21
+ // `alchemy provider check-env` list and configure. Collected by building the
22
+ // installed providers' auth and the project's providers into one registry.
23
+
24
+ /** What collecting an auth registry can fail with. */
25
+ export type CollectAuthProvidersError = AuthError | ContributionError | PlatformError;
26
+
27
+ /** What collecting an auth registry runs under. */
28
+ export type CollectAuthProvidersServices = Services | Scope.Scope;
29
+
30
+ type CollectAuthProviders = (
31
+ options: CollectAuthProvidersOptions,
32
+ ) => Effect.Effect<
33
+ AuthProviders["Service"],
34
+ CollectAuthProvidersError,
35
+ CollectAuthProvidersServices
36
+ >;
37
+
38
+ export interface CollectAuthProvidersOptions {
39
+ readonly main: string;
40
+ readonly envFile: Option.Option<string>;
41
+ readonly profile: string;
42
+ }
43
+
44
+ /**
45
+ * Every provider's auth provider, merged into one registering layer. One
46
+ * provider whose auth fails to load is skipped with a warning, so it can't
47
+ * take every other provider's auth down with it.
48
+ */
49
+ const contributedAuth = Effect.gen(function* () {
50
+ const layers = yield* Effect.forEach(
51
+ yield* Contributions.load(),
52
+ (provider) =>
53
+ provider.auth
54
+ ? Contributions.resolve(provider, "auth", provider.auth).pipe(
55
+ Effect.catch((error) => Effect.as(Effect.logWarning(error.message), Layer.empty)),
56
+ )
57
+ : Effect.succeed(Layer.empty),
58
+ { concurrency: "unbounded" },
59
+ );
60
+ return Layer.mergeAll(Layer.empty, ...layers);
61
+ });
62
+
63
+ /** Register every installed provider's auth into the ambient registry. */
64
+ const registerContributedAuth = Effect.fn("registerContributedAuth")(function* (options: {
65
+ readonly envFile: Option.Option<string>;
66
+ readonly profile: string;
67
+ }) {
68
+ const shared = yield* Operations.configServices({
69
+ ...options,
70
+ envFile: Option.getOrUndefined(options.envFile),
71
+ });
72
+ yield* Layer.build(Layer.provide(yield* contributedAuth, shared));
73
+ });
74
+
75
+ const isMissingProviderConfig = Schema.is(
76
+ Schema.Struct({ _tag: Schema.Literals(["MissingProviderConfig"]) }),
77
+ );
78
+
79
+ /**
80
+ * Every auth provider reachable from the current project: the built-ins, plus
81
+ * whatever the user's stack module registers when it is importable.
82
+ */
83
+ const collectAuthProvidersUncached = Effect.fn("collectAuthProvidersUncached")(
84
+ function* (options: CollectAuthProvidersOptions) {
85
+ // Everything built below registers into this one registry: the
86
+ // registry layers reuse an ambient registry instead of starting fresh.
87
+ const authProviders: AuthProviders["Service"] = {};
88
+ const collect = Effect.provideService(AuthProviders, authProviders);
89
+ yield* registerContributedAuth(options).pipe(collect);
90
+
91
+ const fs = yield* FileSystem.FileSystem;
92
+ const entrypointExists = yield* fs.exists(options.main);
93
+ const missingDefault = options.main === DEFAULT_ENTRYPOINT && !entrypointExists;
94
+ if (!entrypointExists && !missingDefault) {
95
+ return yield* AuthError.make({
96
+ message: `Stack entrypoint '${options.main}' does not exist.`,
97
+ });
98
+ }
99
+ if (!missingDefault) {
100
+ yield* importStack(options.main).pipe(
101
+ Effect.flatMap((stack) =>
102
+ Operations.buildProviders(stack, {
103
+ profile: options.profile,
104
+ envFile: Option.getOrUndefined(options.envFile),
105
+ }),
106
+ ),
107
+ collect,
108
+ Effect.timeoutOption(Duration.seconds(15)),
109
+ Effect.catchCause((cause) => {
110
+ const suppressed = cause.reasons.some((reason) => {
111
+ const error = Cause.isFailReason(reason)
112
+ ? reason.error
113
+ : Cause.isDieReason(reason)
114
+ ? reason.defect
115
+ : undefined;
116
+ return isMissingProviderConfig(error);
117
+ });
118
+ return suppressed
119
+ ? Effect.void
120
+ : Effect.fail(
121
+ AuthError.make({
122
+ message: `Could not load auth providers from '${options.main}'.`,
123
+ cause,
124
+ }),
125
+ );
126
+ }),
127
+ );
128
+ }
129
+ return authProviders;
130
+ },
131
+ Effect.provideService(SuppressMissingProviderConfig, true),
132
+ );
133
+
134
+ /**
135
+ * Collects auth registries. Uncached by default; {@link authRegistryLayer}
136
+ * memoizes them for its own lifetime.
137
+ */
138
+ const AuthRegistry = Context.Reference<CollectAuthProviders>("Alchemy/Alchemist/AuthRegistry", {
139
+ defaultValue: () => collectAuthProvidersUncached,
140
+ });
141
+
142
+ /**
143
+ * Memoize auth registries for one command or API runtime: profile flows
144
+ * collect them repeatedly, and concurrent collections of the same project
145
+ * share one. Registries are built in this layer's scope, so a cached one
146
+ * never outlives the services its providers captured. Failures are not
147
+ * cached.
148
+ */
149
+ export const authRegistryLayer = Layer.effect(
150
+ AuthRegistry,
151
+ Effect.map(Effect.scope, (scope) =>
152
+ makeCachedFunction(
153
+ (options: CollectAuthProvidersOptions) =>
154
+ collectAuthProvidersUncached(options).pipe(Scope.provide(scope)),
155
+ {
156
+ key: ([options]) =>
157
+ JSON.stringify([options.main, Option.getOrNull(options.envFile), options.profile]),
158
+ },
159
+ ),
160
+ ),
161
+ );
162
+
163
+ export const collectAuthProviders = (options: CollectAuthProvidersOptions) =>
164
+ Effect.flatMap(AuthRegistry, (collect) => collect(options));
@@ -0,0 +1,103 @@
1
+ import type * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as EngineDrift from "../Drift.ts";
4
+ import { emit } from "../Events.ts";
5
+ import type { Plan } from "../Plan.ts";
6
+ import type { ConfiguredStack } from "../Stack.ts";
7
+ import type { State } from "../State/State.ts";
8
+ import {
9
+ buildWithoutProgram,
10
+ summarize,
11
+ type BuildOptions,
12
+ type PlanSummary,
13
+ } from "./Operations.ts";
14
+
15
+ export interface DriftedResource {
16
+ readonly fqn: string;
17
+ readonly logicalId: string;
18
+ readonly resourceType: string;
19
+ /** `skipped`: not checked (no `read`, or an interrupted deploy); see `reason`. */
20
+ readonly status: "in-sync" | "drifted" | "missing" | "skipped";
21
+ readonly reason?: string;
22
+ readonly actual?: unknown;
23
+ }
24
+
25
+ /** A drift check and the repair it proposes; only {@link execute} runs it. */
26
+ export interface DriftScan {
27
+ readonly stack: { readonly name: string; readonly stage: string };
28
+ readonly resources: ReadonlyArray<DriftedResource>;
29
+ /** What the repair would change. */
30
+ readonly summary: PlanSummary;
31
+ /**
32
+ * The repair as an engine plan, for renderers.
33
+ * @internal its shape may change.
34
+ */
35
+ readonly native: Plan;
36
+ /**
37
+ * The stack services drift was checked under.
38
+ * @internal {@link execute} runs in them.
39
+ */
40
+ readonly context: Context.Context<State>;
41
+ }
42
+
43
+ export interface ScanOptions extends BuildOptions {
44
+ readonly stack: ConfiguredStack<unknown, unknown>;
45
+ }
46
+
47
+ /** Whether the drift check found anything worth repairing. */
48
+ export const hasDrift = (scan: DriftScan): boolean =>
49
+ scan.resources.some((resource) => resource.status === "drifted" || resource.status === "missing");
50
+
51
+ const status = (action: string): DriftedResource["status"] =>
52
+ action === "unchanged"
53
+ ? "in-sync"
54
+ : action === "missing" || action === "skipped"
55
+ ? action
56
+ : "drifted";
57
+
58
+ /**
59
+ * Compare deployed state against the real cloud and plan the repair. Drift
60
+ * reads state and providers only, so the stack's program never runs.
61
+ */
62
+ export const scan = Effect.fn("Alchemist.Drift.scan")(function* (input: ScanOptions) {
63
+ const built = yield* buildWithoutProgram(input.stack, input);
64
+ const identity = {
65
+ name: built.stack.name,
66
+ stage: built.stack.stage,
67
+ };
68
+ // The engine's phase and per-resource observation events flow through the
69
+ // log as events; drift-flavored wording is the renderer's job
70
+ // (renderPlanning's computingLabel).
71
+ const { result, plan } = yield* EngineDrift.plan(identity).pipe(Effect.provide(built.context));
72
+ yield* emit({ type: "plan.phase", phase: "plan-ready" });
73
+ return {
74
+ stack: identity,
75
+ resources: Object.values(result.resources).map((resource) => ({
76
+ fqn: resource.fqn,
77
+ logicalId: resource.logicalId,
78
+ resourceType: resource.resourceType,
79
+ status: status(resource.action),
80
+ reason: resource.reason,
81
+ actual: resource.attr,
82
+ })),
83
+ summary: summarize(plan),
84
+ native: plan,
85
+ context: built.context,
86
+ } satisfies DriftScan;
87
+ });
88
+
89
+ /**
90
+ * Repair the drift `scan` found: reconcile each drifted or missing resource
91
+ * back to its last-deployed desired state. Only those resources are touched;
92
+ * they are re-read first, so one that is back in sync is left alone, and
93
+ * drift that appeared after the scan waits for the next one.
94
+ */
95
+ export const execute = Effect.fn("Alchemist.Drift.execute")(function* (scan: DriftScan) {
96
+ const only = scan.resources
97
+ .filter((resource) => resource.status === "drifted" || resource.status === "missing")
98
+ .map((resource) => resource.fqn);
99
+ return yield* Effect.provide(
100
+ EngineDrift.repair({ name: scan.stack.name, stage: scan.stack.stage }, { only }),
101
+ scan.context,
102
+ );
103
+ });
@@ -1,7 +1,12 @@
1
+ import { pathToFileURL } from "node:url";
2
+ import * as Context from "effect/Context";
1
3
  import * as Data from "effect/Data";
2
4
  import * as Effect from "effect/Effect";
3
5
  import * as FileSystem from "effect/FileSystem";
4
6
  import * as Path from "effect/Path";
7
+ import * as Predicate from "effect/Predicate";
8
+ import { emit } from "../Events.ts";
9
+ import type { ConfiguredStack } from "../Stack.ts";
5
10
  import { UserFacingError } from "../UserFacingError.ts";
6
11
 
7
12
  export class StackEntrypointError extends Data.TaggedError("StackEntrypointError")<{
@@ -14,9 +19,8 @@ export const DEFAULT_ENTRYPOINT = "alchemy.run.ts";
14
19
 
15
20
  /**
16
21
  * The absolute path of the stack entrypoint, or the user-facing error for
17
- * a missing one. Kept apart from `Session.ts` so the `alchemy dev`
18
- * supervisor can check the entry before it starts an exec child, without
19
- * loading the engine that module carries.
22
+ * a missing one. Kept free of the engine so the `alchemy dev` supervisor can
23
+ * check the entry before it starts an exec child.
20
24
  */
21
25
  export const resolveStackEntrypoint = Effect.fn(function* (main: string) {
22
26
  const fs = yield* FileSystem.FileSystem;
@@ -29,3 +33,47 @@ export const resolveStackEntrypoint = Effect.fn(function* (main: string) {
29
33
  }
30
34
  return absolutePath;
31
35
  });
36
+
37
+ export interface StackModuleLoader {
38
+ readonly import: (url: string) => Promise<{ readonly default?: unknown }>;
39
+ }
40
+
41
+ export const StackModuleLoader = Context.Reference<StackModuleLoader>(
42
+ "Alchemy/Alchemist/StackModuleLoader",
43
+ { defaultValue: () => ({ import: (url) => import(url) }) },
44
+ );
45
+
46
+ /**
47
+ * Import a stack entrypoint and return its default export, the stack value
48
+ * every stack operation takes.
49
+ */
50
+ export const importStack = Effect.fn("Alchemist.importStack")(function* (main: string) {
51
+ yield* emit({ type: "plan.phase", phase: "importing-module" });
52
+ const absolutePath = yield* resolveStackEntrypoint(main);
53
+ const loader = yield* StackModuleLoader;
54
+ const module = yield* Effect.promise(() => loader.import(pathToFileURL(absolutePath).href));
55
+ if (
56
+ !Effect.isEffect(module.default) ||
57
+ !Predicate.hasProperty(module.default, "stackName") ||
58
+ typeof module.default.stackName !== "string"
59
+ ) {
60
+ return yield* new StackEntrypointError({
61
+ message: `Stack entrypoint '${main}' must export a default stack definition (export default Alchemy.Stack({...})).`,
62
+ });
63
+ }
64
+ // oxlint-disable-next-line effecttsgo/unsafe-effect-type-assertion -- default export shape validated at runtime above
65
+ return module.default as ConfiguredStack<unknown, unknown>;
66
+ });
67
+
68
+ /**
69
+ * Which project and credentials an operation acts under. The optional fields
70
+ * fall back to the same defaults the CLI uses.
71
+ */
72
+ export interface Target {
73
+ /** Stack entrypoint. @default "alchemy.run.ts" */
74
+ readonly entrypoint?: string;
75
+ /** Profile whose credentials the run uses. Falls back to the active profile. */
76
+ readonly profile?: string;
77
+ /** `.env` file layered under the process environment. */
78
+ readonly envFile?: string;
79
+ }
@@ -13,7 +13,7 @@ export interface Diagnostic {
13
13
  // `InvalidInput` — and these errors travel in unions with cloud errors,
14
14
  // where `catchTag` discriminates by tag alone.
15
15
 
16
- /** The caller sent something the route cannot act on. */
16
+ /** The caller sent something the operation cannot act on. */
17
17
  export class AlchemistInvalidInput extends Data.TaggedError("AlchemistInvalidInput")<{
18
18
  readonly message: string;
19
19
  readonly field?: string;
@@ -1,12 +1,11 @@
1
- import * as Context from "effect/Context";
2
1
  import * as Effect from "effect/Effect";
3
- import * as Layer from "effect/Layer";
4
2
  import * as Stream from "effect/Stream";
5
- import { findProviderByType } from "../../Provider.ts";
6
- import { stampedMode } from "../../ProviderMode.ts";
7
- import * as State from "../../State/index.ts";
8
- import { AlchemistInvalidInput } from "../Errors.ts";
9
- import { open, type StackTarget } from "../Session.ts";
3
+ import { findProviderByType } from "../Provider.ts";
4
+ import { stampedMode } from "../ProviderMode.ts";
5
+ import type { ConfiguredStack } from "../Stack.ts";
6
+ import * as State from "../State/index.ts";
7
+ import { AlchemistInvalidInput } from "./Errors.ts";
8
+ import { buildStack, type BuildOptions } from "./Operations.ts";
10
9
 
11
10
  export interface ResourceIdentity {
12
11
  readonly fqn: string;
@@ -25,32 +24,29 @@ export interface LogEntry {
25
24
  readonly message: string;
26
25
  }
27
26
 
28
- export interface LogInput {
29
- readonly target: StackTarget;
27
+ export interface LogOptions extends BuildOptions {
28
+ readonly stack: ConfiguredStack<unknown, unknown>;
30
29
  /** Logical IDs to include. Empty or omitted means every resource. */
31
30
  readonly resources?: ReadonlyArray<string>;
32
31
  }
33
32
 
34
- export interface QueryInput extends LogInput {
33
+ export interface QueryOptions extends LogOptions {
35
34
  readonly limit?: number;
36
35
  readonly since?: Date;
37
36
  }
38
37
 
39
38
  /**
40
- * Open the stack and pair every deployed resource with the provider that
39
+ * Build the stack and pair every deployed resource with the provider that
41
40
  * can speak for it. `entries` and `tail` differ only in which provider hook
42
- * they then call, so the selection lives here once.
41
+ * they then call, so the selection lives here once. The build lives in the
42
+ * ambient `Scope`; each public function closes its own.
43
43
  */
44
- const select = Effect.fn(function* (input: LogInput) {
45
- const session = yield* open(input.target);
46
- // The local store sits UNDER the session context, so the stack's own
47
- // store wins where it configures one: a project may only wire a remote
48
- // store at deploy time, and `alchemy logs` still has to resolve what was
49
- // deployed.
50
- const context = Context.merge(yield* Layer.build(State.localState()), session.context);
44
+ const select = Effect.fn(function* (input: LogOptions) {
45
+ const built = yield* buildStack(input.stack, input);
46
+ const context = built.context;
51
47
  const selected = new Set(input.resources ?? []);
52
48
  const available = [
53
- ...new Set(Object.values(session.stack.resources).map((resource) => resource.LogicalId)),
49
+ ...new Set(Object.values(built.stack.resources).map((resource) => resource.LogicalId)),
54
50
  ].sort();
55
51
  const unknown = [...selected].find((name) => !available.includes(name));
56
52
  if (unknown !== undefined) {
@@ -61,15 +57,15 @@ const select = Effect.fn(function* (input: LogInput) {
61
57
  }
62
58
  const rows = yield* Effect.provide(
63
59
  Effect.gen(function* () {
64
- const state = yield* yield* State.State;
65
- return yield* Effect.forEach(Object.entries(session.stack.resources), ([fqn, resource]) =>
60
+ const state = yield* Effect.flatten(State.State);
61
+ return yield* Effect.forEach(Object.entries(built.stack.resources), ([fqn, resource]) =>
66
62
  Effect.gen(function* () {
67
63
  if (selected.size > 0 && !selected.has(resource.LogicalId)) {
68
64
  return [];
69
65
  }
70
66
  const stored = yield* state.get({
71
- stack: session.stack.name,
72
- stage: session.stack.stage,
67
+ stack: built.stack.name,
68
+ stage: built.stack.stage,
73
69
  fqn,
74
70
  });
75
71
  if (!State.isResourceState(stored) || stored.attr === undefined) {
@@ -101,17 +97,19 @@ const select = Effect.fn(function* (input: LogInput) {
101
97
  });
102
98
 
103
99
  /** Every deployed resource, with the log capabilities its provider offers. */
104
- export const resources = Effect.fn("Alchemist.logs.resources")(function* (target: StackTarget) {
105
- const { rows } = yield* select({ target });
100
+ export const resources = Effect.fn("Alchemist.Logs.resources")(function* (
101
+ options: BuildOptions & { readonly stack: ConfiguredStack<unknown, unknown> },
102
+ ) {
103
+ const { rows } = yield* select(options);
106
104
  return rows.map(({ resource, provider }): LogResource => ({
107
105
  ...resource,
108
106
  supportsQuery: provider.logs !== undefined,
109
107
  supportsTail: provider.tail !== undefined,
110
108
  }));
111
- });
109
+ }, Effect.scoped);
112
110
 
113
111
  /** Query past log entries across the selected resources, oldest first. */
114
- export const entries = Effect.fn("Alchemist.logs.entries")(function* (input: QueryInput) {
112
+ export const entries = Effect.fn("Alchemist.Logs.entries")(function* (input: QueryOptions) {
115
113
  const { context, rows } = yield* select(input);
116
114
  const entries = yield* Effect.provide(
117
115
  Effect.forEach(rows, ({ resource, provider, request }) =>
@@ -138,10 +136,10 @@ export const entries = Effect.fn("Alchemist.logs.entries")(function* (input: Que
138
136
  context,
139
137
  );
140
138
  return entries.flat().sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
141
- });
139
+ }, Effect.scoped);
142
140
 
143
141
  /** Live-stream log entries from every selected resource that supports it. */
144
- export const tail = (input: LogInput) =>
142
+ export const tail = (input: LogOptions) =>
145
143
  Stream.unwrap(
146
144
  Effect.gen(function* () {
147
145
  const { context, rows } = yield* select(input);
@@ -0,0 +1,90 @@
1
+ import type * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Nuke from "../Nuke.ts";
4
+ import type { ProviderMode } from "../ProviderMode.ts";
5
+ import type { ConfiguredStack } from "../Stack.ts";
6
+ import { buildProviders, type ConfigOptions } from "./Operations.ts";
7
+
8
+ export interface ScanOptions extends ConfigOptions {
9
+ /** The stack whose providers are scanned; nothing reads its state. */
10
+ readonly stack: ConfiguredStack<unknown, unknown>;
11
+ /** Scan the emulators `alchemy dev` runs instead of the real cloud. */
12
+ readonly dev?: boolean;
13
+ /** Provider-id globs to include. Omitted means every provider. */
14
+ readonly include?: ReadonlyArray<string>;
15
+ /** Provider-id globs to exclude. Applied after `include`. */
16
+ readonly exclude?: ReadonlyArray<string>;
17
+ /** Providers scanned in parallel. @default 16 */
18
+ readonly concurrency?: number | "unbounded";
19
+ /** Timeout for each provider's `list`. @default 120 */
20
+ readonly providerTimeoutSeconds?: number;
21
+ }
22
+
23
+ /** One discovered cloud object, bound to the provider that can delete it. */
24
+ export type Resource = Nuke.Target;
25
+
26
+ /** Everything a stack's providers can see; only {@link execute} deletes it. */
27
+ export interface NukeScan {
28
+ /** `local` when the scan ran with `dev: true`, otherwise `live`. */
29
+ readonly mode: ProviderMode;
30
+ readonly resources: ReadonlyArray<Resource>;
31
+ /** Providers whose `list` failed; they contribute no resources. */
32
+ readonly failures: ReadonlyArray<Nuke.ProviderFailure>;
33
+ /**
34
+ * The built provider context; lives in the caller's `Scope`.
35
+ * @internal {@link execute} deletes under it.
36
+ */
37
+ readonly context: Context.Context<never>;
38
+ }
39
+
40
+ /**
41
+ * List everything the stack's registered providers can see in the account.
42
+ * The stack is imported only for its providers: nothing here reads state or
43
+ * is scoped to a stage.
44
+ */
45
+ export const scan = Effect.fn("Alchemist.Nuke.scan")(function* (options: ScanOptions) {
46
+ const mode: ProviderMode = options.dev ? "local" : "live";
47
+ const context = yield* buildProviders(options.stack, options);
48
+ const { resources, failures } = yield* Nuke.list({
49
+ context,
50
+ mode,
51
+ include: options.include,
52
+ exclude: options.exclude,
53
+ concurrency: options.concurrency,
54
+ timeoutSeconds: options.providerTimeoutSeconds,
55
+ });
56
+ return { mode, resources, failures, context } satisfies NukeScan;
57
+ });
58
+
59
+ export interface ExecuteOptions {
60
+ /** The scan whose resources are deleted. */
61
+ readonly scan: NukeScan;
62
+ /** The subset of `scan.resources` to delete. @default every planned resource */
63
+ readonly resources?: ReadonlyArray<Resource>;
64
+ /**
65
+ * `coordinated` deletes in passes until one makes no progress;
66
+ * `independent` retries each resource on its own.
67
+ * @default { type: "coordinated" }
68
+ */
69
+ readonly strategy?: Nuke.Strategy;
70
+ /** Providers deleted in parallel. @default 16 */
71
+ readonly concurrency?: number | "unbounded";
72
+ /** Timeout for each `delete`. @default 120 */
73
+ readonly providerTimeoutSeconds?: number;
74
+ }
75
+
76
+ export type Result = Nuke.Result;
77
+
78
+ /**
79
+ * Permanently delete scanned resources. Progress is emitted through
80
+ * events: `apply.resource.status` and `nuke.*` events.
81
+ */
82
+ export const execute = Effect.fn("Alchemist.Nuke.execute")(function* (options: ExecuteOptions) {
83
+ return yield* Nuke.destroy({
84
+ targets: options.resources ?? options.scan.resources,
85
+ context: options.scan.context,
86
+ strategy: options.strategy ?? { type: "coordinated" },
87
+ concurrency: options.concurrency,
88
+ timeoutSeconds: options.providerTimeoutSeconds,
89
+ });
90
+ });