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
@@ -391,9 +391,10 @@ const waitForAddonActive = Effect.fn(function* ({
391
391
  }),
392
392
  Effect.retry({
393
393
  while: (error) => error instanceof AddonNotReady,
394
- schedule: Schedule.exponential("1 second").pipe(
395
- Schedule.both(Schedule.recurs(120)),
396
- ),
394
+ schedule: Schedule.max([
395
+ Schedule.exponential("1 second"),
396
+ Schedule.recurs(120),
397
+ ]),
397
398
  }),
398
399
  );
399
400
  });
@@ -416,9 +417,10 @@ const waitForAddonDeleted = Effect.fn(function* ({
416
417
  ),
417
418
  Effect.retry({
418
419
  while: (error) => error instanceof AddonStillExists,
419
- schedule: Schedule.exponential("1 second").pipe(
420
- Schedule.both(Schedule.recurs(120)),
421
- ),
420
+ schedule: Schedule.max([
421
+ Schedule.exponential("1 second"),
422
+ Schedule.recurs(120),
423
+ ]),
422
424
  }),
423
425
  );
424
426
  });
@@ -163,9 +163,10 @@ const normalizeTags = (tags: Record<string, string | undefined> | undefined) =>
163
163
  const jsonEqual = (a: unknown, b: unknown) =>
164
164
  JSON.stringify(a ?? undefined) === JSON.stringify(b ?? undefined);
165
165
 
166
- const updateRetrySchedule = Schedule.exponential("1 second").pipe(
167
- Schedule.both(Schedule.recurs(120)),
168
- );
166
+ const updateRetrySchedule = Schedule.max([
167
+ Schedule.exponential("1 second"),
168
+ Schedule.recurs(120),
169
+ ]);
169
170
 
170
171
  const getKubernetesConnection = (
171
172
  state: Pick<
@@ -399,9 +399,10 @@ export const TargetGroupProvider = () =>
399
399
  .pipe(
400
400
  Effect.retry({
401
401
  while: (e) => e._tag === "ResourceInUseException",
402
- schedule: Schedule.spaced("3 seconds").pipe(
403
- Schedule.both(Schedule.recurs(8)),
404
- ),
402
+ schedule: Schedule.max([
403
+ Schedule.spaced("3 seconds"),
404
+ Schedule.recurs(8),
405
+ ]),
405
406
  }),
406
407
  Effect.catchTag("ResourceInUseException", () => Effect.void),
407
408
  );
@@ -264,9 +264,10 @@ export const TrustStoreProvider = () =>
264
264
  // eventual-consistency window.
265
265
  Effect.retry({
266
266
  while: (e) => e._tag === "TrustStoreInUseException",
267
- schedule: Schedule.spaced("3 seconds").pipe(
268
- Schedule.both(Schedule.recurs(8)),
269
- ),
267
+ schedule: Schedule.max([
268
+ Schedule.spaced("3 seconds"),
269
+ Schedule.recurs(8),
270
+ ]),
270
271
  }),
271
272
  Effect.catchTag("TrustStoreNotFoundException", () => Effect.void),
272
273
  Effect.catchTag("TrustStoreInUseException", () => Effect.void),
@@ -71,10 +71,10 @@ export const SAMLProvider = Resource<SAMLProvider>("AWS.IAM.SAMLProvider");
71
71
  // until the prior delete settles. A bounded retry rides out that window; a
72
72
  // well-formed metadata document never fails persistently, so this never masks a
73
73
  // genuine bad-input error for longer than the small budget.
74
- const transientWriteSchedule = Schedule.exponential(500).pipe(
75
- Schedule.jittered,
76
- Schedule.both(Schedule.recurs(6)),
77
- );
74
+ const transientWriteSchedule = Schedule.max([
75
+ Schedule.exponential(500).pipe(Schedule.jittered),
76
+ Schedule.recurs(6),
77
+ ]);
78
78
  const isTransientWriteError = (error: {
79
79
  _tag: "ValidationError" | "ConcurrentModificationException" | (string & {});
80
80
  }) =>
@@ -384,9 +384,10 @@ const waitForAssignmentCreation = (instanceArn: string, requestId: string) =>
384
384
  }).pipe(
385
385
  Effect.retry({
386
386
  while: (error: any) => error?._tag === "AssignmentCreationInProgress",
387
- schedule: Schedule.spaced("2 seconds").pipe(
388
- Schedule.both(Schedule.recurs(120)),
389
- ),
387
+ schedule: Schedule.max([
388
+ Schedule.spaced("2 seconds"),
389
+ Schedule.recurs(120),
390
+ ]),
390
391
  }),
391
392
  );
