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,41 +1,87 @@
1
+ import * as GlobalFlag from "effect/cli/GlobalFlag";
2
+ import * as Context from "effect/Context";
1
3
  import * as Effect from "effect/Effect";
2
4
  import * as FileSystem from "effect/FileSystem";
3
5
  import * as Layer from "effect/Layer";
4
6
  import * as Logger from "effect/Logger";
5
7
  import * as LogLevel from "effect/LogLevel";
8
+ import * as Option from "effect/Option";
6
9
  import { Path } from "effect/Path";
7
10
  /**
8
- * The console keeps its usual Info+ noise floor by default; everything below
9
- * it exists only for the run log, so support requests can start with "attach
10
- * the file from ~/.alchemy/logs". An explicit `--log-level` lowers the floor
11
- * for that run so `--log-level debug` actually puts debug records on the
12
- * terminal (#1231) — the run log captures Debug regardless.
13
- *
14
- * Read from argv rather than `GlobalFlag.LogLevel` because the console logger
15
- * is installed while the service layers are built, before the parser has
16
- * produced flag values (same reason `--no-input` is an argv scan). Only the
17
- * segment before a `--` separator is inspected; an unrecognised value falls
18
- * back to Info and is left for the parser to reject.
11
+ * `--log-level`: the lowest level printed on the console. Registered on the
12
+ * CLI root in place of Effect's built-in flag, which also lowers the
13
+ * minimum log level and so would drop records from the run log; the run
14
+ * log records Debug whatever the console shows.
15
+ */
16
+ export declare const LogLevelFlag: GlobalFlag.Setting<"log-level", Option.Option<LogLevel.LogLevel>>;
17
+ /** How the terminal shows log records. */
18
+ export type LogFormat = "pretty" | "json";
19
+ /**
20
+ * `--log-format pretty|json`: `json` prints one {@link LogRecord} per line
21
+ * on stderr and leaves rendering to the reader. Registered on the CLI root;
22
+ * the console logger reads the parsed value (see {@link consoleSettings}).
23
+ */
24
+ export declare const LogFormatFlag: GlobalFlag.Setting<"log-format", Option.Option<"json" | "pretty">>;
25
+ /** What the console shows, and how. */
26
+ export interface ConsoleSettings {
27
+ /** Records below this level stay in the run log only. */
28
+ readonly floor: LogLevel.LogLevel;
29
+ readonly format: LogFormat;
30
+ }
31
+ /**
32
+ * The console settings in `context`: the parsed `--log-level` and
33
+ * `--log-format` flags inside a command, and otherwise (before the command
34
+ * line is parsed, or in a child process that never sees it) the `ALCHEMY_LOG_*` environment variables. The console keeps its
35
+ * usual Info+ noise floor by default; the run log captures Debug regardless
36
+ * (#1231).
37
+ */
38
+ export declare const consoleSettings: (context: Context.Context<never>) => ConsoleSettings;
39
+ /** The current fiber's {@link consoleSettings}. */
40
+ export declare const currentConsoleSettings: Effect.Effect<ConsoleSettings>;
41
+ /** {@link ConsoleSettings} as environment, for a child process that renders the run's logs. */
42
+ export declare const consoleSettingsEnv: (settings: ConsoleSettings) => Record<string, string>;
43
+ /**
44
+ * Terminal sink: forwards records at or above the logging fiber's
45
+ * {@link consoleSettings} floor to `sink`, or to the sink its settings
46
+ * select.
19
47
  */
20
- export declare const consoleLogFloor: (argv: ReadonlyArray<string>) => LogLevel.LogLevel;
21
- /** Terminal sink: forwards records at or above `floor` to `sink`. */
22
- export declare const makeConsoleLogger: (floor: LogLevel.LogLevel, sink?: Logger.Logger<unknown, void>) => Logger.Logger<unknown, void>;
48
+ export declare const makeConsoleLogger: (sink?: Logger.Logger<unknown, void>) => Logger.Logger<unknown, void>;
23
49
  /** Shared terminal logger for CLI entrypoints that do not need a run file. */
24
50
  export declare const ConsoleLogLive: Layer.Layer<never, never, never>;
