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
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Self-registered *internal extension* for the generated Lambda entry.
3
+ *
4
+ * Registering an internal extension buys the Shutdown phase: a sandbox
5
+ * with no registered extensions is killed with no signal at all (0 ms);
6
+ * with an internal extension Lambda sends SIGTERM and allows 500 ms before
7
+ * SIGKILL — the entry closes the instance scope in that window.
8
+ *
9
+ * The extension deliberately subscribes to NO events (`events: []`).
10
+ * Subscribing to `INVOKE` and holding `/event/next` open as a
11
+ * post-response work window was tried and rejected: a buffered Function
12
+ * URL does not return the response to the caller until the entire Invoke
13
+ * phase completes, so held work showed up as response latency anyway — and
14
+ * environments whose invoke phase was extended this way were observed
15
+ * being condemned and recycled (no END/REPORT, SIGTERM within seconds,
16
+ * fresh INIT on the next request). Per-invocation cleanup therefore
17
+ * settles inline in the dispatch; keep request finalizers fast.
18
+ *
19
+ * A registered extension must signal readiness via the blocking
20
+ * `/event/next` long-poll or the Init phase hangs; for an extension
21
+ * subscribed to no events that call never resolves, so it is fired
22
+ * un-awaited and parks for the sandbox's lifetime.
23
+ *
24
+ * https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html
25
+ */
26
+ export const registerLambdaExtension = async (): Promise<void> => {
27
+ const api = process.env.AWS_LAMBDA_RUNTIME_API;
28
+ if (!api) return;
29
+ const base = `http://${api}/2020-01-01/extension`;
30
+ try {
31
+ const registration = await fetch(`${base}/register`, {
32
+ method: "POST",
33
+ headers: { "Lambda-Extension-Name": "alchemy-graceful-shutdown" },
34
+ body: JSON.stringify({ events: [] }),
35
+ });
36
+ const extensionId = registration.headers.get("lambda-extension-identifier");
37
+ if (extensionId) {
38
+ void fetch(`${base}/event/next`, {
39
+ headers: { "Lambda-Extension-Identifier": extensionId },
40
+ }).catch(() => undefined);
41
+ }
42
+ } catch {
43
+ // Not running on Lambda (or the Extensions API refused) — the function
44
+ // still works, it just gets no shutdown window.
45
+ }
46
+ };
@@ -329,9 +329,10 @@ const waitForCreateAccount = (requestId: string) =>
329
329
  }).pipe(
330
330
  Effect.retry({
331
331
  while: (error: any) => error?._tag === "CreateAccountInProgress",
332
- schedule: Schedule.spaced("2 seconds").pipe(
333
- Schedule.both(Schedule.recurs(120)),
334
- ),
332
+ schedule: Schedule.max([
333
+ Schedule.spaced("2 seconds"),
334
+ Schedule.recurs(120),
335
+ ]),
335
336
  }),
336
337
  );
337
338
 
@@ -341,8 +342,6 @@ const retryAccountManagement = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
341
342
  while: (error: any) =>
342
343
  error?._tag === "TooManyRequestsException" ||
343
344
  error?._tag === "InternalServerException",
344
- schedule: Schedule.exponential(200).pipe(
345
- Schedule.both(Schedule.recurs(8)),
346
- ),
345
+ schedule: Schedule.max([Schedule.exponential(200), Schedule.recurs(8)]),
347
346
  }),
348
347
  );
@@ -55,9 +55,7 @@ export const retryOrganizations = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
55
55
  error?._tag === "TooManyRequestsException" ||
56
56
  error?._tag === "ServiceException" ||
57
57
  error?._tag === "FinalizingOrganizationException",
58
- schedule: Schedule.exponential(200).pipe(
59
- Schedule.both(Schedule.recurs(8)),
60
- ),
58
+ schedule: Schedule.max([Schedule.exponential(200), Schedule.recurs(8)]),
61
59
  }),