392
393
 
@@ -418,8 +419,9 @@ const waitForAssignmentDeletion = (instanceArn: string, requestId: string) =>
418
419
  }).pipe(
419
420
  Effect.retry({
420
421
  while: (error: any) => error?._tag === "AssignmentDeletionInProgress",
421
- schedule: Schedule.spaced("2 seconds").pipe(
422
- Schedule.both(Schedule.recurs(120)),
423
- ),
422
+ schedule: Schedule.max([
423
+ Schedule.spaced("2 seconds"),
424
+ Schedule.recurs(120),
425
+ ]),
424
426
  }),
425
427
  );
@@ -11,9 +11,7 @@ export const retryIdentityCenter = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
11
11
  error?._tag === "ConflictException" ||
12
12
  error?._tag === "ThrottlingException" ||
13
13
  error?._tag === "InternalServerException",
14
- schedule: Schedule.exponential(200).pipe(
15
- Schedule.both(Schedule.recurs(8)),
16
- ),
14
+ schedule: Schedule.max([Schedule.exponential(200), Schedule.recurs(8)]),
17
15
  }),
18
16
  );
19
17
 
@@ -213,6 +213,7 @@ const isKmsEventuallyConsistent = (error: { _tag: string }) =>
213
213
  error._tag === "KMSInvalidStateException" ||
214
214
  error._tag === "NotFoundException";
215
215
 
216
- const kmsRetrySchedule = Schedule.exponential(250).pipe(
217
- Schedule.both(Schedule.recurs(7)),
218
- );
216
+ const kmsRetrySchedule = Schedule.max([
217
+ Schedule.exponential(250),
218
+ Schedule.recurs(7),
219
+ ]);
@@ -586,6 +586,7 @@ class KmsKeyNotConverged extends Error {
586
586
  readonly _tag = "KmsKeyNotConverged";
587
587
  }
588
588
 
589
- const kmsRetrySchedule = Schedule.exponential(250).pipe(
590
- Schedule.both(Schedule.recurs(7)),
591
- );
589
+ const kmsRetrySchedule = Schedule.max([
590
+ Schedule.exponential(250),
591
+ Schedule.recurs(7),
592
+ ]);
@@ -414,9 +414,7 @@ const waitForStreamActive = (streamName: string) =>
414
414
  Effect.retry({
415
415
  while: (e: { _tag: string }) =>
416
416
  e._tag === "StreamNotActive" || e._tag === "ParseError",
417
- schedule: Schedule.exponential(500).pipe(
418
- Schedule.both(Schedule.recurs(60)),
419
- ),
417
+ schedule: Schedule.max([Schedule.exponential(500), Schedule.recurs(60)]),
420
418
  }),
421
419
  );
422
420
 
@@ -430,9 +428,7 @@ const waitForStreamDeleted = (streamName: string) =>
430
428
  Effect.retry({
431
429
  while: (e: { _tag: string }) =>
432
430
  e._tag === "StreamStillExists" || e._tag === "ParseError",
433
- schedule: Schedule.exponential(500).pipe(
434
- Schedule.both(Schedule.recurs(60)),
435
- ),
431
+ schedule: Schedule.max([Schedule.exponential(500), Schedule.recurs(60)]),
436
432
  }),
437
433
  Effect.catchTag("ResourceNotFoundException", () => Effect.void),
438
434
  );