25
51
  /**
26
- * Debug run log for the whole CLI under `~/.alchemy/logs` (relocated by
27
- * `ALCHEMY_HOME` together with the rest of the auth state). Every run writes
28
- * `{timestamp}-pid{pid}.log` in logfmt at Debug level — profile/auth flows
29
- * and command failures record their full causes there even though the
30
- * terminal only shows the friendly message. Console output stays at Info+
31
- * unless `--log-level` lowers the floor (see {@link consoleLogFloor}).
52
+ * The run log's file logger alone. The run log is the only log file: the
53
+ * top-level CLI process writes it, and records its children already showed
54
+ * on the terminal (the `alchemy dev` exec child's) go here without being
55
+ * printed again.
56
+ */
57
+ export declare const RunLog: Context.Reference<Logger.Logger<unknown, void>>;
58
+ /**
59
+ * A run log file that is created on its first record, so a run that sends
60
+ * nothing to it leaves nothing behind (and a `profile` command run outside
61
+ * a project never creates a `.alchemy` there). The file starts with a `run`
62
+ * record describing the run, so it reads standalone.
63
+ *
64
+ * A logger is called synchronously but the file is written asynchronously,
65
+ * so the logger only queues each record as a JSON line, and one writer fiber
66
+ * creates the file on the first line and appends the rest. Closing the log
67
+ * ends the queue and waits for the writer, so no queued record is lost.
68
+ *
69
+ * @internal exported for tests.
70
+ */
71
+ export declare const lazyRunLog: (dir: string, name: string, scope: "global" | "project") => Effect.Effect<Logger.Logger<unknown, void>, never, FileSystem.FileSystem | Path | import("effect/Scope").Scope>;
72
+ /**
73
+ * The two run logs: records scoped `global` (the state store, auth,
74
+ * profiles; see `globalLogs`) go to `~/.alchemy/logs` (relocated by
75
+ * `ALCHEMY_HOME`), everything else to the project's `.alchemy/log`. Every
76
+ * run writes `{timestamp}-pid{pid}.ndjson` (NDJSON log records) at Debug
77
+ * level — failures record their full causes there even though the terminal
78
+ * only shows the friendly message. Console output stays at Info+ unless
79
+ * `--log-level` lowers the floor (see {@link consoleSettings}).
32
80
  *
33
- * Commands that install their own loggers with `mergeWithExisting: true`
34
- * compose with this one; a replacing `Logger.layer` scopes it out for that
35
- * subtree only. Best-effort throughout: an unwritable `~/.alchemy` must
36
- * never take the CLI down with it.
81
+ * Only the top-level CLI process writes them; its children's records reach
82
+ * them through it. Commands that install their own loggers with
83
+ * `mergeWithExisting: true` compose with these; a replacing `Logger.layer`
84
+ * scopes them out for that subtree only.
37
85
  */
38
86
  export declare const GlobalLogLive: Layer.Layer<never, never, FileSystem.FileSystem | Path>;
39
- /** First line of every run log: enough context to read it standalone. */
40
- export declare const logRunHeader: Effect.Effect<void>;
41
87
  //# sourceMappingURL=GlobalLog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalLog.d.ts","sourceRoot":"","sources":["../../src/Cli/GlobalLog.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAsBnC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,SAAU,aAAa,CAAC,MAAM,CAAC,KAAG,QAAQ,CAAC,QAgBtE,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,UACrB,QAAQ,CAAC,QAAQ,SAClB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,iCAMhC,CAAC;AAEL,8EAA8E;AAC9E,eAAO,MAAM,cAAc,kCAG1B,CAAC;AAKF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,yDAwCzB,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAE5C,CAAC"}
