alchemy 2.0.0-beta.61 → 2.0.0-beta.62

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 (602) hide show
  1. package/README.md +15 -0
  2. package/bin/exec.js +71 -12
  3. package/bin/exec.js.map +1 -1
  4. package/lib/AWS/ACM/Certificate.d.ts.map +1 -1
  5. package/lib/AWS/ACM/Certificate.js +16 -4
  6. package/lib/AWS/ACM/Certificate.js.map +1 -1
  7. package/lib/AWS/ApiGateway/common.d.ts.map +1 -1
  8. package/lib/AWS/ApiGateway/common.js +6 -3
  9. package/lib/AWS/ApiGateway/common.js.map +1 -1
  10. package/lib/AWS/AuthProvider.d.ts.map +1 -1
  11. package/lib/AWS/AuthProvider.js +1 -1
  12. package/lib/AWS/AuthProvider.js.map +1 -1
  13. package/lib/AWS/AutoScaling/AutoScalingGroup.d.ts.map +1 -1
  14. package/lib/AWS/AutoScaling/AutoScalingGroup.js +8 -2
  15. package/lib/AWS/AutoScaling/AutoScalingGroup.js.map +1 -1
  16. package/lib/AWS/Bootstrap.d.ts.map +1 -1
  17. package/lib/AWS/Bootstrap.js +5 -2
  18. package/lib/AWS/Bootstrap.js.map +1 -1
  19. package/lib/AWS/CloudFront/Distribution.d.ts.map +1 -1
  20. package/lib/AWS/CloudFront/Distribution.js +20 -5
  21. package/lib/AWS/CloudFront/Distribution.js.map +1 -1
  22. package/lib/AWS/CloudFront/Function.js +5 -2
  23. package/lib/AWS/CloudFront/Function.js.map +1 -1
  24. package/lib/AWS/CloudFront/Invalidation.d.ts.map +1 -1
  25. package/lib/AWS/CloudFront/Invalidation.js +4 -1
  26. package/lib/AWS/CloudFront/Invalidation.js.map +1 -1
  27. package/lib/AWS/CloudFront/KvEntries.d.ts.map +1 -1
  28. package/lib/AWS/CloudFront/KvEntries.js +4 -1
  29. package/lib/AWS/CloudFront/KvEntries.js.map +1 -1
  30. package/lib/AWS/CloudFront/KvRoutesUpdate.d.ts.map +1 -1
  31. package/lib/AWS/CloudFront/KvRoutesUpdate.js +8 -2
  32. package/lib/AWS/CloudFront/KvRoutesUpdate.js.map +1 -1
  33. package/lib/AWS/CloudFront/VpcOrigin.d.ts.map +1 -1
  34. package/lib/AWS/CloudFront/VpcOrigin.js +12 -3
  35. package/lib/AWS/CloudFront/VpcOrigin.js.map +1 -1
  36. package/lib/AWS/CloudFront/common.d.ts.map +1 -1
  37. package/lib/AWS/CloudFront/common.js +5 -2
  38. package/lib/AWS/CloudFront/common.js.map +1 -1
  39. package/lib/AWS/CloudWatch/AnomalyDetector.d.ts.map +1 -1
  40. package/lib/AWS/CloudWatch/AnomalyDetector.js +4 -1
  41. package/lib/AWS/CloudWatch/AnomalyDetector.js.map +1 -1
  42. package/lib/AWS/CloudWatch/common.d.ts.map +1 -1
  43. package/lib/AWS/CloudWatch/common.js +1 -1
  44. package/lib/AWS/CloudWatch/common.js.map +1 -1
  45. package/lib/AWS/DynamoDB/Table.d.ts.map +1 -1
  46. package/lib/AWS/DynamoDB/Table.js +53 -20
  47. package/lib/AWS/DynamoDB/Table.js.map +1 -1
  48. package/lib/AWS/EC2/EIP.d.ts.map +1 -1
  49. package/lib/AWS/EC2/EIP.js +4 -1
  50. package/lib/AWS/EC2/EIP.js.map +1 -1
  51. package/lib/AWS/EC2/EgressOnlyInternetGateway.d.ts.map +1 -1
  52. package/lib/AWS/EC2/EgressOnlyInternetGateway.js +4 -2
  53. package/lib/AWS/EC2/EgressOnlyInternetGateway.js.map +1 -1
  54. package/lib/AWS/EC2/Instance.d.ts.map +1 -1
  55. package/lib/AWS/EC2/Instance.js +12 -3
  56. package/lib/AWS/EC2/Instance.js.map +1 -1
  57. package/lib/AWS/EC2/InternetGateway.d.ts.map +1 -1
  58. package/lib/AWS/EC2/InternetGateway.js +12 -5
  59. package/lib/AWS/EC2/InternetGateway.js.map +1 -1
  60. package/lib/AWS/EC2/NatGateway.js +2 -4
  61. package/lib/AWS/EC2/NatGateway.js.map +1 -1
  62. package/lib/AWS/EC2/NetworkAcl.d.ts.map +1 -1
  63. package/lib/AWS/EC2/NetworkAcl.js +4 -1
  64. package/lib/AWS/EC2/NetworkAcl.js.map +1 -1
  65. package/lib/AWS/EC2/NetworkAclEntry.d.ts.map +1 -1
  66. package/lib/AWS/EC2/NetworkAclEntry.js +4 -1
  67. package/lib/AWS/EC2/NetworkAclEntry.js.map +1 -1
  68. package/lib/AWS/EC2/RouteTable.d.ts.map +1 -1
  69. package/lib/AWS/EC2/RouteTable.js +8 -6
  70. package/lib/AWS/EC2/RouteTable.js.map +1 -1
  71. package/lib/AWS/EC2/RouteTableAssociation.js +2 -5
  72. package/lib/AWS/EC2/RouteTableAssociation.js.map +1 -1
  73. package/lib/AWS/EC2/SecurityGroup.d.ts.map +1 -1
  74. package/lib/AWS/EC2/SecurityGroup.js +8 -3
  75. package/lib/AWS/EC2/SecurityGroup.js.map +1 -1
  76. package/lib/AWS/EC2/Subnet.d.ts.map +1 -1
  77. package/lib/AWS/EC2/Subnet.js +10 -6
  78. package/lib/AWS/EC2/Subnet.js.map +1 -1
  79. package/lib/AWS/EC2/Vpc.d.ts.map +1 -1
  80. package/lib/AWS/EC2/Vpc.js +7 -7
  81. package/lib/AWS/EC2/Vpc.js.map +1 -1
  82. package/lib/AWS/EC2/VpcEndpoint.js +2 -4
  83. package/lib/AWS/EC2/VpcEndpoint.js.map +1 -1
  84. package/lib/AWS/ECS/Service.d.ts.map +1 -1
  85. package/lib/AWS/ECS/Service.js +4 -1
  86. package/lib/AWS/ECS/Service.js.map +1 -1
  87. package/lib/AWS/EKS/Addon.js +8 -2
  88. package/lib/AWS/EKS/Addon.js.map +1 -1
  89. package/lib/AWS/EKS/Cluster.d.ts.map +1 -1
  90. package/lib/AWS/EKS/Cluster.js +4 -1
  91. package/lib/AWS/EKS/Cluster.js.map +1 -1
  92. package/lib/AWS/ELBv2/TargetGroup.d.ts.map +1 -1
  93. package/lib/AWS/ELBv2/TargetGroup.js +4 -1
  94. package/lib/AWS/ELBv2/TargetGroup.js.map +1 -1
  95. package/lib/AWS/ELBv2/TrustStore.d.ts.map +1 -1
  96. package/lib/AWS/ELBv2/TrustStore.js +4 -1
  97. package/lib/AWS/ELBv2/TrustStore.js.map +1 -1
  98. package/lib/AWS/IAM/SAMLProvider.js +4 -1
  99. package/lib/AWS/IAM/SAMLProvider.js.map +1 -1
  100. package/lib/AWS/IdentityCenter/AccountAssignment.js +8 -2
  101. package/lib/AWS/IdentityCenter/AccountAssignment.js.map +1 -1
  102. package/lib/AWS/IdentityCenter/common.d.ts.map +1 -1
  103. package/lib/AWS/IdentityCenter/common.js +1 -1
  104. package/lib/AWS/IdentityCenter/common.js.map +1 -1
  105. package/lib/AWS/KMS/Alias.js +4 -1
  106. package/lib/AWS/KMS/Alias.js.map +1 -1
  107. package/lib/AWS/KMS/Key.js +4 -1
  108. package/lib/AWS/KMS/Key.js.map +1 -1
  109. package/lib/AWS/Kinesis/Stream.d.ts.map +1 -1
  110. package/lib/AWS/Kinesis/Stream.js +2 -2
  111. package/lib/AWS/Kinesis/Stream.js.map +1 -1
  112. package/lib/AWS/Kinesis/StreamConsumer.d.ts.map +1 -1
  113. package/lib/AWS/Kinesis/StreamConsumer.js +7 -4
  114. package/lib/AWS/Kinesis/StreamConsumer.js.map +1 -1
  115. package/lib/AWS/Lambda/Alias.d.ts.map +1 -1
  116. package/lib/AWS/Lambda/Alias.js +4 -1
  117. package/lib/AWS/Lambda/Alias.js.map +1 -1
  118. package/lib/AWS/Lambda/EventInvokeConfig.d.ts.map +1 -1
  119. package/lib/AWS/Lambda/EventInvokeConfig.js +2 -2
  120. package/lib/AWS/Lambda/EventInvokeConfig.js.map +1 -1
  121. package/lib/AWS/Lambda/EventSourceMapping.d.ts.map +1 -1
  122. package/lib/AWS/Lambda/EventSourceMapping.js +10 -4
  123. package/lib/AWS/Lambda/EventSourceMapping.js.map +1 -1
  124. package/lib/AWS/Lambda/Function.d.ts +16 -1
  125. package/lib/AWS/Lambda/Function.d.ts.map +1 -1
  126. package/lib/AWS/Lambda/Function.js +101 -26
  127. package/lib/AWS/Lambda/Function.js.map +1 -1
  128. package/lib/AWS/Lambda/MicrovmProvider.d.ts.map +1 -1
  129. package/lib/AWS/Lambda/MicrovmProvider.js +13 -5
  130. package/lib/AWS/Lambda/MicrovmProvider.js.map +1 -1
  131. package/lib/AWS/Lambda/NetworkConnector.js +13 -5
  132. package/lib/AWS/Lambda/NetworkConnector.js.map +1 -1
  133. package/lib/AWS/Lambda/RuntimeExtension.d.ts +27 -0
  134. package/lib/AWS/Lambda/RuntimeExtension.d.ts.map +1 -0
  135. package/lib/AWS/Lambda/RuntimeExtension.js +49 -0
  136. package/lib/AWS/Lambda/RuntimeExtension.js.map +1 -0
  137. package/lib/AWS/Organizations/Account.js +5 -2
  138. package/lib/AWS/Organizations/Account.js.map +1 -1
  139. package/lib/AWS/Organizations/common.d.ts.map +1 -1
  140. package/lib/AWS/Organizations/common.js +1 -1
  141. package/lib/AWS/Organizations/common.js.map +1 -1
  142. package/lib/AWS/Providers.js +14 -12
  143. package/lib/AWS/Providers.js.map +1 -1
  144. package/lib/AWS/RDS/DBCluster.d.ts.map +1 -1
  145. package/lib/AWS/RDS/DBCluster.js +8 -2
  146. package/lib/AWS/RDS/DBCluster.js.map +1 -1
  147. package/lib/AWS/RDS/DBInstance.d.ts.map +1 -1
  148. package/lib/AWS/RDS/DBInstance.js +8 -2
  149. package/lib/AWS/RDS/DBInstance.js.map +1 -1
  150. package/lib/AWS/RDS/DBProxy.d.ts.map +1 -1
  151. package/lib/AWS/RDS/DBProxy.js +4 -1
  152. package/lib/AWS/RDS/DBProxy.js.map +1 -1
  153. package/lib/AWS/RDS/DBProxyEndpoint.d.ts.map +1 -1
  154. package/lib/AWS/RDS/DBProxyEndpoint.js +4 -1
  155. package/lib/AWS/RDS/DBProxyEndpoint.js.map +1 -1
  156. package/lib/AWS/Route53/HealthCheck.d.ts.map +1 -1
  157. package/lib/AWS/Route53/HealthCheck.js +8 -2
  158. package/lib/AWS/Route53/HealthCheck.js.map +1 -1
  159. package/lib/AWS/Route53/HostedZone.d.ts.map +1 -1
  160. package/lib/AWS/Route53/HostedZone.js +8 -2
  161. package/lib/AWS/Route53/HostedZone.js.map +1 -1
  162. package/lib/AWS/Route53/Record.d.ts.map +1 -1
  163. package/lib/AWS/Route53/Record.js +4 -1
  164. package/lib/AWS/Route53/Record.js.map +1 -1
  165. package/lib/AWS/S3/Bucket.d.ts.map +1 -1
  166. package/lib/AWS/S3/Bucket.js +5 -2
  167. package/lib/AWS/S3/Bucket.js.map +1 -1
  168. package/lib/AWS/SQS/Queue.d.ts.map +1 -1
  169. package/lib/AWS/SQS/Queue.js +25 -7
  170. package/lib/AWS/SQS/Queue.js.map +1 -1
  171. package/lib/AWS/StateStore/State.js +5 -2
  172. package/lib/AWS/StateStore/State.js.map +1 -1
  173. package/lib/AWS/Website/AssetDeployment.js +5 -2
  174. package/lib/AWS/Website/AssetDeployment.js.map +1 -1
  175. package/lib/Apply.js +8 -0
  176. package/lib/Apply.js.map +1 -1
  177. package/lib/Auth/AuthProvider.d.ts +10 -0
  178. package/lib/Auth/AuthProvider.d.ts.map +1 -1
  179. package/lib/Auth/AuthProvider.js +10 -0
  180. package/lib/Auth/AuthProvider.js.map +1 -1
  181. package/lib/Axiom/AuthProvider.d.ts.map +1 -1
  182. package/lib/Axiom/AuthProvider.js +1 -1
  183. package/lib/Axiom/AuthProvider.js.map +1 -1
  184. package/lib/Bundle/Vite.d.ts +1 -1
  185. package/lib/Bundle/Vite.d.ts.map +1 -1
  186. package/lib/Bundle/Vite.js +14 -12
  187. package/lib/Bundle/Vite.js.map +1 -1
  188. package/lib/Cli/commands/_shared.d.ts +55 -5
  189. package/lib/Cli/commands/_shared.d.ts.map +1 -1
  190. package/lib/Cli/commands/_shared.js +62 -2
  191. package/lib/Cli/commands/_shared.js.map +1 -1
  192. package/lib/Cli/commands/login.d.ts.map +1 -1
  193. package/lib/Cli/commands/login.js +9 -20
  194. package/lib/Cli/commands/login.js.map +1 -1
  195. package/lib/Cli/commands/logs.d.ts.map +1 -1
  196. package/lib/Cli/commands/logs.js +1 -0
  197. package/lib/Cli/commands/logs.js.map +1 -1
  198. package/lib/Cli/commands/nuke.d.ts.map +1 -1
  199. package/lib/Cli/commands/nuke.js +15 -24
  200. package/lib/Cli/commands/nuke.js.map +1 -1
  201. package/lib/Cli/commands/profile.d.ts +23 -1
  202. package/lib/Cli/commands/profile.d.ts.map +1 -1
  203. package/lib/Cli/commands/profile.js +47 -10
  204. package/lib/Cli/commands/profile.js.map +1 -1
  205. package/lib/Cli/commands/tail.d.ts.map +1 -1
  206. package/lib/Cli/commands/tail.js +1 -0
  207. package/lib/Cli/commands/tail.js.map +1 -1
  208. package/lib/Cloudflare/AI/GatewayDynamicRouting.d.ts.map +1 -1
  209. package/lib/Cloudflare/AI/GatewayDynamicRouting.js +31 -2
  210. package/lib/Cloudflare/AI/GatewayDynamicRouting.js.map +1 -1
  211. package/lib/Cloudflare/AI/SearchInstance.js +4 -1
  212. package/lib/Cloudflare/AI/SearchInstance.js.map +1 -1
  213. package/lib/Cloudflare/Access/Application.d.ts.map +1 -1
  214. package/lib/Cloudflare/Access/Application.js +7 -1
  215. package/lib/Cloudflare/Access/Application.js.map +1 -1
  216. package/lib/Cloudflare/Alerting/Silence.d.ts.map +1 -1
  217. package/lib/Cloudflare/Alerting/Silence.js +4 -1
  218. package/lib/Cloudflare/Alerting/Silence.js.map +1 -1
  219. package/lib/Cloudflare/Alerting/Webhook.d.ts.map +1 -1
  220. package/lib/Cloudflare/Alerting/Webhook.js +8 -2
  221. package/lib/Cloudflare/Alerting/Webhook.js.map +1 -1
  222. package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
  223. package/lib/Cloudflare/Auth/AuthProvider.js +22 -7
  224. package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
  225. package/lib/Cloudflare/Auth/OAuthClient.d.ts.map +1 -1
  226. package/lib/Cloudflare/Auth/OAuthClient.js +6 -7
  227. package/lib/Cloudflare/Auth/OAuthClient.js.map +1 -1
  228. package/lib/Cloudflare/Cache/RegionalTieredCache.d.ts.map +1 -1
  229. package/lib/Cloudflare/Cache/RegionalTieredCache.js +7 -1
  230. package/lib/Cloudflare/Cache/RegionalTieredCache.js.map +1 -1
  231. package/lib/Cloudflare/Containers/ContainerApplication.d.ts +18 -2
  232. package/lib/Cloudflare/Containers/ContainerApplication.d.ts.map +1 -1
  233. package/lib/Cloudflare/Containers/ContainerApplication.js +1 -0
  234. package/lib/Cloudflare/Containers/ContainerApplication.js.map +1 -1
  235. package/lib/Cloudflare/Containers/ContainerBundle.d.ts +29 -3
  236. package/lib/Cloudflare/Containers/ContainerBundle.d.ts.map +1 -1
  237. package/lib/Cloudflare/Containers/ContainerBundle.js +73 -22
  238. package/lib/Cloudflare/Containers/ContainerBundle.js.map +1 -1
  239. package/lib/Cloudflare/Containers/ContainerProvider.d.ts.map +1 -1
  240. package/lib/Cloudflare/Containers/ContainerProvider.js +53 -14
  241. package/lib/Cloudflare/Containers/ContainerProvider.js.map +1 -1
  242. package/lib/Cloudflare/Containers/LocalContainerProvider.d.ts +6 -6
  243. package/lib/Cloudflare/Containers/LocalContainerProvider.d.ts.map +1 -1
  244. package/lib/Cloudflare/Containers/LocalContainerProvider.js +69 -47
  245. package/lib/Cloudflare/Containers/LocalContainerProvider.js.map +1 -1
  246. package/lib/Cloudflare/Diagnostics/EndpointHealthcheck.js +4 -1
  247. package/lib/Cloudflare/Diagnostics/EndpointHealthcheck.js.map +1 -1
  248. package/lib/Cloudflare/Images/Variant.d.ts.map +1 -1
  249. package/lib/Cloudflare/Images/Variant.js +4 -1
  250. package/lib/Cloudflare/Images/Variant.js.map +1 -1
  251. package/lib/Cloudflare/LoadBalancer/Monitor.d.ts.map +1 -1
  252. package/lib/Cloudflare/LoadBalancer/Monitor.js +4 -1
  253. package/lib/Cloudflare/LoadBalancer/Monitor.js.map +1 -1
  254. package/lib/Cloudflare/LoadBalancer/MonitorGroup.d.ts.map +1 -1
  255. package/lib/Cloudflare/LoadBalancer/MonitorGroup.js +4 -1
  256. package/lib/Cloudflare/LoadBalancer/MonitorGroup.js.map +1 -1
  257. package/lib/Cloudflare/LoadBalancer/Pool.d.ts.map +1 -1
  258. package/lib/Cloudflare/LoadBalancer/Pool.js +4 -1
  259. package/lib/Cloudflare/LoadBalancer/Pool.js.map +1 -1
  260. package/lib/Cloudflare/LocalRuntime.d.ts +14 -0
  261. package/lib/Cloudflare/LocalRuntime.d.ts.map +1 -1
  262. package/lib/Cloudflare/LocalRuntime.js +1 -0
  263. package/lib/Cloudflare/LocalRuntime.js.map +1 -1
  264. package/lib/Cloudflare/MagicNetworkMonitoring/Rule.d.ts.map +1 -1
  265. package/lib/Cloudflare/MagicNetworkMonitoring/Rule.js +4 -1
  266. package/lib/Cloudflare/MagicNetworkMonitoring/Rule.js.map +1 -1
  267. package/lib/Cloudflare/Pipelines/Pipeline.d.ts.map +1 -1
  268. package/lib/Cloudflare/Pipelines/Pipeline.js +8 -2
  269. package/lib/Cloudflare/Pipelines/Pipeline.js.map +1 -1
  270. package/lib/Cloudflare/Pipelines/Sink.d.ts.map +1 -1
  271. package/lib/Cloudflare/Pipelines/Sink.js +8 -2
  272. package/lib/Cloudflare/Pipelines/Sink.js.map +1 -1
  273. package/lib/Cloudflare/Pipelines/Stream.d.ts.map +1 -1
  274. package/lib/Cloudflare/Pipelines/Stream.js +4 -1
  275. package/lib/Cloudflare/Pipelines/Stream.js.map +1 -1
  276. package/lib/Cloudflare/Providers.js +14 -11
  277. package/lib/Cloudflare/Providers.js.map +1 -1
  278. package/lib/Cloudflare/Queues/Consumer.d.ts.map +1 -1
  279. package/lib/Cloudflare/Queues/Consumer.js +30 -3
  280. package/lib/Cloudflare/Queues/Consumer.js.map +1 -1
  281. package/lib/Cloudflare/Queues/Queue.d.ts.map +1 -1
  282. package/lib/Cloudflare/Queues/Queue.js +4 -1
  283. package/lib/Cloudflare/Queues/Queue.js.map +1 -1
  284. package/lib/Cloudflare/R2/Bucket.js +12 -3
  285. package/lib/Cloudflare/R2/Bucket.js.map +1 -1
  286. package/lib/Cloudflare/R2/BucketEventNotification.js +4 -1
  287. package/lib/Cloudflare/R2/BucketEventNotification.js.map +1 -1
  288. package/lib/Cloudflare/R2/DataCatalog.js +4 -1
  289. package/lib/Cloudflare/R2/DataCatalog.js.map +1 -1
  290. package/lib/Cloudflare/Rum/Rule.d.ts.map +1 -1
  291. package/lib/Cloudflare/Rum/Rule.js +4 -1
  292. package/lib/Cloudflare/Rum/Rule.js.map +1 -1
  293. package/lib/Cloudflare/Snippets/Snippet.d.ts.map +1 -1
  294. package/lib/Cloudflare/Snippets/Snippet.js +4 -1
  295. package/lib/Cloudflare/Snippets/Snippet.js.map +1 -1
  296. package/lib/Cloudflare/StateStore/CredentialsFile.d.ts +42 -0
  297. package/lib/Cloudflare/StateStore/CredentialsFile.d.ts.map +1 -0
  298. package/lib/Cloudflare/StateStore/CredentialsFile.js +23 -0
  299. package/lib/Cloudflare/StateStore/CredentialsFile.js.map +1 -0
  300. package/lib/Cloudflare/StateStore/State.d.ts +2 -2
  301. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  302. package/lib/Cloudflare/StateStore/State.js +46 -9
  303. package/lib/Cloudflare/StateStore/State.js.map +1 -1
  304. package/lib/Cloudflare/Tags/ZoneResourceTags.d.ts.map +1 -1
  305. package/lib/Cloudflare/Tags/ZoneResourceTags.js +4 -1
  306. package/lib/Cloudflare/Tags/ZoneResourceTags.js.map +1 -1
  307. package/lib/Cloudflare/UrlNormalization/UrlNormalization.d.ts.map +1 -1
  308. package/lib/Cloudflare/UrlNormalization/UrlNormalization.js +7 -1
  309. package/lib/Cloudflare/UrlNormalization/UrlNormalization.js.map +1 -1
  310. package/lib/Cloudflare/WaitingRoom/Settings.d.ts.map +1 -1
  311. package/lib/Cloudflare/WaitingRoom/Settings.js +7 -1
  312. package/lib/Cloudflare/WaitingRoom/Settings.js.map +1 -1
  313. package/lib/Cloudflare/Website/Vite.d.ts +19 -0
  314. package/lib/Cloudflare/Website/Vite.d.ts.map +1 -1
  315. package/lib/Cloudflare/Website/Vite.js +20 -0
  316. package/lib/Cloudflare/Website/Vite.js.map +1 -1
  317. package/lib/Cloudflare/Workers/Compatibility.d.ts.map +1 -1
  318. package/lib/Cloudflare/Workers/Compatibility.js +43 -7
  319. package/lib/Cloudflare/Workers/Compatibility.js.map +1 -1
  320. package/lib/Cloudflare/Workers/CronEventSource.d.ts +3 -2
  321. package/lib/Cloudflare/Workers/CronEventSource.d.ts.map +1 -1
  322. package/lib/Cloudflare/Workers/CronEventSource.js.map +1 -1
  323. package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
  324. package/lib/Cloudflare/Workers/DurableObjectBridge.js +86 -82
  325. package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
  326. package/lib/Cloudflare/Workers/HttpServer.d.ts +1 -4
  327. package/lib/Cloudflare/Workers/HttpServer.d.ts.map +1 -1
  328. package/lib/Cloudflare/Workers/HttpServer.js +1 -3
  329. package/lib/Cloudflare/Workers/HttpServer.js.map +1 -1
  330. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  331. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +74 -11
  332. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  333. package/lib/Cloudflare/Workers/ObservabilityDestination.d.ts.map +1 -1
  334. package/lib/Cloudflare/Workers/ObservabilityDestination.js +4 -1
  335. package/lib/Cloudflare/Workers/ObservabilityDestination.js.map +1 -1
  336. package/lib/Cloudflare/Workers/Vite.d.ts +1 -1
  337. package/lib/Cloudflare/Workers/Vite.d.ts.map +1 -1
  338. package/lib/Cloudflare/Workers/Worker.d.ts +27 -5
  339. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  340. package/lib/Cloudflare/Workers/Worker.js +10 -5
  341. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  342. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
  343. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +24 -15
  344. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
  345. package/lib/Cloudflare/Workers/WorkerBridge.d.ts +13 -5
  346. package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
  347. package/lib/Cloudflare/Workers/WorkerBridge.js +126 -50
  348. package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
  349. package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
  350. package/lib/Cloudflare/Workers/WorkerProvider.js +26 -7
  351. package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
  352. package/lib/Cloudflare/Workers/cloudflare_workers.d.ts.map +1 -1
  353. package/lib/Cloudflare/Workers/cloudflare_workers.js +10 -3
  354. package/lib/Cloudflare/Workers/cloudflare_workers.js.map +1 -1
  355. package/lib/Cloudflare/Workflows/Workflow.d.ts +10 -7
  356. package/lib/Cloudflare/Workflows/Workflow.d.ts.map +1 -1
  357. package/lib/Cloudflare/Workflows/Workflow.js +38 -13
  358. package/lib/Cloudflare/Workflows/Workflow.js.map +1 -1
  359. package/lib/Cloudflare/Workflows/WorkflowBridge.d.ts.map +1 -1
  360. package/lib/Cloudflare/Workflows/WorkflowBridge.js +39 -37
  361. package/lib/Cloudflare/Workflows/WorkflowBridge.js.map +1 -1
  362. package/lib/Cloudflare/Workflows/WorkflowName.d.ts +11 -0
  363. package/lib/Cloudflare/Workflows/WorkflowName.d.ts.map +1 -0
  364. package/lib/Cloudflare/Workflows/WorkflowName.js +28 -0
  365. package/lib/Cloudflare/Workflows/WorkflowName.js.map +1 -0
  366. package/lib/Cloudflare/Zone/Hold.d.ts.map +1 -1
  367. package/lib/Cloudflare/Zone/Hold.js +7 -1
  368. package/lib/Cloudflare/Zone/Hold.js.map +1 -1
  369. package/lib/Command/Dev.d.ts +16 -6
  370. package/lib/Command/Dev.d.ts.map +1 -1
  371. package/lib/Command/Dev.js +37 -7
  372. package/lib/Command/Dev.js.map +1 -1
  373. package/lib/Docker/Container.js +4 -1
  374. package/lib/Docker/Container.js.map +1 -1
  375. package/lib/Drizzle/Postgres.d.ts +14 -13
  376. package/lib/Drizzle/Postgres.d.ts.map +1 -1
  377. package/lib/Drizzle/Postgres.js +39 -19
  378. package/lib/Drizzle/Postgres.js.map +1 -1
  379. package/lib/GitHub/AuthProvider.d.ts.map +1 -1
  380. package/lib/GitHub/AuthProvider.js +1 -1
  381. package/lib/GitHub/AuthProvider.js.map +1 -1
  382. package/lib/GitHub/Env.d.ts +20 -0
  383. package/lib/GitHub/Env.d.ts.map +1 -0
  384. package/lib/GitHub/Env.js +27 -0
  385. package/lib/GitHub/Env.js.map +1 -0
  386. package/lib/GitHub/index.d.ts +1 -0
  387. package/lib/GitHub/index.d.ts.map +1 -1
  388. package/lib/GitHub/index.js +1 -0
  389. package/lib/GitHub/index.js.map +1 -1
  390. package/lib/Http.d.ts +9 -0
  391. package/lib/Http.d.ts.map +1 -1
  392. package/lib/Http.js +9 -0
  393. package/lib/Http.js.map +1 -1
  394. package/lib/Local/RpcProviderProxy.js +1 -1
  395. package/lib/Local/RpcProviderProxy.js.map +1 -1
  396. package/lib/Neon/AuthProvider.d.ts.map +1 -1
  397. package/lib/Neon/AuthProvider.js +1 -1
  398. package/lib/Neon/AuthProvider.js.map +1 -1
  399. package/lib/Neon/Project.js +4 -1
  400. package/lib/Neon/Project.js.map +1 -1
  401. package/lib/Plan.d.ts.map +1 -1
  402. package/lib/Plan.js +28 -11
  403. package/lib/Plan.js.map +1 -1
  404. package/lib/Planetscale/AuthProvider.d.ts +26 -9
  405. package/lib/Planetscale/AuthProvider.d.ts.map +1 -1
  406. package/lib/Planetscale/AuthProvider.js +142 -11
  407. package/lib/Planetscale/AuthProvider.js.map +1 -1
  408. package/lib/Planetscale/Branch.d.ts.map +1 -1
  409. package/lib/Planetscale/Branch.js +4 -1
  410. package/lib/Planetscale/Branch.js.map +1 -1
  411. package/lib/Planetscale/Credentials.d.ts.map +1 -1
  412. package/lib/Planetscale/Credentials.js +14 -6
  413. package/lib/Planetscale/Credentials.js.map +1 -1
  414. package/lib/Planetscale/MySQL/MySQLMigrations.js +4 -1
  415. package/lib/Planetscale/MySQL/MySQLMigrations.js.map +1 -1
  416. package/lib/Planetscale/OAuthClient.d.ts +72 -0
  417. package/lib/Planetscale/OAuthClient.d.ts.map +1 -0
  418. package/lib/Planetscale/OAuthClient.js +227 -0
  419. package/lib/Planetscale/OAuthClient.js.map +1 -0
  420. package/lib/Planetscale/Postgres/PostgresClusterSize.d.ts.map +1 -1
  421. package/lib/Planetscale/Postgres/PostgresClusterSize.js +4 -1
  422. package/lib/Planetscale/Postgres/PostgresClusterSize.js.map +1 -1
  423. package/lib/Planetscale/Postgres/PostgresMigrations.js +4 -1
  424. package/lib/Planetscale/Postgres/PostgresMigrations.js.map +1 -1
  425. package/lib/Planetscale/Util.d.ts.map +1 -1
  426. package/lib/Planetscale/Util.js +4 -1
  427. package/lib/Planetscale/Util.js.map +1 -1
  428. package/lib/Platform.d.ts +2 -3
  429. package/lib/Platform.d.ts.map +1 -1
  430. package/lib/Platform.js +52 -3
  431. package/lib/Platform.js.map +1 -1
  432. package/lib/Provider.d.ts +35 -0
  433. package/lib/Provider.d.ts.map +1 -1
  434. package/lib/Provider.js.map +1 -1
  435. package/lib/State/HttpStateApi.d.ts +8 -8
  436. package/lib/State/HttpStateStore.js +5 -2
  437. package/lib/State/HttpStateStore.js.map +1 -1
  438. package/lib/Sync.d.ts.map +1 -1
  439. package/lib/Sync.js +3 -0
  440. package/lib/Sync.js.map +1 -1
  441. package/lib/Test/Http.d.ts.map +1 -1
  442. package/lib/Test/Http.js +8 -2
  443. package/lib/Test/Http.js.map +1 -1
  444. package/lib/Util/data.d.ts +6 -1
  445. package/lib/Util/data.d.ts.map +1 -1
  446. package/lib/Util/data.js.map +1 -1
  447. package/lib/Util/poll.js +1 -1
  448. package/lib/Util/poll.js.map +1 -1
  449. package/package.json +20 -20
  450. package/src/AWS/ACM/Certificate.ts +16 -12
  451. package/src/AWS/ApiGateway/common.ts +11 -8
  452. package/src/AWS/AuthProvider.ts +0 -3
  453. package/src/AWS/AutoScaling/AutoScalingGroup.ts +8 -6
  454. package/src/AWS/Bootstrap.ts +5 -6
  455. package/src/AWS/CloudFront/Distribution.ts +20 -16
  456. package/src/AWS/CloudFront/Function.ts +10 -6
  457. package/src/AWS/CloudFront/Invalidation.ts +4 -3
  458. package/src/AWS/CloudFront/KvEntries.ts +4 -3
  459. package/src/AWS/CloudFront/KvRoutesUpdate.ts +8 -6
  460. package/src/AWS/CloudFront/VpcOrigin.ts +12 -9
  461. package/src/AWS/CloudFront/common.ts +10 -6
  462. package/src/AWS/CloudWatch/AnomalyDetector.ts +4 -3
  463. package/src/AWS/CloudWatch/common.ts +1 -3
  464. package/src/AWS/DynamoDB/Table.ts +57 -47
  465. package/src/AWS/EC2/EIP.ts +6 -4
  466. package/src/AWS/EC2/EgressOnlyInternetGateway.ts +6 -4
  467. package/src/AWS/EC2/Instance.ts +12 -9
  468. package/src/AWS/EC2/InternetGateway.ts +18 -12
  469. package/src/AWS/EC2/NatGateway.ts +6 -10
  470. package/src/AWS/EC2/NetworkAcl.ts +6 -4
  471. package/src/AWS/EC2/NetworkAclEntry.ts +4 -3
  472. package/src/AWS/EC2/RouteTable.ts +12 -9
  473. package/src/AWS/EC2/RouteTableAssociation.ts +3 -5
  474. package/src/AWS/EC2/SecurityGroup.ts +10 -7
  475. package/src/AWS/EC2/Subnet.ts +15 -15
  476. package/src/AWS/EC2/Vpc.ts +12 -12
  477. package/src/AWS/EC2/VpcEndpoint.ts +6 -8
  478. package/src/AWS/ECS/Service.ts +4 -3
  479. package/src/AWS/EKS/Addon.ts +8 -6
  480. package/src/AWS/EKS/Cluster.ts +4 -3
  481. package/src/AWS/ELBv2/TargetGroup.ts +4 -3
  482. package/src/AWS/ELBv2/TrustStore.ts +4 -3
  483. package/src/AWS/IAM/SAMLProvider.ts +4 -4
  484. package/src/AWS/IdentityCenter/AccountAssignment.ts +8 -6
  485. package/src/AWS/IdentityCenter/common.ts +1 -3
  486. package/src/AWS/KMS/Alias.ts +4 -3
  487. package/src/AWS/KMS/Key.ts +4 -3
  488. package/src/AWS/Kinesis/Stream.ts +2 -6
  489. package/src/AWS/Kinesis/StreamConsumer.ts +7 -12
  490. package/src/AWS/Lambda/Alias.ts +4 -3
  491. package/src/AWS/Lambda/EventInvokeConfig.ts +2 -6
  492. package/src/AWS/Lambda/EventSourceMapping.ts +10 -8
  493. package/src/AWS/Lambda/Function.ts +111 -31
  494. package/src/AWS/Lambda/MicrovmProvider.ts +18 -16
  495. package/src/AWS/Lambda/NetworkConnector.ts +19 -15
  496. package/src/AWS/Lambda/RuntimeExtension.ts +46 -0
  497. package/src/AWS/Organizations/Account.ts +5 -6
  498. package/src/AWS/Organizations/common.ts +1 -3
  499. package/src/AWS/Providers.ts +22 -20
  500. package/src/AWS/RDS/DBCluster.ts +8 -6
  501. package/src/AWS/RDS/DBInstance.ts +8 -6
  502. package/src/AWS/RDS/DBProxy.ts +4 -3
  503. package/src/AWS/RDS/DBProxyEndpoint.ts +4 -3
  504. package/src/AWS/Route53/HealthCheck.ts +8 -6
  505. package/src/AWS/Route53/HostedZone.ts +8 -6
  506. package/src/AWS/Route53/Record.ts +4 -3
  507. package/src/AWS/S3/Bucket.ts +5 -4
  508. package/src/AWS/SQS/Queue.ts +26 -20
  509. package/src/AWS/StateStore/State.ts +5 -4
  510. package/src/AWS/Website/AssetDeployment.ts +10 -6
  511. package/src/Apply.ts +8 -0
  512. package/src/Auth/AuthProvider.ts +11 -0
  513. package/src/Axiom/AuthProvider.ts +0 -3
  514. package/src/Bundle/Vite.ts +16 -15
  515. package/src/Cli/commands/_shared.ts +119 -5
  516. package/src/Cli/commands/login.ts +9 -40
  517. package/src/Cli/commands/logs.ts +1 -0
  518. package/src/Cli/commands/nuke.ts +16 -44
  519. package/src/Cli/commands/profile.ts +89 -27
  520. package/src/Cli/commands/tail.ts +1 -0
  521. package/src/Cloudflare/AI/GatewayDynamicRouting.ts +38 -6
  522. package/src/Cloudflare/AI/SearchInstance.ts +4 -3
  523. package/src/Cloudflare/Access/Application.ts +7 -4
  524. package/src/Cloudflare/Alerting/Silence.ts +4 -3
  525. package/src/Cloudflare/Alerting/Webhook.ts +8 -6
  526. package/src/Cloudflare/Auth/AuthProvider.ts +54 -38
  527. package/src/Cloudflare/Auth/OAuthClient.ts +6 -7
  528. package/src/Cloudflare/Cache/RegionalTieredCache.ts +7 -4
  529. package/src/Cloudflare/Containers/ContainerApplication.ts +22 -2
  530. package/src/Cloudflare/Containers/ContainerBundle.ts +99 -33
  531. package/src/Cloudflare/Containers/ContainerProvider.ts +73 -19
  532. package/src/Cloudflare/Containers/LocalContainerProvider.ts +78 -72
  533. package/src/Cloudflare/Diagnostics/EndpointHealthcheck.ts +4 -3
  534. package/src/Cloudflare/Images/Variant.ts +4 -3
  535. package/src/Cloudflare/LoadBalancer/Monitor.ts +4 -3
  536. package/src/Cloudflare/LoadBalancer/MonitorGroup.ts +4 -3
  537. package/src/Cloudflare/LoadBalancer/Pool.ts +4 -3
  538. package/src/Cloudflare/LocalRuntime.ts +17 -0
  539. package/src/Cloudflare/MagicNetworkMonitoring/Rule.ts +4 -3
  540. package/src/Cloudflare/Pipelines/Pipeline.ts +8 -6
  541. package/src/Cloudflare/Pipelines/Sink.ts +8 -6
  542. package/src/Cloudflare/Pipelines/Stream.ts +4 -3
  543. package/src/Cloudflare/Providers.ts +21 -19
  544. package/src/Cloudflare/Queues/Consumer.ts +45 -9
  545. package/src/Cloudflare/Queues/Queue.ts +4 -3
  546. package/src/Cloudflare/R2/Bucket.ts +12 -9
  547. package/src/Cloudflare/R2/BucketEventNotification.ts +4 -3
  548. package/src/Cloudflare/R2/DataCatalog.ts +4 -3
  549. package/src/Cloudflare/Rum/Rule.ts +4 -3
  550. package/src/Cloudflare/Snippets/Snippet.ts +4 -3
  551. package/src/Cloudflare/StateStore/CredentialsFile.ts +48 -0
  552. package/src/Cloudflare/StateStore/State.ts +61 -25
  553. package/src/Cloudflare/Tags/ZoneResourceTags.ts +4 -3
  554. package/src/Cloudflare/UrlNormalization/UrlNormalization.ts +7 -4
  555. package/src/Cloudflare/WaitingRoom/Settings.ts +7 -4
  556. package/src/Cloudflare/Website/Vite.ts +20 -0
  557. package/src/Cloudflare/Workers/Compatibility.ts +50 -7
  558. package/src/Cloudflare/Workers/CronEventSource.ts +3 -2
  559. package/src/Cloudflare/Workers/DurableObjectBridge.ts +38 -33
  560. package/src/Cloudflare/Workers/HttpServer.ts +1 -4
  561. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +132 -26
  562. package/src/Cloudflare/Workers/ObservabilityDestination.ts +4 -3
  563. package/src/Cloudflare/Workers/Worker.ts +27 -5
  564. package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +27 -16
  565. package/src/Cloudflare/Workers/WorkerBridge.ts +227 -106
  566. package/src/Cloudflare/Workers/WorkerProvider.ts +26 -19
  567. package/src/Cloudflare/Workers/cloudflare_workers.ts +20 -12
  568. package/src/Cloudflare/Workflows/Workflow.ts +54 -20
  569. package/src/Cloudflare/Workflows/WorkflowBridge.ts +19 -23
  570. package/src/Cloudflare/Workflows/WorkflowName.ts +41 -0
  571. package/src/Cloudflare/Zone/Hold.ts +7 -4
  572. package/src/Command/Dev.ts +42 -10
  573. package/src/Docker/Container.ts +4 -1
  574. package/src/Drizzle/Postgres.ts +51 -23
  575. package/src/GitHub/AuthProvider.ts +0 -3
  576. package/src/GitHub/Env.ts +57 -0
  577. package/src/GitHub/index.ts +1 -0
  578. package/src/Http.ts +11 -0
  579. package/src/Local/RpcProviderProxy.ts +1 -1
  580. package/src/Neon/AuthProvider.ts +0 -3
  581. package/src/Neon/Project.ts +2 -2
  582. package/src/Plan.ts +28 -11
  583. package/src/Planetscale/AuthProvider.ts +267 -27
  584. package/src/Planetscale/Branch.ts +4 -3
  585. package/src/Planetscale/Credentials.ts +18 -6
  586. package/src/Planetscale/MySQL/MySQLMigrations.ts +4 -3
  587. package/src/Planetscale/OAuthClient.ts +307 -0
  588. package/src/Planetscale/Postgres/PostgresClusterSize.ts +4 -3
  589. package/src/Planetscale/Postgres/PostgresMigrations.ts +4 -3
  590. package/src/Planetscale/Util.ts +4 -3
  591. package/src/Platform.ts +74 -7
  592. package/src/Provider.ts +35 -0
  593. package/src/State/HttpStateStore.ts +5 -5
  594. package/src/Sync.ts +3 -0
  595. package/src/Test/Http.ts +8 -6
  596. package/src/Util/data.ts +14 -5
  597. package/src/Util/poll.ts +1 -1
  598. package/lib/ExecutionContext.d.ts +0 -18
  599. package/lib/ExecutionContext.d.ts.map +0 -1
  600. package/lib/ExecutionContext.js +0 -10
  601. package/lib/ExecutionContext.js.map +0 -1
  602. package/src/ExecutionContext.ts +0 -18
