alchemy 2.0.0-beta.76 → 2.0.0-beta.77

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 (1418) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_LICENSES.md +11 -11
  3. package/bin/cli.js +88 -11
  4. package/bin/exec.js +11828 -5720
  5. package/bin/exec.js.map +1 -1
  6. package/bin/register-oxc.js +27 -0
  7. package/lib/AWS/AMP/Scraper.js +1 -1
  8. package/lib/AWS/AMP/Scraper.js.map +1 -1
  9. package/lib/AWS/AppRunner/Service.d.ts +11 -27
  10. package/lib/AWS/AppRunner/Service.d.ts.map +1 -1
  11. package/lib/AWS/AppRunner/Service.js +7 -21
  12. package/lib/AWS/AppRunner/Service.js.map +1 -1
  13. package/lib/AWS/Assets.d.ts +1 -1
  14. package/lib/AWS/Assets.js +2 -2
  15. package/lib/AWS/Assets.js.map +1 -1
  16. package/lib/AWS/AuthProvider.d.ts +40 -53
  17. package/lib/AWS/AuthProvider.d.ts.map +1 -1
  18. package/lib/AWS/AuthProvider.js +480 -215
  19. package/lib/AWS/AuthProvider.js.map +1 -1
  20. package/lib/AWS/Batch/JobDefinition.d.ts +11 -27
  21. package/lib/AWS/Batch/JobDefinition.d.ts.map +1 -1
  22. package/lib/AWS/Batch/JobDefinition.js +7 -21
  23. package/lib/AWS/Batch/JobDefinition.js.map +1 -1
  24. package/lib/AWS/EC2/GetAmi.d.ts +2 -0
  25. package/lib/AWS/EC2/GetAmi.d.ts.map +1 -1
  26. package/lib/AWS/EC2/Instance.d.ts +11 -27
  27. package/lib/AWS/EC2/Instance.d.ts.map +1 -1
  28. package/lib/AWS/EC2/Instance.js +7 -21
  29. package/lib/AWS/EC2/Instance.js.map +1 -1
  30. package/lib/AWS/EC2/hosted.d.ts +5 -6
  31. package/lib/AWS/EC2/hosted.d.ts.map +1 -1
  32. package/lib/AWS/EC2/hosted.js.map +1 -1
  33. package/lib/AWS/ECR/Image.d.ts +1 -1
  34. package/lib/AWS/ECR/ImageSource.d.ts +4 -5
  35. package/lib/AWS/ECR/ImageSource.d.ts.map +1 -1
  36. package/lib/AWS/ECR/ImageSource.js.map +1 -1
  37. package/lib/AWS/ECS/Service.d.ts +7 -21
  38. package/lib/AWS/ECS/Service.d.ts.map +1 -1
  39. package/lib/AWS/ECS/Service.js +7 -21
  40. package/lib/AWS/ECS/Service.js.map +1 -1
  41. package/lib/AWS/ECS/Task.d.ts +7 -21
  42. package/lib/AWS/ECS/Task.d.ts.map +1 -1
  43. package/lib/AWS/ECS/Task.js +7 -21
  44. package/lib/AWS/ECS/Task.js.map +1 -1
  45. package/lib/AWS/ElastiCache/CacheCluster.d.ts +60 -0
  46. package/lib/AWS/ElastiCache/CacheCluster.d.ts.map +1 -0
  47. package/lib/AWS/ElastiCache/CacheCluster.js +199 -0
  48. package/lib/AWS/ElastiCache/CacheCluster.js.map +1 -0
  49. package/lib/AWS/ElastiCache/ConnectCacheCluster.d.ts +46 -0
  50. package/lib/AWS/ElastiCache/ConnectCacheCluster.d.ts.map +1 -0
  51. package/lib/AWS/ElastiCache/ConnectCacheCluster.js +5 -0
  52. package/lib/AWS/ElastiCache/ConnectCacheCluster.js.map +1 -0
  53. package/lib/AWS/ElastiCache/ConnectCacheClusterHttp.d.ts +4 -0
  54. package/lib/AWS/ElastiCache/ConnectCacheClusterHttp.d.ts.map +1 -0
  55. package/lib/AWS/ElastiCache/ConnectCacheClusterHttp.js +52 -0
  56. package/lib/AWS/ElastiCache/ConnectCacheClusterHttp.js.map +1 -0
  57. package/lib/AWS/ElastiCache/ConnectReplicationGroup.d.ts +47 -0
  58. package/lib/AWS/ElastiCache/ConnectReplicationGroup.d.ts.map +1 -0
  59. package/lib/AWS/ElastiCache/ConnectReplicationGroup.js +5 -0
  60. package/lib/AWS/ElastiCache/ConnectReplicationGroup.js.map +1 -0
  61. package/lib/AWS/ElastiCache/ConnectReplicationGroupHttp.d.ts +4 -0
  62. package/lib/AWS/ElastiCache/ConnectReplicationGroupHttp.d.ts.map +1 -0
  63. package/lib/AWS/ElastiCache/ConnectReplicationGroupHttp.js +77 -0
  64. package/lib/AWS/ElastiCache/ConnectReplicationGroupHttp.js.map +1 -0
  65. package/lib/AWS/ElastiCache/ReplicationGroup.d.ts +95 -0
  66. package/lib/AWS/ElastiCache/ReplicationGroup.d.ts.map +1 -0
  67. package/lib/AWS/ElastiCache/ReplicationGroup.js +383 -0
  68. package/lib/AWS/ElastiCache/ReplicationGroup.js.map +1 -0
  69. package/lib/AWS/ElastiCache/SubnetGroup.d.ts +39 -0
  70. package/lib/AWS/ElastiCache/SubnetGroup.d.ts.map +1 -0
  71. package/lib/AWS/ElastiCache/SubnetGroup.js +136 -0
  72. package/lib/AWS/ElastiCache/SubnetGroup.js.map +1 -0
  73. package/lib/AWS/ElastiCache/index.d.ts +7 -0
  74. package/lib/AWS/ElastiCache/index.d.ts.map +1 -1
  75. package/lib/AWS/ElastiCache/index.js +7 -0
  76. package/lib/AWS/ElastiCache/index.js.map +1 -1
  77. package/lib/AWS/ElastiCache/internal.d.ts +13 -0
  78. package/lib/AWS/ElastiCache/internal.d.ts.map +1 -0
  79. package/lib/AWS/ElastiCache/internal.js +19 -0
  80. package/lib/AWS/ElastiCache/internal.js.map +1 -0
  81. package/lib/AWS/Environment.d.ts +2 -3
  82. package/lib/AWS/Environment.d.ts.map +1 -1
  83. package/lib/AWS/Environment.js +11 -41
  84. package/lib/AWS/Environment.js.map +1 -1
  85. package/lib/AWS/IAM/actions.generated.js +1 -1
  86. package/lib/AWS/IAM/actions.generated.js.map +1 -1
  87. package/lib/AWS/IdentityCenter/AccountAssignment.js +6 -0
  88. package/lib/AWS/IdentityCenter/AccountAssignment.js.map +1 -1
  89. package/lib/AWS/Lambda/Function.d.ts +14 -23
  90. package/lib/AWS/Lambda/Function.d.ts.map +1 -1
  91. package/lib/AWS/Lambda/Function.js +15 -20
  92. package/lib/AWS/Lambda/Function.js.map +1 -1
  93. package/lib/AWS/Lambda/MicrovmImage.d.ts +12 -28
  94. package/lib/AWS/Lambda/MicrovmImage.d.ts.map +1 -1
  95. package/lib/AWS/Lambda/MicrovmImage.js +8 -22
  96. package/lib/AWS/Lambda/MicrovmImage.js.map +1 -1
  97. package/lib/AWS/Local/DevWatchProvider.d.ts.map +1 -1
  98. package/lib/AWS/Local/DevWatchProvider.js +10 -1
  99. package/lib/AWS/Local/DevWatchProvider.js.map +1 -1
  100. package/lib/AWS/Organizations/Account.d.ts +2 -2
  101. package/lib/AWS/Organizations/Account.d.ts.map +1 -1
  102. package/lib/AWS/Organizations/Account.js +16 -8
  103. package/lib/AWS/Organizations/Account.js.map +1 -1
  104. package/lib/AWS/Organizations/DelegatedAdministrator.d.ts +2 -3
  105. package/lib/AWS/Organizations/DelegatedAdministrator.d.ts.map +1 -1
  106. package/lib/AWS/Organizations/DelegatedAdministrator.js +5 -5
  107. package/lib/AWS/Organizations/DelegatedAdministrator.js.map +1 -1
  108. package/lib/AWS/Organizations/Organization.d.ts +1 -1
  109. package/lib/AWS/Organizations/Organization.d.ts.map +1 -1
  110. package/lib/AWS/Organizations/Organization.js +2 -2
  111. package/lib/AWS/Organizations/Organization.js.map +1 -1
  112. package/lib/AWS/Organizations/common.d.ts +9 -0
  113. package/lib/AWS/Organizations/common.d.ts.map +1 -1
  114. package/lib/AWS/Organizations/common.js +13 -0
  115. package/lib/AWS/Organizations/common.js.map +1 -1
  116. package/lib/AWS/Providers.d.ts.map +1 -1
  117. package/lib/AWS/Providers.js +4 -1
  118. package/lib/AWS/Providers.js.map +1 -1
  119. package/lib/AWS/StateStore/State.d.ts +1 -1
  120. package/lib/AWS/StateStore/State.d.ts.map +1 -1
  121. package/lib/Alchemist/Errors.d.ts +31 -0
  122. package/lib/Alchemist/Errors.d.ts.map +1 -0
  123. package/lib/Alchemist/Errors.js +19 -0
  124. package/lib/Alchemist/Errors.js.map +1 -0
  125. package/lib/Alchemist/Progress.d.ts +16 -0
  126. package/lib/Alchemist/Progress.d.ts.map +1 -0
  127. package/lib/Alchemist/Progress.js +129 -0
  128. package/lib/Alchemist/Progress.js.map +1 -0
  129. package/lib/Alchemist/Runtime.d.ts +22 -0
  130. package/lib/Alchemist/Runtime.d.ts.map +1 -0
  131. package/lib/Alchemist/Runtime.js +28 -0
  132. package/lib/Alchemist/Runtime.js.map +1 -0
  133. package/lib/Alchemist/Session.d.ts +124 -0
  134. package/lib/Alchemist/Session.d.ts.map +1 -0
  135. package/lib/Alchemist/Session.js +223 -0
  136. package/lib/Alchemist/Session.js.map +1 -0
  137. package/lib/Alchemist/index.d.ts +15 -0
  138. package/lib/Alchemist/index.d.ts.map +1 -0
  139. package/lib/Alchemist/index.js +15 -0
  140. package/lib/Alchemist/index.js.map +1 -0
  141. package/lib/Alchemist/routes/aws.d.ts +21 -0
  142. package/lib/Alchemist/routes/aws.d.ts.map +1 -0
  143. package/lib/Alchemist/routes/aws.js +54 -0
  144. package/lib/Alchemist/routes/aws.js.map +1 -0
  145. package/lib/Alchemist/routes/cloudflare.d.ts +63 -0
  146. package/lib/Alchemist/routes/cloudflare.d.ts.map +1 -0
  147. package/lib/Alchemist/routes/cloudflare.js +113 -0
  148. package/lib/Alchemist/routes/cloudflare.js.map +1 -0
  149. package/lib/Alchemist/routes/cloudflareToken.d.ts +93 -0
  150. package/lib/Alchemist/routes/cloudflareToken.d.ts.map +1 -0
  151. package/lib/Alchemist/routes/cloudflareToken.js +111 -0
  152. package/lib/Alchemist/routes/cloudflareToken.js.map +1 -0
  153. package/lib/Alchemist/routes/drift.d.ts +55 -0
  154. package/lib/Alchemist/routes/drift.d.ts.map +1 -0
  155. package/lib/Alchemist/routes/drift.js +52 -0
  156. package/lib/Alchemist/routes/drift.js.map +1 -0
  157. package/lib/Alchemist/routes/logs.d.ts +41 -0
  158. package/lib/Alchemist/routes/logs.d.ts.map +1 -0
  159. package/lib/Alchemist/routes/logs.js +112 -0
  160. package/lib/Alchemist/routes/logs.js.map +1 -0
  161. package/lib/Alchemist/routes/nuke.d.ts +46 -0
  162. package/lib/Alchemist/routes/nuke.d.ts.map +1 -0
  163. package/lib/Alchemist/routes/nuke.js +80 -0
  164. package/lib/Alchemist/routes/nuke.js.map +1 -0
  165. package/lib/Alchemist/routes/profile.d.ts +133 -0
  166. package/lib/Alchemist/routes/profile.d.ts.map +1 -0
  167. package/lib/Alchemist/routes/profile.js +257 -0
  168. package/lib/Alchemist/routes/profile.js.map +1 -0
  169. package/lib/Alchemist/routes/provider.d.ts +33 -0
  170. package/lib/Alchemist/routes/provider.d.ts.map +1 -0
  171. package/lib/Alchemist/routes/provider.js +65 -0
  172. package/lib/Alchemist/routes/provider.js.map +1 -0
  173. package/lib/Alchemist/routes/stack.d.ts +78 -0
  174. package/lib/Alchemist/routes/stack.d.ts.map +1 -0
  175. package/lib/Alchemist/routes/stack.js +67 -0
  176. package/lib/Alchemist/routes/stack.js.map +1 -0
  177. package/lib/Alchemist/routes/state.d.ts +35 -0
  178. package/lib/Alchemist/routes/state.d.ts.map +1 -0
  179. package/lib/Alchemist/routes/state.js +42 -0
  180. package/lib/Alchemist/routes/state.js.map +1 -0
  181. package/lib/Apply.d.ts +8 -6
  182. package/lib/Apply.d.ts.map +1 -1
  183. package/lib/Apply.js +209 -103
  184. package/lib/Apply.js.map +1 -1
  185. package/lib/Auth/AuthProvider.d.ts +201 -25
  186. package/lib/Auth/AuthProvider.d.ts.map +1 -1
  187. package/lib/Auth/AuthProvider.js +180 -40
  188. package/lib/Auth/AuthProvider.js.map +1 -1
  189. package/lib/Auth/BrowserOAuth.d.ts +27 -0
  190. package/lib/Auth/BrowserOAuth.d.ts.map +1 -0
  191. package/lib/Auth/BrowserOAuth.js +41 -0
  192. package/lib/Auth/BrowserOAuth.js.map +1 -0
  193. package/lib/Auth/Credentials.d.ts +11 -6
  194. package/lib/Auth/Credentials.d.ts.map +1 -1
  195. package/lib/Auth/Credentials.js +62 -23
  196. package/lib/Auth/Credentials.js.map +1 -1
  197. package/lib/Auth/CredentialsCache.d.ts +15 -0
  198. package/lib/Auth/CredentialsCache.d.ts.map +1 -0
  199. package/lib/Auth/CredentialsCache.js +34 -0
  200. package/lib/Auth/CredentialsCache.js.map +1 -0
  201. package/lib/Auth/Demand.d.ts +59 -34
  202. package/lib/Auth/Demand.d.ts.map +1 -1
  203. package/lib/Auth/Demand.js +150 -60
  204. package/lib/Auth/Demand.js.map +1 -1
  205. package/lib/Auth/Env.d.ts +4 -4
  206. package/lib/Auth/Env.d.ts.map +1 -1
  207. package/lib/Auth/Env.js +18 -9
  208. package/lib/Auth/Env.js.map +1 -1
  209. package/lib/Auth/Inspect.d.ts +33 -0
  210. package/lib/Auth/Inspect.d.ts.map +1 -0
  211. package/lib/Auth/Inspect.js +67 -0
  212. package/lib/Auth/Inspect.js.map +1 -0
  213. package/lib/Auth/Lock.d.ts +6 -0
  214. package/lib/Auth/Lock.d.ts.map +1 -1
  215. package/lib/Auth/Lock.js +22 -11
  216. package/lib/Auth/Lock.js.map +1 -1
  217. package/lib/Auth/OAuthFlow.d.ts +119 -0
  218. package/lib/Auth/OAuthFlow.d.ts.map +1 -0
  219. package/lib/Auth/OAuthFlow.js +314 -0
  220. package/lib/Auth/OAuthFlow.js.map +1 -0
  221. package/lib/Auth/Paths.d.ts +18 -0
  222. package/lib/Auth/Paths.d.ts.map +1 -0
  223. package/lib/Auth/Paths.js +20 -0
  224. package/lib/Auth/Paths.js.map +1 -0
  225. package/lib/Auth/Profile.d.ts +91 -67
  226. package/lib/Auth/Profile.d.ts.map +1 -1
  227. package/lib/Auth/Profile.js +449 -92
  228. package/lib/Auth/Profile.js.map +1 -1
  229. package/lib/Auth/Resolve.d.ts +42 -0
  230. package/lib/Auth/Resolve.d.ts.map +1 -0
  231. package/lib/Auth/Resolve.js +90 -0
  232. package/lib/Auth/Resolve.js.map +1 -0
  233. package/lib/Auth/StoredAuthProvider.d.ts +84 -0
  234. package/lib/Auth/StoredAuthProvider.d.ts.map +1 -0
  235. package/lib/Auth/StoredAuthProvider.js +179 -0
  236. package/lib/Auth/StoredAuthProvider.js.map +1 -0
  237. package/lib/Auth/index.d.ts +1 -0
  238. package/lib/Auth/index.d.ts.map +1 -1
  239. package/lib/Auth/index.js +1 -0
  240. package/lib/Auth/index.js.map +1 -1
  241. package/lib/Axiom/AuthProvider.d.ts +17 -26
  242. package/lib/Axiom/AuthProvider.d.ts.map +1 -1
  243. package/lib/Axiom/AuthProvider.js +89 -172
  244. package/lib/Axiom/AuthProvider.js.map +1 -1
  245. package/lib/Axiom/Credentials.d.ts +2 -4
  246. package/lib/Axiom/Credentials.d.ts.map +1 -1
  247. package/lib/Axiom/Credentials.js +5 -10
  248. package/lib/Axiom/Credentials.js.map +1 -1
  249. package/lib/Axiom/Providers.d.ts +2 -2
  250. package/lib/Axiom/Providers.d.ts.map +1 -1
  251. package/lib/Axiom/Providers.js +3 -3
  252. package/lib/Axiom/Providers.js.map +1 -1
  253. package/lib/Bundle/Bundle.d.ts +3 -5
  254. package/lib/Bundle/Bundle.d.ts.map +1 -1
  255. package/lib/Bundle/Bundle.js.map +1 -1
  256. package/lib/Cli/CliKit/CliKit.d.ts +92 -0
  257. package/lib/Cli/CliKit/CliKit.d.ts.map +1 -0
  258. package/lib/Cli/CliKit/CliKit.js +27 -0
  259. package/lib/Cli/CliKit/CliKit.js.map +1 -0
  260. package/lib/Cli/CliKit/index.d.ts +9 -0
  261. package/lib/Cli/CliKit/index.d.ts.map +1 -0
  262. package/lib/Cli/CliKit/index.js +9 -0
  263. package/lib/Cli/CliKit/index.js.map +1 -0
  264. package/lib/Cli/CliKit/interaction.d.ts +13 -0
  265. package/lib/Cli/CliKit/interaction.d.ts.map +1 -0
  266. package/lib/Cli/CliKit/interaction.js +17 -0
  267. package/lib/Cli/CliKit/interaction.js.map +1 -0
  268. package/lib/Cli/CliKit/layer.d.ts +7 -0
  269. package/lib/Cli/CliKit/layer.d.ts.map +1 -0
  270. package/lib/Cli/CliKit/layer.js +34 -0
  271. package/lib/Cli/CliKit/layer.js.map +1 -0
  272. package/lib/Cli/DevOptions.d.ts +17 -0
  273. package/lib/Cli/DevOptions.d.ts.map +1 -0
  274. package/lib/Cli/DevOptions.js +16 -0
  275. package/lib/Cli/DevOptions.js.map +1 -0
  276. package/lib/Cli/Format.d.ts +5 -0
  277. package/lib/Cli/Format.d.ts.map +1 -0
  278. package/lib/Cli/Format.js +27 -0
  279. package/lib/Cli/Format.js.map +1 -0
  280. package/lib/Cli/GlobalLog.d.ts +41 -0
  281. package/lib/Cli/GlobalLog.d.ts.map +1 -0
  282. package/lib/Cli/GlobalLog.js +112 -0
  283. package/lib/Cli/GlobalLog.js.map +1 -0
  284. package/lib/Cli/LoggingCli.d.ts +4 -3
  285. package/lib/Cli/LoggingCli.d.ts.map +1 -1
  286. package/lib/Cli/LoggingCli.js +240 -100
  287. package/lib/Cli/LoggingCli.js.map +1 -1
  288. package/lib/Cli/ModeTag.d.ts +1 -1
  289. package/lib/Cli/ModeTag.js +1 -1
  290. package/lib/Cli/NamespaceTree.d.ts +18 -8
  291. package/lib/Cli/NamespaceTree.d.ts.map +1 -1
  292. package/lib/Cli/NamespaceTree.js +52 -11
  293. package/lib/Cli/NamespaceTree.js.map +1 -1
  294. package/lib/Cli/PlainCliFormatter.d.ts +11 -0
  295. package/lib/Cli/PlainCliFormatter.d.ts.map +1 -0
  296. package/lib/Cli/PlainCliFormatter.js +70 -0
  297. package/lib/Cli/PlainCliFormatter.js.map +1 -0
  298. package/lib/Cli/PropertyDiff.d.ts +37 -0
  299. package/lib/Cli/PropertyDiff.d.ts.map +1 -0
  300. package/lib/Cli/PropertyDiff.js +162 -0
  301. package/lib/Cli/PropertyDiff.js.map +1 -0
  302. package/lib/Cli/checkVersion.d.ts.map +1 -1
  303. package/lib/Cli/checkVersion.js +10 -6
  304. package/lib/Cli/checkVersion.js.map +1 -1
  305. package/lib/Cli/commands/aws.d.ts +2 -4
  306. package/lib/Cli/commands/aws.d.ts.map +1 -1
  307. package/lib/Cli/commands/aws.js +43 -55
  308. package/lib/Cli/commands/aws.js.map +1 -1
  309. package/lib/Cli/commands/cloudflare.d.ts +6 -7
  310. package/lib/Cli/commands/cloudflare.d.ts.map +1 -1
  311. package/lib/Cli/commands/cloudflare.js +149 -307
  312. package/lib/Cli/commands/cloudflare.js.map +1 -1
  313. package/lib/Cli/commands/compat.d.ts +11 -0
  314. package/lib/Cli/commands/compat.d.ts.map +1 -0
  315. package/lib/Cli/commands/compat.js +19 -0
  316. package/lib/Cli/commands/compat.js.map +1 -0
  317. package/lib/Cli/commands/confirm.d.ts +33 -0
  318. package/lib/Cli/commands/confirm.d.ts.map +1 -0
  319. package/lib/Cli/commands/confirm.js +39 -0
  320. package/lib/Cli/commands/confirm.js.map +1 -0
  321. package/lib/Cli/commands/deploy.d.ts +20 -32
  322. package/lib/Cli/commands/deploy.d.ts.map +1 -1
  323. package/lib/Cli/commands/deploy.js +140 -140
  324. package/lib/Cli/commands/deploy.js.map +1 -1
  325. package/lib/Cli/commands/dev.d.ts +5 -4
  326. package/lib/Cli/commands/dev.d.ts.map +1 -1
  327. package/lib/Cli/commands/dev.js +52 -26
  328. package/lib/Cli/commands/dev.js.map +1 -1
  329. package/lib/Cli/commands/drift.d.ts +12 -0
  330. package/lib/Cli/commands/drift.d.ts.map +1 -0
  331. package/lib/Cli/commands/drift.js +68 -0
  332. package/lib/Cli/commands/drift.js.map +1 -0
  333. package/lib/Cli/commands/errors.d.ts +35 -0
  334. package/lib/Cli/commands/errors.d.ts.map +1 -0
  335. package/lib/Cli/commands/errors.js +106 -0
  336. package/lib/Cli/commands/errors.js.map +1 -0
  337. package/lib/Cli/commands/flags.d.ts +46 -0
  338. package/lib/Cli/commands/flags.d.ts.map +1 -0
  339. package/lib/Cli/commands/flags.js +98 -0
  340. package/lib/Cli/commands/flags.js.map +1 -0
  341. package/lib/Cli/commands/instrument.d.ts +3 -0
  342. package/lib/Cli/commands/instrument.d.ts.map +1 -0
  343. package/lib/Cli/commands/instrument.js +6 -0
  344. package/lib/Cli/commands/instrument.js.map +1 -0
  345. package/lib/Cli/commands/logs.d.ts +5 -4
  346. package/lib/Cli/commands/logs.d.ts.map +1 -1
  347. package/lib/Cli/commands/logs.js +63 -88
  348. package/lib/Cli/commands/logs.js.map +1 -1
  349. package/lib/Cli/commands/nuke.d.ts +3 -2
  350. package/lib/Cli/commands/nuke.d.ts.map +1 -1
  351. package/lib/Cli/commands/nuke.js +89 -588
  352. package/lib/Cli/commands/nuke.js.map +1 -1
  353. package/lib/Cli/commands/profile/commands.d.ts +9 -0
  354. package/lib/Cli/commands/profile/commands.d.ts.map +1 -0
  355. package/lib/Cli/commands/profile/commands.js +276 -0
  356. package/lib/Cli/commands/profile/commands.js.map +1 -0
  357. package/lib/Cli/commands/profile/flows.d.ts +36 -0
  358. package/lib/Cli/commands/profile/flows.d.ts.map +1 -0
  359. package/lib/Cli/commands/profile/flows.js +155 -0
  360. package/lib/Cli/commands/profile/flows.js.map +1 -0
  361. package/lib/Cli/commands/profile/hub.d.ts +8 -0
  362. package/lib/Cli/commands/profile/hub.d.ts.map +1 -0
  363. package/lib/Cli/commands/profile/hub.js +154 -0
  364. package/lib/Cli/commands/profile/hub.js.map +1 -0
  365. package/lib/Cli/commands/profile/index.d.ts +2 -0
  366. package/lib/Cli/commands/profile/index.d.ts.map +1 -0
  367. package/lib/Cli/commands/profile/index.js +2 -0
  368. package/lib/Cli/commands/profile/index.js.map +1 -0
  369. package/lib/Cli/commands/provider.d.ts +17 -0
  370. package/lib/Cli/commands/provider.d.ts.map +1 -0
  371. package/lib/Cli/commands/provider.js +44 -0
  372. package/lib/Cli/commands/provider.js.map +1 -0
  373. package/lib/Cli/commands/render.d.ts +12 -0
  374. package/lib/Cli/commands/render.d.ts.map +1 -0
  375. package/lib/Cli/commands/render.js +82 -0
  376. package/lib/Cli/commands/render.js.map +1 -0
  377. package/lib/Cli/commands/state.d.ts +8 -1
  378. package/lib/Cli/commands/state.d.ts.map +1 -1
  379. package/lib/Cli/commands/state.js +125 -248
  380. package/lib/Cli/commands/state.js.map +1 -1
  381. package/lib/Cli/components/types.d.ts +104 -0
  382. package/lib/Cli/components/types.d.ts.map +1 -0
  383. package/lib/Cli/components/types.js +4 -0
  384. package/lib/Cli/components/types.js.map +1 -0
  385. package/lib/Cli/components/ui/Data.d.ts +15 -0
  386. package/lib/Cli/components/ui/Data.d.ts.map +1 -0
  387. package/lib/Cli/components/ui/Data.js +8 -0
  388. package/lib/Cli/components/ui/Data.js.map +1 -0
  389. package/lib/Cli/components/ui/Environment.d.ts +45 -0
  390. package/lib/Cli/components/ui/Environment.d.ts.map +1 -0
  391. package/lib/Cli/components/ui/Environment.js +38 -0
  392. package/lib/Cli/components/ui/Environment.js.map +1 -0
  393. package/lib/Cli/components/ui/Feedback.d.ts +57 -0
  394. package/lib/Cli/components/ui/Feedback.d.ts.map +1 -0
  395. package/lib/Cli/components/ui/Feedback.js +83 -0
  396. package/lib/Cli/components/ui/Feedback.js.map +1 -0
  397. package/lib/Cli/components/ui/Interactive.d.ts +157 -0
  398. package/lib/Cli/components/ui/Interactive.d.ts.map +1 -0
  399. package/lib/Cli/components/ui/Interactive.js +527 -0
  400. package/lib/Cli/components/ui/Interactive.js.map +1 -0
  401. package/lib/Cli/components/ui/Layout.d.ts +74 -0
  402. package/lib/Cli/components/ui/Layout.d.ts.map +1 -0
  403. package/lib/Cli/components/ui/Layout.js +91 -0
  404. package/lib/Cli/components/ui/Layout.js.map +1 -0
  405. package/lib/Cli/components/ui/Live.d.ts +49 -0
  406. package/lib/Cli/components/ui/Live.d.ts.map +1 -0
  407. package/lib/Cli/components/ui/Live.js +43 -0
  408. package/lib/Cli/components/ui/Live.js.map +1 -0
  409. package/lib/Cli/components/ui/ProgressBar.d.ts +16 -0
  410. package/lib/Cli/components/ui/ProgressBar.d.ts.map +1 -0
  411. package/lib/Cli/components/ui/ProgressBar.js +17 -0
  412. package/lib/Cli/components/ui/ProgressBar.js.map +1 -0
  413. package/lib/Cli/components/ui/Transcript.d.ts +12 -0
  414. package/lib/Cli/components/ui/Transcript.d.ts.map +1 -0
  415. package/lib/Cli/components/ui/Transcript.js +14 -0
  416. package/lib/Cli/components/ui/Transcript.js.map +1 -0
  417. package/lib/Cli/components/ui/Typography.d.ts +17 -0
  418. package/lib/Cli/components/ui/Typography.d.ts.map +1 -0
  419. package/lib/Cli/components/ui/Typography.js +21 -0
  420. package/lib/Cli/components/ui/Typography.js.map +1 -0
  421. package/lib/Cli/components/ui/index.d.ts +16 -0
  422. package/lib/Cli/components/ui/index.d.ts.map +1 -0
  423. package/lib/Cli/components/ui/index.js +16 -0
  424. package/lib/Cli/components/ui/index.js.map +1 -0
  425. package/lib/Cli/components/view/ApprovePlan.d.ts +17 -0
  426. package/lib/Cli/components/view/ApprovePlan.d.ts.map +1 -0
  427. package/lib/Cli/components/view/ApprovePlan.js +59 -0
  428. package/lib/Cli/components/view/ApprovePlan.js.map +1 -0
  429. package/lib/Cli/components/view/Help.d.ts +4 -0
  430. package/lib/Cli/components/view/Help.d.ts.map +1 -0
  431. package/lib/Cli/components/view/Help.js +116 -0
  432. package/lib/Cli/components/view/Help.js.map +1 -0
  433. package/lib/Cli/components/view/Logo.d.ts +7 -0
  434. package/lib/Cli/components/view/Logo.d.ts.map +1 -0
  435. package/lib/Cli/components/view/Logo.js +118 -0
  436. package/lib/Cli/components/view/Logo.js.map +1 -0
  437. package/lib/Cli/components/view/Nuke.d.ts +36 -0
  438. package/lib/Cli/components/view/Nuke.d.ts.map +1 -0
  439. package/lib/Cli/components/view/Nuke.js +148 -0
  440. package/lib/Cli/components/view/Nuke.js.map +1 -0
  441. package/lib/Cli/components/view/PlanDecision.d.ts +15 -0
  442. package/lib/Cli/components/view/PlanDecision.d.ts.map +1 -0
  443. package/lib/Cli/components/view/PlanDecision.js +26 -0
  444. package/lib/Cli/components/view/PlanDecision.js.map +1 -0
  445. package/lib/Cli/components/view/PlanRow.d.ts +17 -0
  446. package/lib/Cli/components/view/PlanRow.d.ts.map +1 -0
  447. package/lib/Cli/components/view/PlanRow.js +14 -0
  448. package/lib/Cli/components/view/PlanRow.js.map +1 -0
  449. package/lib/Cli/components/view/PlanTree.d.ts +116 -0
  450. package/lib/Cli/components/view/PlanTree.d.ts.map +1 -0
  451. package/lib/Cli/components/view/PlanTree.js +207 -0
  452. package/lib/Cli/components/view/PlanTree.js.map +1 -0
  453. package/lib/Cli/components/view/PlanView.d.ts +42 -0
  454. package/lib/Cli/components/view/PlanView.d.ts.map +1 -0
  455. package/lib/Cli/components/view/PlanView.js +310 -0
  456. package/lib/Cli/components/view/PlanView.js.map +1 -0
  457. package/lib/Cli/components/view/Profile.d.ts +130 -0
  458. package/lib/Cli/components/view/Profile.d.ts.map +1 -0
  459. package/lib/Cli/components/view/Profile.js +147 -0
  460. package/lib/Cli/components/view/Profile.js.map +1 -0
  461. package/lib/Cli/components/view/ProfileDashboard.d.ts +152 -0
  462. package/lib/Cli/components/view/ProfileDashboard.d.ts.map +1 -0
  463. package/lib/Cli/components/view/ProfileDashboard.js +485 -0
  464. package/lib/Cli/components/view/ProfileDashboard.js.map +1 -0
  465. package/lib/Cli/components/view/Prompts.d.ts +10 -0
  466. package/lib/Cli/components/view/Prompts.d.ts.map +1 -0
  467. package/lib/Cli/components/view/Prompts.js +440 -0
  468. package/lib/Cli/components/view/Prompts.js.map +1 -0
  469. package/lib/Cli/components/view/Runtime.d.ts +8 -0
  470. package/lib/Cli/components/view/Runtime.d.ts.map +1 -0
  471. package/lib/Cli/components/view/Runtime.js +670 -0
  472. package/lib/Cli/components/view/Runtime.js.map +1 -0
  473. package/lib/Cli/components/view/SigilCli.d.ts +5 -0
  474. package/lib/Cli/components/view/SigilCli.d.ts.map +1 -0
  475. package/lib/Cli/components/view/SigilCli.js +134 -0
  476. package/lib/Cli/components/view/SigilCli.js.map +1 -0
  477. package/lib/Cli/components/view/StackOutputs.d.ts +10 -0
  478. package/lib/Cli/components/view/StackOutputs.d.ts.map +1 -0
  479. package/lib/Cli/components/view/StackOutputs.js +14 -0
  480. package/lib/Cli/components/view/StackOutputs.js.map +1 -0
  481. package/lib/Cli/components/view/StateExplorer.d.ts +118 -0
  482. package/lib/Cli/components/view/StateExplorer.d.ts.map +1 -0
  483. package/lib/Cli/components/view/StateExplorer.js +664 -0
  484. package/lib/Cli/components/view/StateExplorer.js.map +1 -0
  485. package/lib/Cli/components/view/statusStyle.d.ts +18 -0
  486. package/lib/Cli/components/view/statusStyle.d.ts.map +1 -0
  487. package/lib/Cli/components/view/statusStyle.js +69 -0
  488. package/lib/Cli/components/view/statusStyle.js.map +1 -0
  489. package/lib/Cli/components/view/usePlanPresentation.d.ts +25 -0
  490. package/lib/Cli/components/view/usePlanPresentation.d.ts.map +1 -0
  491. package/lib/Cli/components/view/usePlanPresentation.js +54 -0
  492. package/lib/Cli/components/view/usePlanPresentation.js.map +1 -0
  493. package/lib/Cli/components/view/usePlanViewport.d.ts +31 -0
  494. package/lib/Cli/components/view/usePlanViewport.d.ts.map +1 -0
  495. package/lib/Cli/components/view/usePlanViewport.js +113 -0
  496. package/lib/Cli/components/view/usePlanViewport.js.map +1 -0
  497. package/lib/Cli/exec.d.ts +5 -1
  498. package/lib/Cli/exec.d.ts.map +1 -1
  499. package/lib/Cli/exec.js +173 -19
  500. package/lib/Cli/exec.js.map +1 -1
  501. package/lib/Cli/main.d.ts +4 -1
  502. package/lib/Cli/main.d.ts.map +1 -1
  503. package/lib/Cli/main.js +129 -38
  504. package/lib/Cli/main.js.map +1 -1
  505. package/lib/Cli/selectCli.d.ts +5 -3
  506. package/lib/Cli/selectCli.d.ts.map +1 -1
  507. package/lib/Cli/selectCli.js +16 -9
  508. package/lib/Cli/selectCli.js.map +1 -1
  509. package/lib/Cloudflare/ApiToken/UserApiToken.d.ts +1 -1
  510. package/lib/Cloudflare/ApiToken/UserApiToken.js +1 -1
  511. package/lib/Cloudflare/Auth/AuthConfig.d.ts +60 -0
  512. package/lib/Cloudflare/Auth/AuthConfig.d.ts.map +1 -0
  513. package/lib/Cloudflare/Auth/AuthConfig.js +68 -0
  514. package/lib/Cloudflare/Auth/AuthConfig.js.map +1 -0
  515. package/lib/Cloudflare/Auth/AuthProvider.d.ts +2 -142
  516. package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
  517. package/lib/Cloudflare/Auth/AuthProvider.js +473 -327
  518. package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
  519. package/lib/Cloudflare/Auth/OAuthClient.d.ts +16 -48
  520. package/lib/Cloudflare/Auth/OAuthClient.d.ts.map +1 -1
  521. package/lib/Cloudflare/Auth/OAuthClient.js +25 -260
  522. package/lib/Cloudflare/Auth/OAuthClient.js.map +1 -1
  523. package/lib/Cloudflare/Auth/OAuthScopes.d.ts +88 -0
  524. package/lib/Cloudflare/Auth/OAuthScopes.d.ts.map +1 -0
  525. package/lib/Cloudflare/Auth/OAuthScopes.js +887 -0
  526. package/lib/Cloudflare/Auth/OAuthScopes.js.map +1 -0
  527. package/lib/Cloudflare/Auth/TokenPolicy.d.ts +34 -0
  528. package/lib/Cloudflare/Auth/TokenPolicy.d.ts.map +1 -0
  529. package/lib/Cloudflare/Auth/TokenPolicy.js +51 -0
  530. package/lib/Cloudflare/Auth/TokenPolicy.js.map +1 -0
  531. package/lib/Cloudflare/CloudflareEnvironment.d.ts +2 -3
  532. package/lib/Cloudflare/CloudflareEnvironment.d.ts.map +1 -1
  533. package/lib/Cloudflare/CloudflareEnvironment.js +7 -11
  534. package/lib/Cloudflare/CloudflareEnvironment.js.map +1 -1
  535. package/lib/Cloudflare/Containers/Container.d.ts +10 -25
  536. package/lib/Cloudflare/Containers/Container.d.ts.map +1 -1
  537. package/lib/Cloudflare/Containers/Container.js +9 -23
  538. package/lib/Cloudflare/Containers/Container.js.map +1 -1
  539. package/lib/Cloudflare/Containers/ContainerApplication.d.ts +12 -27
  540. package/lib/Cloudflare/Containers/ContainerApplication.d.ts.map +1 -1
  541. package/lib/Cloudflare/Containers/ContainerApplication.js.map +1 -1
  542. package/lib/Cloudflare/Containers/StartContainer.d.ts +1 -1
  543. package/lib/Cloudflare/Containers/StartContainer.d.ts.map +1 -1
  544. package/lib/Cloudflare/Credentials.d.ts +6 -20
  545. package/lib/Cloudflare/Credentials.d.ts.map +1 -1
  546. package/lib/Cloudflare/Credentials.js +12 -54
  547. package/lib/Cloudflare/Credentials.js.map +1 -1
  548. package/lib/Cloudflare/D1/ImportDatabase.d.ts +1 -1
  549. package/lib/Cloudflare/D1/ImportDatabase.d.ts.map +1 -1
  550. package/lib/Cloudflare/EdgeSession.d.ts +1 -1
  551. package/lib/Cloudflare/EdgeSession.d.ts.map +1 -1
  552. package/lib/Cloudflare/EdgeSession.js +1 -1
  553. package/lib/Cloudflare/EdgeSession.js.map +1 -1
  554. package/lib/Cloudflare/Logs.d.ts.map +1 -1
  555. package/lib/Cloudflare/Logs.js +10 -6
  556. package/lib/Cloudflare/Logs.js.map +1 -1
  557. package/lib/Cloudflare/Pages/Project.d.ts +1 -1
  558. package/lib/Cloudflare/Pages/Project.js +1 -1
  559. package/lib/Cloudflare/Providers.d.ts +2 -2
  560. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  561. package/lib/Cloudflare/Providers.js +2 -2
  562. package/lib/Cloudflare/Providers.js.map +1 -1
  563. package/lib/Cloudflare/StateStore/Api.d.ts +3 -0
  564. package/lib/Cloudflare/StateStore/Api.d.ts.map +1 -1
  565. package/lib/Cloudflare/StateStore/Api.js +2 -2
  566. package/lib/Cloudflare/StateStore/Api.js.map +1 -1
  567. package/lib/Cloudflare/StateStore/CredentialsFile.d.ts +10 -6
  568. package/lib/Cloudflare/StateStore/CredentialsFile.d.ts.map +1 -1
  569. package/lib/Cloudflare/StateStore/CredentialsFile.js +23 -1
  570. package/lib/Cloudflare/StateStore/CredentialsFile.js.map +1 -1
  571. package/lib/Cloudflare/StateStore/State.d.ts +9 -5
  572. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  573. package/lib/Cloudflare/StateStore/State.js +132 -99
  574. package/lib/Cloudflare/StateStore/State.js.map +1 -1
  575. package/lib/Cloudflare/Vectorize/SearchIndexHttpClient.js +1 -1
  576. package/lib/Cloudflare/Vectorize/SearchIndexHttpClient.js.map +1 -1
  577. package/lib/Cloudflare/Website/Nextjs.d.ts.map +1 -1
  578. package/lib/Cloudflare/Website/Nextjs.js +4 -12
  579. package/lib/Cloudflare/Website/Nextjs.js.map +1 -1
  580. package/lib/Cloudflare/Website/Vocs.d.ts +1 -1
  581. package/lib/Cloudflare/Website/Vocs.d.ts.map +1 -1
  582. package/lib/Cloudflare/Website/Vocs.js +3 -7
  583. package/lib/Cloudflare/Website/Vocs.js.map +1 -1
  584. package/lib/Cloudflare/Workers/Assets.d.ts +2 -2
  585. package/lib/Cloudflare/Workers/Assets.d.ts.map +1 -1
  586. package/lib/Cloudflare/Workers/Assets.js +74 -26
  587. package/lib/Cloudflare/Workers/Assets.js.map +1 -1
  588. package/lib/Cloudflare/Workers/BrowserHttpClient.d.ts +2 -2
  589. package/lib/Cloudflare/Workers/BrowserHttpClient.d.ts.map +1 -1
  590. package/lib/Cloudflare/Workers/BrowserHttpClient.js +10 -3
  591. package/lib/Cloudflare/Workers/BrowserHttpClient.js.map +1 -1
  592. package/lib/Cloudflare/Workers/CloudflareTracer.d.ts +9 -0
  593. package/lib/Cloudflare/Workers/CloudflareTracer.d.ts.map +1 -0
  594. package/lib/Cloudflare/Workers/CloudflareTracer.js +87 -0
  595. package/lib/Cloudflare/Workers/CloudflareTracer.js.map +1 -0
  596. package/lib/Cloudflare/Workers/Compatibility.d.ts +13 -0
  597. package/lib/Cloudflare/Workers/Compatibility.d.ts.map +1 -1
  598. package/lib/Cloudflare/Workers/Compatibility.js +31 -6
  599. package/lib/Cloudflare/Workers/Compatibility.js.map +1 -1
  600. package/lib/Cloudflare/Workers/DurableObject.d.ts +50 -4
  601. package/lib/Cloudflare/Workers/DurableObject.d.ts.map +1 -1
  602. package/lib/Cloudflare/Workers/DurableObject.js +44 -3
  603. package/lib/Cloudflare/Workers/DurableObject.js.map +1 -1
  604. package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
  605. package/lib/Cloudflare/Workers/DurableObjectBridge.js +4 -0
  606. package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
  607. package/lib/Cloudflare/Workers/DurableObjectState.d.ts +25 -2
  608. package/lib/Cloudflare/Workers/DurableObjectState.d.ts.map +1 -1
  609. package/lib/Cloudflare/Workers/DurableObjectState.js +7 -2
  610. package/lib/Cloudflare/Workers/DurableObjectState.js.map +1 -1
  611. package/lib/Cloudflare/Workers/DurableObjectStorage.d.ts +7 -1
  612. package/lib/Cloudflare/Workers/DurableObjectStorage.d.ts.map +1 -1
  613. package/lib/Cloudflare/Workers/DurableObjectStorage.js +6 -1
  614. package/lib/Cloudflare/Workers/DurableObjectStorage.js.map +1 -1
  615. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  616. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +125 -58
  617. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  618. package/lib/Cloudflare/Workers/RpcWorker.d.ts +12 -5
  619. package/lib/Cloudflare/Workers/RpcWorker.d.ts.map +1 -1
  620. package/lib/Cloudflare/Workers/RpcWorker.js +8 -2
  621. package/lib/Cloudflare/Workers/RpcWorker.js.map +1 -1
  622. package/lib/Cloudflare/Workers/Source.d.ts +3 -0
  623. package/lib/Cloudflare/Workers/Source.d.ts.map +1 -1
  624. package/lib/Cloudflare/Workers/Source.js +3 -1
  625. package/lib/Cloudflare/Workers/Source.js.map +1 -1
  626. package/lib/Cloudflare/Workers/Sources/Python.d.ts +2 -0
  627. package/lib/Cloudflare/Workers/Sources/Python.d.ts.map +1 -1
  628. package/lib/Cloudflare/Workers/Sources/Python.js +16 -12
  629. package/lib/Cloudflare/Workers/Sources/Python.js.map +1 -1
  630. package/lib/Cloudflare/Workers/Sources/Rolldown.js +1 -1
  631. package/lib/Cloudflare/Workers/Sources/Rolldown.js.map +1 -1
  632. package/lib/Cloudflare/Workers/Sources/Vite.d.ts +1 -1
  633. package/lib/Cloudflare/Workers/Sources/Vite.d.ts.map +1 -1
  634. package/lib/Cloudflare/Workers/Sources/Vite.js +6 -4
  635. package/lib/Cloudflare/Workers/Sources/Vite.js.map +1 -1
  636. package/lib/Cloudflare/Workers/Telemetry.d.ts +113 -0
  637. package/lib/Cloudflare/Workers/Telemetry.d.ts.map +1 -0
  638. package/lib/Cloudflare/Workers/Telemetry.js +129 -0
  639. package/lib/Cloudflare/Workers/Telemetry.js.map +1 -0
  640. package/lib/Cloudflare/Workers/ViteBuildChildRunner.js +6 -1
  641. package/lib/Cloudflare/Workers/ViteBuildChildRunner.js.map +1 -1
  642. package/lib/Cloudflare/Workers/ViteChild.d.ts +2 -2
  643. package/lib/Cloudflare/Workers/ViteChild.d.ts.map +1 -1
  644. package/lib/Cloudflare/Workers/ViteChild.js +19 -17
  645. package/lib/Cloudflare/Workers/ViteChild.js.map +1 -1
  646. package/lib/Cloudflare/Workers/ViteChild.shared.d.ts +1 -0
  647. package/lib/Cloudflare/Workers/ViteChild.shared.d.ts.map +1 -1
  648. package/lib/Cloudflare/Workers/ViteChild.shared.js.map +1 -1
  649. package/lib/Cloudflare/Workers/ViteChildRunner.js +2 -1
  650. package/lib/Cloudflare/Workers/ViteChildRunner.js.map +1 -1
  651. package/lib/Cloudflare/Workers/Worker.d.ts +101 -52
  652. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  653. package/lib/Cloudflare/Workers/Worker.js +91 -50
  654. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  655. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts +9 -1
  656. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
  657. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +23 -0
  658. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
  659. package/lib/Cloudflare/Workers/WorkerBinding.d.ts +6 -0
  660. package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
  661. package/lib/Cloudflare/Workers/WorkerLoader.d.ts +30 -4
  662. package/lib/Cloudflare/Workers/WorkerLoader.d.ts.map +1 -1
  663. package/lib/Cloudflare/Workers/WorkerLoader.js +36 -5
  664. package/lib/Cloudflare/Workers/WorkerLoader.js.map +1 -1
  665. package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
  666. package/lib/Cloudflare/Workers/WorkerProvider.js +52 -45
  667. package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
  668. package/lib/Cloudflare/Workers/cloudflare_workers.d.ts.map +1 -1
  669. package/lib/Cloudflare/Workers/cloudflare_workers.js +4 -1
  670. package/lib/Cloudflare/Workers/cloudflare_workers.js.map +1 -1
  671. package/lib/Cloudflare/Workers/index.d.ts +1 -0
  672. package/lib/Cloudflare/Workers/index.d.ts.map +1 -1
  673. package/lib/Cloudflare/Workers/index.js +1 -0
  674. package/lib/Cloudflare/Workers/index.js.map +1 -1
  675. package/lib/Cloudflare/Workflows/Workflow.d.ts +84 -0
  676. package/lib/Cloudflare/Workflows/Workflow.d.ts.map +1 -1
  677. package/lib/Cloudflare/Workflows/Workflow.js +47 -0
  678. package/lib/Cloudflare/Workflows/Workflow.js.map +1 -1
  679. package/lib/Cloudflare/Workflows/WorkflowBridge.js +7 -4
  680. package/lib/Cloudflare/Workflows/WorkflowBridge.js.map +1 -1
  681. package/lib/Command/Command.d.ts +1 -1
  682. package/lib/Command/Command.d.ts.map +1 -1
  683. package/lib/Command/Command.js +2 -2
  684. package/lib/Command/Command.js.map +1 -1
  685. package/lib/Command/Dev.d.ts +5 -2
  686. package/lib/Command/Dev.d.ts.map +1 -1
  687. package/lib/Command/Dev.js +31 -7
  688. package/lib/Command/Dev.js.map +1 -1
  689. package/lib/Command/Providers.d.ts +1 -1
  690. package/lib/Command/Providers.d.ts.map +1 -1
  691. package/lib/Deploy.d.ts +1 -1
  692. package/lib/Deploy.d.ts.map +1 -1
  693. package/lib/Destroy.d.ts +1 -1
  694. package/lib/Destroy.d.ts.map +1 -1
  695. package/lib/Docker/BuildHash.d.ts +13 -0
  696. package/lib/Docker/BuildHash.d.ts.map +1 -1
  697. package/lib/Docker/BuildHash.js +53 -3
  698. package/lib/Docker/BuildHash.js.map +1 -1
  699. package/lib/Docker/Docker.d.ts +1 -1
  700. package/lib/Docker/Docker.d.ts.map +1 -1
  701. package/lib/Docker/Docker.js +1 -1
  702. package/lib/Docker/Docker.js.map +1 -1
  703. package/lib/Docker/Service.d.ts +7 -21
  704. package/lib/Docker/Service.d.ts.map +1 -1
  705. package/lib/Docker/Service.js +7 -21
  706. package/lib/Docker/Service.js.map +1 -1
  707. package/lib/Docker/ServiceImage.d.ts +4 -5
  708. package/lib/Docker/ServiceImage.d.ts.map +1 -1
  709. package/lib/Docker/ServiceImage.js.map +1 -1
  710. package/lib/Drift.d.ts +91 -0
  711. package/lib/Drift.d.ts.map +1 -0
  712. package/lib/{Sync.js → Drift.js} +98 -29
  713. package/lib/Drift.js.map +1 -0
  714. package/lib/Drizzle/Schema.d.ts.map +1 -1
  715. package/lib/Drizzle/Schema.js +5 -5
  716. package/lib/Drizzle/Schema.js.map +1 -1
  717. package/lib/Fly/App.d.ts +1 -1
  718. package/lib/Fly/App.d.ts.map +1 -1
  719. package/lib/Fly/AuthProvider.d.ts +6 -20
  720. package/lib/Fly/AuthProvider.d.ts.map +1 -1
  721. package/lib/Fly/AuthProvider.js +32 -124
  722. package/lib/Fly/AuthProvider.js.map +1 -1
  723. package/lib/Fly/Bucket.d.ts +1 -1
  724. package/lib/Fly/Bucket.d.ts.map +1 -1
  725. package/lib/Fly/Catalog.d.ts +1 -1
  726. package/lib/Fly/Catalog.d.ts.map +1 -1
  727. package/lib/Fly/CheckpointHttp.d.ts.map +1 -1
  728. package/lib/Fly/CheckpointHttp.js +2 -2
  729. package/lib/Fly/CheckpointHttp.js.map +1 -1
  730. package/lib/Fly/Credentials.d.ts +15 -6
  731. package/lib/Fly/Credentials.d.ts.map +1 -1
  732. package/lib/Fly/Credentials.js +25 -13
  733. package/lib/Fly/Credentials.js.map +1 -1
  734. package/lib/Fly/DecryptHttp.d.ts.map +1 -1
  735. package/lib/Fly/DecryptHttp.js +2 -2
  736. package/lib/Fly/DecryptHttp.js.map +1 -1
  737. package/lib/Fly/EncryptHttp.d.ts.map +1 -1
  738. package/lib/Fly/EncryptHttp.js +2 -2
  739. package/lib/Fly/EncryptHttp.js.map +1 -1
  740. package/lib/Fly/Environment.d.ts +1 -1
  741. package/lib/Fly/Environment.d.ts.map +1 -1
  742. package/lib/Fly/ExecHttp.d.ts.map +1 -1
  743. package/lib/Fly/ExecHttp.js +2 -2
  744. package/lib/Fly/ExecHttp.js.map +1 -1
  745. package/lib/Fly/GetSecretHttp.d.ts.map +1 -1
  746. package/lib/Fly/GetSecretHttp.js +2 -2
  747. package/lib/Fly/GetSecretHttp.js.map +1 -1
  748. package/lib/Fly/ListSecretsHttp.d.ts.map +1 -1
  749. package/lib/Fly/ListSecretsHttp.js +2 -2
  750. package/lib/Fly/ListSecretsHttp.js.map +1 -1
  751. package/lib/Fly/Machine.d.ts +65 -0
  752. package/lib/Fly/Machine.d.ts.map +1 -1
  753. package/lib/Fly/Machine.js +34 -19
  754. package/lib/Fly/Machine.js.map +1 -1
  755. package/lib/Fly/Postgres.d.ts +1 -1
  756. package/lib/Fly/Postgres.d.ts.map +1 -1
  757. package/lib/Fly/Providers.d.ts +1 -1
  758. package/lib/Fly/Providers.d.ts.map +1 -1
  759. package/lib/Fly/Providers.js +2 -2
  760. package/lib/Fly/Providers.js.map +1 -1
  761. package/lib/Fly/Redis.d.ts +1 -1
  762. package/lib/Fly/Redis.d.ts.map +1 -1
  763. package/lib/Fly/Service.d.ts +43 -0
  764. package/lib/Fly/Service.d.ts.map +1 -1
  765. package/lib/Fly/Service.js +44 -19
  766. package/lib/Fly/Service.js.map +1 -1
  767. package/lib/Fly/SignHttp.d.ts.map +1 -1
  768. package/lib/Fly/SignHttp.js +2 -2
  769. package/lib/Fly/SignHttp.js.map +1 -1
  770. package/lib/Fly/VerifyHttp.d.ts.map +1 -1
  771. package/lib/Fly/VerifyHttp.js +2 -2
  772. package/lib/Fly/VerifyHttp.js.map +1 -1
  773. package/lib/Fly/Volume.d.ts +8 -8
  774. package/lib/Fly/Volume.d.ts.map +1 -1
  775. package/lib/Fly/WriteSecretHttp.d.ts.map +1 -1
  776. package/lib/Fly/WriteSecretHttp.js +2 -2
  777. package/lib/Fly/WriteSecretHttp.js.map +1 -1
  778. package/lib/Fly/replicas.d.ts +12 -10
  779. package/lib/Fly/replicas.d.ts.map +1 -1
  780. package/lib/Fly/replicas.js +35 -0
  781. package/lib/Fly/replicas.js.map +1 -1
  782. package/lib/GitHub/AuthProvider.d.ts +20 -29
  783. package/lib/GitHub/AuthProvider.d.ts.map +1 -1
  784. package/lib/GitHub/AuthProvider.js +141 -75
  785. package/lib/GitHub/AuthProvider.js.map +1 -1
  786. package/lib/GitHub/Credentials.d.ts +2 -3
  787. package/lib/GitHub/Credentials.d.ts.map +1 -1
  788. package/lib/GitHub/Credentials.js +6 -10
  789. package/lib/GitHub/Credentials.js.map +1 -1
  790. package/lib/GitHub/Providers.d.ts +3 -3
  791. package/lib/GitHub/Providers.d.ts.map +1 -1
  792. package/lib/GitHub/Providers.js +4 -4
  793. package/lib/GitHub/Providers.js.map +1 -1
  794. package/lib/Hetzner/AuthProvider.d.ts +7 -20
  795. package/lib/Hetzner/AuthProvider.d.ts.map +1 -1
  796. package/lib/Hetzner/AuthProvider.js +42 -130
  797. package/lib/Hetzner/AuthProvider.js.map +1 -1
  798. package/lib/Hetzner/Catalog.d.ts +5 -5
  799. package/lib/Hetzner/Catalog.d.ts.map +1 -1
  800. package/lib/Hetzner/Credentials.d.ts +1 -3
  801. package/lib/Hetzner/Credentials.d.ts.map +1 -1
  802. package/lib/Hetzner/Credentials.js +4 -9
  803. package/lib/Hetzner/Credentials.js.map +1 -1
  804. package/lib/Hetzner/PlacementGroup.d.ts +1 -1
  805. package/lib/Hetzner/PlacementGroup.d.ts.map +1 -1
  806. package/lib/Hetzner/Providers.d.ts +1 -1
  807. package/lib/Hetzner/Providers.d.ts.map +1 -1
  808. package/lib/Hetzner/Providers.js +2 -2
  809. package/lib/Hetzner/Providers.js.map +1 -1
  810. package/lib/Hetzner/hosted.d.ts +1 -1
  811. package/lib/Interaction.d.ts +186 -0
  812. package/lib/Interaction.d.ts.map +1 -0
  813. package/lib/Interaction.js +149 -0
  814. package/lib/Interaction.js.map +1 -0
  815. package/lib/Kubernetes/ClusterAdapter.d.ts +4 -5
  816. package/lib/Kubernetes/ClusterAdapter.d.ts.map +1 -1
  817. package/lib/Kubernetes/ClusterAdapter.js.map +1 -1
  818. package/lib/Kubernetes/Deployment.d.ts +7 -21
  819. package/lib/Kubernetes/Deployment.d.ts.map +1 -1
  820. package/lib/Kubernetes/Deployment.js +7 -21
  821. package/lib/Kubernetes/Deployment.js.map +1 -1
  822. package/lib/Kubernetes/Job.d.ts +7 -21
  823. package/lib/Kubernetes/Job.d.ts.map +1 -1
  824. package/lib/Kubernetes/Job.js +7 -21
  825. package/lib/Kubernetes/Job.js.map +1 -1
  826. package/lib/Local/DevLog.d.ts +32 -0
  827. package/lib/Local/DevLog.d.ts.map +1 -0
  828. package/lib/Local/DevLog.js +114 -0
  829. package/lib/Local/DevLog.js.map +1 -0
  830. package/lib/Local/LocalProvider.d.ts +1 -1
  831. package/lib/Local/LocalProvider.d.ts.map +1 -1
  832. package/lib/Local/LocalProvider.js +2 -2
  833. package/lib/Local/LocalProvider.js.map +1 -1
  834. package/lib/Local/RpcServer.d.ts.map +1 -1
  835. package/lib/Local/RpcServer.js +10 -1
  836. package/lib/Local/RpcServer.js.map +1 -1
  837. package/lib/Local/RpcServerEnvironment.d.ts +2 -2
  838. package/lib/Local/RpcServerEnvironment.d.ts.map +1 -1
  839. package/lib/Local/RpcServerEnvironment.js +3 -2
  840. package/lib/Local/RpcServerEnvironment.js.map +1 -1
  841. package/lib/Local/RpcSpawner.d.ts +14 -5
  842. package/lib/Local/RpcSpawner.d.ts.map +1 -1
  843. package/lib/Local/RpcSpawner.js +105 -38
  844. package/lib/Local/RpcSpawner.js.map +1 -1
  845. package/lib/Neon/AuthProvider.d.ts +4 -13
  846. package/lib/Neon/AuthProvider.d.ts.map +1 -1
  847. package/lib/Neon/AuthProvider.js +24 -107
  848. package/lib/Neon/AuthProvider.js.map +1 -1
  849. package/lib/Neon/Credentials.d.ts +1 -3
  850. package/lib/Neon/Credentials.d.ts.map +1 -1
  851. package/lib/Neon/Credentials.js +4 -9
  852. package/lib/Neon/Credentials.js.map +1 -1
  853. package/lib/Neon/Providers.d.ts +1 -1
  854. package/lib/Neon/Providers.d.ts.map +1 -1
  855. package/lib/Neon/Providers.js +2 -2
  856. package/lib/Neon/Providers.js.map +1 -1
  857. package/lib/Nuke.d.ts +89 -0
  858. package/lib/Nuke.d.ts.map +1 -0
  859. package/lib/Nuke.js +265 -0
  860. package/lib/Nuke.js.map +1 -0
  861. package/lib/Plan.d.ts +27 -5
  862. package/lib/Plan.d.ts.map +1 -1
  863. package/lib/Plan.js +167 -21
  864. package/lib/Plan.js.map +1 -1
  865. package/lib/Planetscale/AuthProvider.d.ts +25 -37
  866. package/lib/Planetscale/AuthProvider.d.ts.map +1 -1
  867. package/lib/Planetscale/AuthProvider.js +267 -150
  868. package/lib/Planetscale/AuthProvider.js.map +1 -1
  869. package/lib/Planetscale/Credentials.d.ts +2 -3
  870. package/lib/Planetscale/Credentials.d.ts.map +1 -1
  871. package/lib/Planetscale/Credentials.js +16 -13
  872. package/lib/Planetscale/Credentials.js.map +1 -1
  873. package/lib/Planetscale/OAuthClient.d.ts +8 -52
  874. package/lib/Planetscale/OAuthClient.d.ts.map +1 -1
  875. package/lib/Planetscale/OAuthClient.js +18 -240
  876. package/lib/Planetscale/OAuthClient.js.map +1 -1
  877. package/lib/Planetscale/Providers.d.ts +1 -1
  878. package/lib/Planetscale/Providers.d.ts.map +1 -1
  879. package/lib/Planetscale/Providers.js +2 -2
  880. package/lib/Planetscale/Providers.js.map +1 -1
  881. package/lib/Planetscale/Util.d.ts +1 -1
  882. package/lib/Planetscale/Util.d.ts.map +1 -1
  883. package/lib/Prisma/AuthProvider.d.ts +7 -15
  884. package/lib/Prisma/AuthProvider.d.ts.map +1 -1
  885. package/lib/Prisma/AuthProvider.js +54 -121
  886. package/lib/Prisma/AuthProvider.js.map +1 -1
  887. package/lib/Prisma/Compute.d.ts +7 -21
  888. package/lib/Prisma/Compute.d.ts.map +1 -1
  889. package/lib/Prisma/Compute.js +7 -21
  890. package/lib/Prisma/Compute.js.map +1 -1
  891. package/lib/Prisma/PrismaEnvironment.d.ts +1 -2
  892. package/lib/Prisma/PrismaEnvironment.d.ts.map +1 -1
  893. package/lib/Prisma/PrismaEnvironment.js +3 -8
  894. package/lib/Prisma/PrismaEnvironment.js.map +1 -1
  895. package/lib/Prisma/Providers.d.ts +3 -3
  896. package/lib/Prisma/Providers.d.ts.map +1 -1
  897. package/lib/Prisma/Providers.js +7 -7
  898. package/lib/Prisma/Providers.js.map +1 -1
  899. package/lib/Provider.d.ts +10 -2
  900. package/lib/Provider.d.ts.map +1 -1
  901. package/lib/Provider.js +9 -10
  902. package/lib/Provider.js.map +1 -1
  903. package/lib/Railway/AuditLog.d.ts +2 -2
  904. package/lib/Railway/AuditLog.d.ts.map +1 -1
  905. package/lib/Railway/AuthProvider.d.ts +19 -19
  906. package/lib/Railway/AuthProvider.d.ts.map +1 -1
  907. package/lib/Railway/AuthProvider.js +193 -127
  908. package/lib/Railway/AuthProvider.js.map +1 -1
  909. package/lib/Railway/Bucket.js +2 -2
  910. package/lib/Railway/CloudAgent.js +2 -2
  911. package/lib/Railway/Credentials.d.ts +2 -5
  912. package/lib/Railway/Credentials.d.ts.map +1 -1
  913. package/lib/Railway/Credentials.js +5 -11
  914. package/lib/Railway/Credentials.js.map +1 -1
  915. package/lib/Railway/CustomDomain.js +3 -3
  916. package/lib/Railway/Function.js +6 -6
  917. package/lib/Railway/Group.js +2 -2
  918. package/lib/Railway/LoginSession.d.ts +3 -3
  919. package/lib/Railway/LoginSession.js +5 -5
  920. package/lib/Railway/Mongo.js +13 -13
  921. package/lib/Railway/MySQL.js +13 -13
  922. package/lib/Railway/Postgres.js +13 -13
  923. package/lib/Railway/PrivateNetwork.js +2 -2
  924. package/lib/Railway/Project.d.ts +3 -3
  925. package/lib/Railway/Project.d.ts.map +1 -1
  926. package/lib/Railway/Project.js +3 -3
  927. package/lib/Railway/ProjectEnvironment.js +3 -3
  928. package/lib/Railway/Providers.d.ts +1 -1
  929. package/lib/Railway/Providers.d.ts.map +1 -1
  930. package/lib/Railway/Providers.js +2 -2
  931. package/lib/Railway/Providers.js.map +1 -1
  932. package/lib/Railway/Redis.js +5 -5
  933. package/lib/Railway/Sandbox.d.ts +6 -6
  934. package/lib/Railway/Sandbox.js +5 -5
  935. package/lib/Railway/Service.d.ts +72 -1
  936. package/lib/Railway/Service.d.ts.map +1 -1
  937. package/lib/Railway/Service.js +42 -0
  938. package/lib/Railway/Service.js.map +1 -1
  939. package/lib/Railway/ServiceDomain.d.ts +28 -2
  940. package/lib/Railway/ServiceDomain.d.ts.map +1 -1
  941. package/lib/Railway/ServiceDomain.js +134 -17
  942. package/lib/Railway/ServiceDomain.js.map +1 -1
  943. package/lib/Railway/ServiceProvider.d.ts +2 -10
  944. package/lib/Railway/ServiceProvider.d.ts.map +1 -1
  945. package/lib/Railway/ServiceProvider.js +170 -64
  946. package/lib/Railway/ServiceProvider.js.map +1 -1
  947. package/lib/Railway/TcpProxy.js +2 -2
  948. package/lib/Railway/Template.js +2 -2
  949. package/lib/Railway/Usage.js +2 -2
  950. package/lib/Railway/Variable.js +2 -2
  951. package/lib/Railway/Volume.d.ts +1 -1
  952. package/lib/Railway/Volume.d.ts.map +1 -1
  953. package/lib/Railway/Volume.js +4 -4
  954. package/lib/Railway/VolumeBackup.d.ts +2 -2
  955. package/lib/Railway/VolumeBackup.js +8 -8
  956. package/lib/Railway/local-context.d.ts +125 -0
  957. package/lib/Railway/local-context.d.ts.map +1 -0
  958. package/lib/Railway/local-context.js +254 -0
  959. package/lib/Railway/local-context.js.map +1 -0
  960. package/lib/Report.d.ts +248 -0
  961. package/lib/Report.d.ts.map +1 -0
  962. package/lib/Report.js +18 -0
  963. package/lib/Report.js.map +1 -0
  964. package/lib/Stack.d.ts +7 -6
  965. package/lib/Stack.d.ts.map +1 -1
  966. package/lib/Stack.js +2 -4
  967. package/lib/Stack.js.map +1 -1
  968. package/lib/State/Export.d.ts +6 -4
  969. package/lib/State/Export.d.ts.map +1 -1
  970. package/lib/State/Export.js +13 -18
  971. package/lib/State/Export.js.map +1 -1
  972. package/lib/State/HttpStateStore.d.ts +1 -1
  973. package/lib/State/HttpStateStore.d.ts.map +1 -1
  974. package/lib/State/HttpStateStore.js +10 -6
  975. package/lib/State/HttpStateStore.js.map +1 -1
  976. package/lib/State/LocalState.d.ts.map +1 -1
  977. package/lib/State/LocalState.js +6 -13
  978. package/lib/State/LocalState.js.map +1 -1
  979. package/lib/State/Tree.d.ts +62 -0
  980. package/lib/State/Tree.d.ts.map +1 -0
  981. package/lib/State/Tree.js +166 -0
  982. package/lib/State/Tree.js.map +1 -0
  983. package/lib/State/index.d.ts +1 -0
  984. package/lib/State/index.d.ts.map +1 -1
  985. package/lib/State/index.js +1 -0
  986. package/lib/State/index.js.map +1 -1
  987. package/lib/Telemetry/Layer.d.ts +6 -0
  988. package/lib/Telemetry/Layer.d.ts.map +1 -1
  989. package/lib/Telemetry/Layer.js +16 -5
  990. package/lib/Telemetry/Layer.js.map +1 -1
  991. package/lib/Telemetry.d.ts +5 -0
  992. package/lib/Telemetry.d.ts.map +1 -1
  993. package/lib/Telemetry.js +6 -1
  994. package/lib/Telemetry.js.map +1 -1
  995. package/lib/Test/Core.d.ts +4 -3
  996. package/lib/Test/Core.d.ts.map +1 -1
  997. package/lib/Test/Core.js +5 -3
  998. package/lib/Test/Core.js.map +1 -1
  999. package/lib/UserFacingError.d.ts +26 -0
  1000. package/lib/UserFacingError.d.ts.map +1 -0
  1001. package/lib/UserFacingError.js +25 -0
  1002. package/lib/UserFacingError.js.map +1 -0
  1003. package/lib/Util/AtomicFile.d.ts +19 -0
  1004. package/lib/Util/AtomicFile.d.ts.map +1 -0
  1005. package/lib/Util/AtomicFile.js +22 -0
  1006. package/lib/Util/AtomicFile.js.map +1 -0
  1007. package/lib/Util/ConsoleSink.d.ts +4 -0
  1008. package/lib/Util/ConsoleSink.d.ts.map +1 -0
  1009. package/lib/Util/ConsoleSink.js +24 -0
  1010. package/lib/Util/ConsoleSink.js.map +1 -0
  1011. package/lib/Util/LineBuffer.d.ts +9 -0
  1012. package/lib/Util/LineBuffer.d.ts.map +1 -0
  1013. package/lib/Util/LineBuffer.js +23 -0
  1014. package/lib/Util/LineBuffer.js.map +1 -0
  1015. package/lib/Util/Memoize.d.ts +20 -0
  1016. package/lib/Util/Memoize.d.ts.map +1 -0
  1017. package/lib/Util/Memoize.js +38 -0
  1018. package/lib/Util/Memoize.js.map +1 -0
  1019. package/lib/Util/Node.d.ts +22 -5
  1020. package/lib/Util/Node.d.ts.map +1 -1
  1021. package/lib/Util/Node.js +30 -10
  1022. package/lib/Util/Node.js.map +1 -1
  1023. package/lib/Util/PlatformServices.d.ts +6 -2
  1024. package/lib/Util/PlatformServices.d.ts.map +1 -1
  1025. package/lib/Util/PlatformServices.js +6 -2
  1026. package/lib/Util/PlatformServices.js.map +1 -1
  1027. package/lib/Util/ResourceOutput.d.ts +30 -0
  1028. package/lib/Util/ResourceOutput.d.ts.map +1 -0
  1029. package/lib/Util/ResourceOutput.js +60 -0
  1030. package/lib/Util/ResourceOutput.js.map +1 -0
  1031. package/lib/Util/Terminal.d.ts +23 -0
  1032. package/lib/Util/Terminal.d.ts.map +1 -0
  1033. package/lib/Util/Terminal.js +57 -0
  1034. package/lib/Util/Terminal.js.map +1 -0
  1035. package/lib/Util/Theme.d.ts +123 -0
  1036. package/lib/Util/Theme.d.ts.map +1 -0
  1037. package/lib/Util/Theme.js +133 -0
  1038. package/lib/Util/Theme.js.map +1 -0
  1039. package/lib/Util/interactive.d.ts +17 -12
  1040. package/lib/Util/interactive.d.ts.map +1 -1
  1041. package/lib/Util/interactive.js +81 -13
  1042. package/lib/Util/interactive.js.map +1 -1
  1043. package/lib/Util/scc.d.ts +11 -3
  1044. package/lib/Util/scc.d.ts.map +1 -1
  1045. package/lib/Util/scc.js +35 -22
  1046. package/lib/Util/scc.js.map +1 -1
  1047. package/lib/Util/tarGzip.d.ts +3 -1
  1048. package/lib/Util/tarGzip.d.ts.map +1 -1
  1049. package/lib/Util/tarGzip.js +15 -5
  1050. package/lib/Util/tarGzip.js.map +1 -1
  1051. package/lib/index.d.ts +4 -2
  1052. package/lib/index.d.ts.map +1 -1
  1053. package/lib/index.js +4 -2
  1054. package/lib/index.js.map +1 -1
  1055. package/package.json +40 -38
  1056. package/src/AWS/AGENTS.md +1 -1
  1057. package/src/AWS/AMP/Scraper.ts +1 -1
  1058. package/src/AWS/AppRunner/Service.ts +11 -27
  1059. package/src/AWS/Assets.ts +2 -2
  1060. package/src/AWS/AuthProvider.ts +748 -429
  1061. package/src/AWS/Batch/JobDefinition.ts +11 -27
  1062. package/src/AWS/EC2/Instance.ts +12 -28
  1063. package/src/AWS/EC2/InternetGateway.ts +1 -1
  1064. package/src/AWS/EC2/NatGateway.ts +1 -1
  1065. package/src/AWS/EC2/NetworkInterface.ts +1 -1
  1066. package/src/AWS/EC2/NetworkInterfaceAttachment.ts +1 -1
  1067. package/src/AWS/EC2/RouteTable.ts +1 -1
  1068. package/src/AWS/EC2/RouteTableAssociation.ts +1 -1
  1069. package/src/AWS/EC2/Snapshot.ts +1 -1
  1070. package/src/AWS/EC2/Subnet.ts +1 -1
  1071. package/src/AWS/EC2/Volume.ts +1 -1
  1072. package/src/AWS/EC2/VolumeAttachment.ts +1 -1
  1073. package/src/AWS/EC2/Vpc.ts +1 -1
  1074. package/src/AWS/EC2/VpcEndpoint.ts +1 -1
  1075. package/src/AWS/EC2/hosted.ts +5 -6
  1076. package/src/AWS/ECR/ImageSource.ts +4 -5
  1077. package/src/AWS/ECS/Service.ts +7 -21
  1078. package/src/AWS/ECS/Task.ts +7 -21
  1079. package/src/AWS/ElastiCache/CacheCluster.ts +323 -0
  1080. package/src/AWS/ElastiCache/ConnectCacheCluster.ts +58 -0
  1081. package/src/AWS/ElastiCache/ConnectCacheClusterHttp.ts +77 -0
  1082. package/src/AWS/ElastiCache/ConnectReplicationGroup.ts +62 -0
  1083. package/src/AWS/ElastiCache/ConnectReplicationGroupHttp.ts +110 -0
  1084. package/src/AWS/ElastiCache/ReplicationGroup.ts +594 -0
  1085. package/src/AWS/ElastiCache/SubnetGroup.ts +208 -0
  1086. package/src/AWS/ElastiCache/index.ts +7 -0
  1087. package/src/AWS/ElastiCache/internal.ts +36 -0
  1088. package/src/AWS/Environment.ts +15 -48
  1089. package/src/AWS/IAM/actions.generated.ts +1 -1
  1090. package/src/AWS/IdentityCenter/AccountAssignment.ts +7 -0
  1091. package/src/AWS/Lambda/Function.ts +26 -28
  1092. package/src/AWS/Lambda/MicrovmImage.ts +12 -28
  1093. package/src/AWS/Lambda/MicrovmProvider.ts +1 -1
  1094. package/src/AWS/Lambda/NetworkConnector.ts +1 -1
  1095. package/src/AWS/Local/DevWatchProvider.ts +10 -1
  1096. package/src/AWS/Organizations/Account.ts +18 -10
  1097. package/src/AWS/Organizations/DelegatedAdministrator.ts +7 -7
  1098. package/src/AWS/Organizations/Organization.ts +3 -5
  1099. package/src/AWS/Organizations/common.ts +17 -0
  1100. package/src/AWS/Providers.ts +12 -0
  1101. package/src/AWS/S3/Bucket.ts +1 -1
  1102. package/src/Alchemist/Errors.ts +36 -0
  1103. package/src/Alchemist/Progress.ts +175 -0
  1104. package/src/Alchemist/Runtime.ts +40 -0
  1105. package/src/Alchemist/Session.ts +460 -0
  1106. package/src/Alchemist/index.ts +24 -0
  1107. package/src/Alchemist/routes/aws.ts +88 -0
  1108. package/src/Alchemist/routes/cloudflare.ts +188 -0
  1109. package/src/Alchemist/routes/cloudflareToken.ts +215 -0
  1110. package/src/Alchemist/routes/drift.ts +94 -0
  1111. package/src/Alchemist/routes/logs.ts +185 -0
  1112. package/src/Alchemist/routes/nuke.ts +146 -0
  1113. package/src/Alchemist/routes/profile.ts +427 -0
  1114. package/src/Alchemist/routes/provider.ts +107 -0
  1115. package/src/Alchemist/routes/stack.ts +137 -0
  1116. package/src/Alchemist/routes/state.ts +77 -0
  1117. package/src/Apply.ts +312 -173
  1118. package/src/Auth/AuthProvider.ts +416 -158
  1119. package/src/Auth/BrowserOAuth.ts +68 -0
  1120. package/src/Auth/Credentials.ts +155 -46
  1121. package/src/Auth/CredentialsCache.ts +57 -0
  1122. package/src/Auth/Demand.ts +208 -83
  1123. package/src/Auth/Env.ts +38 -14
  1124. package/src/Auth/Inspect.ts +129 -0
  1125. package/src/Auth/Lock.ts +26 -11
  1126. package/src/Auth/OAuthFlow.ts +551 -0
  1127. package/src/Auth/Paths.ts +30 -0
  1128. package/src/Auth/Profile.ts +768 -164
  1129. package/src/Auth/Resolve.ts +136 -0
  1130. package/src/Auth/StoredAuthProvider.ts +291 -0
  1131. package/src/Auth/index.ts +1 -0
  1132. package/src/Axiom/AuthProvider.ts +112 -314
  1133. package/src/Axiom/Credentials.ts +5 -13
  1134. package/src/Axiom/Providers.ts +3 -3
  1135. package/src/Bundle/Bundle.ts +3 -5
  1136. package/src/Cli/CliKit/CliKit.ts +183 -0
  1137. package/src/Cli/CliKit/index.ts +50 -0
  1138. package/src/Cli/CliKit/interaction.ts +19 -0
  1139. package/src/Cli/CliKit/layer.ts +50 -0
  1140. package/src/Cli/DevOptions.ts +19 -0
  1141. package/src/Cli/Format.ts +31 -0
  1142. package/src/Cli/GlobalLog.ts +147 -0
  1143. package/src/Cli/LoggingCli.ts +312 -108
  1144. package/src/Cli/ModeTag.ts +1 -1
  1145. package/src/Cli/NamespaceTree.ts +94 -21
  1146. package/src/Cli/PlainCliFormatter.ts +75 -0
  1147. package/src/Cli/PropertyDiff.ts +229 -0
  1148. package/src/Cli/checkVersion.ts +19 -6
  1149. package/src/Cli/commands/aws.ts +67 -100
  1150. package/src/Cli/commands/cloudflare.ts +195 -435
  1151. package/src/Cli/commands/compat.ts +25 -0
  1152. package/src/Cli/commands/confirm.ts +46 -0
  1153. package/src/Cli/commands/deploy.ts +225 -212
  1154. package/src/Cli/commands/dev.ts +72 -34
  1155. package/src/Cli/commands/drift.ts +107 -0
  1156. package/src/Cli/commands/errors.ts +162 -0
  1157. package/src/Cli/commands/flags.ts +199 -0
  1158. package/src/Cli/commands/instrument.ts +18 -0
  1159. package/src/Cli/commands/logs.ts +125 -143
  1160. package/src/Cli/commands/nuke.ts +138 -811
  1161. package/src/Cli/commands/profile/commands.ts +482 -0
  1162. package/src/Cli/commands/profile/flows.ts +218 -0
  1163. package/src/Cli/commands/profile/hub.ts +191 -0
  1164. package/src/Cli/commands/profile/index.ts +1 -0
  1165. package/src/Cli/commands/provider.ts +63 -0
  1166. package/src/Cli/commands/render.ts +121 -0
  1167. package/src/Cli/commands/state.ts +250 -387
  1168. package/src/Cli/components/types.ts +141 -0
  1169. package/src/Cli/components/ui/Data.tsx +44 -0
  1170. package/src/Cli/components/ui/Environment.tsx +86 -0
  1171. package/src/Cli/components/ui/Feedback.tsx +269 -0
  1172. package/src/Cli/components/ui/Interactive.tsx +1062 -0
  1173. package/src/Cli/components/ui/Layout.tsx +252 -0
  1174. package/src/Cli/components/ui/Live.tsx +131 -0
  1175. package/src/Cli/components/ui/ProgressBar.tsx +57 -0
  1176. package/src/Cli/components/ui/Transcript.tsx +42 -0
  1177. package/src/Cli/components/ui/Typography.tsx +83 -0
  1178. package/src/Cli/components/ui/index.ts +68 -0
  1179. package/src/Cli/components/view/ApprovePlan.tsx +101 -0
  1180. package/src/Cli/components/view/Help.tsx +381 -0
  1181. package/src/Cli/components/view/Logo.tsx +168 -0
  1182. package/src/Cli/components/view/Nuke.tsx +258 -0
  1183. package/src/Cli/components/view/PlanDecision.tsx +80 -0
  1184. package/src/Cli/components/view/PlanRow.tsx +39 -0
  1185. package/src/Cli/components/view/PlanTree.ts +354 -0
  1186. package/src/Cli/components/view/PlanView.tsx +825 -0
  1187. package/src/Cli/components/view/Profile.tsx +446 -0
  1188. package/src/Cli/components/view/ProfileDashboard.tsx +929 -0
  1189. package/src/Cli/components/view/Prompts.tsx +793 -0
  1190. package/src/Cli/components/view/Runtime.tsx +975 -0
  1191. package/src/Cli/components/view/SigilCli.tsx +186 -0
  1192. package/src/Cli/components/view/StackOutputs.tsx +38 -0
  1193. package/src/Cli/components/view/StateExplorer.tsx +1179 -0
  1194. package/src/Cli/components/view/statusStyle.ts +97 -0
  1195. package/src/Cli/components/view/usePlanPresentation.ts +82 -0
  1196. package/src/Cli/components/view/usePlanViewport.ts +172 -0
  1197. package/src/Cli/exec.ts +278 -32
  1198. package/src/Cli/main.ts +189 -42
  1199. package/src/Cli/selectCli.ts +30 -15
  1200. package/src/Cloudflare/ApiToken/UserApiToken.ts +1 -1
  1201. package/src/Cloudflare/Auth/AuthConfig.ts +117 -0
  1202. package/src/Cloudflare/Auth/AuthProvider.ts +712 -608
  1203. package/src/Cloudflare/Auth/OAuthClient.ts +40 -366
  1204. package/src/Cloudflare/Auth/OAuthScopes.ts +921 -0
  1205. package/src/Cloudflare/Auth/TokenPolicy.ts +79 -0
  1206. package/src/Cloudflare/CloudflareEnvironment.ts +7 -17
  1207. package/src/Cloudflare/Containers/Container.ts +12 -24
  1208. package/src/Cloudflare/Containers/ContainerApplication.ts +12 -27
  1209. package/src/Cloudflare/Credentials.ts +18 -72
  1210. package/src/Cloudflare/EdgeSession.ts +2 -3
  1211. package/src/Cloudflare/Logs.ts +16 -10
  1212. package/src/Cloudflare/Pages/Project.ts +1 -1
  1213. package/src/Cloudflare/Providers.ts +2 -2
  1214. package/src/Cloudflare/StateStore/Api.ts +2 -2
  1215. package/src/Cloudflare/StateStore/CredentialsFile.ts +11 -6
  1216. package/src/Cloudflare/StateStore/State.ts +247 -194
  1217. package/src/Cloudflare/Vectorize/SearchIndexHttpClient.ts +2 -2
  1218. package/src/Cloudflare/Website/Nextjs.ts +4 -15
  1219. package/src/Cloudflare/Website/Vocs.ts +3 -7
  1220. package/src/Cloudflare/Workers/Assets.ts +106 -38
  1221. package/src/Cloudflare/Workers/BrowserHttpClient.ts +10 -3
  1222. package/src/Cloudflare/Workers/CloudflareTracer.ts +113 -0
  1223. package/src/Cloudflare/Workers/Compatibility.ts +37 -7
  1224. package/src/Cloudflare/Workers/DurableObject.ts +50 -4
  1225. package/src/Cloudflare/Workers/DurableObjectBridge.ts +8 -0
  1226. package/src/Cloudflare/Workers/DurableObjectState.ts +46 -9
  1227. package/src/Cloudflare/Workers/DurableObjectStorage.ts +25 -12
  1228. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +172 -58
  1229. package/src/Cloudflare/Workers/RpcWorker.ts +44 -18
  1230. package/src/Cloudflare/Workers/Source.ts +9 -1
  1231. package/src/Cloudflare/Workers/Sources/Python.ts +18 -12
  1232. package/src/Cloudflare/Workers/Sources/Rolldown.ts +1 -1
  1233. package/src/Cloudflare/Workers/Sources/Vite.ts +42 -34
  1234. package/src/Cloudflare/Workers/Telemetry.ts +170 -0
  1235. package/src/Cloudflare/Workers/ViteBuildChildRunner.ts +6 -1
  1236. package/src/Cloudflare/Workers/ViteChild.shared.ts +1 -0
  1237. package/src/Cloudflare/Workers/ViteChild.ts +21 -19
  1238. package/src/Cloudflare/Workers/ViteChildRunner.ts +2 -1
  1239. package/src/Cloudflare/Workers/Worker.ts +101 -50
  1240. package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +29 -0
  1241. package/src/Cloudflare/Workers/WorkerLoader.ts +40 -8
  1242. package/src/Cloudflare/Workers/WorkerProvider.ts +64 -29
  1243. package/src/Cloudflare/Workers/cloudflare_workers.ts +5 -1
  1244. package/src/Cloudflare/Workers/index.ts +1 -0
  1245. package/src/Cloudflare/Workflows/Workflow.ts +105 -0
  1246. package/src/Cloudflare/Workflows/WorkflowBridge.ts +5 -3
  1247. package/src/Command/Command.ts +11 -3
  1248. package/src/Command/Dev.ts +33 -8
  1249. package/src/Docker/BuildHash.ts +75 -8
  1250. package/src/Docker/Docker.ts +7 -2
  1251. package/src/Docker/Service.ts +7 -21
  1252. package/src/Docker/ServiceImage.ts +4 -5
  1253. package/src/{Sync.ts → Drift.ts} +161 -59
  1254. package/src/Drizzle/Schema.ts +5 -7
  1255. package/src/Fly/AuthProvider.ts +44 -232
  1256. package/src/Fly/CheckpointHttp.ts +5 -2
  1257. package/src/Fly/Credentials.ts +29 -16
  1258. package/src/Fly/DecryptHttp.ts +5 -2
  1259. package/src/Fly/EncryptHttp.ts +5 -2
  1260. package/src/Fly/ExecHttp.ts +5 -2
  1261. package/src/Fly/GetSecretHttp.ts +5 -2
  1262. package/src/Fly/ListSecretsHttp.ts +5 -2
  1263. package/src/Fly/Machine.ts +67 -20
  1264. package/src/Fly/Providers.ts +2 -2
  1265. package/src/Fly/Service.ts +44 -20
  1266. package/src/Fly/SignHttp.ts +5 -2
  1267. package/src/Fly/VerifyHttp.ts +5 -2
  1268. package/src/Fly/WriteSecretHttp.ts +5 -2
  1269. package/src/Fly/replicas.ts +47 -1
  1270. package/src/GitHub/AuthProvider.ts +225 -143
  1271. package/src/GitHub/Credentials.ts +6 -13
  1272. package/src/GitHub/Providers.ts +4 -4
  1273. package/src/Hetzner/AuthProvider.ts +50 -238
  1274. package/src/Hetzner/Credentials.ts +4 -12
  1275. package/src/Hetzner/Providers.ts +2 -2
  1276. package/src/Interaction.ts +354 -0
  1277. package/src/Kubernetes/ClusterAdapter.ts +4 -5
  1278. package/src/Kubernetes/Deployment.ts +7 -21
  1279. package/src/Kubernetes/Job.ts +7 -21
  1280. package/src/Local/DevLog.ts +135 -0
  1281. package/src/Local/LocalProvider.ts +3 -3
  1282. package/src/Local/RpcServer.ts +11 -0
  1283. package/src/Local/RpcServerEnvironment.ts +3 -2
  1284. package/src/Local/RpcSpawner.ts +161 -78
  1285. package/src/Neon/AuthProvider.ts +31 -203
  1286. package/src/Neon/Credentials.ts +4 -12
  1287. package/src/Neon/Providers.ts +2 -2
  1288. package/src/Nuke.ts +463 -0
  1289. package/src/Plan.ts +920 -708
  1290. package/src/Planetscale/AuthProvider.ts +397 -324
  1291. package/src/Planetscale/Credentials.ts +21 -19
  1292. package/src/Planetscale/OAuthClient.ts +34 -328
  1293. package/src/Planetscale/Providers.ts +2 -2
  1294. package/src/Planetscale/Util.ts +1 -1
  1295. package/src/Prisma/AuthProvider.ts +62 -240
  1296. package/src/Prisma/Compute.ts +7 -21
  1297. package/src/Prisma/PrismaEnvironment.ts +6 -14
  1298. package/src/Prisma/Providers.ts +7 -7
  1299. package/src/Provider.ts +12 -13
  1300. package/src/Railway/AuthProvider.ts +291 -235
  1301. package/src/Railway/Bucket.ts +6 -6
  1302. package/src/Railway/CloudAgent.ts +4 -4
  1303. package/src/Railway/Credentials.ts +5 -14
  1304. package/src/Railway/CustomDomain.ts +5 -5
  1305. package/src/Railway/Function.ts +10 -10
  1306. package/src/Railway/Group.ts +2 -2
  1307. package/src/Railway/LoginSession.ts +5 -5
  1308. package/src/Railway/Mongo.ts +19 -19
  1309. package/src/Railway/MySQL.ts +19 -19
  1310. package/src/Railway/Postgres.ts +19 -19
  1311. package/src/Railway/PrivateNetwork.ts +2 -2
  1312. package/src/Railway/Project.ts +7 -7
  1313. package/src/Railway/ProjectEnvironment.ts +7 -7
  1314. package/src/Railway/Providers.ts +2 -2
  1315. package/src/Railway/Redis.ts +9 -9
  1316. package/src/Railway/Sandbox.ts +10 -10
  1317. package/src/Railway/Service.ts +72 -1
  1318. package/src/Railway/ServiceDomain.ts +253 -27
  1319. package/src/Railway/ServiceProvider.ts +234 -87
  1320. package/src/Railway/TcpProxy.ts +4 -4
  1321. package/src/Railway/Template.ts +12 -12
  1322. package/src/Railway/Usage.ts +2 -2
  1323. package/src/Railway/Variable.ts +2 -2
  1324. package/src/Railway/Volume.ts +4 -4
  1325. package/src/Railway/VolumeBackup.ts +11 -11
  1326. package/src/Railway/local-context.ts +333 -0
  1327. package/src/Report.ts +365 -0
  1328. package/src/Stack.ts +12 -8
  1329. package/src/State/Export.ts +28 -47
  1330. package/src/State/HttpStateStore.ts +15 -8
  1331. package/src/State/LocalState.ts +6 -16
  1332. package/src/State/Tree.ts +277 -0
  1333. package/src/State/index.ts +1 -0
  1334. package/src/Telemetry/Layer.ts +16 -5
  1335. package/src/Telemetry.ts +6 -1
  1336. package/src/Test/Core.ts +10 -4
  1337. package/src/UserFacingError.ts +35 -0
  1338. package/src/Util/AtomicFile.ts +36 -0
  1339. package/src/Util/ConsoleSink.ts +23 -0
  1340. package/src/Util/LineBuffer.ts +20 -0
  1341. package/src/Util/Memoize.ts +48 -0
  1342. package/src/Util/Node.ts +35 -14
  1343. package/src/Util/PlatformServices.ts +11 -1
  1344. package/src/Util/ResourceOutput.ts +77 -0
  1345. package/src/Util/Terminal.ts +81 -0
  1346. package/src/Util/Theme.ts +150 -0
  1347. package/src/Util/interactive.ts +103 -16
  1348. package/src/Util/scc.ts +43 -23
  1349. package/src/Util/tarGzip.ts +33 -5
  1350. package/src/index.ts +4 -2
  1351. package/lib/Cli/Cli.d.ts +0 -21
  1352. package/lib/Cli/Cli.d.ts.map +0 -1
  1353. package/lib/Cli/Cli.js +0 -5
  1354. package/lib/Cli/Cli.js.map +0 -1
  1355. package/lib/Cli/Event.d.ts +0 -29
  1356. package/lib/Cli/Event.d.ts.map +0 -1
  1357. package/lib/Cli/Event.js +0 -1
  1358. package/lib/Cli/Event.js.map +0 -1
  1359. package/lib/Cli/commands/_shared.d.ts +0 -138
  1360. package/lib/Cli/commands/_shared.d.ts.map +0 -1
  1361. package/lib/Cli/commands/_shared.js +0 -298
  1362. package/lib/Cli/commands/_shared.js.map +0 -1
  1363. package/lib/Cli/commands/login.d.ts +0 -14
  1364. package/lib/Cli/commands/login.d.ts.map +0 -1
  1365. package/lib/Cli/commands/login.js +0 -115
  1366. package/lib/Cli/commands/login.js.map +0 -1
  1367. package/lib/Cli/commands/profile.d.ts +0 -25
  1368. package/lib/Cli/commands/profile.d.ts.map +0 -1
  1369. package/lib/Cli/commands/profile.js +0 -83
  1370. package/lib/Cli/commands/profile.js.map +0 -1
  1371. package/lib/Cli/commands/sync.d.ts +0 -22
  1372. package/lib/Cli/commands/sync.d.ts.map +0 -1
  1373. package/lib/Cli/commands/sync.js +0 -64
  1374. package/lib/Cli/commands/sync.js.map +0 -1
  1375. package/lib/Cli/commands/tail.d.ts +0 -9
  1376. package/lib/Cli/commands/tail.d.ts.map +0 -1
  1377. package/lib/Cli/commands/tail.js +0 -97
  1378. package/lib/Cli/commands/tail.js.map +0 -1
  1379. package/lib/Cli/tui/InkCLI.d.ts +0 -4
  1380. package/lib/Cli/tui/InkCLI.d.ts.map +0 -1
  1381. package/lib/Cli/tui/InkCLI.js +0 -53
  1382. package/lib/Cli/tui/InkCLI.js.map +0 -1
  1383. package/lib/Cli/tui/components/ApprovePlan.d.ts +0 -9
  1384. package/lib/Cli/tui/components/ApprovePlan.d.ts.map +0 -1
  1385. package/lib/Cli/tui/components/ApprovePlan.js +0 -21
  1386. package/lib/Cli/tui/components/ApprovePlan.js.map +0 -1
  1387. package/lib/Cli/tui/components/Nuke.d.ts +0 -36
  1388. package/lib/Cli/tui/components/Nuke.d.ts.map +0 -1
  1389. package/lib/Cli/tui/components/Nuke.js +0 -132
  1390. package/lib/Cli/tui/components/Nuke.js.map +0 -1
  1391. package/lib/Cli/tui/components/Plan.d.ts +0 -8
  1392. package/lib/Cli/tui/components/Plan.d.ts.map +0 -1
  1393. package/lib/Cli/tui/components/Plan.js +0 -87
  1394. package/lib/Cli/tui/components/Plan.js.map +0 -1
  1395. package/lib/Cli/tui/components/PlanProgress.d.ts +0 -55
  1396. package/lib/Cli/tui/components/PlanProgress.d.ts.map +0 -1
  1397. package/lib/Cli/tui/components/PlanProgress.js +0 -292
  1398. package/lib/Cli/tui/components/PlanProgress.js.map +0 -1
  1399. package/lib/Sync.d.ts +0 -109
  1400. package/lib/Sync.d.ts.map +0 -1
  1401. package/lib/Sync.js.map +0 -1
  1402. package/lib/Util/Clank.d.ts +0 -45
  1403. package/lib/Util/Clank.d.ts.map +0 -1
  1404. package/lib/Util/Clank.js +0 -79
  1405. package/lib/Util/Clank.js.map +0 -1
  1406. package/src/Cli/Cli.ts +0 -23
  1407. package/src/Cli/Event.ts +0 -51
  1408. package/src/Cli/commands/_shared.ts +0 -498
  1409. package/src/Cli/commands/login.ts +0 -169
  1410. package/src/Cli/commands/profile.ts +0 -132
  1411. package/src/Cli/commands/sync.ts +0 -123
  1412. package/src/Cli/commands/tail.ts +0 -155
  1413. package/src/Cli/tui/InkCLI.tsx +0 -69
  1414. package/src/Cli/tui/components/ApprovePlan.tsx +0 -44
  1415. package/src/Cli/tui/components/Nuke.tsx +0 -273
  1416. package/src/Cli/tui/components/Plan.tsx +0 -211
  1417. package/src/Cli/tui/components/PlanProgress.tsx +0 -455
  1418. package/src/Util/Clank.ts +0 -103