62
60
  );
63
61
 
@@ -442,26 +442,28 @@ const awsRetryFactory: RetryFactory = (lastError) => ({
442
442
  isThrottlingError(error) ||
443
443
  isRetryable(error) ||
444
444
  isHttpTransportError(error),
445
- schedule: pipe(
446
- Schedule.exponential(Duration.millis(200), 2),
447
- Schedule.modifyDelay(
448
- Effect.fn(function* (duration) {
449
- const error = yield* Ref.get(lastError);
450
- if (isThrottlingError(error)) {
451
- // Throttling: floor at 500ms (matches distilled default).
452
- if (Duration.toMillis(duration) < 500) {
453
- return Duration.toMillis(Duration.millis(500));
445
+ // Transient transport failures (e.g. a sustained `read ETIMEDOUT` blip
446
+ // against a control-plane endpoint) can outlast a 10-attempt budget. With
447
+ // the 5s cap below, the extra attempts add bounded backoff while making
448
+ // the network-flake recovery materially more robust.
449
+ schedule: Schedule.max([
450
+ pipe(
451
+ Schedule.exponential(Duration.millis(200), 2),
452
+ Schedule.modifyDelay(
453
+ Effect.fn(function* ({ duration }) {
454
+ const error = yield* Ref.get(lastError);
455
+ if (isThrottlingError(error)) {
456
+ // Throttling: floor at 500ms (matches distilled default).
457
+ if (Duration.toMillis(duration) < 500) {
458
+ return Duration.toMillis(Duration.millis(500));
459
+ }
454
460
  }
455
- }
456
- return Duration.toMillis(duration);
457
- }),
461
+ return Duration.toMillis(duration);
462
+ }),
463
+ ),
464
+ capped(Duration.seconds(5)),
465
+ jittered,
458
466
  ),
459
- capped(Duration.seconds(5)),
460
- jittered,
461
- // Transient transport failures (e.g. a sustained `read ETIMEDOUT` blip
462
- // against a control-plane endpoint) can outlast a 10-attempt budget. With
463
- // the 5s cap above, the extra attempts add bounded backoff while making
464
- // the network-flake recovery materially more robust.
465
- Schedule.both(Schedule.recurs(15)),
466
- ),
467
+ Schedule.recurs(15),
468
+ ]),
467
469
  });
@@ -456,9 +456,10 @@ export const DBClusterProvider = () =>
456
456
  clusterId: string,
457
457
  { requireAvailable = true }: { requireAvailable?: boolean } = {},
458
458
  ) {
459
- const readinessPolicy = Schedule.fixed("10 seconds").pipe(
460
- Schedule.both(Schedule.recurs(60)),
461
- );
459
+ const readinessPolicy = Schedule.max([
460
+ Schedule.fixed("10 seconds"),
461
+ Schedule.recurs(60),
462
+ ]);
462
463
  return yield* readCluster(clusterId).pipe(
463
464
  Effect.flatMap((cluster) => {
464
465
  if (!cluster?.DBClusterArn) {
@@ -762,9 +763,10 @@ export const DBClusterProvider = () =>
762
763
  ),
763
764
  ),
764
765
  {
765
- schedule: Schedule.fixed("15 seconds").pipe(
766
- Schedule.both(Schedule.recurs(40)),
767
- ),
766
+ schedule: Schedule.max([
767
+ Schedule.fixed("15 seconds"),
768
+ Schedule.recurs(40),
769
+ ]),
768
770
  until: (exists) => exists === false,
769
771
  },
770
772
  ).pipe(Effect.catch(() => Effect.void));
@@ -421,9 +421,10 @@ export const DBInstanceProvider = () =>
421
421
  instanceId: string,
422
422
  { requireAvailable = true }: { requireAvailable?: boolean } = {},
423
423
  ) {
424
- const readinessPolicy = Schedule.fixed("10 seconds").pipe(
425
- Schedule.both(Schedule.recurs(60)),
426
- );
424
+ const readinessPolicy = Schedule.max([
425
+ Schedule.fixed("10 seconds"),
426
+ Schedule.recurs(60),
427
+ ]);
427
428
  return yield* readInstance(instanceId).pipe(
428
429
  Effect.flatMap((instance) => {
429
430
  if (!instance?.DBInstanceArn) {
@@ -728,9 +729,10 @@ export const DBInstanceProvider = () =>
728
729
  ),
729
730
  ),
730
731
  {
731
- schedule: Schedule.fixed("15 seconds").pipe(
732
- Schedule.both(Schedule.recurs(40)),
733
- ),
732
+ schedule: Schedule.max([
733
+ Schedule.fixed("15 seconds"),
734
+ Schedule.recurs(40),
735
+ ]),
734
736
  until: (exists) => exists === false,
735
737
  },
736
738
  ).pipe(Effect.catch(() => Effect.void));
@@ -133,9 +133,10 @@ export const DBProxyProvider = () =>
133
133
  });
134
134
 
135
135
  const waitForProxy = Effect.fn(function* (name: string) {
136
- const readinessPolicy = Schedule.fixed("2 seconds").pipe(
137
- Schedule.both(Schedule.recurs(30)),
138
- );
136
+ const readinessPolicy = Schedule.max([
137
+ Schedule.fixed("2 seconds"),
138
+ Schedule.recurs(30),
139
+ ]);
139
140
  return yield* readProxy(name).pipe(
140
141
  Effect.flatMap((proxy) =>
141
142
  proxy?.DBProxyArn
@@ -119,9 +119,10 @@ export const DBProxyEndpointProvider = () =>
119
119
  dbProxyName: string;
120
120
  dbProxyEndpointName: string;
121
121
  }) {
122
- const readinessPolicy = Schedule.fixed("2 seconds").pipe(
123
- Schedule.both(Schedule.recurs(30)),
124
- );
122
+ const readinessPolicy = Schedule.max([
123
+ Schedule.fixed("2 seconds"),
124
+ Schedule.recurs(30),
125
+ ]);
125
126
  return yield* readEndpoint(props).pipe(
126
127
  Effect.flatMap((endpoint) =>
127
128
  endpoint?.DBProxyEndpointArn
@@ -313,9 +313,10 @@ export const HealthCheckProvider = () =>
313
313
  // Optimistic-lock retry: re-read for the latest version.
314
314
  Effect.retry({
315
315
  while: (e) => e._tag === "HealthCheckVersionMismatch",
316
- schedule: Schedule.fixed("1 second").pipe(
317
- Schedule.both(Schedule.recurs(5)),
318
- ),
316
+ schedule: Schedule.max([
317
+ Schedule.fixed("1 second"),
318
+ Schedule.recurs(5),
319
+ ]),
319
320
  }),
320
321
  );
321
322
  check = updated;
@@ -337,9 +338,10 @@ export const HealthCheckProvider = () =>
337
338
  // Still referenced by a record whose delete is propagating.
338
339
  Effect.retry({
339
340
  while: (e) => e._tag === "HealthCheckInUse",
340
- schedule: Schedule.fixed("3 seconds").pipe(
341
- Schedule.both(Schedule.recurs(10)),
342
- ),
341
+ schedule: Schedule.max([
342
+ Schedule.fixed("3 seconds"),
343
+ Schedule.recurs(10),
344
+ ]),
343
345
  }),
344
346
  Effect.catchTag("HealthCheckInUse", () => Effect.void),
345
347
  );
@@ -124,9 +124,10 @@ export const HostedZoneProvider = () =>
124
124
  Effect.map((r) => r.ChangeInfo.Status),
125
125
  Effect.catchTag("NoSuchChange", () => Effect.succeed("PENDING")),
126
126
  Effect.repeat({
127
- schedule: Schedule.fixed("2 seconds").pipe(
128
- Schedule.both(Schedule.recurs(60)),
129
- ),
127
+ schedule: Schedule.max([
128
+ Schedule.fixed("2 seconds"),
129
+ Schedule.recurs(60),
130
+ ]),
130
131
  until: (status) => status === "INSYNC",
131
132
  }),
132
133
  );
@@ -384,9 +385,10 @@ export const HostedZoneProvider = () =>
384
385
  // in case a referencing record's delete is still propagating.
385
386
  Effect.retry({
386
387
  while: (e) => e._tag === "PriorRequestNotComplete",
387
- schedule: Schedule.fixed("2 seconds").pipe(
388
- Schedule.both(Schedule.recurs(10)),
389
- ),
388
+ schedule: Schedule.max([
389
+ Schedule.fixed("2 seconds"),
390
+ Schedule.recurs(10),
391
+ ]),
390
392
  }),
391
393
  );
392
394
  }),
@@ -487,9 +487,10 @@ export const RecordProvider = () =>
487
487
  Effect.map((response) => response.ChangeInfo.Status),
488
488
  Effect.catchTag("NoSuchChange", () => Effect.succeed("PENDING")),
489
489
  Effect.repeat({
490
- schedule: Schedule.fixed("2 seconds").pipe(
491
- Schedule.both(Schedule.recurs(60)),
492
- ),
490
+ schedule: Schedule.max([
491
+ Schedule.fixed("2 seconds"),
492
+ Schedule.recurs(60),
493
+ ]),
493
494
  until: (status) => status === "INSYNC",
494
495
  }),
495
496
  );