@@ -1,8 +1,10 @@
1
1
  import * as Cause from "effect/Cause";
2
2
  import * as Config from "effect/Config";
3
+ import * as ConfigProvider from "effect/ConfigProvider";
3
4
  import * as Console from "effect/Console";
4
5
  import * as Effect from "effect/Effect";
5
6
  import * as Layer from "effect/Layer";
7
+ import * as Logger from "effect/Logger";
6
8
  import * as Option from "effect/Option";
7
9
  import * as Path from "effect/Path";
8
10
  import * as S from "effect/Schema";
@@ -16,10 +18,17 @@ import {
16
18
  AuthError,
17
19
  AuthProviders,
18
20
  } from "../../Auth/AuthProvider.ts";
19
- import type { AlchemyProfileProviders } from "../../Auth/Profile.ts";
20
- import type * as Stack from "../../Stack.ts";
21
+ import {
22
+ type AlchemyProfileProviders,
23
+ ALCHEMY_PROFILE,
24
+ withProfileOverride,
25
+ } from "../../Auth/Profile.ts";
26
+ import * as Stack from "../../Stack.ts";
27
+ import { Stage } from "../../Stage.ts";
21
28
  import { recordCli } from "../../Telemetry/Metrics.ts";
22
29
  import { PromptCancelled } from "../../Util/Clank.ts";