@@ -1,93 +1,84 @@
1
1
  import * as cfAccounts from "@distilled.cloud/cloudflare/accounts";
2
+ import * as cfMemberships from "@distilled.cloud/cloudflare/memberships";
2
3
  import * as CfCredentialsModule from "@distilled.cloud/cloudflare/Credentials";
3
- import * as Console from "effect/Console";
4
+ import * as Clock from "effect/Clock";
4
5
  import * as Duration from "effect/Duration";
5
6
  import * as Effect from "effect/Effect";
6
7
  import * as Layer from "effect/Layer";
7
8
  import * as Match from "effect/Match";
8
9
  import * as Redacted from "effect/Redacted";
10
+ import * as Schema from "effect/Schema";
9
11
  import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
10
12
  import * as HttpClient from "effect/unstable/http/HttpClient";
11
13
  import {
12
14
  AuthError,
13
15
  AuthProviderLayer,
14
- type ConfigureContext,
16
+ NeedsReauth,
17
+ reconfigureHint,
18
+ refreshHint,
19
+ type ConfigureField,
20
+ type ConfigureMethod,
21
+ type ProviderDetails,
15
22
  } from "../../Auth/AuthProvider.ts";
23
+ import {
24
+ storedSecret,
25
+ storedValueText,
26
+ validateFieldValues,
27
+ } from "../../Auth/StoredAuthProvider.ts";
16
28
  import { CredentialsStore, displayRedacted } from "../../Auth/Credentials.ts";