@@ -543,7 +543,7 @@ export const BucketProvider = () =>
543
543
  // Wait for bucket to exist (eventual consistency)
544
544
  yield* Effect.retry(
545
545
  s3.headBucket({ Bucket: bucketName }),
546
- Schedule.exponential(100).pipe(Schedule.both(Schedule.recurs(10))),
546
+ Schedule.max([Schedule.exponential(100), Schedule.recurs(10)]),
547
547
  );
548
548
  yield* Effect.logInfo(
549
549
  `S3 Bucket create: bucket is available ${bucketName}`,
@@ -1544,9 +1544,10 @@ export const BucketProvider = () =>
1544
1544
  Effect.catchTag("NoSuchBucket", () => Effect.void),
1545
1545
  Effect.retry({
1546
1546
  while: (e) => e._tag === "BucketNotEmpty",
1547
- schedule: Schedule.exponential(100).pipe(
1548
- Schedule.both(Schedule.recurs(5)),
1549
- ),
1547
+ schedule: Schedule.max([
1548
+ Schedule.exponential(100),
1549
+ Schedule.recurs(5),
1550
+ ]),
1550
1551
  }),
1551
1552
  );
1552
1553
  });
@@ -517,9 +517,9 @@ export const QueueProvider = () =>
517
517
  Effect.retry({
518
518
  while: (e) => e._tag === "QueueDeletedRecently",
519
519
  schedule: Schedule.fixed(1000).pipe(
520
- Schedule.tapOutput((i) =>
520
+ Schedule.tap(({ attempt }) =>
521
521
  session.note(
522
- `Queue was deleted recently, retrying... ${i + 1}s`,
522
+ `Queue was deleted recently, retrying... ${attempt}s`,
523
523
  ),
524
524
  ),
525
525
  ),
@@ -531,9 +531,10 @@ export const QueueProvider = () =>
531
531
  // genuine validation failure, so retry on a bounded schedule.
532
532
  Effect.retry({
533
533
  while: (e) => e._tag === "InvalidParameterValueException",
534
- schedule: Schedule.fixed(1000).pipe(
535
- Schedule.both(Schedule.recurs(30)),
536
- ),
534
+ schedule: Schedule.max([
535
+ Schedule.fixed(1000),
536
+ Schedule.recurs(30),
537
+ ]),
537
538
  }),
538
539
  Effect.catchTag("QueueNameExists", () =>
539
540
  sqs.getQueueUrl({ QueueName: queueName }),
@@ -558,9 +559,10 @@ export const QueueProvider = () =>
558
559
  .pipe(
559
560
  Effect.retry({
560
561
  while: (e) => e._tag === "QueueDoesNotExist",
561
- schedule: Schedule.fixed(1000).pipe(
562
- Schedule.both(Schedule.recurs(30)),
563
- ),
562
+ schedule: Schedule.max([
563
+ Schedule.fixed(1000),
564
+ Schedule.recurs(30),
565
+ ]),
564
566
  }),
565
567
  Effect.map((r) => r.Attributes ?? {}),
566
568
  );
@@ -588,9 +590,10 @@ export const QueueProvider = () =>
588
590
  .pipe(
589
591
  Effect.retry({
590
592
  while: (e) => e._tag === "QueueDoesNotExist",
591
- schedule: Schedule.fixed(1000).pipe(
592
- Schedule.both(Schedule.recurs(30)),
593
- ),
593
+ schedule: Schedule.max([
594
+ Schedule.fixed(1000),
595
+ Schedule.recurs(30),
596
+ ]),
594
597
  }),
595
598
  );
596
599
  }
@@ -603,9 +606,10 @@ export const QueueProvider = () =>
603
606
  .pipe(
604
607
  Effect.retry({
605
608
  while: (e) => e._tag === "QueueDoesNotExist",
606
- schedule: Schedule.fixed(1000).pipe(
607
- Schedule.both(Schedule.recurs(30)),
608
- ),
609
+ schedule: Schedule.max([
610
+ Schedule.fixed(1000),
611
+ Schedule.recurs(30),
612
+ ]),
609
613
  }),
610
614
  Effect.map((r) => r.Tags ?? {}),
611
615
  Effect.catch(() => Effect.succeed({} as Record<string, string>)),
@@ -631,9 +635,10 @@ export const QueueProvider = () =>
631
635
  .pipe(
632
636
  Effect.retry({
633
637
  while: (e) => e._tag === "QueueDoesNotExist",
634
- schedule: Schedule.fixed(1000).pipe(
635
- Schedule.both(Schedule.recurs(30)),
636
- ),
638
+ schedule: Schedule.max([
639
+ Schedule.fixed(1000),
640
+ Schedule.recurs(30),
641
+ ]),
637
642
  }),
638
643
  );
639
644
  }
@@ -643,9 +648,10 @@ export const QueueProvider = () =>
643
648
  .pipe(
644
649
  Effect.retry({
645
650
  while: (e) => e._tag === "QueueDoesNotExist",
646
- schedule: Schedule.fixed(1000).pipe(
647
- Schedule.both(Schedule.recurs(30)),
648
- ),
651
+ schedule: Schedule.max([
652
+ Schedule.fixed(1000),
653
+ Schedule.recurs(30),
654
+ ]),
649
655
  }),
650
656
  );
651
657
  }
@@ -416,7 +416,7 @@ const ensureStateBucket = (bucket: string, region: string) =>
416
416
  .headBucket({ Bucket: bucket })
417
417
  .pipe(
418
418
  Effect.retry(
419
- Schedule.spaced("1 second").pipe(Schedule.both(Schedule.recurs(15))),
419
+ Schedule.max([Schedule.spaced("1 second"), Schedule.recurs(15)]),
420
420
  ),
421
421
  );
422
422
  }).pipe(
@@ -430,8 +430,9 @@ const ensureStateBucket = (bucket: string, region: string) =>
430
430
  e._tag === "OperationAborted" ||
431
431
  e._tag === "NoSuchBucket" ||
432
432
  e._tag === "NotFound",
433
- schedule: Schedule.spaced("2 seconds").pipe(
434
- Schedule.both(Schedule.recurs(10)),
435
- ),
433
+ schedule: Schedule.max([
434
+ Schedule.spaced("2 seconds"),
435
+ Schedule.recurs(10),
436
+ ]),
436
437
  }),