30
+ import { loadConfigProvider } from "../../Util/ConfigProvider.ts";
31
+ import { fileLogger } from "../../Util/FileLogger.ts";
23
32
 
24
33
  export const USER = Config.string("USER").pipe(
25
34
  Config.orElse(() => Config.string("USERNAME")),
@@ -147,10 +156,22 @@ export const script = Argument.file("main", {
147
156
 
148
157
  export const profile = Flag.string("profile").pipe(
149
158
  Flag.withDescription(
150
- "Auth profile to use (~/.alchemy/profiles.json). Defaults to 'default' or $ALCHEMY_PROFILE.",
159
+ "Auth profile to use (~/.alchemy/profiles.json). Defaults to $ALCHEMY_PROFILE or 'default'.",
151
160
  ),
152
161
  Flag.optional,
153
- Flag.map(Option.getOrElse(() => "default")),
162
+ Flag.mapEffect(
163
+ Effect.fn(function* (profile) {
164
+ // --profile wins; otherwise fall back to $ALCHEMY_PROFILE (which
165
+ // itself defaults to "default"). Without this, the flag's default
166
+ // would shadow the env var via withProfileOverride.
167
+ if (Option.isSome(profile)) {
168
+ return profile.value;
169
+ }
170
+ return yield* ALCHEMY_PROFILE.pipe(
171
+ Effect.catch(() => Effect.succeed("default")),
172
+ );
173
+ }),
174
+ ),
154
175
  );
155
176
 
156
177
  export const resourceFilter = Flag.string("filter").pipe(
@@ -296,7 +317,19 @@ export const printProfile = Effect.fn(function* (
296
317
  }
297
318
  continue;
298
319
  }
299
- yield* provider.prettyPrint(profile, cfg);
320
+ // A provider's `prettyPrint` catches its own credential-resolution
321
+ // failures, but some resolve paths `Effect.orDie` (e.g. AWS SSO with an
322
+ // expired token), which escapes as a defect. Contain it here — via
323
+ // `Console.log` so the message stays on stdout under this provider's
324
+ // header instead of interleaving on stderr — so one broken provider
325
+ // can't abort rendering the rest of the profile.
326
+ yield* provider.prettyPrint(profile, cfg).pipe(
327
+ Effect.catchCause((cause) => {
328
+ const error = Cause.squash(cause);
329
+ const message = error instanceof Error ? error.message : String(error);
330
+ return Console.log(` Failed to retrieve credentials: ${message}`);
331
+ }),
332
+ );
300
333
  }
301
334
  });
302
335
 
@@ -326,3 +359,84 @@ export const importStack = Effect.fn(function* (main: string) {
326
359
  state: Layer.Layer<never>;
327
360
  };
328
361
  });