29
+ import { withProfileCredentialsLock } from "../../Auth/Lock.ts";
17
30
  import {
18
- getEnv,
19
31
  getEnvRedacted,
20
32
  getEnvRequired,
21
- retryOnce,
33
+ mapPromptCancellation,
22
34
  } from "../../Auth/Env.ts";
23
- import * as Clank from "../../Util/Clank.ts";
35
+ import { browserOAuth } from "../../Auth/BrowserOAuth.ts";
36
+ import * as Interaction from "../../Interaction.ts";
24
37
  import { CREDENTIALS_FILE as STATE_STORE_CREDENTIALS_FILE } from "../StateStore/CredentialsFile.ts";
25
38
  import * as OAuthClient from "./OAuthClient.ts";
39
+ import {
40
+ CLOUDFLARE_AUTH_PROVIDER_NAME,
41
+ CloudflareAuthConfigSchema,
42
+ validateAccountId,
43
+ validateAccountIdField,
44
+ type CloudflareAuthConfig,
45
+ type CloudflareResolvedCredentials,
46
+ } from "./AuthConfig.ts";
47
+ import {
48
+ ALL_SCOPE_IDS,
49
+ BASIC_SCOPES,
50
+ customOAuthScopeDefaults,
51
+ OAUTH_SCOPE_GROUPS,
52
+ OAUTH_SCOPE_NAMES,
53
+ partitionOAuthScopes,
54
+ } from "./OAuthScopes.ts";
26
55
 