@@ -178,9 +178,7 @@ const adoptExistingConsumer = Effect.fn(function* (
178
178
  }).pipe(
179
179
  Effect.retry({
180
180
  while: (e) => e._tag === "ConsumerRegistryNotConsistent",
181
- schedule: Schedule.exponential(250).pipe(
182
- Schedule.both(Schedule.recurs(8)),
183
- ),
181
+ schedule: Schedule.max([Schedule.exponential(250), Schedule.recurs(8)]),
184
182
  }),
185
183
  Effect.catchTag("ConsumerRegistryNotConsistent", () =>
186
184
  Effect.fail(
@@ -210,9 +208,7 @@ const waitForConsumerStatus = (
210
208
  Effect.retry({
211
209
  while: (e: { _tag: string }) =>
212
210
  e._tag === "ConsumerStatusNotReady" || e._tag === "ParseError",
213
- schedule: Schedule.exponential(500).pipe(
214
- Schedule.both(Schedule.recurs(60)),
215
- ),
211
+ schedule: Schedule.max([Schedule.exponential(500), Schedule.recurs(60)]),
216
212
  }),
217
213
  );
218
214
 
@@ -226,9 +222,7 @@ const waitForConsumerDeleted = (consumerArn: string) =>
226
222
  Effect.retry({
227
223
  while: (e: { _tag: string }) =>
228
224
  e._tag === "ConsumerStillExists" || e._tag === "ParseError",
229
- schedule: Schedule.exponential(500).pipe(
230
- Schedule.both(Schedule.recurs(60)),
231
- ),
225
+ schedule: Schedule.max([Schedule.exponential(500), Schedule.recurs(60)]),
232
226
  }),
233
227
  Effect.catchTag("ResourceNotFoundException", () => Effect.void),
234
228
  );
@@ -309,9 +303,10 @@ export const StreamConsumerProvider = () =>
309
303
  // propagation window before giving up.
310
304
  Effect.retry({
311
305
  while: (e) => e._tag === "ResourceNotFoundException",
312
- schedule: Schedule.exponential(500).pipe(
313
- Schedule.both(Schedule.recurs(8)),
314
- ),
306
+ schedule: Schedule.max([
307
+ Schedule.exponential(500),
308
+ Schedule.recurs(8),
309
+ ]),
315
310
  }),
316
311
  Effect.asVoid,
317
312
  Effect.catchTag("ResourceInUseException", () =>
@@ -165,9 +165,10 @@ export const AliasProvider = () =>
165
165
  effect.pipe(
166
166
  Effect.retry({
167
167
  while: (e) => e._tag === "ResourceConflictException",
168
- schedule: Schedule.exponential(500).pipe(
169
- Schedule.both(Schedule.recurs(10)),
170
- ),
168
+ schedule: Schedule.max([
169
+ Schedule.exponential(500),
170
+ Schedule.recurs(10),
171
+ ]),
171
172
  }),
172
173
  );
173
174
 
@@ -35,9 +35,7 @@ const retryOnConflict = <A, E extends { _tag: string }, R>(
35
35
  effect.pipe(
36
36
  Effect.retry({
37
37
  while: (e) => e._tag === "ResourceConflictException",
38
- schedule: Schedule.exponential(500).pipe(
39
- Schedule.both(Schedule.recurs(10)),
40
- ),
38
+ schedule: Schedule.max([Schedule.exponential(500), Schedule.recurs(10)]),
41
39
  }),
42
40
  );
43
41
 
@@ -142,9 +140,7 @@ export const syncEventInvokeConfig = Effect.fn(function* ({
142
140
  "The function execution role does not have permissions to call",
143
141
  ) ??
144
142
  false)),
145
- schedule: Schedule.exponential(500).pipe(
146
- Schedule.both(Schedule.recurs(10)),
147
- ),
143
+ schedule: Schedule.max([Schedule.exponential(500), Schedule.recurs(10)]),
148
144
  }),
149
145
  );
150
146
  });
@@ -716,9 +716,10 @@ export const EventSourceMappingProvider = () =>
716
716
  while: (e: any) =>
717
717
  e._tag === "ResourceInUseException" ||