362
+
363
+ /**
364
+ * Placeholder {@link Stack.Stack} value used while building a stack's
365
+ * `providers()` layer out of band. No real resources exist yet — we only
366
+ * want the layer's provider/auth registrations and cloud-environment
367
+ * services, so `resources`/`bindings`/`actions` are empty and the stage is a
368
+ * sentinel.
369
+ */
370
+ const placeholderStack = (name: string) => ({
371
+ actions: {},
372
+ bindings: {},
373
+ name,
374
+ resources: {},
375
+ stage: "placeholder",
376
+ });
377
+
378
+ export interface BuildStackProvidersOptions {
379
+ /** Stack entrypoint to import (e.g. `"alchemy.run.ts"`). */
380
+ main: string;
381
+ envFile: Option.Option<string>;
382
+ profile: string;
383
+ /**
384
+ * Registry to populate. Pass a pre-seeded registry (e.g. one that already
385
+ * has built-in providers) to layer the stack's providers on top of it,
386
+ * overriding by name. Defaults to a fresh empty registry.
387
+ */
388
+ registry?: AuthProviders["Service"];
389
+ /**
390
+ * Logger layer used during the build. Defaults to the file logger
391
+ * (`out`). `alchemy unsafe nuke` overrides this to log to the console in
392
+ * debug mode.
393
+ */
394
+ logger?: Layer.Layer<never, never, never>;
395
+ /**
396
+ * Extra layer merged into the placeholder scaffold — e.g.
397
+ * `Layer.succeed(MinimumLogLevel, ...)`, which sets a fiber-ref default
398
+ * and so contributes no context service (`Layer<never>`).
399
+ */
400
+ extra?: Layer.Layer<never, never, never>;
401
+ }
402
+
403
+ /**
404
+ * Import a stack entrypoint and build its `providers()` (+ `state()`) layer
405
+ * out of band against placeholder {@link Stack.Stack}/{@link Stage} services,
406
+ * so its `AuthProviderLayer` registrations land in an {@link AuthProviders}
407
+ * registry and the built context holds every resource provider plus the
408
+ * cloud-environment services their operations need.
409
+ *
410
+ * Shared by `alchemy login`, `alchemy profile show`, and `alchemy unsafe
411
+ * nuke`. The caller decides what to do with the result — use `authProviders`
412
+ * (login / profile show) or `context` (nuke) — and whether a missing/invalid
413
+ * entrypoint is fatal (login / nuke let it propagate) or best-effort
414
+ * (profile show wraps the call in `Effect.catchCause`).
415
+ */
416
+ export const buildStackProviders = Effect.fn("buildStackProviders")(function* (
417
+ options: BuildStackProvidersOptions,
418
+ ) {
419
+ const authProviders = options.registry ?? {};
420
+ const stackEffect = yield* importStack(options.main);
421
+ const configProvider = withProfileOverride(
422
+ yield* loadConfigProvider(options.envFile),
423
+ options.profile,
424
+ );
425
+ const context = yield* Layer.build(
426
+ (stackEffect.providers ?? Layer.empty).pipe(
427
+ Layer.provideMerge(stackEffect.state ?? Layer.empty),
428
+ Layer.provideMerge(
429
+ Layer.mergeAll(
430
+ Layer.succeed(AuthProviders, authProviders),
431
+ ConfigProvider.layer(configProvider),
432
+ options.logger ??
433
+ Logger.layer([fileLogger("out")], { mergeWithExisting: true }),
434
+ Layer.succeed(Stage, "placeholder"),
435
+ Layer.succeed(Stack.Stack, placeholderStack(stackEffect.stackName)),
436
+ options.extra ?? Layer.empty,
437
+ ),
438
+ ),
439
+ ),
440
+ );
441
+ return { authProviders, context, stackEffect };
442
+ });
@@ -1,21 +1,13 @@
1
1
  import * as Config from "effect/Config";