437
438
  );
@@ -380,12 +380,16 @@ const retryForBucketReadiness = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
380
380
  effect.pipe(
381
381
  Effect.retry({
382
382
  while: isMissingBucket,
383
- schedule: Schedule.exponential("100 millis").pipe(
384
- Schedule.both(Schedule.recurs(30)),
385
- Schedule.map(([duration]) =>
386
- Duration.isGreaterThan(duration, Duration.seconds(2))
387
- ? Duration.seconds(2)
388
- : duration,
383
+ schedule: Schedule.max([
384
+ Schedule.exponential("100 millis"),
385
+ Schedule.recurs(30),
386
+ ]).pipe(
387
+ Schedule.modifyDelay(({ duration }) =>
388
+ Effect.succeed(
389
+ Duration.isGreaterThan(duration, Duration.seconds(2))
390
+ ? Duration.seconds(2)
391
+ : duration,
392
+ ),
389
393
  ),
390
394
  ),
391
395
  }),
package/src/Apply.ts CHANGED
@@ -584,6 +584,7 @@ const executeNode = (
584
584
  attr = yield* node.provider
585
585
  .precreate({
586
586
  id: logicalId,
587
+ fqn,
587
588
  news: node.props,
588
589
  session: scopedSession,
589
590
  instanceId,
@@ -643,6 +644,7 @@ const executeNode = (
643
644
  attr = yield* node.provider
644
645
  .reconcile({
645
646
  id: logicalId,
647
+ fqn,
646
648
  news,
647
649
  instanceId,
648
650
  bindings: bindingOutputs,
@@ -765,6 +767,7 @@ const executeNode = (
765
767
  const attr = yield* node.provider
766
768
  .reconcile({
767
769
  id: logicalId,
770
+ fqn,
768
771
  news,
769
772
  instanceId,
770
773
  bindings: bindingOutputs,
@@ -887,6 +890,7 @@ const executeNode = (
887
890
  yield* node.provider
888
891
  .delete({
889
892
  id: logicalId,
893
+ fqn,
890
894
  instanceId: old.instanceId,
891
895
  olds: old.props as never,
892
896
  output: old.attr,
@@ -933,6 +937,7 @@ const executeNode = (
933
937
  attr = yield* node.provider
934
938
  .precreate({
935
939
  id: logicalId,
940
+ fqn,
936
941
  news: node.props,
937
942
  session: scopedSession,
938
943
  instanceId,
@@ -993,6 +998,7 @@ const executeNode = (
993
998
  attr = yield* node.provider
994
999
  .reconcile({
995
1000
  id: logicalId,
1001
+ fqn,
996
1002
  news,
997
1003
  instanceId,
998
1004
  bindings: bindingOutputs,
@@ -1346,6 +1352,7 @@ const converge = Effect.fn(function* (
1346
1352
  const attr = yield* node.provider
1347
1353
  .reconcile({
1348
1354
  id: logicalId,
1355
+ fqn,
1349
1356
  news: newProps,
1350
1357
  instanceId,
1351
1358
  bindings: newBindings,
@@ -1648,6 +1655,7 @@ const collectGarbage = Effect.fn(function* (
1648
1655
  yield* provider
1649
1656
  .delete({
1650
1657
  id: logicalId,
1658
+ fqn,
1651
1659
  instanceId,
1652
1660
  olds: props as never,
1653
1661
  output: attr,
@@ -5,6 +5,17 @@ import * as Schema from "effect/Schema";
5
5
  import * as Semaphore from "effect/Semaphore";
6
6
  import { withLock } from "./Lock.ts";
7
7
 
8
+ /**
9
+ * Canonical web host for OAuth provider-agnostic landing pages
10
+ * (`/auth/success`, `/auth/error`). The CLI's loopback server 302s the
11
+ * browser to one of these after handling the OAuth callback. Centralized
12
+ * here so the redirect target lives in exactly one place across all
13
+ * provider OAuth clients.
14
+ */
15
+ export const AUTH_LANDING_HOST = "https://v2.alchemy.run";
16
+ export const AUTH_SUCCESS_URL = `${AUTH_LANDING_HOST}/auth/success`;
17
+ export const AUTH_ERROR_URL = `${AUTH_LANDING_HOST}/auth/error`;
18
+
8
19
  /**
9
20
  * Methods on an {@link AuthProviderImpl} that mutate (or could trigger
10
21
  * mutation of) on-disk credentials. The factory wraps these in a
@@ -328,9 +328,6 @@ export const AxiomAuth = AuthProviderLayer<
328
328
  Match.exhaustive,
329
329
  );
330
330
  }),
331
- Effect.catch((e) =>
332
- Console.error(` Failed to retrieve credentials: ${e}`),
333
- ),
334
331
  );
335
332
 
336
333
  return {
@@ -1,6 +1,5 @@
1
1
  import type { NonEmptyArray } from "effect/Array";
2
2
  import * as Cause from "effect/Cause";
3
- import * as Deferred from "effect/Deferred";
4
3
  import * as Effect from "effect/Effect";
5
4
  import * as FileSystem from "effect/FileSystem";
6
5
  import * as Path from "effect/Path";
@@ -45,11 +44,18 @@ export const viteBuildOutputPlugin = Effect.fn(function* ({
45
44
  string,
46
45
  Effect.Effect<BundleFile, BundleError>
47
46
  >();
48
- const deferred = yield* Deferred.make<ViteBuildOutput, BundleError>();
49
47
 
50
48
  const plugin: vite.Plugin = {
51
49
  name: "alchemy:build-output",
52
50
  sharedDuringBuild: true,
51
+ // Collect the client output directory and server chunks as each
52
+ // environment writes its bundle. We deliberately do NOT resolve the build
53
+ // result from a `buildApp` hook: on Vite 8, when a project declares no
54
+ // `builder.buildApp` (e.g. a plain client-only SPA), `builder.buildApp()`
55
+ // runs post-order `buildApp` hooks *before* the default environment builds,
56
+ // so a hook fires while the output is still empty (issue #792). Instead,
57
+ // `viteBuild` reads `output` *after* `builder.buildApp()` resolves — by
58
+ // which point every environment that actually built has run `writeBundle`.
53
59
  async writeBundle(_, bundle) {
54
60
  if (this.environment.name === "client") {
55
61
  clientDirectory = path.resolve(
@@ -107,18 +113,6 @@ export const viteBuildOutputPlugin = Effect.fn(function* ({
107
113
  }),
108
114
  );
109
115
  },
110
- buildApp: {
111
- order: "post",
112
- async handler() {
113
- Deferred.doneUnsafe(
114
- deferred,
115
- Effect.succeed({
116
- clientDirectory,
117
- serverBundle: makeServerBundle(),
118
- }),
119
- );
120
- },
121
- },
122
116
  };
123
117
 
124
118
  // The server bundle may include chunks from more than one Vite environment, so we need to prefix them with the environment-specific output directory.
@@ -199,6 +193,13 @@ export const viteBuildOutputPlugin = Effect.fn(function* ({
199
193
 
200
194
  return {
201
195
  plugin,
202
- output: Deferred.await(deferred),
196
+ // Read lazily so callers observe the state collected during the build.
197
+ // Only safe to await *after* `builder.buildApp()` has resolved.
198
+ output: Effect.sync(
199
+ (): ViteBuildOutput => ({
200
+ clientDirectory,
201
+ serverBundle: makeServerBundle(),
202
+ }),
203
+ ),
203
204
  };
204
205
  });