718
718
  e._tag === "ResourceConflictException",
719
- schedule: Schedule.exponential(100).pipe(
720
- Schedule.both(Schedule.recurs(20)),
721
- ),
719
+ schedule: Schedule.max([
720
+ Schedule.exponential(100),
721
+ Schedule.recurs(20),
722
+ ]),
722
723
  }),
723
724
  retryPermissionsPropagation,
724
725
  retryTransient,
@@ -762,9 +763,10 @@ export const EventSourceMappingProvider = () =>
762
763
  while: (e: any) =>
763
764
  e._tag === "ResourceInUseException" ||
764
765
  e._tag === "ResourceConflictException",
765
- schedule: Schedule.exponential(100).pipe(
766
- Schedule.both(Schedule.recurs(20)),
767
- ),
766
+ schedule: Schedule.max([
767
+ Schedule.exponential(100),
768
+ Schedule.recurs(20),
769
+ ]),
768
770
  }),
769
771
  Effect.catchTag("ResourceNotFoundException", () => Effect.void),
770
772
  );
@@ -818,7 +820,7 @@ const retryTransient: <A, R, Err>(
818
820
  e._tag === "TooManyRequestsException" ||
819
821
  e._tag === "RequestLimitExceeded" ||
820
822
  e._tag === "ResourceInUseException",
821
- schedule: Schedule.exponential(100).pipe(Schedule.both(Schedule.recurs(30))),
823
+ schedule: Schedule.max([Schedule.exponential(100), Schedule.recurs(30)]),
822
824
  });
823
825
 