2
- import * as ConfigProvider from "effect/ConfigProvider";
3
2
  import * as Console from "effect/Console";
4
3
  import * as Effect from "effect/Effect";
5
- import * as Layer from "effect/Layer";
6
- import * as Logger from "effect/Logger";
7
4
  import { Command, Flag } from "effect/unstable/cli";
8
5
 
9
- import { AuthProviders } from "../../Auth/AuthProvider.ts";
10
- import { AlchemyProfile, withProfileOverride } from "../../Auth/Profile.ts";
11
- import { Stage } from "../../Stage.ts";
12
- import { loadConfigProvider } from "../../Util/ConfigProvider.ts";
13
- import { fileLogger } from "../../Util/FileLogger.ts";
6
+ import { AlchemyProfile } from "../../Auth/Profile.ts";
14
7
 
15
- import { Stack } from "../../Stack.ts";
16
8
  import {
9
+ buildStackProviders,
17
10
  envFile,
18
- importStack,
19
11
  instrumentCommand,
20
12
  printProfile,
21
13
  profile,
@@ -46,36 +38,13 @@ export const loginCommand = Command.make(
46
38
  }),
47
39
  )(
48
40
  Effect.fn(function* ({ main, envFile, profile, configure }) {
49
- const stackEffect = yield* importStack(main);
50
-
51
- const authProviders: AuthProviders["Service"] = {};
52
-
53
- // build the state + providers layer to capture the Auth Providers
54
- yield* Layer.build(
55
- (stackEffect.providers ?? Layer.empty).pipe(
56
- Layer.provideMerge(stackEffect.state ?? Layer.empty),
57
- Layer.provideMerge(
58
- Layer.mergeAll(
59
- Layer.succeed(AuthProviders, authProviders),
60
- ConfigProvider.layer(
61
- withProfileOverride(
62
- yield* loadConfigProvider(envFile),
63
- profile,
64
- ),
65
- ),
66
- Logger.layer([fileLogger("out")], { mergeWithExisting: true }),
67
- Layer.succeed(Stage, "placeholder"),
68
- Layer.succeed(Stack, {
69
- actions: {},
70
- bindings: {},
71
- name: stackEffect.stackName,
72
- resources: {},
73
- stage: "placeholder",
74
- }),
75
- ),
76
- ),
77
- ),
78
- );
41
+ // Build the user's providers() (+ state) layer to capture the auth
42
+ // providers their stack wires up.
43
+ const { authProviders } = yield* buildStackProviders({
44
+ main,
45
+ envFile,
46
+ profile,
47
+ });
79
48
 
80
49
  const profiles = yield* AlchemyProfile;
81
50
 
@@ -126,6 +126,7 @@ export const logsCommand = Command.make(
126
126
 
127
127
  const lines = yield* provider.logs({
128
128
  id: resource.LogicalId,
129
+ fqn,
129
130
  instanceId: (resourceState as any).instanceId,
130
131
  props: (resourceState as any).props,
131
132
  output: (resourceState as any).attr,
@@ -1,4 +1,3 @@
1
- import * as ConfigProvider from "effect/ConfigProvider";
2
1
  import * as Console from "effect/Console";
3
2
  import type * as Context from "effect/Context";
4
3
  import * as Effect from "effect/Effect";
@@ -8,22 +7,16 @@ import { MinimumLogLevel } from "effect/References";
8
7
  import { Command, Flag } from "effect/unstable/cli";
9
8
  import picomatch from "picomatch";
10
9
 
11
- import { AuthProviders } from "../../Auth/AuthProvider.ts";
12
- import { withProfileOverride } from "../../Auth/Profile.ts";
13
10
  import type { ProviderService } from "../../Provider.ts";
14
- import { Stack } from "../../Stack.ts";
15
- import { Stage } from "../../Stage.ts";
16
11
  import * as Clank from "../../Util/Clank.ts";
17
- import { loadConfigProvider } from "../../Util/ConfigProvider.ts";
18
- import { fileLogger } from "../../Util/FileLogger.ts";
19
12
  import type { ScopedPlanStatusSession } from "../Cli.ts";
20
13
  import { isNonInteractive } from "../selectCli.ts";
21
14
  import * as NukeUI from "../tui/components/Nuke.tsx";
22
15
 
23
16
  import {
17
+ buildStackProviders,
24
18
  dryRun,
25
19
  envFile,
26
- importStack,
27
20
  instrumentCommand,
28
21
  profile,
29
22
  script,
@@ -311,42 +304,18 @@ const nukeCommand = Command.make(
311
304
  // log stream isn't clobbered by the progress renderer.
312
305
  const debug = !!process.env.DEBUG;
313
306
  const interactive = !isNonInteractive() && !debug;
314
- const stackEffect = yield* importStack(main);
315
- const authProviders: AuthProviders["Service"] = {};
316
-
317
- // Build the state + providers layer (same wiring as `alchemy login`) so
318
- // that the resulting context holds every resource provider plus the
319
- // cloud-environment services their `list`/`delete` need at call time.
320
- const context = yield* Layer.build(
321
- (stackEffect.providers ?? Layer.empty).pipe(
322
- Layer.provideMerge(stackEffect.state ?? Layer.empty),
323
- Layer.provideMerge(
324
- Layer.mergeAll(
325
- Layer.succeed(AuthProviders, authProviders),
326
- ConfigProvider.layer(
327
- withProfileOverride(
328
- yield* loadConfigProvider(envFile),
329
- profile,
330
- ),
331
- ),
332
- debug
333
- ? Logger.layer([Logger.defaultLogger])
334
- : Logger.layer([fileLogger("out")], {
335
- mergeWithExisting: true,
336
- }),
337
- Layer.succeed(MinimumLogLevel, debug ? "Debug" : "Info"),
338
- Layer.succeed(Stage, "placeholder"),
339
- Layer.succeed(Stack, {
340
- actions: {},
341
- bindings: {},
342
- name: stackEffect.stackName,
343
- resources: {},
344
- stage: "placeholder",
345
- }),
346
- ),
347
- ),
348
- ),
349
- );
307
+
308
+ // Build the user's providers() (+ state) layer so the resulting context
309
+ // holds every resource provider plus the cloud-environment services
310
+ // their `list`/`delete` need at call time. DEBUG=1 routes provider logs
311
+ // to the console at Debug level instead of the .alchemy/log/out file.
312
+ const { context } = yield* buildStackProviders({
313
+ main,
314
+ envFile,
315
+ profile,
316
+ logger: debug ? Logger.layer([Logger.defaultLogger]) : undefined,
317
+ extra: Layer.succeed(MinimumLogLevel, debug ? "Debug" : "Info"),
318
+ });
350
319
 
351
320
  const discovered = discoverProviders(context as Context.Context<never>);
352
321
 
@@ -521,6 +490,9 @@ const nukeCommand = Command.make(
521
490
  item.provider
522
491
  .delete({
523
492
  id: displayName(item.attr),
493
+ // Enumerated straight from the cloud, so there is no
494
+ // Alchemy namespace — an un-namespaced fqn is just the id.
495
+ fqn: displayName(item.attr),
524
496
  instanceId: "",
525
497
  olds: item.attr as never,
526
498
  output: item.attr as never,
@@ -3,7 +3,9 @@ import * as Console from "effect/Console";
3
3
  import * as Effect from "effect/Effect";
4
4
  import * as Layer from "effect/Layer";
5
5
  import * as Logger from "effect/Logger";
6
+ import * as Option from "effect/Option";
6
7
  import { Command } from "effect/unstable/cli";
8
+ import * as Argument from "effect/unstable/cli/Argument";
7
9
 
8
10
  import { AuthProviders } from "../../Auth/AuthProvider.ts";
9
11
  import { CredentialsStore } from "../../Auth/Credentials.ts";
@@ -18,19 +20,98 @@ import { loadConfigProvider } from "../../Util/ConfigProvider.ts";
18
20
  import { fileLogger } from "../../Util/FileLogger.ts";
19
21
 
20
22
  import {
23
+ buildStackProviders,
21
24
  envFile,
22
25
  instrumentCommand,
23
26
  printProfile,
24
27
  profile,
25
28
  } from "./_shared.ts";
26
29
 
30
+ /**
31
+ * The auth providers Alchemy ships with. Built into the registry as a
32
+ * baseline so `profile show` can pretty-print any provider a profile
33
+ * mentions, even one the current stack doesn't wire up.
34
+ */
35
+ const builtinAuth = Layer.mergeAll(
36
+ AwsAuth,
37
+ AxiomAuth,
38
+ CloudflareAuth,
39
+ GitHubAuth,
40
+ NeonAuth,
41
+ PlanetscaleAuth,
42
+ );
43
+
44
+ /**
45
+ * Entrypoint whose `providers()` layer contributes the user's own auth
46
+ * providers. Optional and best-effort — if it's missing or fails to load,
47
+ * `profile show` still renders the built-in providers.
48
+ */
49
+ const mainFile = Argument.file("main").pipe(
50
+ Argument.withDescription(
51
+ "Stack entrypoint whose providers() should be used, defaults to alchemy.run.ts",
52
+ ),
53
+ Argument.withDefault("alchemy.run.ts"),
54
+ );
55
+
56
+ /**
57
+ * Populate an {@link AuthProviders} registry for display: the built-in
58
+ * providers first, then the user's stack `providers()` layer on top so a
59
+ * customized provider (same name) overrides the built-in one. Loading the
60
+ * user's stack is best-effort — a missing or invalid entrypoint leaves the
61
+ * built-ins in place.
62
+ *
63
+ * Registration happens as a side effect of building each layer (see
64
+ * `AuthProviderLayer`), and later builds overwrite earlier entries by name,
65
+ * so build order is what gives the user's providers precedence.
66
+ */
67
+ export const collectAuthProviders = Effect.fn("collectAuthProviders")(
68
+ function* (options: {
69
+ main: string;
70
+ envFile: Option.Option<string>;
71
+ profile: string;
72
+ }) {
73
+ const authProviders: AuthProviders["Service"] = {};
74
+
75
+ // 1. Built-in providers first (baseline).
76
+ yield* Layer.build(
77
+ Layer.provide(
78
+ builtinAuth,
79
+ Layer.mergeAll(
80
+ Layer.succeed(AuthProviders, authProviders),
81
+ ConfigProvider.layer(
82
+ withProfileOverride(
83
+ yield* loadConfigProvider(options.envFile),
84
+ options.profile,
85
+ ),
86
+ ),
87
+ Logger.layer([fileLogger("out")], { mergeWithExisting: true }),
88
+ ),
89
+ ),
90
+ );
91
+
92
+ // 2. The user's own providers() layer on top — building into the same
93
+ // registry overrides the built-ins by name. Best-effort: swallow
94
+ // load/build failures (including a missing entrypoint) so display
95
+ // still works with just the built-ins.
96
+ yield* buildStackProviders({ ...options, registry: authProviders }).pipe(
97
+ Effect.catchCause((cause) =>
98
+ Effect.logDebug("profile show: could not load user stack providers", {
99
+ cause,
100
+ }),
101
+ ),
102
+ );
103
+
104
+ return authProviders;
105
+ },
106
+ );
107
+
27
108
  const showCommand = Command.make(
28
109
  "show",
29
- { profile, envFile },
110
+ { profile, envFile, main: mainFile },
30
111
  instrumentCommand("profile.show", (a: { profile: string }) => ({
31
112
  "alchemy.profile": a.profile,
32
113
  }))(
33
- Effect.fn(function* ({ profile, envFile }) {
114
+ Effect.fn(function* ({ profile, envFile, main }) {
34
115
  const profiles = yield* AlchemyProfile;
35
116
  const stored = yield* profiles.getProfile(profile);
36
117
  if (stored == null) {
@@ -45,32 +126,13 @@ const showCommand = Command.make(
45
126
  return;
46
127
  }
47
128
 
48
- const authProviders: AuthProviders["Service"] = {};
49
- const authRegistry = Layer.succeed(AuthProviders, authProviders);
50
- const services = Layer.mergeAll(
51
- authRegistry,
52
- ConfigProvider.layer(
53
- withProfileOverride(yield* loadConfigProvider(envFile), profile),
54
- ),
55
- Logger.layer([fileLogger("out")], { mergeWithExisting: true }),
56
- // Building these layers triggers their AuthProviderLayer effect, which
57
- // registers the provider into the shared `authProviders` registry.
58
- Layer.provide(
59
- Layer.mergeAll(
60
- AwsAuth,
61
- AxiomAuth,
62
- CloudflareAuth,
63
- GitHubAuth,
64
- NeonAuth,
65
- PlanetscaleAuth,
66
- ),
67
- authRegistry,
68
- ),
69
- );
129
+ const authProviders = yield* collectAuthProviders({
130
+ main,
131
+ envFile,
132
+ profile,
133
+ });
70
134
 
71
- yield* printProfile(profile, stored, authProviders).pipe(
72
- Effect.provide(services),
73
- );
135
+ yield* printProfile(profile, stored, authProviders);
74
136
  }),
75
137
  ),
76
138
  );
@@ -104,6 +104,7 @@ export const tailCommand = Command.make(
104
104
  logicalId: resource.LogicalId,
105
105
  stream: provider.tail({
106
106
  id: resource.LogicalId,
107
+ fqn,
107
108
  instanceId: (resourceState as any).instanceId,
108
109
  props: (resourceState as any).props,
109
110
  output: (resourceState as any).attr,
@@ -406,12 +406,44 @@ export const DynamicRoutingProvider = () =>
406
406
  });
407
407
 
408
408
  if (current.name !== name) {
409
- yield* aiGateway.patchDynamicRouting({
410
- accountId,
411
- gatewayId,
412
- id: routeId,
413
- name,
414
- });
409
+ yield* aiGateway
410
+ .patchDynamicRouting({
411
+ accountId,
412
+ gatewayId,
413
+ id: routeId,
414
+ name,
415
+ })
416
+ .pipe(
417
+ // Cloudflare does not cascade-delete a gateway's routes when the
418
+ // gateway itself is deleted: recreating a gateway with the same
419
+ // id resurrects its old route rows, and a rename onto one of
420
+ // those ghosts trips the backing `UNIQUE(routes.name,
421
+ // routes.gateway_id)` constraint (leaked as a 500, typed as
422
+ // `RouteAlreadyExists` via a distilled patch). Route names are
423
+ // unique and deterministic, so the holder is a stale duplicate
424
+ // of this logical resource — delete it and retry the rename.
425
+ Effect.catchTag("RouteAlreadyExists", (error) =>
426
+ Effect.gen(function* () {
427
+ const holder = yield* findByName(accountId, gatewayId, name);
428
+ if (holder === undefined || holder.id === routeId) {
429
+ return yield* Effect.fail(error);
430
+ }
431
+ yield* aiGateway
432
+ .deleteDynamicRouting({
433
+ accountId,
434
+ gatewayId,
435
+ id: holder.id,
436
+ })
437
+ .pipe(Effect.catchTag("RouteNotFound", () => Effect.void));
438
+ yield* aiGateway.patchDynamicRouting({
439
+ accountId,
440
+ gatewayId,
441
+ id: routeId,
442
+ name,
443
+ });
444
+ }),
445
+ ),
446
+ );
415
447
  }
416
448
 
417
449
  // `get` returns the *deployed* version's graph, so an undeployed
@@ -835,9 +835,10 @@ const retryTokenPropagation = <A, E extends { _tag: string }, R>(
835
835
  // sparsely and detects a settled token tens of seconds late. Capped
836
836
  // polling detects within 6s of propagation completing while still
837
837
  // covering a long total window.
838
- schedule: Schedule.exponential("1 second", 1.5).pipe(
839
- Schedule.either(Schedule.spaced("6 seconds")),
840
- ),
838
+ schedule: Schedule.min([
839
+ Schedule.exponential("1 second", 1.5),
840
+ Schedule.spaced("6 seconds"),
841
+ ]),
841
842
  times: 22,
842
843
  }),
843
844
  );
@@ -292,10 +292,13 @@ const retryTransientAccessError = <A, E extends { _tag: string }, R>(
292
292
  Effect.retry({
293
293
  while: (e) =>
294
294
  e._tag === "AccessReferenceNotFound" || e._tag === "Forbidden",
295
- schedule: Schedule.exponential("1 second", 1.5).pipe(
296
- Schedule.either(Schedule.spaced("5 seconds")),
297
- Schedule.both(Schedule.recurs(12)),
298
- ),
295
+ schedule: Schedule.max([
296
+ Schedule.min([
297
+ Schedule.exponential("1 second", 1.5),
298
+ Schedule.spaced("5 seconds"),
299
+ ]),
300
+ Schedule.recurs(12),
301
+ ]),
299
302
  }),
300
303
  );
301
304
 
@@ -250,9 +250,10 @@ export const SilenceProvider = () =>
250
250
  ),
251
251
  Effect.retry({
252
252
  while: (e) => e._tag === "SilencePending",
253
- schedule: Schedule.exponential("500 millis").pipe(
254
- Schedule.both(Schedule.recurs(8)),
255
- ),
253
+ schedule: Schedule.max([
254
+ Schedule.exponential("500 millis"),
255
+ Schedule.recurs(8),
256
+ ]),
256
257
  }),
257
258
  );
258
259
  return toSilenceAttributes(observed, accountId);
@@ -211,9 +211,10 @@ export const NotificationWebhookProvider = () =>
211
211
  .pipe(
212
212
  Effect.retry({
213
213
  while: (e) => e._tag === "WebhookTestFailed",
214
- schedule: Schedule.exponential("1 second").pipe(
215
- Schedule.both(Schedule.recurs(5)),
216
- ),
214
+ schedule: Schedule.max([
215
+ Schedule.exponential("1 second"),
216
+ Schedule.recurs(5),
217
+ ]),
217
218
  }),
218
219
  );
219
220
  if (!created.id) {
@@ -247,9 +248,10 @@ export const NotificationWebhookProvider = () =>
247
248
  .pipe(
248
249
  Effect.retry({
249
250
  while: (e) => e._tag === "WebhookTestFailed",
250
- schedule: Schedule.exponential("1 second").pipe(
251
- Schedule.both(Schedule.recurs(5)),
252
- ),
251
+ schedule: Schedule.max([
252
+ Schedule.exponential("1 second"),
253
+ Schedule.recurs(5),
254
+ ]),
253
255
  }),
254
256
  );
255
257
  const fresh = yield* observeWebhook(accountId, observed.id);