1
+ {"version":3,"file":"GlobalLog.d.ts","sourceRoot":"","sources":["../../src/Cli/GlobalLog.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAkCnC;;;;;GAKG;AACH,eAAO,MAAM,YAAY,mEAMvB,CAAC;AAEH,0CAA0C;AAC1C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1C;;;;GAIG;AACH,eAAO,MAAM,aAAa,oEAKxB,CAAC;AAEH,uCAAuC;AACvC,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAKD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,YAAa,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAG,eAShE,CAAC;AAEH,mDAAmD;AACnD,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAGjE,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,kBAAkB,aAAc,eAAe,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAGlF,CAAC;AAKH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAAW,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,iCAMjE,CAAC;AAEL,8EAA8E;AAC9E,eAAO,MAAM,cAAc,kCAG1B,CAAC;AAKF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,iDAEjB,CAAC;AAyBH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU,6KA6BrB,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,yDA2BzB,CAAC"}
@@ -1,19 +1,28 @@
1
+ import * as Flag from "effect/cli/Flag";
2
+ import * as GlobalFlag from "effect/cli/GlobalFlag";
1
3
  import * as Clock from "effect/Clock";
4
+ import * as Context from "effect/Context";
2
5
  import * as Duration from "effect/Duration";
3
6
  import * as Effect from "effect/Effect";
7
+ import * as Fiber from "effect/Fiber";
4
8
  import * as FileSystem from "effect/FileSystem";
5
9
  import * as Layer from "effect/Layer";
6
10
  import * as Logger from "effect/Logger";
7
11
  import * as LogLevel from "effect/LogLevel";
8
12
  import * as Option from "effect/Option";
9
13
  import { Path } from "effect/Path";
10
- import { MinimumLogLevel } from "effect/References";
14
+ import * as Queue from "effect/Queue";
15
+ import { CurrentLogAnnotations, MinimumLogLevel } from "effect/References";
11
16
  import packageJson from "../../package.json" with { type: "json" };
17
+ import { dotAlchemyDirectory } from "../AlchemyContext.js";
12
18
  import { rootDir } from "../Auth/Paths.js";
13
19
  import { makePlainConsoleSink } from "../Util/ConsoleSink.js";
20
+ import { LogAnnotation } from "../Util/LogAnnotation.js";
21
+ import { formatJsonRecord, jsonLogger, LOG_FORMAT_ENV, LOG_LEVEL_ENV, safeStringify, } from "../Util/LogRecord.js";
22
+ import { processTrace } from "../Util/TraceParent.js";
14
23
  /** Logs older than this are pruned (by mtime) on CLI start. */
15
24
  const MAX_LOG_AGE = Duration.days(7);
16
- /** Same spellings `GlobalFlag.LogLevel` accepts, so the two never disagree. */
25
+ /** The `--log-level` / `ALCHEMY_LOG_LEVEL` spellings. */
17
26
  const logLevelChoices = {
18
27
  all: "All",
19
28
  trace: "Trace",
@@ -26,84 +35,167 @@ const logLevelChoices = {
26
35
  none: "None",
27
36
  };
28
37
  /**
29
- * The console keeps its usual Info+ noise floor by default; everything below
30
- * it exists only for the run log, so support requests can start with "attach
31
- * the file from ~/.alchemy/logs". An explicit `--log-level` lowers the floor
32
- * for that run so `--log-level debug` actually puts debug records on the
33
- * terminal (#1231) — the run log captures Debug regardless.
34
- *
35
- * Read from argv rather than `GlobalFlag.LogLevel` because the console logger
36
- * is installed while the service layers are built, before the parser has
37
- * produced flag values (same reason `--no-input` is an argv scan). Only the
38
- * segment before a `--` separator is inspected; an unrecognised value falls
39
- * back to Info and is left for the parser to reject.
38
+ * `--log-level`: the lowest level printed on the console. Registered on the
39
+ * CLI root in place of Effect's built-in flag, which also lowers the
40
+ * minimum log level and so would drop records from the run log; the run
41
+ * log records Debug whatever the console shows.
40
42
  */
41
- export const consoleLogFloor = (argv) => {
42
- const separator = argv.indexOf("--");
43
- const flagArgs = separator === -1 ? argv : argv.slice(0, separator);
44
- let floor = "Info";
45
- for (let i = 0; i < flagArgs.length; i++) {
46
- const arg = flagArgs[i];
47
- const value = arg === "--log-level"
48
- ? flagArgs[i + 1]
49
- : arg.startsWith("--log-level=")
50
- ? arg.slice("--log-level=".length)
51
- : undefined;
52
- if (value === undefined)
53
- continue;
54
- floor = logLevelChoices[value.toLowerCase()] ?? floor;
55
- }
56
- return floor;
57
- };
58
- /** Terminal sink: forwards records at or above `floor` to `sink`. */
59
- export const makeConsoleLogger = (floor, sink = makePlainConsoleSink()) => Logger.make((options) => {
60
- if (LogLevel.isGreaterThanOrEqualTo(options.logLevel, floor)) {
61
- sink.log(options);
43
+ export const LogLevelFlag = GlobalFlag.Setting("log-level")({
44
+ flag: Flag.ChoiceWithValue("log-level", Object.entries(logLevelChoices)).pipe(Flag.optional, Flag.withDescription("Lowest level printed on the console"), Flag.withMetavar("<all|trace|debug|info|warn|error|fatal|none>")),
45
+ });
46
+ /**
47
+ * `--log-format pretty|json`: `json` prints one {@link LogRecord} per line
48
+ * on stderr and leaves rendering to the reader. Registered on the CLI root;
49
+ * the console logger reads the parsed value (see {@link consoleSettings}).
50
+ */
51
+ export const LogFormatFlag = GlobalFlag.Setting("log-format")({
52
+ flag: Flag.Literals("log-format", ["pretty", "json"]).pipe(Flag.withDescription("Print log records as text or as JSON lines on stderr"), Flag.optional),
53
+ });
54
+ const flagValue = (context, flag) => Context.getOption(context, flag).pipe(Option.flatten, Option.getOrUndefined);
55
+ /**
56
+ * The console settings in `context`: the parsed `--log-level` and
57
+ * `--log-format` flags inside a command, and otherwise (before the command
58
+ * line is parsed, or in a child process that never sees it) the `ALCHEMY_LOG_*` environment variables. The console keeps its
59
+ * usual Info+ noise floor by default; the run log captures Debug regardless
60
+ * (#1231).
61
+ */
62
+ export const consoleSettings = (context) => ({
63
+ floor: flagValue(context, LogLevelFlag) ??
64
+ logLevelChoices[process.env[LOG_LEVEL_ENV]?.toLowerCase() ?? ""] ??
65
+ "Info",
66
+ format: (flagValue(context, LogFormatFlag) ?? process.env[LOG_FORMAT_ENV]) === "json"
67
+ ? "json"
68
+ : "pretty",
69
+ });
70
+ /** The current fiber's {@link consoleSettings}. */
71
+ export const currentConsoleSettings = Effect.map(Effect.context(), consoleSettings);
72
+ /** {@link ConsoleSettings} as environment, for a child process that renders the run's logs. */
73
+ export const consoleSettingsEnv = (settings) => ({
74
+ [LOG_LEVEL_ENV]: settings.floor,
75
+ [LOG_FORMAT_ENV]: settings.format,
76
+ });
77
+ const jsonSink = jsonLogger((line) => process.stderr.write(`${line}\n`));
78
+ const prettySink = makePlainConsoleSink();
79
+ /**
80
+ * Terminal sink: forwards records at or above the logging fiber's
81
+ * {@link consoleSettings} floor to `sink`, or to the sink its settings
82
+ * select.
83
+ */
84
+ export const makeConsoleLogger = (sink) => Logger.make((options) => {
85
+ const settings = consoleSettings(options.fiber.context);
86
+ if (LogLevel.isGreaterThanOrEqualTo(options.logLevel, settings.floor)) {
87
+ (sink ?? (settings.format === "json" ? jsonSink : prettySink)).log(options);
62
88
  }
63
89
  });
64
90
  /** Shared terminal logger for CLI entrypoints that do not need a run file. */
65
- export const ConsoleLogLive = Layer.mergeAll(Logger.layer([makeConsoleLogger(consoleLogFloor(process.argv.slice(2)))]), Layer.succeed(MinimumLogLevel, "Debug"));
91
+ export const ConsoleLogLive = Layer.mergeAll(Logger.layer([makeConsoleLogger()]), Layer.succeed(MinimumLogLevel, "Debug"));
66
92
  /** Drops everything — the fallback when the log file cannot be opened. */
67
93
  const noopLogger = Logger.make(() => { });
68
94
  /**
69
- * Debug run log for the whole CLI under `~/.alchemy/logs` (relocated by
70
- * `ALCHEMY_HOME` together with the rest of the auth state). Every run writes
71
- * `{timestamp}-pid{pid}.log` in logfmt at Debug level — profile/auth flows
72
- * and command failures record their full causes there even though the
73
- * terminal only shows the friendly message. Console output stays at Info+
74
- * unless `--log-level` lowers the floor (see {@link consoleLogFloor}).
75
- *
76
- * Commands that install their own loggers with `mergeWithExisting: true`
77
- * compose with this one; a replacing `Logger.layer` scopes it out for that
78
- * subtree only. Best-effort throughout: an unwritable `~/.alchemy` must
79
- * never take the CLI down with it.
95
+ * The run log's file logger alone. The run log is the only log file: the
96
+ * top-level CLI process writes it, and records its children already showed
97
+ * on the terminal (the `alchemy dev` exec child's) go here without being
98
+ * printed again.
80
99
  */
81
- export const GlobalLogLive = Layer.unwrap(Effect.gen(function* () {
100
+ export const RunLog = Context.Reference("alchemy/Cli/RunLog", {
101
+ defaultValue: () => noopLogger,
102
+ });
103
+ /** Delete run logs in `dir` older than {@link MAX_LOG_AGE}. Best-effort. */
104
+ const pruneRunLogs = (dir) => Effect.gen(function* () {
82
105
  const fs = yield* FileSystem.FileSystem;
83
106
  const path = yield* Path;
84
- const dir = path.join(rootDir(), "logs");
85
- yield* fs.makeDirectory(dir, { recursive: true });
86
- // Prune stale run logs so the directory stays bounded.
87
107
  const now = yield* Clock.currentTimeMillis;
88
108
  const entries = yield* fs.readDirectory(dir).pipe(Effect.orElseSucceed(() => []));
89
- yield* Effect.forEach(entries, (entry) => Effect.gen(function* () {
109
+ // Only run logs: the directory may hold other tools' logs (the test
110
+ // runner's `test/`).
111
+ yield* Effect.forEach(entries.filter((entry) => entry.endsWith(".ndjson")), (entry) => Effect.gen(function* () {
90
112
  const file = path.join(dir, entry);
91
- const info = yield* fs.stat(file);
92
- const mtime = Option.getOrUndefined(info.mtime)?.getTime();
113
+ const mtime = Option.getOrUndefined((yield* fs.stat(file)).mtime)?.getTime();
93
114
  if (mtime !== undefined && now - mtime > Duration.toMillis(MAX_LOG_AGE)) {
94
115
  yield* fs.remove(file);
95
116
  }
96
117
  }).pipe(Effect.ignore), { discard: true });
118
+ });
119
+ /**
120
+ * A run log file that is created on its first record, so a run that sends
121
+ * nothing to it leaves nothing behind (and a `profile` command run outside
122
+ * a project never creates a `.alchemy` there). The file starts with a `run`
123
+ * record describing the run, so it reads standalone.
124
+ *
125
+ * A logger is called synchronously but the file is written asynchronously,
126
+ * so the logger only queues each record as a JSON line, and one writer fiber
127
+ * creates the file on the first line and appends the rest. Closing the log
128
+ * ends the queue and waits for the writer, so no queued record is lost.
129
+ *
130
+ * @internal exported for tests.
131
+ */
132
+ export const lazyRunLog = Effect.fn(function* (dir, name, scope) {
133
+ const fs = yield* FileSystem.FileSystem;
134
+ const path = yield* Path;
135
+ const file = path.join(dir, name);
136
+ const lines = yield* Queue.unbounded();
137
+ const append = (batch) => fs.writeFileString(file, batch.map((line) => `${line}\n`).join(""), { flag: "a" });
138
+ const writer = yield* Effect.gen(function* () {
139
+ const first = yield* Queue.take(lines);
140
+ yield* fs.makeDirectory(dir, { recursive: true });
141
+ yield* pruneRunLogs(dir);
142
+ yield* append([safeStringify(yield* runRecord(scope)), first]);
143
+ return yield* Effect.forever(Effect.flatMap(Queue.takeAll(lines), append));
144
+ }).pipe(
145
+ // The queue ending stops the writer. Any other failure (an unwritable
146
+ // directory) drops the log, never the command: a shut-down queue
147
+ // ignores further records.
148
+ Effect.catchCause(() => Queue.shutdown(lines)), Effect.forkDetach);
149
+ yield* Effect.addFinalizer(() => Effect.andThen(Queue.end(lines), Fiber.await(writer)));
150
+ // Formatted now, so a record keeps the annotations it was logged with.
151
+ return Logger.make((logged) => {
152
+ Queue.offerUnsafe(lines, formatJsonRecord.log(logged));
153
+ });
154
+ });
155
+ /**
156
+ * The two run logs: records scoped `global` (the state store, auth,
157
+ * profiles; see `globalLogs`) go to `~/.alchemy/logs` (relocated by
158
+ * `ALCHEMY_HOME`), everything else to the project's `.alchemy/log`. Every
159
+ * run writes `{timestamp}-pid{pid}.ndjson` (NDJSON log records) at Debug
160
+ * level — failures record their full causes there even though the terminal
161
+ * only shows the friendly message. Console output stays at Info+ unless
162
+ * `--log-level` lowers the floor (see {@link consoleSettings}).
163
+ *
164
+ * Only the top-level CLI process writes them; its children's records reach
165
+ * them through it. Commands that install their own loggers with
166
+ * `mergeWithExisting: true` compose with these; a replacing `Logger.layer`
167
+ * scopes them out for that subtree only.
168
+ */
169
+ export const GlobalLogLive = Layer.unwrap(Effect.gen(function* () {
170
+ const path = yield* Path;
97
171
  const stamp = new Date(yield* Clock.currentTimeMillis)
98
172
  .toISOString()
99
173
  .slice(0, 19)
100
174
  .replaceAll(":", "-");
101
- const file = path.join(dir, `${stamp}-pid${process.pid}.log`);
102
- return Layer.mergeAll(Logger.layer([
103
- makeConsoleLogger(consoleLogFloor(process.argv.slice(2))),
104
- Logger.formatLogFmt.pipe(Logger.toFile(file, { flag: "a" }), Effect.orElseSucceed(() => noopLogger)),
105
- ]), Layer.succeed(MinimumLogLevel, "Debug"));
175
+ const name = `${stamp}-pid${process.pid}.ndjson`;
176
+ const global = yield* lazyRunLog(path.join(rootDir(), "logs"), name, "global");
177
+ const project = yield* lazyRunLog(path.resolve(yield* dotAlchemyDirectory, "log"), name, "project");
178
+ const runLog = Logger.make((options) => (options.fiber.getRef(CurrentLogAnnotations)[LogAnnotation.scope] === "global"
179
+ ? global
180
+ : project).log(options));
181
+ return Layer.mergeAll(
182
+ // Logs stay on this machine: telemetry exports spans and metrics only.
183
+ Logger.layer([makeConsoleLogger(), runLog]), Layer.succeed(RunLog, runLog), Layer.succeed(MinimumLogLevel, "Debug"));
106
184
  }).pipe(Effect.orElseSucceed(() => Layer.empty)));
107
185
  /** First line of every run log: enough context to read it standalone. */
108
- export const logRunHeader = Effect.logDebug(`alchemy ${packageJson.version} pid=${process.pid} cwd=${process.cwd()} argv=${JSON.stringify(process.argv.slice(2))}`);
186
+ const runRecord = (scope) => Effect.map(Clock.currentTimeMillis, (time) => ({
187
+ time,
188
+ level: "info",
189
+ kind: "run",
190
+ process: "cli",
191
+ scope,
192
+ trace: processTrace,
193
+ attributes: {},
194
+ data: {
195
+ version: packageJson.version,
196
+ pid: process.pid,
197
+ cwd: process.cwd(),
198
+ argv: process.argv.slice(2),
199
+ },
200
+ }));
109
201
  //# sourceMappingURL=GlobalLog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalLog.js","sourceRoot":"","sources":["../../src/Cli/GlobalLog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GlobalLog.js","sourceRoot":"","sources":["../../src/Cli/GlobalLog.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"LoggingCli.d.ts","sourceRoot":"","sources":["../../src/Cli/LoggingCli.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAG5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,EAAmC,IAAI,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA6E5D,6DAA6D;AAC7D,eAAO,MAAM,eAAe,SAAU,IAAI,YAAW,kBAAkB,KAAQ,MAAM,EA0EpF,CAAC;AAcF,eAAO,MAAM,UAAU,6CAsJtB,CAAC"}
1
+ {"version":3,"file":"LoggingCli.d.ts","sourceRoot":"","sources":["../../src/Cli/LoggingCli.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAG5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,KAAK,EAAmC,IAAI,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAkF5D,6DAA6D;AAC7D,eAAO,MAAM,eAAe,SAAU,IAAI,YAAW,kBAAkB,KAAQ,MAAM,EA0EpF,CAAC;AAcF,eAAO,MAAM,UAAU,6CA4JtB,CAAC"}
@@ -7,11 +7,13 @@ import { NonInteractiveTerminal } from "../Interaction.js";
7
7
  import { Cli } from "../Report.js";
8
8
  import { canPromptOnStdin } from "../Util/interactive.js";
9
9
  import { formatResourceTag } from "../Util/ResourceOutput.js";
10
- import { ansiFg, colorsEnabled, theme } from "./CliKit/index.js";
10
+ import { ansiFg, colorsEnabled } from "../Util/Terminal.js";
11
+ import { theme } from "../Util/Theme.js";
11
12
  import { actionStyle, applyStatusColor, isTerminalStatus as isTerminal, } from "./components/view/statusStyle.js";
12
13
  import { formatElapsed } from "./Format.js";
13
14
  import { formatModeNote } from "./ModeTag.js";
14
15
  import { actionHasPlannedWork, buildPlanSummary } from "./NamespaceTree.js";
16
+ import { present } from "./Present.js";
15
17
  import { formatDeclaredPropertyYaml, matchYamlChange, matchYamlKey } from "./PropertyDiff.js";
16
18
  const ESC = "\x1b[";
17
19
  const RESET = `${ESC}0m`;
@@ -44,6 +46,8 @@ const statusColor = (status) => {
44
46
  return hex(color);
45
47
  };
46
48
  const tag = formatResourceTag;
49
+ /** A progress line about one resource. */
50
+ const logFor = (fqn, message, level) => present(message, { resource: fqn, level });
47
51
  /**
48
52
  * In-progress statuses that represent real cloud work. Plain output has no
49
53
  * spinner, so these lines are the liveness signal in CI logs
@@ -159,8 +163,8 @@ export const LoggingCli = Layer.effect(Cli, Effect.gen(function* () {
159
163
  // planning time (the spinner's implicit "how long did that take").
160
164
  const startedAt = yield* Clock.currentTimeMillis;
161
165
  if (title !== undefined)
162
- yield* Effect.logInfo(bold(title));
163
- yield* Effect.logInfo(dim(label));
166
+ yield* present(bold(title));
167
+ yield* present(dim(label));
164
168
  let closed = false;
165
169
  let lastLabel = label;
166
170
  const write = (nextLabel, _nextDetail) => Effect.suspend(() => {
@@ -169,13 +173,13 @@ export const LoggingCli = Layer.effect(Cli, Effect.gen(function* () {
169
173
  if (closed || nextLabel === lastLabel)
170
174
  return Effect.void;
171
175
  lastLabel = nextLabel;
172
- return Effect.logInfo(dim(nextLabel));
176
+ return present(dim(nextLabel));
173
177
  });
174
178
  const finish = (message, paint) => Effect.suspend(() => {
175
179
  if (closed)
176
180
  return Effect.void;
177
181
  closed = true;
178
- return Clock.currentTimeMillis.pipe(Effect.flatMap((now) => Effect.logInfo(`${paint(message)} ${dim(`(${formatElapsed(now - startedAt)})`)}`)));
182
+ return Clock.currentTimeMillis.pipe(Effect.flatMap((now) => present(`${paint(message)} ${dim(`(${formatElapsed(now - startedAt)})`)}`)));
179
183
  });
180
184
  return {
181
185
  update: write,
@@ -188,7 +192,7 @@ export const LoggingCli = Layer.effect(Cli, Effect.gen(function* () {
188
192
  }),
189
193
  approvePlan: (plan, options) => Effect.gen(function* () {
190
194
  for (const line of formatPlanLines(plan, options))
191
- yield* Effect.logInfo(line);
195
+ yield* present(line);
192
196
  if (canPromptOnStdin()) {
193
197
  return yield* confirm(plan.destroy === true
194
198
  ? { message: "Destroy these resources?", initial: false }
@@ -201,24 +205,24 @@ export const LoggingCli = Layer.effect(Cli, Effect.gen(function* () {
201
205
  }),
202
206
  displayPlan: (plan, options) => Effect.gen(function* () {
203
207
  for (const line of formatPlanLines(plan, options))
204
- yield* Effect.logInfo(line);
208
+ yield* present(line);
205
209
  }),
206
210
  startApplySession: (plan, options) => Effect.gen(function* () {
207
211
  for (const line of formatPlanLines(plan, options))
208
- yield* Effect.logInfo(line);
209
- yield* Effect.logInfo("");
212
+ yield* present(line);
213
+ yield* present("");
210
214
  const startedAt = yield* Clock.currentTimeMillis;
211
215
  const started = new Map();
212
216
  const terminal = new Map();
213
217
  const notes = new Map();
214
218
  const statusNotes = new Map();
215
219
  return {
216
- setOutput: (value) => Effect.logInfo(inspect(value, { colors: false })),
217
- // Progress is an Effect log record, just like provider and build
218
- // diagnostics, so the append-only renderer gives every line the
219
- // same timestamp / level / fiber prefix.
220
+ setOutput: (value) => present(inspect(value, { colors: false })),
221
+ // Presents the apply events (which are already log records) as
222
+ // lines shaped like log lines, so the plain output reads as one
223
+ // stream.
220
224
  emit: (event) => Clock.currentTimeMillis.pipe(Effect.flatMap((now) => Effect.suspend(() => {
221
- if (event._tag === "apply.resource.note") {
225
+ if (event.type === "apply.resource.note") {
222
226
  // `status` notes only surface as the settle line's suffix;
223
227
  // everything else streams, deduping consecutive repeats.
224
228
  if (event.kind === "status") {
@@ -228,7 +232,7 @@ export const LoggingCli = Layer.effect(Cli, Effect.gen(function* () {
228
232
  if (notes.get(event.fqn) === event.message)
229
233
  return Effect.void;
230
234
  notes.set(event.fqn, event.message);
231
- return Effect.logInfo(`${tag(event.fqn)} ${blue(event.message)}`);
235
+ return logFor(event.fqn, blue(event.message));
232
236
  }
233
237
  const id = event.fqn;
234
238
  const mode = modeSuffix({
@@ -241,7 +245,7 @@ export const LoggingCli = Layer.effect(Cli, Effect.gen(function* () {
241
245
  return Effect.void;
242
246
  if (!started.has(id))
243
247
  started.set(id, now);
244
- return Effect.logInfo(`${tag(id)} ${dim(event.status)}${mode}`);
248
+ return logFor(id, `${dim(event.status)}${mode}`);
245
249
  }
246
250
  terminal.set(id, event.status);
247
251
  const status = statusColor(event.status)(event.status);
@@ -254,7 +258,9 @@ export const LoggingCli = Layer.effect(Cli, Effect.gen(function* () {
254
258
  const msg = message
255
259
  ? ` ${dim("—")} ${event.status === "fail" ? red(message) : message}`
256
260
  : "";
257
- return Effect.logInfo(`${tag(id)} ${status}${mode}${msg}${took}`);
261
+ // At the level `emit` gives the event, so `--log-level error`
262
+ // still shows a failed resource.
263
+ return logFor(id, `${status}${mode}${msg}${took}`, event.status === "fail" ? "Error" : undefined);
258
264
  }))),
259
265
  done: (outcome) => Clock.currentTimeMillis.pipe(Effect.flatMap((now) => {
260
266
  const statuses = [...terminal.values()];
@@ -266,7 +272,7 @@ export const LoggingCli = Layer.effect(Cli, Effect.gen(function* () {
266
272
  parts.push(red(`${failed} failed`));
267
273
  if (skipped)
268
274
  parts.push(dim(`${skipped} skipped`));
269
- return Effect.logInfo("").pipe(Effect.andThen(Effect.logInfo(`${bold(outcome === "success" ? "Done:" : "Failed:")} ${parts.join(dim(", "))} ${dim(`(${formatElapsed(now - startedAt)})`)}`)));
275
+ return present("").pipe(Effect.andThen(present(`${bold(outcome === "success" ? "Done:" : "Failed:")} ${parts.join(dim(", "))} ${dim(`(${formatElapsed(now - startedAt)})`)}`)));
270
276
  })),
271
277
  };
272
278
  }),