824
826
  const retryPermissionsPropagation = Effect.retry({
@@ -831,7 +833,7 @@ const retryPermissionsPropagation = Effect.retry({
831
833
  e.message?.includes("Please add Lambda as a Trusted Entity") ||
832
834
  e.message?.includes("Cannot access stream") ||
833
835
  e.message?.includes("Please ensure the role can perform the GetRecords")),
834
- schedule: Schedule.exponential(100).pipe(Schedule.both(Schedule.recurs(30))),
836
+ schedule: Schedule.max([Schedule.exponential(100), Schedule.recurs(30)]),
835
837
  }) as <A, R, Err>(self: Effect.Effect<A, Err, R>) => Effect.Effect<A, Err, R>;
836
838
 
837
839
  const sanitizeAwsTagValue = (value: string) =>
@@ -5,13 +5,17 @@ import type { CreateFunctionRequest } from "@distilled.cloud/aws/lambda";
5
5
  import * as Lambda from "@distilled.cloud/aws/lambda";
6
6
  import { Region } from "@distilled.cloud/aws/Region";
7
7
  import type * as lambda from "aws-lambda";
8
+ import * as Cause from "effect/Cause";
8
9
  import * as Context from "effect/Context";
9
10
  import * as Duration from "effect/Duration";
10
11
  import * as Effect from "effect/Effect";
12
+ import * as Exit from "effect/Exit";
11
13
  import * as FileSystem from "effect/FileSystem";
14
+ import * as Layer from "effect/Layer";
12
15
  import * as Option from "effect/Option";
13
16
  import * as Redacted from "effect/Redacted";
14
17
  import * as Schedule from "effect/Schedule";
18
+ import * as Scope from "effect/Scope";
15
19
  import * as Stream from "effect/Stream";
16
20
  import type { HttpClient } from "effect/unstable/http/HttpClient";
17
21
  import type * as rolldown from "rolldown";
@@ -27,7 +31,7 @@ import {
27
31
  } from "../../Bundle/InstalledPackages.ts";
28
32
  import * as TempRoot from "../../Bundle/TempRoot.ts";
29
33
  import { deepEqual, isResolved } from "../../Diff.ts";
30
- import type { HttpEffect } from "../../Http.ts";
34
+ import { isScopeEjected, type HttpEffect } from "../../Http.ts";
31
35
  import * as Output from "../../Output.ts";
32
36
  import { createPhysicalName } from "../../PhysicalName.ts";
33
37
  import { Platform, type Main, type PlatformProps } from "../../Platform.ts";
@@ -291,6 +295,20 @@ const matchesConfiguredExternal = (
291
295
  * for plain handler patterns, or the
292
296
  * [Lambda guide](/aws/compute/lambda)
293
297
  * for the full Effect-based approach with bindings, event sources, and sinks.
298
+ *
299
+ * :::caution[Request finalizers block the response — there is no `waitUntil` on Lambda]
300
+ * `Effect.addFinalizer` in a handler runs **before the response is
301
+ * returned**: a buffered invocation's response is not released until the
302
+ * Invoke phase completes, and no deferral scheme is reliable (dangling
303
+ * promises are dropped on crash/timeout resets and their sockets rarely
304
+ * survive the freeze — silent data loss). Keep request finalizers cheap
305
+ * (closing a pool is milliseconds), and write anything that must not be
306
+ * lost durably — a queue, a table — inside the handler itself. Init-level
307
+ * finalizers instead run in the 500 ms `SIGTERM` window at sandbox
308
+ * shutdown, which the generated entry obtains by registering an internal
309
+ * extension. See
310
+ * [Sandbox scope vs invocation scope](/aws/compute/lambda#sandbox-scope-vs-invocation-scope).
311
+ * :::
294
312
  * @resource
295
313
  * @section Async Functions
296
314
  * Point `main` at a file that exports a standard Lambda handler. No
@@ -641,11 +659,39 @@ export const Function: Platform<
641
659
  for (const handler of handlers) {
642
660
  const eff = handler(event);
643
661
  if (Effect.isEffect(eff)) {
644
- return await eff.pipe(
645
- Effect.provideService(HandlerContext, context),
662
+ // Each invocation gets a fresh request scope, matching the
663
+ // Worker / Durable Object / Workflow bridges. The scope is
664
+ // settled inline before returning: a buffered Lambda
665
+ // response is not released to the caller until the Invoke
666
+ // phase completes, so deferring cleanup (e.g. via an
667
+ // INVOKE-subscribed extension window) shows up as response
668
+ // latency anyway — keep request finalizers fast. A failing
669
+ // finalizer is logged and ignored so it can't mask the
670
+ // invocation's outcome.
671
+ const scope = Scope.makeUnsafe();
672
+ const exit = await eff.pipe(
673
+ Effect.provide(
674
+ Layer.mergeAll(
675
+ Layer.succeed(HandlerContext, context),
676
+ Layer.succeed(Scope.Scope, scope),
677
+ ),
678
+ ),
646
679
  Effect.tap(Effect.logDebug),
647
- Effect.runPromise,
680
+ Effect.runPromiseExit,
648
681
  );
682
+ if (!isScopeEjected(scope)) {
683
+ await Scope.close(scope, exit).pipe(
684
+ Effect.ignoreCause({
685
+ log: "Warn",
686
+ message: "Lambda invocation scope close failed",
687
+ }),
688
+ Effect.runPromise,
689
+ );
690
+ }
691
+ if (Exit.isSuccess(exit)) {
692
+ return exit.value;
693
+ }
694
+ throw Cause.squash(exit.cause);
649
695
  }
650
696
  }
651
697
  throw new Error("No event handler found");
@@ -895,19 +941,33 @@ export const FunctionProvider = () =>
895
941
  import { layer as nodeServicesLayer } from "@effect/platform-node/NodeServices";
896
942
  import { Stack } from "alchemy/Stack";
897
943
  import { makeEntrypointLayer } from "alchemy/Runtime";
944
+ import { registerLambdaExtension } from "alchemy/AWS/Lambda/RuntimeExtension";
898
945
  import * as Config from "effect/Config";
899
946
  import * as ConfigProvider from "effect/ConfigProvider";
900
947
  import * as Credentials from "@distilled.cloud/aws/Credentials";
901
948
  import * as Effect from "effect/Effect";
949
+ import * as Exit from "effect/Exit";
902
950
  import { layer as fetchHttpClientLayer } from "effect/unstable/http/FetchHttpClient";
903
951
  import * as Layer from "effect/Layer";
904
952
  import * as Logger from "effect/Logger";
905
953
  import * as Region from "@distilled.cloud/aws/Region";
906
954
  import * as Context from "effect/Context";
955
+ import * as Scope from "effect/Scope";
907
956
  import { MinimumLogLevel } from "effect/References";
908
957
 
909
958
  import entrypoint from ${JSON.stringify(importPath)};
910
959
 
960
+ // Register the internal extension: it buys the Shutdown phase (SIGTERM +
961
+ // 500 ms) — without any registered extension the sandbox is killed with no
962
+ // signal at all, and init-level finalizers would never run.
963
+ await registerLambdaExtension();
964
+
965
+ // Instance scope: the sandbox-lifetime layer build lives under it, and it is
966
+ // closed on SIGTERM (Lambda's Shutdown phase) so init-level finalizers run
967
+ // before the sandbox dies. Each invocation still gets its own request scope
968
+ // from the handler dispatch.
969
+ const instanceScope = Scope.makeUnsafe();
970
+
911
971
  const tag = Context.Service("${Self.key}")
912
972
  const layer = makeEntrypointLayer(tag, entrypoint);
913
973
 
@@ -933,33 +993,52 @@ const stack = Layer.effect(
933
993
  )
934
994
  );
935
995
 
936
- const handlerEffect = tag.pipe(
937
- Effect.flatMap(func => func.RuntimeContext.exports),
938
- Effect.flatMap(exports => exports.handler),
939
- Effect.provide(
940
- layer.pipe(
941
- Layer.provideMerge(stack),
942
- Layer.provideMerge(Credentials.fromEnv()),
943
- Layer.provideMerge(Region.fromEnv()),
944
- Layer.provideMerge(platform),
945
- Layer.provideMerge(
946
- Layer.succeed(
947
- ConfigProvider.ConfigProvider,
948
- ConfigProvider.fromEnv()
949
- )
950
- ),
951
- Layer.provideMerge(
952
- Layer.succeed(
953
- MinimumLogLevel,
954
- process.env.DEBUG ? "Debug" : "Info",
955
- )
956
- ),
996
+ const entryLayer = layer.pipe(
997
+ Layer.provideMerge(stack),
998
+ Layer.provideMerge(Credentials.fromEnv()),
999
+ Layer.provideMerge(Region.fromEnv()),
1000
+ Layer.provideMerge(platform),
1001
+ Layer.provideMerge(
1002
+ Layer.succeed(
1003
+ ConfigProvider.ConfigProvider,
1004
+ ConfigProvider.fromEnv()
1005
+ )
1006
+ ),
1007
+ Layer.provideMerge(
1008
+ Layer.succeed(
1009
+ MinimumLogLevel,
1010
+ process.env.DEBUG ? "Debug" : "Info",
1011
+ )
1012
+ ),
1013
+ );
1014
+
1015
+ // Build the layer stack against the instance scope (not a transient
1016
+ // \`Effect.provide\`/\`Effect.scoped\` region) so services and init-level
1017
+ // finalizers live for the sandbox and are released at Shutdown.
1018
+ const handlerEffect = Layer.buildWithScope(entryLayer, instanceScope).pipe(
1019
+ Effect.flatMap((context) =>
1020
+ tag.pipe(
1021
+ Effect.flatMap(func => func.RuntimeContext.exports),
1022
+ Effect.flatMap(exports => exports.handler),
1023
+ Effect.provideContext(context),
957
1024
  )
958
1025
  ),
959
- Effect.scoped
1026
+ Scope.provide(instanceScope),
960
1027
  );
961
1028
 
962
- export default await Effect.runPromise(handlerEffect)
1029
+ const handler = await Effect.runPromise(handlerEffect);
1030
+
1031
+ // Lambda's Shutdown phase: close the instance scope so init-level
1032
+ // finalizers run, then exit inside the 500 ms budget. SIGKILL follows if we
1033
+ // overstay, so finalizers must be fast and best-effort.
1034
+ process.on("SIGTERM", () => {
1035
+ console.log("[alchemy] SIGTERM — closing instance scope");
1036
+ Effect.runPromise(Scope.close(instanceScope, Exit.void))
1037
+ .catch((error) => console.error("[alchemy] shutdown finalizers failed", error))
1038
+ .finally(() => process.exit(0));
1039
+ });
1040
+
1041
+ export default handler;
963
1042
  `,
964
1043
  ),
965
1044
  );
@@ -1057,9 +1136,10 @@ export default await Effect.runPromise(handlerEffect)
1057
1136
  while: (e: any) =>
1058
1137
  e._tag === "ResourceConflictException" ||
1059
1138
  e._tag === "TooManyRequestsException",
1060
- schedule: Schedule.exponential(100).pipe(
1061
- Schedule.both(Schedule.recurs(30)),
1062
- ),
1139
+ schedule: Schedule.max([
1140
+ Schedule.exponential(100),
1141
+ Schedule.recurs(30),
1142
+ ]),
1063
1143
  }) as <A, R, Err>(
1064
1144
  self: Effect.Effect<A, Err, R>,
1065
1145
  ) => Effect.Effect<A, Err, R>;
@@ -1295,7 +1375,7 @@ export default await Effect.runPromise(handlerEffect)
1295
1375
  Effect.retry({
1296
1376
  while: (e) => isRolePropagationError(e),
1297
1377
  schedule: Schedule.fixed(1000).pipe(
1298
- Schedule.tapOutput(() => noteRolePropagationWait()),
1378
+ Schedule.tap(() => noteRolePropagationWait()),
1299
1379
  ),
1300
1380
  }),
1301
1381
  Effect.catchTags({
@@ -413,9 +413,10 @@ export const MicrovmImageProvider = () =>
413
413
  while: (e): e is ValidationException =>
414
414
  e._tag === "ValidationException" &&
415
415
  e.message.includes("running MicroVMs"),
416
- schedule: Schedule.fixed(5_000).pipe(
417
- Schedule.both(Schedule.recurs(12)),
418
- ),
416
+ schedule: Schedule.max([
417
+ Schedule.fixed(5_000),
418
+ Schedule.recurs(12),
419
+ ]),
419
420
  }),
420
421
  );
421
422
  yield* waitForDeleted(output.imageArn, session);
@@ -489,9 +490,8 @@ const terminateRunningMicrovms = Effect.fn(function* (
489
490
  ),
490
491
  Effect.retry({
491
492
  while: (e) => e._tag === "MicrovmsActive",
492
- schedule: Schedule.fixed(5_000).pipe(
493
- Schedule.both(Schedule.recurs(24)),
494
- Schedule.tapOutput(() =>
493
+ schedule: Schedule.max([Schedule.fixed(5_000), Schedule.recurs(24)]).pipe(
494
+ Schedule.tap(() =>
495
495
  session.note("Waiting for MicroVMs to terminate..."),
496
496
  ),
497
497
  ),
@@ -557,12 +557,12 @@ const waitForReady = (imageArn: string, session: ScopedPlanStatusSession) =>
557
557
  }).pipe(
558
558
  Effect.retry({
559
559
  while: (e) => e._tag === "ImageBuilding",
560
- schedule: Schedule.fixed(10_000).pipe(
561
- Schedule.both(Schedule.recurs(72)), // up to ~12 minutes
562
- Schedule.tapOutput(([, attempt]) =>
563
- session.note(
564
- `Waiting for MicroVM image build... (${(attempt + 1) * 10}s)`,
565
- ),
560
+ schedule: Schedule.max([
561
+ Schedule.fixed(10_000),
562
+ Schedule.recurs(72),
563
+ ]).pipe(
564
+ Schedule.tap(({ attempt }) =>
565
+ session.note(`Waiting for MicroVM image build... (${attempt * 10}s)`),
566
566
  ),
567
567
  ),
568
568
  }),
@@ -585,11 +585,13 @@ const waitForDeleted = (imageArn: string, session: ScopedPlanStatusSession) =>
585
585
  }).pipe(
586
586
  Effect.retry({
587
587
  while: (e) => e._tag === "ImageBuilding",
588
- schedule: Schedule.fixed(10_000).pipe(
589
- Schedule.both(Schedule.recurs(72)),
590
- Schedule.tapOutput(([, attempt]) =>
588
+ schedule: Schedule.max([
589
+ Schedule.fixed(10_000),
590
+ Schedule.recurs(72),
591
+ ]).pipe(
592
+ Schedule.tap(({ attempt }) =>
591
593
  session.note(
592
- `Waiting for MicroVM image deletion... (${(attempt + 1) * 10}s)`,
594
+ `Waiting for MicroVM image deletion... (${attempt * 10}s)`,
593
595
  ),
594
596
  ),
595
597
  ),
@@ -272,9 +272,7 @@ const retryRolePropagation =
272
272
  ),
273
273
  Effect.retry({
274
274
  while: (e) => isOperatorRolePropagationError(e),
275
- schedule: Schedule.fixed(1_000).pipe(
276
- Schedule.both(Schedule.recurs(50)), // up to ~50 seconds
277
- ),
275
+ schedule: Schedule.max([Schedule.fixed(1_000), Schedule.recurs(50)]),
278
276
  }),
279
277
  );
280
278
 
@@ -444,11 +442,13 @@ const waitForActive = (identifier: string, session: ScopedPlanStatusSession) =>
444
442
  }).pipe(
445
443
  Effect.retry({
446
444
  while: (e) => e._tag === "ConnectorPending",
447
- schedule: Schedule.fixed(10_000).pipe(
448
- Schedule.both(Schedule.recurs(72)), // up to ~12 minutes
449
- Schedule.tapOutput(([, attempt]) =>
445
+ schedule: Schedule.max([
446
+ Schedule.fixed(10_000),
447
+ Schedule.recurs(72),
448
+ ]).pipe(
449
+ Schedule.tap(({ attempt }) =>
450
450
  session.note(
451
- `Waiting for network connector to become ACTIVE... (${(attempt + 1) * 10}s)`,
451
+ `Waiting for network connector to become ACTIVE... (${attempt * 10}s)`,
452
452
  ),
453
453
  ),
454
454
  ),
@@ -481,11 +481,13 @@ const waitForUpdate = (identifier: string, session: ScopedPlanStatusSession) =>
481
481
  }).pipe(
482
482
  Effect.retry({
483
483
  while: (e) => e._tag === "ConnectorPending",
484
- schedule: Schedule.fixed(10_000).pipe(
485
- Schedule.both(Schedule.recurs(72)),
486
- Schedule.tapOutput(([, attempt]) =>
484
+ schedule: Schedule.max([
485
+ Schedule.fixed(10_000),
486
+ Schedule.recurs(72),
487
+ ]).pipe(
488
+ Schedule.tap(({ attempt }) =>
487
489
  session.note(
488
- `Waiting for network connector update... (${(attempt + 1) * 10}s)`,
490
+ `Waiting for network connector update... (${attempt * 10}s)`,
489
491
  ),
490
492
  ),
491
493
  ),
@@ -517,11 +519,13 @@ const waitForDeleted = (identifier: string, session: ScopedPlanStatusSession) =>
517
519
  }).pipe(
518
520
  Effect.retry({
519
521
  while: (e) => e._tag === "ConnectorPending",
520
- schedule: Schedule.fixed(10_000).pipe(
521
- Schedule.both(Schedule.recurs(72)),
522
- Schedule.tapOutput(([, attempt]) =>
522
+ schedule: Schedule.max([
523
+ Schedule.fixed(10_000),
524
+ Schedule.recurs(72),
525
+ ]).pipe(
526
+ Schedule.tap(({ attempt }) =>
523
527
  session.note(
524
- `Waiting for network connector deletion... (${(attempt + 1) * 10}s)`,
528
+ `Waiting for network connector deletion... (${attempt * 10}s)`,
525
529
  ),
526
530
  ),
527
531
  ),