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
@@ -1,27 +1,28 @@
1
1
  /** @jsxRuntime automatic */
2
2
  /** @jsxImportSource @alchemy.run/sigil */
3
- import { stripVTControlCharacters } from "node:util";
4
- import { AnsiText, Box, render, renderToString, Static, useTitle } from "@alchemy.run/sigil";
3
+ import { AnsiText, Box, render, Static, useTitle } from "@alchemy.run/sigil";
5
4
  import { useSyncExternalStore } from "@alchemy.run/sigil/react";
6
- import * as Cause from "effect/Cause";
7
5
  import * as Context from "effect/Context";
8
6
  import * as Effect from "effect/Effect";
9
- import * as Exit from "effect/Exit";
7
+ import type { ChildProcessSpawner } from "effect/process/ChildProcessSpawner";
10
8
  import type * as Scope from "effect/Scope";
11
9
  import * as Semaphore from "effect/Semaphore";
12
10
  import type { ReactNode } from "react";
13
- import { NonInteractiveTerminal, TerminalCancelled } from "../../../Interaction.ts";
14
- import { setNativeProgress } from "../../../Util/Terminal.ts";
15
- import { ApplicationPresentation, CliKit } from "../../CliKit/CliKit.ts";
11
+ import {
12
+ type BrowserLoginOptions,
13
+ type Interaction,
14
+ type NonInteractiveTerminal,
15
+ openUrl,
16
+ type SessionOptions,
17
+ TerminalCancelled,
18
+ taskFromProgress,
19
+ } from "../../../Interaction.ts";
16
20
  import type {
17
21
  ProgressHandle,
18
22
  ProgressOptions,
19
- RenderOptions,
20
23
  Screen,
21
- MenuOptions,
22
- CliKitCapabilities,
23
- CliKitOptions,
24
- InteractionError,
24
+ TerminalCapabilities,
25
+ TerminalOptions,
25
26
  LiveViewHandle,
26
27
  LiveViewOptions,
27
28
  View,
@@ -31,19 +32,17 @@ import { Spinner, Status } from "../ui/Feedback.tsx";
31
32
  import { useTerminalInput } from "../ui/Interactive.tsx";
32
33
  import { LiveStore, useLiveStore } from "../ui/Live.tsx";
33
34
  import { CancelledPrompt } from "../ui/Transcript.tsx";
34
- import { Text } from "../ui/Typography.tsx";
35
+ import { formatView, normalizeView } from "./Format.tsx";
35
36
  import {
36
37
  confirmScreen,
37
- cycleSelectScreen,
38
- awaitExternalScreen,
39
- menuScreen,
38
+ browserLoginScreen,
40
39
  multiSelectScreen,
41
40
  passwordScreen,
42
41
  selectScreen,
43
42
  textScreen,
44
43
  } from "./Prompts.tsx";
45
44
 
46
- const InApplication = Context.Reference<boolean>("Alchemy::CliKit/InApplication", {
45
+ const InSession = Context.Reference<boolean>("Alchemy::Interaction/InSession", {
47
46
  defaultValue: () => false,
48
47
  });
49
48
 
@@ -58,54 +57,6 @@ interface Item {
58
57
  readonly placement?: LiveViewOptions["placement"];
59
58
  }
60
59
 
61
- const normalizeView = (view: View): View => {
62
- if (typeof view === "string" || typeof view === "number" || typeof view === "bigint") {
63
- return <Text>{String(view)}</Text>;
64
- }
65
- // Contract: an array of primitives renders as ONE Text line with the
66
- // elements concatenated (no separator) — matching how React renders
67
- // adjacent text children. Callers wanting separators must join themselves.
68
- if (
69
- Array.isArray(view) &&
70
- view.every(
71
- (item) =>
72
- item === null ||
73
- item === undefined ||
74
- typeof item === "boolean" ||
75
- typeof item === "string" ||
76
- typeof item === "number" ||
77
- typeof item === "bigint",
78
- )
79
- ) {
80
- return (
81
- <Text>
82
- {view
83
- .filter((item) => item !== null && item !== undefined && typeof item !== "boolean")
84
- .map(String)
85
- .join("")}
86
- </Text>
87
- );
88
- }
89
- return view;
90
- };
91
-
92
- const formatStaticView = (
93
- view: ReactNode,
94
- options: RenderOptions,
95
- capabilities: CliKitCapabilities,
96
- ): string => {
97
- const colors = options.colors ?? capabilities.colors;
98
- // The renderer and the components must agree on the width: components size
99
- // themselves from the environment's `columns`, so an explicit render width
100
- // has to flow into the capabilities too, not only into renderToString.
101
- const columns = options.columns ?? capabilities.columns;
102
- const output = renderToString(
103
- <CliEnvironment capabilities={{ ...capabilities, colors, columns }}>{view}</CliEnvironment>,
104
- { columns, colorProfile: colors ? "truecolor" : "none" },
105
- ).replace(/[\s\n]+$/, "");
106
- return colors ? output : stripVTControlCharacters(output);
107
- };
108
-
109
60
  interface StoreState {
110
61
  readonly staticItems: Item[];
111
62
  readonly transcript: ReadonlyArray<Item>;
@@ -115,7 +66,7 @@ interface StoreState {
115
66
 
116
67
  /**
117
68
  * The single external store the React root syncs from. It only tracks WHICH
118
- * blocks are mounted and in what region (static scrollback, in-application
69
+ * blocks are mounted and in what region (static scrollback, in-session
119
70
  * transcript, live region, active prompt) — block content never changes
120
71
  * after mount, so there is no update surface here.
121
72
  */
@@ -284,15 +235,15 @@ function ProgressView({ store }: ProgressViewProps) {
284
235
  );
285
236
  }
286
237
 
287
- export interface CliKitRuntime {
288
- readonly service: CliKit["Service"];
238
+ export interface SigilRuntime {
239
+ readonly service: Interaction["Service"];
289
240
  readonly dispose: () => Promise<void>;
290
241
  }
291
242
 
292
243
  export const makeRuntime = (
293
- options: CliKitOptions,
294
- capabilities: CliKitCapabilities,
295
- ): CliKitRuntime => {
244
+ options: TerminalOptions,
245
+ capabilities: TerminalCapabilities,
246
+ ): SigilRuntime => {
296
247
  const stdin = options.stdin ?? process.stdin;
297
248
  const stdout = options.stdout ?? process.stdout;
298
249
  const stderr = options.stderr ?? process.stderr;
@@ -316,12 +267,12 @@ export const makeRuntime = (
316
267
  // Lifecycle state. `mounted` and `unmounting` deliberately overlap: during
317
268
  // teardown the instance stays in `mounted` until re-validation passes, so
318
269
  // prints/live views racing the drain still see a live renderer (and can
319
- // abort the teardown). `applicationMounted` is an orthogonal axis — an
320
- // `app()` region pins the renderer regardless of store idleness — and
270
+ // abort the teardown). `sessionMounted` is an orthogonal axis — an
271
+ // `session()` region pins the renderer regardless of store idleness — and
321
272
  // `disposed` is a terminal one-way latch.
322
273
  let mounted: Mounted | undefined;
323
274
  let unmounting: Promise<void> | undefined;
324
- let applicationMounted = false;
275
+ let sessionMounted = false;
325
276
  let disposed = false;
326
277
  /**
327
278
  * Fails the active interaction when a screen component throws during
@@ -337,7 +288,7 @@ export const makeRuntime = (
337
288
  */
338
289
  const failRenderer = (error: unknown) => {
339
290
  if (failActive !== undefined) failActive(error);
340
- else stderr.write(`CliKit renderer error: ${String(error)}\n`);
291
+ else stderr.write(`Sigil renderer error: ${String(error)}\n`);
341
292
  };
342
293
 
343
294
  const mount = async (alternateScreen = false): Promise<void> => {
@@ -485,7 +436,7 @@ export const makeRuntime = (
485
436
  // Re-validate: a prompt or live view may have re-armed the renderer
486
437
  // while the frame flushed. Their output would be destroyed by the
487
438
  // teardown, so leave the instance mounted for them instead.
488
- if (!force && (applicationMounted || !store.idle)) return;
439
+ if (!force && (sessionMounted || !store.idle)) return;
489
440
  // A captured chunk that arrived DURING the drain may have parked a
490
441
  // partial line and armed a flush timer. Flush and disarm now —
491
442
  // otherwise the timer fires after `clearStatic()` below and the
@@ -519,30 +470,24 @@ export const makeRuntime = (
519
470
 
520
471
  const releaseIfIdle = () =>
521
472
  Effect.suspend(() =>
522
- applicationMounted || !store.idle ? Effect.void : Effect.promise(() => unmount()),
473
+ sessionMounted || !store.idle ? Effect.void : Effect.promise(() => unmount()),
523
474
  );
524
475
 
525
- const formatView = (view: View, renderOptions: RenderOptions = {}) =>
526
- formatStaticView(normalizeView(view), renderOptions, {
527
- ...capabilities,
528
- // Re-read the width at render time — the boot-time snapshot goes stale
529
- // the moment the user resizes the terminal.
530
- columns: stdout.columns ?? capabilities.columns,
531
- });
532
-
533
- const renderView = (view: View, renderOptions: RenderOptions = {}) =>
534
- Effect.sync(() => formatView(view, renderOptions));
535
-
536
- const print = (view: View, renderOptions: RenderOptions = {}) =>
476
+ const print = (view: View) =>
537
477
  Effect.gen(function* () {
538
- const inApplication = yield* InApplication;
478
+ const inSession = yield* InSession;
539
479
  view = normalizeView(view);
540
- if (inApplication) {
480
+ if (inSession) {
541
481
  yield* Effect.sync(() => store.append(view));
542
482
  } else if (mounted !== undefined) {
543
483
  yield* Effect.sync(() => store.appendStatic(view));
544
484
  } else {
545
- const output = yield* renderView(view, renderOptions);
485
+ const output = formatView(view, {
486
+ ...capabilities,
487
+ // Re-read the width at render time — the boot-time snapshot goes
488
+ // stale the moment the user resizes the terminal.
489
+ columns: stdout.columns ?? capabilities.columns,
490
+ });
546
491
  if (output !== "") yield* Effect.sync(() => stdout.write(`${output}\n`));
547
492
  }
548
493
  });
@@ -561,17 +506,9 @@ export const makeRuntime = (
561
506
  );
562
507
  };
563
508
 
564
- const run = <Value,>(screen: Screen<Value>) => {
565
- if (!capabilities.input) {
566
- return Effect.fail(
567
- new NonInteractiveTerminal({
568
- operation: screen.name,
569
- message: `Cannot run ${screen.name} without an interactive terminal. Provide the equivalent command flags instead.`,
570
- }),
571
- );
572
- }
573
- return Effect.gen(function* () {
574
- const inApplication = yield* InApplication;
509
+ const run = <Value,>(screen: Screen<Value>) =>
510
+ Effect.gen(function* () {
511
+ const inSession = yield* InSession;
575
512
  const interaction = promptGate.withPermits(1)(
576
513
  Effect.gen(function* () {
577
514
  let completedView: View | undefined;
@@ -583,7 +520,7 @@ export const makeRuntime = (
583
520
  failActive = undefined;
584
521
  store.deactivate();
585
522
  if (resultView !== undefined) {
586
- if (inApplication) store.append(normalizeView(resultView));
523
+ if (inSession) store.append(normalizeView(resultView));
587
524
  else completedView = resultView;
588
525
  }
589
526
  resume(result);
@@ -623,7 +560,7 @@ export const makeRuntime = (
623
560
  }).pipe(
624
561
  Effect.ensuring(
625
562
  Effect.suspend(() =>
626
- inApplication
563
+ inSession
627
564
  ? Effect.void
628
565
  : releaseIfIdle().pipe(
629
566
  Effect.andThen(
@@ -635,82 +572,58 @@ export const makeRuntime = (
635
572
  );
636
573
  }),
637
574
  );
638
- return yield* inApplication ? interaction : rendererGate.withPermits(1)(interaction);
639
- });
640
- };
641
-
642
- const menu = <Value,>(options: MenuOptions<Value>): Effect.Effect<Value, InteractionError> =>
643
- Effect.gen(function* () {
644
- if (yield* InApplication) yield* Effect.sync(() => store.clear());
645
- return yield* run(menuScreen(options));
575
+ return yield* inSession ? interaction : rendererGate.withPermits(1)(interaction);
646
576
  });
647
577
 
648
- const app = <A, E, R>(
649
- effect: Effect.Effect<A, E, R>,
650
- ): Effect.Effect<A, E | NonInteractiveTerminal, R> =>
651
- !capabilities.input
652
- ? Effect.fail(
653
- new NonInteractiveTerminal({
654
- operation: "application",
655
- message:
656
- "Cannot run a CLI application without terminal input. Provide the equivalent command flags instead.",
657
- }),
658
- )
659
- : Effect.gen(function* () {
660
- if (yield* InApplication) return yield* effect;
661
- const presentation = yield* ApplicationPresentation;
662
- const alternate = presentation === "alternate" && capabilities.alternateScreen;
663
- return yield* rendererGate.withPermits(1)(
664
- Effect.acquireUseRelease(
665
- Effect.promise(async () => {
666
- applicationMounted = true;
667
- store.clear();
668
- // Sigil cannot change `alternateScreen` on a live instance: if
669
- // an inline renderer (say an earlier progress row) is still
670
- // mounted with the wrong presentation, remount with the
671
- // requested one instead of silently ignoring it.
672
- if (mounted !== undefined && mounted.alternate !== alternate) {
673
- await unmount(true);
674
- }
675
- await mount(alternate);
676
- }),
677
- () => effect.pipe(Effect.provideService(InApplication, true)),
678
- () =>
679
- Effect.promise(async () => {
680
- applicationMounted = false;
681
- store.clear();
682
- // Let the empty frame replace the application, then erase
683
- // that frame explicitly. Unmount can now restore terminal
684
- // modes without leaving the empty frame's newline behind.
685
- const current = mounted;
686
- if (current !== undefined) {
687
- await current.sigil.waitUntilRenderFlush();
688
- current.sigil.clear();
689
- }
690
- await unmount();
691
- }),
692
- ),
693
- );
694
- });
695
-
696
- // A wizard owns the renderer when invoked standalone and reuses the
697
- // current application renderer when nested. Prompt serialization remains
698
- // centralized in `run`, so nested profile/OAuth flows suspend cleanly.
699
- const wizard = <A, E, R>(
578
+ // A session owns the renderer when invoked standalone. Nested, it reuses
579
+ // the outer renderer and clears the prompts it showed when it settles, so
580
+ // nested profile/OAuth flows suspend cleanly. Prompt serialization remains
581
+ // centralized in `run`.
582
+ const session = <A, E, R>(
700
583
  effect: Effect.Effect<A, E, R>,
584
+ sessionOptions: SessionOptions = {},
701
585
  ): Effect.Effect<A, E | NonInteractiveTerminal, R> =>
702
586
  Effect.gen(function* () {
703
- if (!(yield* InApplication)) return yield* app(effect);
704
- return yield* effect.pipe(Effect.ensuring(Effect.sync(() => store.clearTranscript())));
587
+ if (yield* InSession) {
588
+ return yield* effect.pipe(Effect.ensuring(Effect.sync(() => store.clearTranscript())));
589
+ }
590
+ const alternate = sessionOptions.alternate === true && capabilities.alternateScreen;
591
+ return yield* rendererGate.withPermits(1)(
592
+ Effect.acquireUseRelease(
593
+ Effect.promise(async () => {
594
+ sessionMounted = true;
595
+ store.clear();
596
+ // Sigil cannot change `alternateScreen` on a live instance: if
597
+ // an inline renderer (say an earlier progress row) is still
598
+ // mounted with the wrong presentation, remount with the
599
+ // requested one instead of silently ignoring it.
600
+ if (mounted !== undefined && mounted.alternate !== alternate) {
601
+ await unmount(true);
602
+ }
603
+ await mount(alternate);
604
+ }),
605
+ () => effect.pipe(Effect.provideService(InSession, true)),
606
+ () =>
607
+ Effect.promise(async () => {
608
+ sessionMounted = false;
609
+ store.clear();
610
+ // Let the empty frame replace the session, then erase
611
+ // that frame explicitly. Unmount can now restore terminal
612
+ // modes without leaving the empty frame's newline behind.
613
+ const current = mounted;
614
+ if (current !== undefined) {
615
+ await current.sigil.waitUntilRenderFlush();
616
+ current.sigil.clear();
617
+ }
618
+ await unmount();
619
+ }),
620
+ ),
621
+ );
705
622
  });
706
623
 
707
624
  const makeLive = (initial: View, options: LiveViewOptions = {}): Effect.Effect<LiveViewHandle> =>
708
625
  Effect.gen(function* () {
709
- if (!capabilities.input) {
710
- yield* print(initial);
711
- return { close: Effect.void };
712
- }
713
- const inApplication = yield* InApplication;
626
+ const inSession = yield* InSession;
714
627
  const key = store.alloc();
715
628
  let closed = false;
716
629
  yield* Effect.sync(() => store.addLive(key, normalizeView(initial), options.placement));
@@ -720,9 +633,9 @@ export const makeRuntime = (
720
633
  if (closed) return Effect.void;
721
634
  closed = true;
722
635
  // removeLive/completeLive no-op when the row was already cleared
723
- // by a menu loop or application boundary.
636
+ // by a session boundary.
724
637
  if (options.persistOnClose)
725
- store.completeLive(key, inApplication ? "transcript" : "staticItems");
638
+ store.completeLive(key, inSession ? "transcript" : "staticItems");
726
639
  else store.removeLive(key);
727
640
  return Effect.promise(waitForRender).pipe(Effect.andThen(releaseIfIdle()));
728
641
  }),
@@ -747,34 +660,7 @@ export const makeRuntime = (
747
660
  */
748
661
  const makeProgress = (initial: ProgressOptions): Effect.Effect<ProgressHandle> =>
749
662
  Effect.gen(function* () {
750
- const dynamic = capabilities.input && ((yield* InApplication) || stdout.isTTY === true);
751
- if (!dynamic) {
752
- let current = initial;
753
- let closed = false;
754
- yield* print(
755
- <Status variant="info" detail={initial.detail}>
756
- {initial.label}
757
- </Status>,
758
- );
759
- const settle = (variant: "success" | "error", message?: string) =>
760
- Effect.suspend(() => {
761
- if (closed) return Effect.void;
762
- closed = true;
763
- return print(<Status variant={variant}>{message ?? current.label}</Status>);
764
- });
765
- return {
766
- update: (next) =>
767
- Effect.sync(() => {
768
- if (!closed) current = next;
769
- }),
770
- succeed: (message) => settle("success", message),
771
- fail: (message) => settle("error", message),
772
- close: Effect.sync(() => {
773
- closed = true;
774
- }),
775
- } satisfies ProgressHandle;
776
- }
777
- const inApplication = yield* InApplication;
663
+ const inSession = yield* InSession;
778
664
  const progressStore = new LiveStore<ProgressState>({ options: initial });
779
665
  const key = store.alloc();
780
666
  yield* Effect.sync(() => store.addLive(key, <ProgressView store={progressStore} />));
@@ -785,8 +671,8 @@ export const makeRuntime = (
785
671
  if (settled) return Effect.void;
786
672
  settled = true;
787
673
  // completeLive/removeLive no-op when the row was already cleared
788
- // by a menu loop or application boundary.
789
- if (persist) store.completeLive(key, inApplication ? "transcript" : "staticItems");
674
+ // by a session boundary.
675
+ if (persist) store.completeLive(key, inSession ? "transcript" : "staticItems");
790
676
  else store.removeLive(key);
791
677
  return Effect.promise(waitForRender).pipe(Effect.andThen(releaseIfIdle()));
792
678
  });
@@ -811,19 +697,45 @@ export const makeRuntime = (
811
697
  const progress = (initial: ProgressOptions): Effect.Effect<ProgressHandle, never, Scope.Scope> =>
812
698
  Effect.acquireRelease(makeProgress(initial), (handle) => handle.close);
813
699
 
814
- const service: CliKit["Service"] = {
815
- terminal: capabilities,
816
- nativeProgress: {
817
- set: (state, value) =>
818
- Effect.sync(() => {
819
- if (mounted !== undefined) mounted.sigil.setProgress(state, value);
820
- else setNativeProgress(state, value, stdout);
700
+ /**
701
+ * The login screen races `waitFor`: the poll or callback normally wins,
702
+ * the screen only settles first when the user cancels or pastes a code.
703
+ */
704
+ const browserLogin = <A, E, R, E2 = never, R2 = never>(
705
+ login: BrowserLoginOptions<A, E, R, E2, R2>,
706
+ ) =>
707
+ Effect.gen(function* () {
708
+ const services = yield* Effect.context<ChildProcessSpawner>();
709
+ // Invoked later by the screen's keyboard handler, outside this fiber.
710
+ const reopen = () => Effect.runPromiseWith(services)(openUrl(login.url));
711
+ const openFailed = yield* Effect.isFailure(openUrl(login.url));
712
+ const manual = login.manualCode;
713
+ const screen = run(
714
+ browserLoginScreen({
715
+ message: `${login.provider} authorization`,
716
+ waitingLabel:
717
+ login.waitingLabel ?? "waiting for browser authorization (up to 5 minutes)…",
718
+ url: login.url,
719
+ code: login.code,
720
+ openFailed,
721
+ onOpen: reopen,
722
+ allowManualInput: manual !== undefined,
723
+ inputLabel: manual?.label ?? "Paste the authorization code or callback URL",
724
+ placeholder: manual?.placeholder,
725
+ validate: manual?.validate,
821
726
  }),
822
- },
727
+ ).pipe(
728
+ Effect.flatMap((code): Effect.Effect<A, E2, R2> =>
729
+ manual === undefined ? Effect.never : manual.exchange(code),
730
+ ),
731
+ );
732
+ return yield* Effect.raceFirst(login.waitFor, screen);
733
+ });
734
+
735
+ const service: Interaction["Service"] = {
736
+ terminal: capabilities,
823
737
  output: {
824
738
  print,
825
- format: formatView,
826
- render: renderView,
827
739
  info: log("info"),
828
740
  success: log("success"),
829
741
  warning: log("warning"),
@@ -835,31 +747,13 @@ export const makeRuntime = (
835
747
  confirm: (confirmOptions) => run(confirmScreen(confirmOptions)),
836
748
  select: (selectOptions) => run(selectScreen(selectOptions)),
837
749
  multiSelect: (selectOptions) => run(multiSelectScreen(selectOptions)),
838
- cycle: (selectOptions) => run(cycleSelectScreen(selectOptions)),
839
- awaitExternal: (externalOptions) => run(awaitExternalScreen(externalOptions)),
840
- menu,
841
- custom: run,
750
+ screen: run,
842
751
  },
843
- wizard,
844
- application: app,
845
- live: { progress, open: live },
846
- task: (taskOptions, effect) =>
847
- Effect.scoped(
848
- Effect.gen(function* () {
849
- const handle = yield* progress(taskOptions);
850
- return yield* effect.pipe(
851
- Effect.onExit((exit) =>
852
- Exit.isSuccess(exit)
853
- ? handle.succeed()
854
- : // Interruption (Ctrl+C) is not a failure — remove the row
855
- // instead of painting a red error status.
856
- Cause.hasInterruptsOnly(exit.cause)
857
- ? handle.close
858
- : handle.fail(),
859
- ),
860
- );
861
- }),
862
- ),
752
+ browserLogin,
753
+ live,
754
+ progress,
755
+ task: taskFromProgress(progress),
756
+ session,
863
757
  };
864
758
 
865
759
  return {
@@ -5,10 +5,10 @@ import * as Effect from "effect/Effect";
5
5
  import * as Exit from "effect/Exit";
6
6
  import * as Layer from "effect/Layer";
7
7
  import * as Scope from "effect/Scope";
8
+ import type { ApplyEvent } from "../../../Events.ts";
9
+ import { Interaction } from "../../../Interaction.ts";
8
10
  import type { Plan } from "../../../Plan.ts";
9
11
  import { type PlanStatusSession, Cli } from "../../../Report.ts";
10
- import type { ApplyEvent } from "../../../Report.ts";
11
- import { CliKit } from "../../CliKit/index.ts";
12
12
  import { formatElapsed } from "../../Format.ts";
13
13
  import { approvePlanScreen } from "./ApprovePlan.tsx";
14
14
  import { Plan as PlanComponent, PlanTree } from "./PlanView.tsx";
@@ -25,7 +25,7 @@ interface SessionPreferences {
25
25
  export const sigilCli = () =>
26
26
  Layer.effect(
27
27
  Cli,
28
- Effect.map(CliKit, (cli) => {
28
+ Effect.map(Interaction, (cli) => {
29
29
  const preferences: SessionPreferences = { planExpanded: true };
30
30
  return Cli.of({
31
31
  startPlanningSession: (label, detail, title) =>
@@ -38,19 +38,19 @@ export const sigilCli = () =>
38
38
  );
39
39
 
40
40
  const approvePlan = Effect.fn(function* <P extends Plan>(
41
- cli: CliKit["Service"],
41
+ cli: Interaction["Service"],
42
42
  plan: P,
43
43
  options?: import("../../../Report.ts").PlanDisplayOptions,
44
44
  ) {
45
45
  // A dismissed screen means "declined"; NonInteractiveTerminal propagates
46
46
  // typed to the command-level handlers (a friendly line, not a raw cause).
47
47
  return yield* cli.prompt
48
- .custom(approvePlanScreen(plan, options?.detailed))
48
+ .screen(approvePlanScreen(plan, options?.detailed))
49
49
  .pipe(Effect.catchTag("TerminalCancelled", () => Effect.succeed(false)));
50
50
  });
51
51
 
52
52
  const displayPlan = Effect.fn(function* <P extends Plan>(
53
- cli: CliKit["Service"],
53
+ cli: Interaction["Service"],
54
54
  plan: P,
55
55
  options?: import("../../../Report.ts").PlanDisplayOptions,
56
56
  ) {
@@ -64,14 +64,14 @@ const displayPlan = Effect.fn(function* <P extends Plan>(
64
64
  });
65
65
 
66
66
  const startPlanningSession = Effect.fn(function* (
67
- cli: CliKit["Service"],
67
+ cli: Interaction["Service"],
68
68
  label: string,
69
69
  detail?: string,
70
70
  title?: string,
71
71
  ) {
72
72
  const startedAt = yield* Clock.currentTimeMillis;
73
73
  const scope = yield* Scope.make();
74
- const progress = yield* cli.live
74
+ const progress = yield* cli
75
75
  .progress({
76
76
  label,
77
77
  detail,
@@ -90,7 +90,7 @@ const startPlanningSession = Effect.fn(function* (
90
90
  // renderer's "(1.8s)" suffix.
91
91
  const settled = (message: string | undefined) =>
92
92
  message === undefined
93
- ? Effect.succeed(undefined)
93
+ ? Effect.undefined
94
94
  : Clock.currentTimeMillis.pipe(
95
95
  Effect.map((now) => `${message} (${formatElapsed(now - startedAt)})`),
96
96
  );
@@ -109,7 +109,7 @@ const startPlanningSession = Effect.fn(function* (
109
109
  });
110
110
 
111
111
  const startApplySession = Effect.fn(function* <P extends Plan>(
112
- cli: CliKit["Service"],
112
+ cli: Interaction["Service"],
113
113
  plan: P,
114
114
  options: import("../../../Report.ts").PlanDisplayOptions | undefined,
115
115
  preferences: SessionPreferences,
@@ -154,8 +154,8 @@ const startApplySession = Effect.fn(function* <P extends Plan>(
154
154
  // generation is interrupted (a reload or Ctrl+C), so a replaced
155
155
  // generation never leaves its widget behind.
156
156
  const scope = yield* Scope.make();
157
- const live = yield* cli.live
158
- .open(<PlanComponent tree={progress} collapsible={options?.dev} />, {
157
+ const live = yield* cli
158
+ .live(<PlanComponent tree={progress} collapsible={options?.dev} />, {
159
159
  persistOnClose: !options?.dev,
160
160
  })
161
161
  .pipe(Scope.provide(scope));
@@ -8,8 +8,9 @@ import * as Exit from "effect/Exit";
8
8
  import type * as Fiber from "effect/Fiber";
9
9
  import * as Option from "effect/Option";
10
10
  import type { JSX } from "react";
11
+ import { Screen, type ScreenController } from "../../../Interaction.ts";
11
12
  import type { InvalidStatePath, StateStoreError } from "../../../State/index.ts";
12
- import { Screen, theme, type ScreenController } from "../../CliKit/index.ts";
13
+ import { theme } from "../../../Util/Theme.ts";
13
14
  import { formatYamlLines, matchYamlKey } from "../../PropertyDiff.ts";
14
15
  import {
15
16
  Box,
@@ -3,8 +3,8 @@
3
3
  * icons — shared by the plan tree, the live progress view, and the plain
4
4
  * logging CLI so an action never renders two different hues.
5
5
  */
6
- import type { ApplyStatus } from "../../../Report.ts";
7
- import { theme, type GlyphName } from "../../CliKit/index.ts";
6
+ import type { ApplyStatus } from "../../../Events.ts";
7
+ import { theme, type GlyphName } from "../../../Util/Theme.ts";
8
8
 
9
9
  /** Every verb a plan row can carry (resource CRUD + namespace/action rollups). */
10
10
  export type PlanAction =