27
56
  const options: Array<{
28
57
  value: CloudflareAuthConfig["method"];
29
58
  label: string;
30
- hint?: string;
59
+ description?: string;
31
60
  }> = [
32
61
  {
33
62
  value: "oauth",
34
63
  label: "OAuth",
35
- hint: "recommended — browser-based login with automatic token refresh",
36
- },
37
- {
38
- value: "env",
39
- label: "Environment Variables",
40
- hint: "CLOUDFLARE_API_TOKEN or CLOUDFLARE_API_KEY + CLOUDFLARE_EMAIL",
64
+ description:
65
+ "recommended — browser-based login with automatic token refresh",
41
66
  },
42
67
  {
43
68
  value: "stored",
44
69
  label: "API Token or API Key",
45
- hint: "enter credentials interactively, stored in ~/.alchemy/credentials",
70
+ description: "use an API token or global API key",
46
71
  },
47
72
  ];
48
73
 
49
- export type CloudflareAuthConfig =
50
- | { method: "env" }
51
- | { method: "stored"; credentialType: "apiToken" }
52
- | { method: "stored"; credentialType: "apiKey" }
53
- | { method: "oauth"; scopes: string[]; accountId: string };
54
-
55
- export type CloudflareStoredCredentials =
56
- | { type: "apiToken"; apiToken: string; accountId: string }
57
- | { type: "apiKey"; apiKey: string; email: string; accountId: string };
58
-
59
- export type CloudflareResolvedCredentials =
60
- | {
61
- type: "apiToken";
62
- apiToken: Redacted.Redacted<string>;
63
- accountId: string;
64
- source: { type: CloudflareAuthConfig["method"]; details?: string };
65
- }
66
- | {
67
- type: "apiKey";
68
- apiKey: Redacted.Redacted<string>;
69
- email: Redacted.Redacted<string>;
70
- accountId: string;
71
- source: { type: CloudflareAuthConfig["method"]; details?: string };
72
- }
73
- | {
74
- type: "oauth";
75
- accessToken: Redacted.Redacted<string>;
76
- expires: number;
77
- accountId: string;
78
- source: { type: CloudflareAuthConfig["method"]; details?: string };
79
- };
80
-
81
- export const CLOUDFLARE_AUTH_PROVIDER_NAME = "Cloudflare";
82
-
83
- const withOAuthCredentials = <A, E>(
74
+ const withOAuthCredentials = <A, E, R>(
84
75
  accessToken: string,
85
76
  effect: Effect.Effect<
86
77
  A,
87
78
  E,
88
- CfCredentialsModule.Credentials | HttpClient.HttpClient
79
+ R | CfCredentialsModule.Credentials | HttpClient.HttpClient
89
80
  >,
90
- ): Effect.Effect<A, E> =>
81
+ ): Effect.Effect<A, E, R> =>
91
82
  Effect.provide(
92
83
  effect,
93
84
  Layer.mergeAll(
@@ -100,113 +91,168 @@ const withOAuthCredentials = <A, E>(
100
91
  ),
101
92
  );
102
93
 
94
+ /**
95
+ * Accounts visible to a user-scoped OAuth token. `GET /accounts` returns an
96
+ * EMPTY list for these tokens (it only lists accounts an account-scoped
97
+ * credential can read), so memberships are the authoritative account list —
98
+ * the same endpoint wrangler uses. `GET /accounts` remains as a fallback for
99
+ * tokens authorized without `memberships.read` (custom scope selections).
100
+ */
101
+ const listVisibleAccounts: Effect.Effect<
102
+ ReadonlyArray<{ id: string; name: string }>,
103
+ unknown,
104
+ CfCredentialsModule.Credentials | HttpClient.HttpClient
105
+ > = Effect.gen(function* () {
106
+ const listMemberships = yield* cfMemberships.listMemberships;
107
+ const membershipAccounts = yield* listMemberships({}).pipe(
108
+ Effect.map((response) =>
109
+ response.result.flatMap((membership) =>
110
+ membership.account != null &&
111
+ (membership.status == null || membership.status === "accepted")
112
+ ? [membership.account]
113
+ : [],
114
+ ),
115
+ ),
116
+ Effect.catch((error) =>
117
+ Effect.logDebug("Cloudflare: listing memberships failed", error).pipe(
118
+ Effect.as([] as Array<{ id: string; name: string }>),
119
+ ),
120
+ ),
121
+ );
122
+ if (membershipAccounts.length > 0) return membershipAccounts;
123
+ const listAccounts = yield* cfAccounts.listAccounts;
124
+ const response = yield* listAccounts({});
125
+ yield* Effect.logDebug(
126
+ `Cloudflare: memberships listed 0 accounts; /accounts listed ${response.result.length}`,
127
+ );
128
+ return response.result;
129
+ });
130
+
103
131
  const selectAccount = (accessToken: string) =>
104
132
  Effect.gen(function* () {
105
- const list = yield* cfAccounts.listAccounts;
106
- const response = yield* list({});
107
- const accounts = response.result;
133
+ const interaction = Interaction.accessors;
134
+ const accounts = yield* listVisibleAccounts;
108
135
  if (accounts.length === 0) {
109
136
  return yield* new AuthError({
110
- message: "Cloudflare: no accounts found for this credential.",
137
+ message:
138
+ "No Cloudflare accounts are visible to this credential. " +
139
+ "Ensure the authorized OAuth scopes include 'memberships.read'.",
111
140
  });
112
141
  }
113
- if (accounts.length === 1) {
114
- const account = accounts[0]!;
115
- yield* Clank.info(
116
- `Cloudflare: using account: ${account.name} (${account.id})`,
142
+ const [account] = accounts;
143
+ if (accounts.length === 1 && account !== undefined) {
144
+ yield* interaction.output.info(
145
+ `Using Cloudflare account ${account.name}.`,
117
146
  );
118
147
  return account.id;
119
148
  }
120
- return yield* Clank.select({
121
- message: "Select a Cloudflare account",
122
- options: accounts.map((a) => ({
123
- value: a.id,
124
- label: a.name,
125
- hint: a.id,
126
- })),
127
- }).pipe(retryOnce);
149
+ return yield* interaction.prompt
150
+ .select({
151
+ message: "Select a Cloudflare account",
152
+ searchable: true,
153
+ options: accounts.map((a) => ({
154
+ value: a.id,
155
+ label: a.name,
156
+ description: a.id,
157
+ })),
158
+ })
159
+ .pipe(mapPromptCancellation);
128
160
  }).pipe((e) => withOAuthCredentials(accessToken, e));
129
161
 
162
+ const promptAccountId = () =>
163
+ Effect.gen(function* () {
164
+ const interaction = yield* Interaction.Interaction;
165
+ return yield* interaction.prompt
166
+ .text({
167
+ message: "Cloudflare Account ID",
168
+ validate: validateAccountIdField,
169
+ })
170
+ .pipe(mapPromptCancellation);
171
+ });
172
+
173
+ const accountIdField: ConfigureField = {
174
+ name: "accountId",
175
+ label: "Cloudflare Account ID",
176
+ validate: validateAccountIdField,
177
+ };
178
+
130
179
  /**
131
- * Cloudflare account IDs are 32 lowercase hex characters. Placeholder
132
- * values ("", "-", "dummy", …) end up interpolated into API paths and
133
- * surface as baffling `InvalidRoute: Could not route to
134
- * /accounts/<value>/...` errors, so reject them up front with an
135
- * actionable message instead.
180
+ * `--set` fields for `--method stored`. The persisted `credentialType` is
181
+ * inferred from which secret is supplied: `apiToken` alone, or `apiKey`
182
+ * together with `email`.
136
183
  */
137
- const ACCOUNT_ID_PATTERN = /^[0-9a-f]{32}$/i;
138
-
139
- export const validateAccountId = (
140
- accountId: string | undefined,
141
- source: string,
142
- ): Effect.Effect<string, AuthError> => {
143
- const trimmed = accountId?.trim() ?? "";
144
- if (trimmed.length === 0) {
145
- return Effect.fail(
146
- new AuthError({
147
- message:
148
- `Cloudflare account ID is missing (${source}). ` +
149
- "Set CLOUDFLARE_ACCOUNT_ID or re-run 'alchemy login' and provide your account ID " +
150
- "(found in the Cloudflare dashboard under Workers & Pages → Account details).",
151
- }),
152
- );
153
- }
154
- if (!ACCOUNT_ID_PATTERN.test(trimmed)) {
155
- return Effect.fail(
156
- new AuthError({
157
- message:
158
- `'${trimmed}' is not a valid Cloudflare account ID (${source}) — expected 32 hex characters. ` +
159
- "Copy the account ID from the Cloudflare dashboard (Workers & Pages → Account details) " +
160
- "into CLOUDFLARE_ACCOUNT_ID or re-run 'alchemy login'.",
161
- }),
162
- );
163
- }
164
- return Effect.succeed(trimmed.toLowerCase());
165
- };
184
+ const storedFields: ReadonlyArray<ConfigureField> = [
185
+ {
186
+ name: "apiToken",
187
+ label: "Cloudflare API Token",
188
+ description: "Pass either apiToken, or apiKey together with email.",
189
+ secret: true,
190
+ optional: true,
191
+ },
192
+ { name: "apiKey", label: "Cloudflare API Key", secret: true, optional: true },
193
+ { name: "email", label: "Cloudflare Email", optional: true },
194
+ accountIdField,
195
+ ];
166
196
 
167
- const promptAccountId = () =>
168
- getEnv("CLOUDFLARE_ACCOUNT_ID").pipe(
169
- Effect.flatMap((envAccountId) =>
170
- Clank.text({
171
- message: "Cloudflare Account ID (Enter to skip)",
172
- placeholder: envAccountId ?? "",
173
- defaultValue: envAccountId ?? "",
174
- validate: (v) =>
175
- v.trim().length === 0 || ACCOUNT_ID_PATTERN.test(v.trim())
176
- ? undefined
177
- : "Expected a 32-character hex account ID (Workers & Pages → Account details)",
178
- }).pipe(retryOnce),
179
- ),
180
- );
197
+ /**
198
+ * Flag-driven configuration methods. OAuth is deliberately absent — it is
199
+ * interactive-only (browser grant).
200
+ */
201
+ const configureMethods: ReadonlyArray<ConfigureMethod> = [
202
+ { method: "stored", fields: storedFields },
203
+ ];
181
204
 
182
- const promptOAuthScopes = () =>
183
- Clank.confirm({
184
- message: "Customize OAuth scopes? (default covers typical use cases)",
185
- initialValue: false,
186
- }).pipe(
187
- retryOnce,
188
- Effect.flatMap((customize) => {
189
- if (!customize) return Effect.succeed([...DEFAULT_SCOPES]);
190
- return Clank.multiselect({
205
+ const promptOAuthScopes = (currentConfig?: CloudflareAuthConfig) =>
206
+ Effect.gen(function* () {
207
+ const interaction = yield* Interaction.Interaction;
208
+ const mode = yield* interaction.prompt
209
+ .select({
210
+ message: "Cloudflare OAuth scopes",
211
+ initialValue: "all" as const,
212
+ options: [
213
+ {
214
+ value: "all" as const,
215
+ label: "All Scopes",
216
+ description: "authorize every available Cloudflare permission",
217
+ },
218
+ {
219
+ value: "basic" as const,
220
+ label: "Basic Scopes",
221
+ description: "covers typical Alchemy use cases",
222
+ },
223
+ {
224
+ value: "custom" as const,
225
+ label: "Custom Scopes",
226
+ description: "choose individual permissions",
227
+ },
228
+ ],
229
+ })
230
+ .pipe(mapPromptCancellation);
231
+ if (mode === "basic") return [...BASIC_SCOPES];
232
+ if (mode === "all") return [...ALL_SCOPE_IDS];
233
+ return yield* interaction.prompt
234
+ .multiSelect({
191
235
  message: "Select OAuth scopes",
192
- initialValues: DEFAULT_SCOPES as string[],
193
- options: Object.entries(ALL_SCOPES).map(([value, hint]) => ({
194
- value: value as string,
195
- label: value,
196
- hint,
197
- })),
236
+ initialValues: customOAuthScopeDefaults(currentConfig),
237
+ searchable: true,
238
+ descriptionPlacement: "inline",
239
+ options: OAUTH_SCOPE_GROUPS.flatMap((group) =>
240
+ group.scopes.map((value) => ({
241
+ value,
242
+ label: OAUTH_SCOPE_NAMES[value],
243
+ description: value,
244
+ group: group.label,
245
+ })),
246
+ ),
198
247
  required: true,
199
- }).pipe(
200
- Effect.map((s) => s as string[]),
201
- retryOnce,
202
- );
203
- }),
204
- );
248
+ })
249
+ .pipe(mapPromptCancellation);
250
+ });
205
251
 
206
252
  /**
207
253
  * Layer that registers the Cloudflare {@link AuthProvider} into the
208
254
  * {@link AuthProviders} registry when built. Include this in the Cloudflare
209
- * `providers()` layer so `alchemy login` can discover it.
255
+ * `providers()` layer so the alchemy CLI can discover it.
210
256
  */
211
257
  export const CloudflareAuth = AuthProviderLayer<
212
258
  CloudflareAuthConfig,
@@ -214,103 +260,88 @@ export const CloudflareAuth = AuthProviderLayer<
214
260
  >()(
215
261
  CLOUDFLARE_AUTH_PROVIDER_NAME,
216
262
  Effect.gen(function* () {
263
+ const interaction = Interaction.accessors;
217
264
  const store = yield* CredentialsStore;
218
265
 
219
- const oauthLogin = (profileName: string, scopes: string[]) =>
266
+ const oauthLogin = (_profileName: string, scopes: string[]) =>
220
267
  Effect.gen(function* () {
221
- const authorization = OAuthClient.authorize([
268
+ const authorization = yield* OAuthClient.authorize([
222
269
  ...scopes,
223
270
  "offline_access",
224
271
  ]);
225
272
 
226
- yield* Clank.info("Cloudflare: opening browser for OAuth login...");
227
- yield* Clank.info(authorization.url);
228
- yield* Clank.openUrl(authorization.url).pipe(
229
- Effect.catch(() =>
230
- Clank.warn(
231
- "Cloudflare: could not open browser automatically. Please open the URL above manually.",
232
- ),
233
- ),
234
- );
235
- yield* Clank.info(
236
- "Cloudflare: waiting for authorization (up to 5 minutes).",
237
- );
238
-
239
- const credentials = yield* Effect.raceFirst(
240
- OAuthClient.callback(authorization),
241
- Clank.text({
242
- message: "Paste the authorization code or callback URL",
243
- placeholder:
244
- "The browser will complete this automatically when local",
245
- validate: (value) =>
246
- value.trim().length > 0 ? undefined : "Paste a code or URL",
247
- }).pipe(
248
- Effect.flatMap((input) =>
249
- OAuthClient.exchangeCallbackInput(input, authorization),
250
- ),
251
- ),
273
+ const credentials = yield* browserOAuth({
274
+ provider: "Cloudflare",
275
+ url: authorization.url,
276
+ callback: OAuthClient.callback(authorization),
277
+ exchange: (input) =>
278
+ OAuthClient.exchangeCallbackInput(input, authorization),
279
+ });
280
+ yield* interaction.output.success(
281
+ "Connected to Cloudflare with OAuth.",
252
282
  );
253
- yield* store.write(profileName, "cf-oauth", credentials);
254
- yield* Clank.success("Cloudflare: OAuth credentials saved.");
255
283
  return credentials;
256
284
  });
257
285
 
258
286
  const loginStored = Effect.fn(function* (profileName: string) {
259
- const credentialType = yield* Clank.select({
260
- message: "Cloudflare credential type",
261
- options: [
262
- {
263
- value: "apiToken" as const,
264
- label: "API Token",
265
- hint: "recommended",
266
- },
267
- { value: "apiKey" as const, label: "API Key + Email" },
268
- ],
269
- }).pipe(retryOnce);
287
+ const credentialType = yield* interaction.prompt
288
+ .select({
289
+ message: "Cloudflare credential type",
290
+ options: [
291
+ {
292
+ value: "apiToken" as const,
293
+ label: "API Token",
294
+ description: "recommended",
295
+ },
296
+ { value: "apiKey" as const, label: "API Key + Email" },
297
+ ],
298
+ })
299
+ .pipe(mapPromptCancellation);
270
300
 
271
301
  return yield* Match.value(credentialType).pipe(
272
302
  Match.when("apiToken", () =>
273
303
  Effect.gen(function* () {
274
- const apiToken = yield* Clank.password({
275
- message: "Cloudflare API Token",
276
- validate: (v) => (v.length === 0 ? "Required" : undefined),
277
- }).pipe(retryOnce);
304
+ const apiToken = yield* interaction.prompt
305
+ .password({
306
+ message: "Cloudflare API Token",
307
+ validate: (v) => (v.length === 0 ? "Required" : undefined),
308
+ })
309
+ .pipe(mapPromptCancellation, Effect.map(Redacted.make));
278
310
  const accountId = yield* promptAccountId();
279
311
 
280
- yield* store.write<CloudflareStoredCredentials>(
281
- profileName,
282
- "cf-stored",
283
- { type: "apiToken", apiToken, accountId },
284
- );
285
- yield* Clank.success("Cloudflare: credentials saved.");
312
+ yield* interaction.output.success("Cloudflare: credentials saved.");
286
313
  return {
287
314
  method: "stored" as const,
288
315
  credentialType: "apiToken" as const,
316
+ apiToken: Redacted.value(apiToken),
317
+ accountId,
289
318
  };
290
319
  }),
291
320
  ),
292
321
  Match.when("apiKey", () =>
293
322
  Effect.gen(function* () {
294
- const apiKey = yield* Clank.text({
295
- message: "Cloudflare API Key",
296
- validate: (v) => (v.length === 0 ? "Required" : undefined),
297
- }).pipe(retryOnce);
298
-
299
- const email = yield* Clank.text({
300
- message: "Cloudflare Email",
301
- validate: (v) => (v.length === 0 ? "Required" : undefined),
302
- }).pipe(retryOnce);
323
+ const apiKey = yield* interaction.prompt
324
+ .password({
325
+ message: "Cloudflare API Key",
326
+ validate: (v) => (v.length === 0 ? "Required" : undefined),
327
+ })
328
+ .pipe(mapPromptCancellation, Effect.map(Redacted.make));
329
+
330
+ const email = yield* interaction.prompt
331
+ .text({
332
+ message: "Cloudflare Email",
333
+ validate: (v) => (v.length === 0 ? "Required" : undefined),
334
+ })
335
+ .pipe(mapPromptCancellation, Effect.map(Redacted.make));
303
336
  const accountId = yield* promptAccountId();
304
337
 
305
- yield* store.write<CloudflareStoredCredentials>(
306
- profileName,
307
- "cf-stored",
308
- { type: "apiKey", apiKey, email, accountId },
309
- );
310
- yield* Clank.success("Cloudflare: credentials saved.");
338
+ yield* interaction.output.success("Cloudflare: credentials saved.");
311
339
  return {
312
340
  method: "stored" as const,
313
341
  credentialType: "apiKey" as const,
342
+ apiKey: Redacted.value(apiKey),
343
+ email: Redacted.value(email),
344
+ accountId,
314
345
  };
315
346
  }),
316
347
  ),
@@ -318,48 +349,67 @@ export const CloudflareAuth = AuthProviderLayer<
318
349
  );
319
350
  });
320
351
 
321
- const configureOAuth = Effect.fn(function* (profileName: string) {
322
- const scopes = yield* promptOAuthScopes();
323
-
324
- const oauthCreds = yield* oauthLogin(profileName, scopes);
325
-
326
- const accountId = yield* selectAccount(oauthCreds.access).pipe(
327
- Effect.mapError(
328
- (e) =>
329
- new AuthError({
330
- message: "Cloudflare: could not list accounts",
331
- cause: e,
332
- }),
352
+ const configureOAuth = Effect.fn(function* (
353
+ profileName: string,
354
+ currentConfig?: CloudflareAuthConfig,
355
+ ) {
356
+ const scopes = yield* promptOAuthScopes(currentConfig);
357
+
358
+ const oauthCreds = yield* oauthLogin(profileName, [...scopes]);
359
+
360
+ const accountId = yield* selectAccount(
361
+ Redacted.value(oauthCreds.access),
362
+ ).pipe(
363
+ // Keep AuthError messages intact — they carry the actionable
364
+ // diagnosis (e.g. "no accounts visible"); only wrap raw API errors.
365
+ Effect.mapError((e) =>
366
+ e instanceof AuthError
367
+ ? e
368
+ : new AuthError({
369
+ message: "Cloudflare: could not list accounts",
370
+ cause: e,
371
+ }),
333
372
  ),
334
373
  );
335
374
 
336
375
  return {
337
376
  method: "oauth" as const,
338
- scopes,
377
+ scopes: [...scopes],
339
378
  accountId,
379
+ clientId: oauthCreds.clientId,
380
+ access: Redacted.value(oauthCreds.access),
381
+ refresh: Redacted.value(oauthCreds.refresh),
382
+ expires: oauthCreds.expires,
340
383
  };
341
384
  });
342
385
 
343
- const configureInteractive = (profileName: string) =>
344
- Clank.select({
345
- message: "Cloudflare authentication method",
346
- options,
347
- }).pipe(
348
- Effect.flatMap((method) =>
349
- Match.value(method).pipe(
350
- Match.when("env", () => Effect.succeed({ method: "env" as const })),
351
- Match.when("oauth", () => configureOAuth(profileName)),
352
- Match.when("stored", () => loginStored(profileName)),
353
- Match.exhaustive,
386
+ const configureInteractive = (
387
+ profileName: string,
388
+ currentConfig?: CloudflareAuthConfig,
389
+ ) =>
390
+ interaction.prompt
391
+ .select({
392
+ message: "Cloudflare authentication method",
393
+ options,
394
+ })
395
+ .pipe(
396
+ Effect.flatMap((method) =>
397
+ Match.value(method).pipe(
398
+ Match.when("oauth", () =>
399
+ configureOAuth(profileName, currentConfig),
400
+ ),
401
+ Match.when("stored", () => loginStored(profileName)),
402
+ Match.exhaustive,
403
+ ),
354
404
  ),
355
- ),
356
- );
405
+ );
357
406
 
358
- const configureCredentials = (profileName: string, ctx: ConfigureContext) =>
407
+ const configureCredentials = (
408
+ profileName: string,
409
+ currentConfig?: CloudflareAuthConfig,
410
+ ) =>
359
411
  Effect.gen(function* () {
360
- const config = ctx.ci
361
- ? { method: "env" as const }
362
- : yield* configureInteractive(profileName);
412
+ const config = yield* configureInteractive(profileName, currentConfig);
363
413
  // Re-configuring auth may point this profile at a different
364
414
  // Cloudflare account. The cached state-store credentials
365
415
  // (`~/.alchemy/credentials/{profile}/cloudflare-state-store.json`)
@@ -370,182 +420,190 @@ export const CloudflareAuth = AuthProviderLayer<
370
420
  .pipe(Effect.ignore);
371
421
  return config;
372
422
  }).pipe(
373
- Effect.mapError(
374
- (e) =>
375
- new AuthError({
376
- message: "failed to configure credentials",
377
- cause: e,
378
- }),
423
+ // AuthError messages are already user-facing; re-wrapping them in a
424
+ // generic banner is what hid "no accounts visible" behind
425
+ // "failed to configure credentials".
426
+ Effect.mapError((e) =>
427
+ e instanceof AuthError
428
+ ? e
429
+ : new AuthError({
430
+ message: "failed to configure credentials",
431
+ cause: e,
432
+ }),
379
433
  ),
380
434
  );
381
435
 
382
436
  const resolveCredentials = (
383
437
  profileName: string,
384
438
  config: CloudflareAuthConfig,
385
- ): Effect.Effect<CloudflareResolvedCredentials, AuthError> =>
386
- Match.value(config).pipe(
387
- Match.when(
388
- { method: "env" },
389
- Effect.fn(function* () {
390
- const accountId = yield* getEnvRequired(
391
- "CLOUDFLARE_ACCOUNT_ID",
439
+ updateConfig?: (
440
+ config: CloudflareAuthConfig,
441
+ ) => Effect.Effect<void, AuthError>,
442
+ ) =>
443
+ Effect.gen(function* () {
444
+ const reauth = refreshHint(CLOUDFLARE_AUTH_PROVIDER_NAME, profileName);
445
+ return yield* Match.value(config).pipe(
446
+ Match.when({ method: "stored", credentialType: "apiToken" }, (c) =>
447
+ validateAccountId(
448
+ c.accountId,
449
+ `stored for profile '${profileName}'`,
392
450
  ).pipe(
393
- Effect.flatMap((id) =>
394
- validateAccountId(id, "from the CLOUDFLARE_ACCOUNT_ID env var"),
395
- ),
396
- );
397
- const apiToken = yield* getEnvRedacted("CLOUDFLARE_API_TOKEN");
398
- if (apiToken) {
399
- return {
451
+ Effect.map((accountId) => ({
400
452
  type: "apiToken" as const,
401
- apiToken,
453
+ apiToken: Redacted.make(c.apiToken),
402
454
  accountId,
403
- source: { type: "env" as const },
404
- };
405
- }
406
- const apiKey = yield* getEnvRedacted("CLOUDFLARE_API_KEY");
407
- const email = yield* getEnvRedacted("CLOUDFLARE_EMAIL");
408
- if (apiKey && email) {
409
- return {
455
+ source: { type: "stored" as const },
456
+ })),
457
+ ),
458
+ ),
459
+ Match.when({ method: "stored", credentialType: "apiKey" }, (c) =>
460
+ validateAccountId(
461
+ c.accountId,
462
+ `stored for profile '${profileName}'`,
463
+ ).pipe(
464
+ Effect.map((accountId) => ({
410
465
  type: "apiKey" as const,
411
- apiKey,
412
- email,
466
+ apiKey: Redacted.make(c.apiKey),
467
+ email: Redacted.make(c.email),
413
468
  accountId,
414
- source: { type: "env" as const },
415
- };
416
- }
417
- return yield* new AuthError({
418
- message:
419
- "Cloudflare env credentials not found. Set CLOUDFLARE_API_TOKEN or CLOUDFLARE_API_KEY + CLOUDFLARE_EMAIL.",
420
- });
421
- }),
422
- ),
423
- Match.when({ method: "stored" }, () =>
424
- store
425
- .read<CloudflareStoredCredentials>(profileName, "cf-stored")
426
- .pipe(
427
- Effect.flatMap((creds) =>
428
- creds == null
429
- ? Effect.fail(
430
- new AuthError({
431
- message:
432
- "Cloudflare stored credentials not found. Run: alchemy login --configure",
433
- }),
434
- )
435
- : Effect.gen(function* () {
436
- // The account ID prompt is skippable, so stored
437
- // credentials may carry an empty accountId; fall
438
- // back to the env var before validating.
439
- const envAccountId = yield* getEnv(
440
- "CLOUDFLARE_ACCOUNT_ID",
441
- );
442
- const accountId = yield* validateAccountId(
443
- creds.accountId?.trim() || envAccountId,
444
- `stored for profile '${profileName}'`,
445
- );
446
- return Match.value(creds).pipe(
447
- Match.when({ type: "apiToken" }, (c) => ({
448
- type: "apiToken" as const,
449
- apiToken: Redacted.make(c.apiToken),
450
- accountId,
451
- source: { type: "stored" as const },
452
- })),
453
- Match.when({ type: "apiKey" }, (c) => ({
454
- type: "apiKey" as const,
455
- apiKey: Redacted.make(c.apiKey),
456
- email: Redacted.make(c.email),
457
- accountId,
458
- source: { type: "stored" as const },
459
- })),
460
- Match.exhaustive,
461
- );
462
- }),
463
- ),
469
+ source: { type: "stored" as const },
470
+ })),
464
471
  ),
465
- ),
466
- Match.when({ method: "oauth" }, (cfg) =>
467
- Effect.gen(function* () {
468
- const accountId = yield* validateAccountId(
469
- cfg.accountId,
470
- `configured for profile '${profileName}'`,
471
- );
472
- const creds = yield* store.read<OAuthClient.OAuthCredentials>(
473
- profileName,
474
- "cf-oauth",
475
- );
476
- if (creds == null || creds.type !== "oauth") {
477
- return yield* Effect.fail(
478
- new AuthError({
479
- message:
480
- "Cloudflare OAuth credentials not found. Run: alchemy login",
481
- }),
472
+ ),
473
+ Match.when({ method: "oauth" }, (cfg) =>
474
+ Effect.gen(function* () {
475
+ if (!("scopes" in cfg)) {
476
+ return yield* Effect.fail(
477
+ new NeedsReauth({
478
+ provider: CLOUDFLARE_AUTH_PROVIDER_NAME,
479
+ profile: profileName,
480
+ message: `Cloudflare OAuth scopes need to be selected. ${reauth}`,
481
+ }),
482
+ );
483
+ }
484
+ const accountId = yield* validateAccountId(
485
+ cfg.accountId,
486
+ `configured for profile '${profileName}'`,
482
487
  );
483
- }
484
- // Refresh proactively if the token has expired (or is within
485
- // 10s of expiring). Persist the refreshed creds so subsequent
486
- // resolves don't repeat the round-trip.
487
- const fresh =
488
- creds.expires > Date.now() + 10_000
489
- ? creds
490
- : yield* OAuthClient.refresh(creds).pipe(
491
- Effect.tap((refreshed) =>
492
- store.write(profileName, "cf-oauth", refreshed),
493
- ),
494
- Effect.mapError(
495
- (e) =>
496
- new AuthError({
497
- message:
498
- "Cloudflare OAuth refresh failed. Run: alchemy login",
499
- cause: e,
500
- }),
501
- ),
502
- );
503
- return {
504
- type: "oauth" as const,
505
- accessToken: Redacted.make(fresh.access),
506
- expires: fresh.expires,
507
- accountId,
508
- source: { type: "oauth" as const },
509
- };
510
- }),
488
+ const creds: OAuthClient.OAuthCredentials = {
489
+ type: "oauth",
490
+ clientId: cfg.clientId,
491
+ access: Redacted.make(cfg.access),
492
+ refresh: Redacted.make(cfg.refresh),
493
+ expires: cfg.expires,
494
+ scopes: cfg.scopes,
495
+ };
496
+ if (!OAuthClient.usesCurrentClient(creds)) {
497
+ return yield* Effect.fail(
498
+ new NeedsReauth({
499
+ provider: CLOUDFLARE_AUTH_PROVIDER_NAME,
500
+ profile: profileName,
501
+ message: `Cloudflare OAuth credentials for profile '${profileName}' were issued to an incompatible OAuth client and have been removed. ${reauth}`,
502
+ }),
503
+ );
504
+ }
505
+ // Refresh proactively if the token has expired (or is within
506
+ // 10s of expiring). Persist the refreshed creds so subsequent
507
+ // resolves don't repeat the round-trip.
508
+ const now = yield* Clock.currentTimeMillis;
509
+ const fresh =
510
+ creds.expires > now + 10_000
511
+ ? creds
512
+ : yield* OAuthClient.refresh(creds).pipe(
513
+ Effect.mapError(
514
+ (e) =>
515
+ new NeedsReauth({
516
+ provider: CLOUDFLARE_AUTH_PROVIDER_NAME,
517
+ profile: profileName,
518
+ message: `Cloudflare OAuth refresh failed. ${reauth}`,
519
+ cause: e,
520
+ }),
521
+ ),
522
+ );
523
+ if (fresh !== creds) {
524
+ yield* (
525
+ updateConfig?.({
526
+ method: "oauth",
527
+ accountId,
528
+ clientId: fresh.clientId,
529
+ access: Redacted.value(fresh.access),
530
+ refresh: Redacted.value(fresh.refresh),
531
+ expires: fresh.expires,
532
+ scopes: fresh.scopes,
533
+ }) ?? Effect.void
534
+ );
535
+ }
536
+ return {
537
+ type: "oauth" as const,
538
+ accessToken: fresh.access,
539
+ expires: fresh.expires,
540
+ accountId,
541
+ source: { type: "oauth" as const },
542
+ };
543
+ }),
544
+ ),
545
+ Match.exhaustive,
546
+ );
547
+ });
548
+
549
+ const readEnvironment = Effect.gen(function* () {
550
+ const accountId = yield* getEnvRequired("CLOUDFLARE_ACCOUNT_ID").pipe(
551
+ Effect.flatMap((id) =>
552
+ validateAccountId(id, "from CLOUDFLARE_ACCOUNT_ID"),
511
553
  ),
512
- Match.exhaustive,
513
554
  );
555
+ const apiToken = yield* getEnvRedacted("CLOUDFLARE_API_TOKEN");
556
+ if (apiToken) {
557
+ return {
558
+ type: "apiToken" as const,
559
+ apiToken,
560
+ accountId,
561
+ source: { type: "env" as const },
562
+ };
563
+ }
564
+ const apiKey = yield* getEnvRedacted("CLOUDFLARE_API_KEY");
565
+ const email =
566
+ (yield* getEnvRedacted("CLOUDFLARE_EMAIL")) ??
567
+ (yield* getEnvRedacted("CLOUDFLARE_ACCOUNT_EMAIL"));
568
+ if (apiKey && email) {
569
+ return {
570
+ type: "apiKey" as const,
571
+ apiKey,
572
+ email,
573
+ accountId,
574
+ source: { type: "env" as const },
575
+ };
576
+ }
577
+ return yield* new AuthError({
578
+ message:
579
+ "Cloudflare CI credentials not found. Set CLOUDFLARE_API_TOKEN, or CLOUDFLARE_API_KEY with CLOUDFLARE_EMAIL/CLOUDFLARE_ACCOUNT_EMAIL.",
580
+ });
581
+ });
514
582
 
515
583
  const logout = (profileName: string, config: CloudflareAuthConfig) =>
516
584
  Match.value(config)
517
585
  .pipe(
518
- Match.when({ method: "env" }, () => Effect.void),
519
- Match.when({ method: "stored" }, () =>
520
- store
521
- .delete(profileName, "cf-stored")
522
- .pipe(
523
- Effect.andThen(
524
- Clank.success("Cloudflare: stored credentials removed"),
525
- ),
526
- ),
527
- ),
528
- Match.when({ method: "oauth" }, () =>
529
- store
530
- .read<OAuthClient.OAuthCredentials>(profileName, "cf-oauth")
531
- .pipe(
532
- Effect.tap((creds) =>
533
- creds?.type === "oauth"
534
- ? OAuthClient.revoke(creds).pipe(
535
- Effect.catchTag("OAuthError", (err) =>
536
- Clank.warn(
537
- `Cloudflare: could not revoke OAuth token: ${err.errorDescription}`,
538
- ),
539
- ),
540
- )
541
- : Effect.void,
542
- ),
543
- Effect.andThen(store.delete(profileName, "cf-oauth")),
544
- Effect.andThen(
545
- Clank.success("Cloudflare: OAuth credentials removed."),
546
- ),
547
- ),
548
- ),
586
+ Match.when({ method: "stored" }, () => Effect.void),
587
+ Match.when({ method: "oauth" }, (config) => {
588
+ if (!("scopes" in config)) return Effect.void;
589
+ const credentials: OAuthClient.OAuthCredentials = {
590
+ type: "oauth",
591
+ clientId: config.clientId,
592
+ access: Redacted.make(config.access),
593
+ refresh: Redacted.make(config.refresh),
594
+ expires: config.expires,
595
+ scopes: config.scopes,
596
+ };
597
+ return OAuthClient.usesCurrentClient(credentials)
598
+ ? OAuthClient.revoke(credentials).pipe(
599
+ Effect.catchTag("OAuthError", (err) =>
600
+ interaction.output.warning(
601
+ `Cloudflare: could not revoke OAuth token: ${err.errorDescription}`,
602
+ ),
603
+ ),
604
+ )
605
+ : Effect.void;
606
+ }),
549
607
  Match.exhaustive,
550
608
  )
551
609
  // The cached state-store credentials are derived from the account we
@@ -558,248 +616,294 @@ export const CloudflareAuth = AuthProviderLayer<
558
616
  ),
559
617
  );
560
618
 
561
- const login = (profileName: string, config: CloudflareAuthConfig) =>
619
+ const login = (
620
+ profileName: string,
621
+ config: CloudflareAuthConfig,
622
+ updateConfig?: (
623
+ config: CloudflareAuthConfig,
624
+ ) => Effect.Effect<void, AuthError>,
625
+ ) =>
562
626
  Match.value(config)
563
627
  .pipe(
564
- Match.when({ method: "env" }, () => Effect.void),
565
- Match.when({ method: "stored" }, () =>
566
- store
567
- .read<CloudflareStoredCredentials>(profileName, "cf-stored")
568
- .pipe(
569
- Effect.flatMap((creds) =>
570
- creds == null ? loginStored(profileName) : Effect.void,
571
- ),
572
- ),
573
- ),
628
+ Match.when({ method: "stored" }, (config) => Effect.succeed(config)),
574
629
  Match.when({ method: "oauth" }, (c) =>
575
- Effect.gen(function* () {
576
- const creds = yield* store.read<OAuthClient.OAuthCredentials>(
577
- profileName,
578
- "cf-oauth",
579
- );
580
-
581
- if (creds?.type === "oauth") {
582
- yield* Clank.info(
583
- "Cloudflare: refreshing OAuth credentials...",
584
- );
585
- yield* OAuthClient.refresh(creds).pipe(
586
- Effect.flatMap((refreshed) =>
587
- store
588
- .write(profileName, "cf-oauth", refreshed)
589
- .pipe(
590
- Effect.andThen(
591
- Clank.success(
592
- "Cloudflare: OAuth credentials refreshed.",
593
- ),
594
- ),
595
- ),
596
- ),
597
- Effect.catchTag("OAuthError", () =>
598
- oauthLogin(profileName, c.scopes).pipe(Effect.asVoid),
599
- ),
600
- );
601
- return;
602
- }
603
-
604
- yield* oauthLogin(profileName, c.scopes);
605
- }),
630
+ "scopes" in c
631
+ ? Effect.gen(function* () {
632
+ const creds: OAuthClient.OAuthCredentials = {
633
+ type: "oauth",
634
+ clientId: c.clientId,
635
+ access: Redacted.make(c.access),
636
+ refresh: Redacted.make(c.refresh),
637
+ expires: c.expires,
638
+ scopes: c.scopes,
639
+ };
640
+ const reconfigure = reconfigureHint(
641
+ CLOUDFLARE_AUTH_PROVIDER_NAME,
642
+ profileName,
643
+ );
644
+ // Any path that falls back to a full browser login rebuilds the
645
+ // authorize URL from the profile's stored scopes. Those scopes
646
+ // may predate the current OAuth client (or a catalog change), and
647
+ // one unknown scope makes the whole authorize URL invalid — so
648
+ // sanitize before generating a URL, never after it fails.
649
+ const fullLogin = Effect.gen(function* () {
650
+ const { valid, dropped } = partitionOAuthScopes(c.scopes);
651
+ if (valid.length === 0) {
652
+ return yield* Effect.fail(
653
+ new AuthError({
654
+ message:
655
+ `The OAuth scopes stored for profile '${profileName}' are no longer offered by Alchemy's Cloudflare OAuth client. ` +
656
+ `Scopes must be picked again. ${reconfigure}`,
657
+ }),
658
+ );
659
+ }
660
+ const refreshed = yield* (
661
+ dropped.length === 0
662
+ ? Effect.void
663
+ : interaction.output.warning(
664
+ `Cloudflare: dropping ${dropped.length} stored scope${dropped.length === 1 ? "" : "s"} no longer offered by the current OAuth client (${dropped.join(", ")}). ` +
665
+ `Scopes must be picked again. ${reconfigure}`,
666
+ )
667
+ ).pipe(Effect.andThen(oauthLogin(profileName, valid)));
668
+ return {
669
+ ...c,
670
+ scopes: valid,
671
+ clientId: refreshed.clientId,
672
+ access: Redacted.value(refreshed.access),
673
+ refresh: Redacted.value(refreshed.refresh),
674
+ expires: refreshed.expires,
675
+ };
676
+ });
677
+
678
+ // The silent refresh rotates a single-use refresh token, so
679
+ // its read-refresh-persist section runs under the profile
680
+ // lock — a concurrent `read` refreshing the same token would
681
+ // double-spend it. The lock is held only for this API
682
+ // round-trip, never across the browser wait below.
683
+ const outcome =
684
+ creds.type === "oauth" &&
685
+ OAuthClient.usesCurrentClient(creds)
686
+ ? yield* withProfileCredentialsLock(
687
+ profileName,
688
+ interaction.output
689
+ .info("Cloudflare: refreshing OAuth credentials...")
690
+ .pipe(
691
+ Effect.andThen(OAuthClient.refresh(creds)),
692
+ Effect.flatMap((credentials) => {
693
+ const config = {
694
+ ...c,
695
+ clientId: credentials.clientId,
696
+ access: Redacted.value(credentials.access),
697
+ refresh: Redacted.value(credentials.refresh),
698
+ expires: credentials.expires,
699
+ scopes: credentials.scopes,
700
+ };
701
+ return (
702
+ updateConfig?.(config) ?? Effect.void
703
+ ).pipe(
704
+ Effect.as({
705
+ type: "refreshed" as const,
706
+ config,
707
+ }),
708
+ );
709
+ }),
710
+ Effect.tap(() =>
711
+ interaction.output.success(
712
+ "Cloudflare: OAuth credentials refreshed.",
713
+ ),
714
+ ),
715
+ Effect.catchTag("OAuthError", () =>
716
+ Effect.succeed({ type: "browser" as const }),
717
+ ),
718
+ ),
719
+ )
720
+ : yield* Effect.gen(function* () {
721
+ if (creds.type === "oauth") {
722
+ yield* interaction.output.warning(
723
+ "Cloudflare: removed OAuth credentials issued to the previous client.",
724
+ );
725
+ }
726
+ return { type: "browser" as const };
727
+ });
728
+ if (outcome.type === "browser") {
729
+ return yield* fullLogin;
730
+ }
731
+ return outcome.config;
732
+ })
733
+ : configureOAuth(profileName, c),
606
734
  ),
607
735
  Match.exhaustive,
608
736
  )
609
737
  .pipe(
610
- Effect.mapError(
611
- (e) => new AuthError({ message: "login failed", cause: e }),
738
+ // A blanket mapError must never swallow the NeedsReauth tag —
739
+ // the profile UI matches on it to render "needs re-login".
740
+ Effect.mapError((e) =>
741
+ e instanceof NeedsReauth
742
+ ? e
743
+ : new AuthError({ message: "login failed", cause: e }),
612
744
  ),
613
745
  );
614
746
 
615
- const prettyPrint = (profileName: string, config: CloudflareAuthConfig) =>
616
- resolveCredentials(profileName, config).pipe(
617
- Effect.tap((creds) => {
618
- const sourceStr = creds.source.details
619
- ? `${creds.source.type} - ${creds.source.details}`
620
- : creds.source.type;
621
- return Match.value(creds).pipe(
622
- Match.when({ type: "apiToken" }, (c) =>
623
- Effect.all([
624
- Console.log(` apiToken: ${displayRedacted(c.apiToken, 9)}`),
625
- Console.log(` accountId: ${c.accountId}`),
626
- Console.log(` source: ${sourceStr}`),
747
+ const details = (
748
+ profileName: string,
749
+ config: CloudflareAuthConfig,
750
+ updateConfig?: (
751
+ config: CloudflareAuthConfig,
752
+ ) => Effect.Effect<void, AuthError>,
753
+ ) =>
754
+ Effect.all([
755
+ resolveCredentials(profileName, config, updateConfig),
756
+ Clock.currentTimeMillis,
757
+ ]).pipe(
758
+ Effect.map(([creds, now]) => {
759
+ const source = {
760
+ key: "source",
761
+ value:
762
+ "details" in creds.source && creds.source.details
763
+ ? `${creds.source.type} - ${creds.source.details}`
764
+ : creds.source.type,
765
+ };
766
+ return {
767
+ lines: Match.value(creds).pipe(
768
+ Match.when({ type: "apiToken" }, (c) => [
769
+ { key: "apiToken", value: displayRedacted(c.apiToken, 9) },
770
+ { key: "accountId", value: c.accountId },
771
+ source,
627
772
  ]),
628
- ),
629
- Match.when({ type: "apiKey" }, (c) =>
630
- Effect.all([
631
- Console.log(` apiKey: ${displayRedacted(c.apiKey)}`),
632
- Console.log(` email: ${displayRedacted(c.email)}`),
633
- Console.log(` accountId: ${c.accountId}`),
634
- Console.log(` source: ${sourceStr}`),
773
+ Match.when({ type: "apiKey" }, (c) => [
774
+ { key: "apiKey", value: displayRedacted(c.apiKey) },
775
+ { key: "email", value: displayRedacted(c.email) },
776
+ { key: "accountId", value: c.accountId },
777
+ source,
635
778
  ]),
779
+ Match.when({ type: "oauth" }, (c) => {
780
+ const remainingMs = c.expires - now;
781
+ const expiresAt = new Date(c.expires).toISOString();
782
+ const expiresStr =
783
+ remainingMs <= 0
784
+ ? `expired (${expiresAt})`
785
+ : `in ${Duration.format(Duration.millis(remainingMs))} (${expiresAt})`;
786
+ return [
787
+ { key: "accessToken", value: displayRedacted(c.accessToken) },
788
+ { key: "expires", value: expiresStr },
789
+ { key: "accountId", value: c.accountId },
790
+ source,
791
+ ];
792
+ }),
793
+ Match.exhaustive,
636
794
  ),
637
- Match.when({ type: "oauth" }, (c) => {
638
- const remainingMs = c.expires - Date.now();
639
- const expiresAt = new Date(c.expires).toISOString();
640
- const expiresStr =
641
- remainingMs <= 0
642
- ? `expired (${expiresAt})`
643
- : `in ${Duration.format(Duration.millis(remainingMs))} (${expiresAt})`;
644
- return Effect.all([
645
- Console.log(` accessToken: ${displayRedacted(c.accessToken)}`),
646
- Console.log(` expires: ${expiresStr}`),
647
- Console.log(` accountId: ${c.accountId}`),
648
- Console.log(` source: ${sourceStr}`),
649
- ]);
795
+ };
796
+ }),
797
+ );
798
+
799
+ /**
800
+ * Persist flag-provided stored credentials (`--method stored`). Writes
801
+ * the same `cloudflare-stored` file the interactive stored path writes;
802
+ * OAuth is interactive-only and not accepted here.
803
+ */
804
+ const configureWith = (
805
+ profileName: string,
806
+ input: {
807
+ readonly method: string;
808
+ readonly values: Record<string, string>;
809
+ },
810
+ ): Effect.Effect<CloudflareAuthConfig, AuthError> => {
811
+ const persist = (config: CloudflareAuthConfig) =>
812
+ store
813
+ .delete(profileName, STATE_STORE_CREDENTIALS_FILE)
814
+ .pipe(Effect.ignore, Effect.as(config));
815
+ if (input.method !== "stored") {
816
+ return Effect.fail(
817
+ new AuthError({
818
+ message: `Cloudflare: unknown method '${input.method}'. Valid methods: stored. (OAuth is interactive-only.)`,
819
+ }),
820
+ );
821
+ }
822
+ return validateFieldValues(
823
+ CLOUDFLARE_AUTH_PROVIDER_NAME,
824
+ storedFields,
825
+ input.values,
826
+ ).pipe(
827
+ Effect.flatMap((values) => {
828
+ const accountId = (storedValueText(values.accountId) ?? "")
829
+ .trim()
830
+ .toLowerCase();
831
+ const apiToken = storedSecret(values.apiToken);
832
+ const apiKey = storedSecret(values.apiKey);
833
+ const email = storedValueText(values.email);
834
+ if (
835
+ apiToken !== undefined &&
836
+ apiKey === undefined &&
837
+ email === undefined
838
+ ) {
839
+ return persist({
840
+ method: "stored",
841
+ credentialType: "apiToken",
842
+ apiToken: Redacted.value(apiToken),
843
+ accountId,
844
+ });
845
+ }
846
+ if (
847
+ apiToken === undefined &&
848
+ apiKey !== undefined &&
849
+ email !== undefined
850
+ ) {
851
+ return persist({
852
+ method: "stored",
853
+ credentialType: "apiKey",
854
+ apiKey: Redacted.value(apiKey),
855
+ email,
856
+ accountId,
857
+ });
858
+ }
859
+ return Effect.fail(
860
+ new AuthError({
861
+ message:
862
+ "Cloudflare: pass either --set apiToken=<token>, or both --set apiKey=<key> and --set email=<email>.",
650
863
  }),
651
- Match.exhaustive,
652
864
  );
653
865
  }),
654
866
  );
867
+ };
655
868
 
656
869
  return {
870
+ configSchema: CloudflareAuthConfigSchema,
657
871
  configure: configureCredentials,
872
+ configureWith,
873
+ configureMethods,
658
874
  logout,
659
875
  login,
660
- prettyPrint,
876
+ details,
661
877
  read: resolveCredentials,
878
+ readEnvironment,
879
+ environment: [
880
+ {
881
+ name: "CLOUDFLARE_ACCOUNT_ID",
882
+ required: true,
883
+ description: "Account the stack deploys into.",
884
+ },
885
+ {
886
+ name: "CLOUDFLARE_API_TOKEN",
887
+ required: true,
888
+ secret: true,
889
+ alternatives: ["CLOUDFLARE_API_KEY"],
890
+ description:
891
+ "API token (preferred). Not consulted when unset and CLOUDFLARE_API_KEY + CLOUDFLARE_EMAIL are provided instead.",
892
+ },
893
+ {
894
+ name: "CLOUDFLARE_API_KEY",
895
+ required: false,
896
+ secret: true,
897
+ description:
898
+ "Global API key; used with CLOUDFLARE_EMAIL when no API token is set.",
899
+ },
900
+ {
901
+ name: "CLOUDFLARE_EMAIL",
902
+ required: false,
903
+ alternatives: ["CLOUDFLARE_ACCOUNT_EMAIL"],
904
+ description: "Account email paired with CLOUDFLARE_API_KEY.",
905
+ },
906
+ ],
662
907
  };
663
908
  }),
664
909
  );
665
-
666
- export const ALL_SCOPES = {
667
- "access:read":
668
- "See Cloudflare Access data such as zones, applications, certificates, device postures, groups, identity providers, login counts, organizations, policies, service tokens, and users",
669
- "access:write":
670
- "See and change Cloudflare Access data such as zones, applications, certificates, device postures, groups, identity providers, login counts, organizations, policies, service tokens, and users",
671
- "account:read":
672
- "See your account info such as account details, analytics, and memberships",
673
- "agw:read": "Grants read level access to Agents Gateway",
674
- "agw:run": "Grants run level access to Agents Gateway",
675
- "agw:write": "Grants read and write level access to Agents Gateway",
676
- "ai:read": "Grants read level access to Workers AI",
677
- "ai:write": "Grants write level access to Workers AI",
678
- "aiaudit:read": "Grants read level access to AI Audit",
679
- "aiaudit:write": "Grants write level access to AI Audit",
680
- "aig:read": "Grants read level access to AI Gateway",
681
- "aig:write": "Grants write level access to AI Gateway",
682
- "auditlogs:read": "View Cloudflare Account Audit Logs",
683
- "browser:read": "Grants read level access to Browser Rendering",
684
- "browser:write": "Grants write level access to Browser Rendering",
685
- "cfone:read": "Grants read level access to Cloudforce One data",
686
- "cfone:write": "Grants write level access to Cloudforce One data",
687
- "cloudchamber:write": "See and make changes to Cloudchamber",
688
- "connectivity:admin":
689
- "See, change, and bind to Connectivity Directory services, including creating services targeting Cloudflare Tunnel",
690
- "connectivity:bind":
691
- "read, list, and bind to Connectivity Directory services, as well as read and list Cloudflare Tunnels",
692
- "connectivity:read":
693
- "See Connectivity Directory services and Cloudflare Tunnels",
694
- "constellation:write":
695
- "Grants write access to Constellation configuration and models",
696
- "containers:write": "See and make changes to Workers Containers",
697
- "d1:write": "See and make changes to D1",
698
- "dex:read": "Grants read level access to Cloudflare DEX",
699
- "dex:write": "Grants write level access to Cloudflare DEX",
700
- "dns_analytics:read": "Grants read level access to Cloudflare DNS Analytics",
701
- "dns_records:edit": "Grants edit level access to dns records",
702
- "dns_records:read": "Grants read level access to dns records",
703
- "dns_settings:read": "Grants read level access to Cloudflare DNS Settings",
704
- "firstpartytags:write":
705
- "Can see, edit and publish Google tag gateway configuration.",
706
- "lb:edit": "Grants edit level access to lb and lb pools",
707
- "lb:read": "Grants read level access to lb and lb pools",
708
- "logpush:read": "See Cloudflare Logpush data",
709
- "logpush:write": "See and change Cloudflare Logpush data",
710
- "notification:read": "View Cloudflare Notifications",
711
- "notification:write": "View and Modify Cloudflare Notifications",
712
- "pages:read": "See Cloudflare Pages projects, settings and deployments",
713
- "pages:write":
714
- "See and change Cloudflare Pages projects, settings and deployments",
715
- "pipelines:read": "Grants read level access to Cloudflare Pipelines",
716
- "pipelines:setup":
717
- "Grants permission to generate R2 tokens for Workers Pipelines",
718
- "pipelines:write": "Grants write level access to Cloudflare Pipelines",
719
- "query_cache:write": "See and make changes to Hyperdrive",
720
- "queues:write": "See and change Cloudflare Queues settings and data",
721
- "r2_catalog:write": "Grants write level access to R2 Data Catalog",
722
- "radar:read": "Grants access to read Cloudflare Radar data",
723
- "ai-search:read": "Grants read level access to AI Search",
724
- "ai-search:write": "Grants write level access to AI Search",
725
- "ai-search:run": "Grants run level access to AI Search",
726
- "secrets_store:read": "Grants read level access to Secrets Store",
727
- "secrets_store:write": "Grants write level access to Secrets Store",
728
- "ssl_certs:write":
729
- "Grants read and write access to SSL MTLS certificates or Certificate Store",
730
- "sso-connector:read": "See Cloudflare SSO connectors",
731
- "sso-connector:write":
732
- "See Cloudflare SSO connectors to toggle activation and deactivation of SSO",
733
- "teams:pii": "See personally identifiable Cloudflare Teams data",
734
- "teams:read":
735
- "See Cloudflare Teams data such as zones, gateway, and argo tunnel details",
736
- "teams:secure_location":
737
- "See all DNS Location data but can only change secure DNS Locations",
738
- "teams:write":
739
- "See and change Cloudflare Teams data such as zones, gateway, and argo tunnel details",
740
- "url_scanner:read": "Grants read level access to URL Scanner",
741
- "url_scanner:write": "Grants write level access to URL Scanner",
742
- "user:read":
743
- "See your user info such as name, email address, and account memberships",
744
- "vectorize:write": "See and make changes to Vectorize",
745
- "workers:read":
746
- "See Cloudflare Workers data such as zones, KV storage, R2 storage, scripts, and routes",
747
- "workers:write":
748
- "See and change Cloudflare Workers data such as zones, KV storage, R2 storage, scripts, and routes",
749
- "workers_builds:read":
750
- "See Cloudflare Workers Builds data such as builds, build configuration, and build logs",
751
- "workers_builds:write":
752
- "See and change Cloudflare Workers Builds data such as builds, build configuration, and build logs",
753
- "workers_kv:write":
754
- "See and change Cloudflare Workers KV Storage data such as keys and namespaces",
755
- "workers_observability:read":
756
- "Grants read access to Cloudflare Workers Observability",
757
- "workers_observability:write":
758
- "Grants read and write access to Cloudflare Workers Observability",
759
- "workers_observability_telemetry:write":
760
- "Grants write access to Cloudflare Workers Observability Telemetry API",
761
- "workers_routes:write":
762
- "See and change Cloudflare Workers data such as filters and routes",
763
- "workers_scripts:write":
764
- "See and change Cloudflare Workers scripts, durable objects, subdomains, triggers, and tail data",
765
- "workers_tail:read": "See Cloudflare Workers tail and script data",
766
- "zone:read": "Grants read level access to account zone",
767
- };
768
-
769
- export const DEFAULT_SCOPES = [
770
- "account:read",
771
- "ai-search:write",
772
- "ai-search:run",
773
- "ai:write",
774
- "aig:read",
775
- "aig:write",
776
- "cloudchamber:write",
777
- "connectivity:admin",
778
- "containers:write",
779
- "d1:write",
780
- "pages:write",
781
- "pipelines:write",
782
- "queues:write",
783
- "secrets_store:write",
784
- "ssl_certs:write",
785
- "user:read",
786
- "vectorize:write",
787
- "workers_kv:write",
788
- "workers_observability:read",
789
- "workers_observability:write",
790
- "workers_observability_telemetry:write",
791
- "workers_routes:write",
792
- "workers_scripts:write",
793
- "workers_tail:read",
794
- "workers:write",
795
- "zone:read",
796
- ];
797
-
798
- export const OAUTH_CLIENT_ID = "6d8c2255-0773-45f6-b376-2914632e6f91";
799
- export const OAUTH_REDIRECT_URI = "https://alchemy.run/auth/callback";
800
- export const OAUTH_LOCAL_CALLBACK_URI = "http://localhost:9976/auth/callback";
801
- export const OAUTH_ENDPOINTS = {
802
- authorize: "https://dash.cloudflare.com/oauth2/authorize",
803
- token: "https://dash.cloudflare.com/oauth2/token",
804
- revoke: "https://dash.cloudflare.com/oauth2/revoke",
805
- };