alchemy 2.0.0-beta.57 → 2.0.0-beta.58

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 (1507) hide show
  1. package/README.md +1 -1
  2. package/bin/exec.js +68 -49
  3. package/bin/exec.js.map +1 -1
  4. package/lib/AI/Agent.d.ts +30 -0
  5. package/lib/AI/Agent.d.ts.map +1 -0
  6. package/lib/AI/Agent.js +14 -0
  7. package/lib/AI/Agent.js.map +1 -0
  8. package/lib/AI/Parameter.d.ts +19 -0
  9. package/lib/AI/Parameter.d.ts.map +1 -0
  10. package/lib/AI/Parameter.js +12 -0
  11. package/lib/AI/Parameter.js.map +1 -0
  12. package/lib/AI/Tool.d.ts +37 -0
  13. package/lib/AI/Tool.d.ts.map +1 -0
  14. package/lib/AI/Tool.js +11 -0
  15. package/lib/AI/Tool.js.map +1 -0
  16. package/lib/AI/index.d.ts +4 -0
  17. package/lib/AI/index.d.ts.map +1 -0
  18. package/lib/AI/index.js +4 -0
  19. package/lib/AI/index.js.map +1 -0
  20. package/lib/AWS/ACM/Certificate.d.ts +4 -0
  21. package/lib/AWS/ACM/Certificate.d.ts.map +1 -1
  22. package/lib/AWS/ACM/Certificate.js +18 -11
  23. package/lib/AWS/ACM/Certificate.js.map +1 -1
  24. package/lib/AWS/Assets.js +1 -1
  25. package/lib/AWS/Assets.js.map +1 -1
  26. package/lib/AWS/AuthProvider.js +3 -3
  27. package/lib/AWS/AuthProvider.js.map +1 -1
  28. package/lib/AWS/AutoScaling/LaunchTemplate.js +1 -1
  29. package/lib/AWS/AutoScaling/LaunchTemplate.js.map +1 -1
  30. package/lib/AWS/CloudFront/Distribution.js +1 -1
  31. package/lib/AWS/CloudFront/Distribution.js.map +1 -1
  32. package/lib/AWS/CloudWatch/DescribeAlarmContributors.d.ts +4 -3
  33. package/lib/AWS/CloudWatch/DescribeAlarmContributors.d.ts.map +1 -1
  34. package/lib/AWS/CloudWatch/DescribeAlarmContributors.js.map +1 -1
  35. package/lib/AWS/CloudWatch/DescribeAlarmHistory.d.ts +4 -3
  36. package/lib/AWS/CloudWatch/DescribeAlarmHistory.d.ts.map +1 -1
  37. package/lib/AWS/CloudWatch/DescribeAlarmHistory.js.map +1 -1
  38. package/lib/AWS/CloudWatch/DescribeAlarms.d.ts +4 -3
  39. package/lib/AWS/CloudWatch/DescribeAlarms.d.ts.map +1 -1
  40. package/lib/AWS/CloudWatch/DescribeAlarms.js.map +1 -1
  41. package/lib/AWS/CloudWatch/DescribeAlarmsForMetric.d.ts +4 -3
  42. package/lib/AWS/CloudWatch/DescribeAlarmsForMetric.d.ts.map +1 -1
  43. package/lib/AWS/CloudWatch/DescribeAlarmsForMetric.js.map +1 -1
  44. package/lib/AWS/CloudWatch/DescribeAnomalyDetectors.d.ts +4 -3
  45. package/lib/AWS/CloudWatch/DescribeAnomalyDetectors.d.ts.map +1 -1
  46. package/lib/AWS/CloudWatch/DescribeAnomalyDetectors.js.map +1 -1
  47. package/lib/AWS/CloudWatch/DescribeInsightRules.d.ts +4 -3
  48. package/lib/AWS/CloudWatch/DescribeInsightRules.d.ts.map +1 -1
  49. package/lib/AWS/CloudWatch/DescribeInsightRules.js.map +1 -1
  50. package/lib/AWS/CloudWatch/DisableAlarmActions.d.ts +4 -3
  51. package/lib/AWS/CloudWatch/DisableAlarmActions.d.ts.map +1 -1
  52. package/lib/AWS/CloudWatch/DisableAlarmActions.js.map +1 -1
  53. package/lib/AWS/CloudWatch/DisableInsightRules.d.ts +4 -3
  54. package/lib/AWS/CloudWatch/DisableInsightRules.d.ts.map +1 -1
  55. package/lib/AWS/CloudWatch/DisableInsightRules.js.map +1 -1
  56. package/lib/AWS/CloudWatch/EnableAlarmActions.d.ts +4 -3
  57. package/lib/AWS/CloudWatch/EnableAlarmActions.d.ts.map +1 -1
  58. package/lib/AWS/CloudWatch/EnableAlarmActions.js.map +1 -1
  59. package/lib/AWS/CloudWatch/GetAlarmMuteRule.d.ts +4 -3
  60. package/lib/AWS/CloudWatch/GetAlarmMuteRule.d.ts.map +1 -1
  61. package/lib/AWS/CloudWatch/GetAlarmMuteRule.js.map +1 -1
  62. package/lib/AWS/CloudWatch/GetDashboard.d.ts +4 -3
  63. package/lib/AWS/CloudWatch/GetDashboard.d.ts.map +1 -1
  64. package/lib/AWS/CloudWatch/GetDashboard.js.map +1 -1
  65. package/lib/AWS/CloudWatch/GetInsightRuleReport.d.ts +4 -3
  66. package/lib/AWS/CloudWatch/GetInsightRuleReport.d.ts.map +1 -1
  67. package/lib/AWS/CloudWatch/GetInsightRuleReport.js.map +1 -1
  68. package/lib/AWS/CloudWatch/GetMetricData.d.ts +4 -3
  69. package/lib/AWS/CloudWatch/GetMetricData.d.ts.map +1 -1
  70. package/lib/AWS/CloudWatch/GetMetricData.js.map +1 -1
  71. package/lib/AWS/CloudWatch/GetMetricStatistics.d.ts +4 -3
  72. package/lib/AWS/CloudWatch/GetMetricStatistics.d.ts.map +1 -1
  73. package/lib/AWS/CloudWatch/GetMetricStatistics.js.map +1 -1
  74. package/lib/AWS/CloudWatch/GetMetricStream.d.ts +4 -3
  75. package/lib/AWS/CloudWatch/GetMetricStream.d.ts.map +1 -1
  76. package/lib/AWS/CloudWatch/GetMetricStream.js.map +1 -1
  77. package/lib/AWS/CloudWatch/GetMetricWidgetImage.d.ts +4 -3
  78. package/lib/AWS/CloudWatch/GetMetricWidgetImage.d.ts.map +1 -1
  79. package/lib/AWS/CloudWatch/GetMetricWidgetImage.js.map +1 -1
  80. package/lib/AWS/CloudWatch/ListAlarmMuteRules.d.ts +4 -3
  81. package/lib/AWS/CloudWatch/ListAlarmMuteRules.d.ts.map +1 -1
  82. package/lib/AWS/CloudWatch/ListAlarmMuteRules.js.map +1 -1
  83. package/lib/AWS/CloudWatch/ListDashboards.d.ts +4 -3
  84. package/lib/AWS/CloudWatch/ListDashboards.d.ts.map +1 -1
  85. package/lib/AWS/CloudWatch/ListDashboards.js.map +1 -1
  86. package/lib/AWS/CloudWatch/ListManagedInsightRules.d.ts +4 -3
  87. package/lib/AWS/CloudWatch/ListManagedInsightRules.d.ts.map +1 -1
  88. package/lib/AWS/CloudWatch/ListManagedInsightRules.js.map +1 -1
  89. package/lib/AWS/CloudWatch/ListMetricStreams.d.ts +4 -3
  90. package/lib/AWS/CloudWatch/ListMetricStreams.d.ts.map +1 -1
  91. package/lib/AWS/CloudWatch/ListMetricStreams.js.map +1 -1
  92. package/lib/AWS/CloudWatch/ListMetrics.d.ts +4 -3
  93. package/lib/AWS/CloudWatch/ListMetrics.d.ts.map +1 -1
  94. package/lib/AWS/CloudWatch/ListMetrics.js.map +1 -1
  95. package/lib/AWS/CloudWatch/ListTagsForResource.d.ts +4 -3
  96. package/lib/AWS/CloudWatch/ListTagsForResource.d.ts.map +1 -1
  97. package/lib/AWS/CloudWatch/ListTagsForResource.js.map +1 -1
  98. package/lib/AWS/CloudWatch/PutMetricData.d.ts +4 -3
  99. package/lib/AWS/CloudWatch/PutMetricData.d.ts.map +1 -1
  100. package/lib/AWS/CloudWatch/PutMetricData.js.map +1 -1
  101. package/lib/AWS/CloudWatch/SetAlarmState.d.ts +4 -3
  102. package/lib/AWS/CloudWatch/SetAlarmState.d.ts.map +1 -1
  103. package/lib/AWS/CloudWatch/SetAlarmState.js.map +1 -1
  104. package/lib/AWS/Credentials.d.ts +5 -0
  105. package/lib/AWS/Credentials.d.ts.map +1 -1
  106. package/lib/AWS/Credentials.js.map +1 -1
  107. package/lib/AWS/DynamoDB/BatchExecuteStatement.d.ts +4 -3
  108. package/lib/AWS/DynamoDB/BatchExecuteStatement.d.ts.map +1 -1
  109. package/lib/AWS/DynamoDB/BatchExecuteStatement.js.map +1 -1
  110. package/lib/AWS/DynamoDB/BatchGetItem.d.ts +4 -3
  111. package/lib/AWS/DynamoDB/BatchGetItem.d.ts.map +1 -1
  112. package/lib/AWS/DynamoDB/BatchGetItem.js +4 -4
  113. package/lib/AWS/DynamoDB/BatchGetItem.js.map +1 -1
  114. package/lib/AWS/DynamoDB/BatchWriteItem.d.ts +4 -3
  115. package/lib/AWS/DynamoDB/BatchWriteItem.d.ts.map +1 -1
  116. package/lib/AWS/DynamoDB/BatchWriteItem.js +4 -4
  117. package/lib/AWS/DynamoDB/BatchWriteItem.js.map +1 -1
  118. package/lib/AWS/DynamoDB/DeleteItem.d.ts +4 -3
  119. package/lib/AWS/DynamoDB/DeleteItem.d.ts.map +1 -1
  120. package/lib/AWS/DynamoDB/DeleteItem.js.map +1 -1
  121. package/lib/AWS/DynamoDB/DescribeTable.d.ts +4 -3
  122. package/lib/AWS/DynamoDB/DescribeTable.d.ts.map +1 -1
  123. package/lib/AWS/DynamoDB/DescribeTable.js.map +1 -1
  124. package/lib/AWS/DynamoDB/DescribeTimeToLive.d.ts +4 -3
  125. package/lib/AWS/DynamoDB/DescribeTimeToLive.d.ts.map +1 -1
  126. package/lib/AWS/DynamoDB/DescribeTimeToLive.js.map +1 -1
  127. package/lib/AWS/DynamoDB/ExecuteStatement.d.ts +4 -3
  128. package/lib/AWS/DynamoDB/ExecuteStatement.d.ts.map +1 -1
  129. package/lib/AWS/DynamoDB/ExecuteStatement.js.map +1 -1
  130. package/lib/AWS/DynamoDB/ExecuteTransaction.d.ts +4 -3
  131. package/lib/AWS/DynamoDB/ExecuteTransaction.d.ts.map +1 -1
  132. package/lib/AWS/DynamoDB/ExecuteTransaction.js.map +1 -1
  133. package/lib/AWS/DynamoDB/GetItem.d.ts +4 -3
  134. package/lib/AWS/DynamoDB/GetItem.d.ts.map +1 -1
  135. package/lib/AWS/DynamoDB/GetItem.js.map +1 -1
  136. package/lib/AWS/DynamoDB/ListTables.d.ts +4 -3
  137. package/lib/AWS/DynamoDB/ListTables.d.ts.map +1 -1
  138. package/lib/AWS/DynamoDB/ListTables.js.map +1 -1
  139. package/lib/AWS/DynamoDB/ListTagsOfResource.d.ts +4 -3
  140. package/lib/AWS/DynamoDB/ListTagsOfResource.d.ts.map +1 -1
  141. package/lib/AWS/DynamoDB/ListTagsOfResource.js.map +1 -1
  142. package/lib/AWS/DynamoDB/PutItem.d.ts +4 -3
  143. package/lib/AWS/DynamoDB/PutItem.d.ts.map +1 -1
  144. package/lib/AWS/DynamoDB/PutItem.js.map +1 -1
  145. package/lib/AWS/DynamoDB/Query.d.ts +4 -3
  146. package/lib/AWS/DynamoDB/Query.d.ts.map +1 -1
  147. package/lib/AWS/DynamoDB/Query.js.map +1 -1
  148. package/lib/AWS/DynamoDB/RestoreTableToPointInTime.d.ts +4 -3
  149. package/lib/AWS/DynamoDB/RestoreTableToPointInTime.d.ts.map +1 -1
  150. package/lib/AWS/DynamoDB/RestoreTableToPointInTime.js.map +1 -1
  151. package/lib/AWS/DynamoDB/Scan.d.ts +4 -3
  152. package/lib/AWS/DynamoDB/Scan.d.ts.map +1 -1
  153. package/lib/AWS/DynamoDB/Scan.js.map +1 -1
  154. package/lib/AWS/DynamoDB/TransactGetItems.d.ts +4 -3
  155. package/lib/AWS/DynamoDB/TransactGetItems.d.ts.map +1 -1
  156. package/lib/AWS/DynamoDB/TransactGetItems.js +4 -4
  157. package/lib/AWS/DynamoDB/TransactGetItems.js.map +1 -1
  158. package/lib/AWS/DynamoDB/TransactWriteItems.d.ts +4 -3
  159. package/lib/AWS/DynamoDB/TransactWriteItems.d.ts.map +1 -1
  160. package/lib/AWS/DynamoDB/TransactWriteItems.js +5 -5
  161. package/lib/AWS/DynamoDB/TransactWriteItems.js.map +1 -1
  162. package/lib/AWS/DynamoDB/UpdateItem.d.ts +4 -3
  163. package/lib/AWS/DynamoDB/UpdateItem.d.ts.map +1 -1
  164. package/lib/AWS/DynamoDB/UpdateItem.js.map +1 -1
  165. package/lib/AWS/DynamoDB/UpdateTimeToLive.d.ts +4 -3
  166. package/lib/AWS/DynamoDB/UpdateTimeToLive.d.ts.map +1 -1
  167. package/lib/AWS/DynamoDB/UpdateTimeToLive.js.map +1 -1
  168. package/lib/AWS/EC2/Image.js +2 -2
  169. package/lib/AWS/EC2/Image.js.map +1 -1
  170. package/lib/AWS/EC2/Instance.d.ts.map +1 -1
  171. package/lib/AWS/EC2/Instance.js +1 -1
  172. package/lib/AWS/EC2/Instance.js.map +1 -1
  173. package/lib/AWS/EC2/NatGateway.js +1 -1
  174. package/lib/AWS/EC2/NatGateway.js.map +1 -1
  175. package/lib/AWS/EC2/NetworkAcl.js +1 -1
  176. package/lib/AWS/EC2/NetworkAcl.js.map +1 -1
  177. package/lib/AWS/EC2/SecurityGroup.js +1 -1
  178. package/lib/AWS/EC2/SecurityGroup.js.map +1 -1
  179. package/lib/AWS/EC2/VpcEndpoint.js +1 -1
  180. package/lib/AWS/EC2/VpcEndpoint.js.map +1 -1
  181. package/lib/AWS/EC2/hosted.js +2 -2
  182. package/lib/AWS/EC2/hosted.js.map +1 -1
  183. package/lib/AWS/ECS/DescribeTasks.d.ts +4 -3
  184. package/lib/AWS/ECS/DescribeTasks.d.ts.map +1 -1
  185. package/lib/AWS/ECS/DescribeTasks.js.map +1 -1
  186. package/lib/AWS/ECS/ListTasks.d.ts +4 -3
  187. package/lib/AWS/ECS/ListTasks.d.ts.map +1 -1
  188. package/lib/AWS/ECS/ListTasks.js.map +1 -1
  189. package/lib/AWS/ECS/RunTask.d.ts +4 -3
  190. package/lib/AWS/ECS/RunTask.d.ts.map +1 -1
  191. package/lib/AWS/ECS/RunTask.js.map +1 -1
  192. package/lib/AWS/ECS/StopTask.d.ts +4 -3
  193. package/lib/AWS/ECS/StopTask.d.ts.map +1 -1
  194. package/lib/AWS/ECS/StopTask.js.map +1 -1
  195. package/lib/AWS/ECS/Task.js +1 -1
  196. package/lib/AWS/ECS/Task.js.map +1 -1
  197. package/lib/AWS/Environment.d.ts +2 -1
  198. package/lib/AWS/Environment.d.ts.map +1 -1
  199. package/lib/AWS/Environment.js +1 -1
  200. package/lib/AWS/Environment.js.map +1 -1
  201. package/lib/AWS/EventBridge/DescribeEventBus.d.ts +4 -3
  202. package/lib/AWS/EventBridge/DescribeEventBus.d.ts.map +1 -1
  203. package/lib/AWS/EventBridge/DescribeEventBus.js.map +1 -1
  204. package/lib/AWS/EventBridge/DescribeRule.d.ts +4 -3
  205. package/lib/AWS/EventBridge/DescribeRule.d.ts.map +1 -1
  206. package/lib/AWS/EventBridge/DescribeRule.js.map +1 -1
  207. package/lib/AWS/EventBridge/EventSource.d.ts +2 -2
  208. package/lib/AWS/EventBridge/ListEventBuses.d.ts +4 -3
  209. package/lib/AWS/EventBridge/ListEventBuses.d.ts.map +1 -1
  210. package/lib/AWS/EventBridge/ListEventBuses.js.map +1 -1
  211. package/lib/AWS/EventBridge/ListRules.d.ts +4 -3
  212. package/lib/AWS/EventBridge/ListRules.d.ts.map +1 -1
  213. package/lib/AWS/EventBridge/ListRules.js.map +1 -1
  214. package/lib/AWS/EventBridge/ListTargetsByRule.d.ts +4 -3
  215. package/lib/AWS/EventBridge/ListTargetsByRule.d.ts.map +1 -1
  216. package/lib/AWS/EventBridge/ListTargetsByRule.js.map +1 -1
  217. package/lib/AWS/EventBridge/PutEvents.d.ts +4 -3
  218. package/lib/AWS/EventBridge/PutEvents.d.ts.map +1 -1
  219. package/lib/AWS/EventBridge/PutEvents.js.map +1 -1
  220. package/lib/AWS/EventBridge/TestEventPattern.d.ts +4 -3
  221. package/lib/AWS/EventBridge/TestEventPattern.d.ts.map +1 -1
  222. package/lib/AWS/EventBridge/TestEventPattern.js.map +1 -1
  223. package/lib/AWS/EventBridge/ToLambda.d.ts +4 -3
  224. package/lib/AWS/EventBridge/ToLambda.d.ts.map +1 -1
  225. package/lib/AWS/EventBridge/ToLambda.js.map +1 -1
  226. package/lib/AWS/EventBridge/ToQueue.d.ts +4 -3
  227. package/lib/AWS/EventBridge/ToQueue.d.ts.map +1 -1
  228. package/lib/AWS/EventBridge/ToQueue.js.map +1 -1
  229. package/lib/AWS/Kinesis/DescribeAccountSettings.d.ts +4 -3
  230. package/lib/AWS/Kinesis/DescribeAccountSettings.d.ts.map +1 -1
  231. package/lib/AWS/Kinesis/DescribeAccountSettings.js.map +1 -1
  232. package/lib/AWS/Kinesis/DescribeLimits.d.ts +4 -3
  233. package/lib/AWS/Kinesis/DescribeLimits.d.ts.map +1 -1
  234. package/lib/AWS/Kinesis/DescribeLimits.js.map +1 -1
  235. package/lib/AWS/Kinesis/DescribeStream.d.ts +4 -3
  236. package/lib/AWS/Kinesis/DescribeStream.d.ts.map +1 -1
  237. package/lib/AWS/Kinesis/DescribeStream.js.map +1 -1
  238. package/lib/AWS/Kinesis/DescribeStreamConsumer.d.ts +4 -3
  239. package/lib/AWS/Kinesis/DescribeStreamConsumer.d.ts.map +1 -1
  240. package/lib/AWS/Kinesis/DescribeStreamConsumer.js.map +1 -1
  241. package/lib/AWS/Kinesis/DescribeStreamSummary.d.ts +4 -3
  242. package/lib/AWS/Kinesis/DescribeStreamSummary.d.ts.map +1 -1
  243. package/lib/AWS/Kinesis/DescribeStreamSummary.js.map +1 -1
  244. package/lib/AWS/Kinesis/GetRecords.d.ts +4 -3
  245. package/lib/AWS/Kinesis/GetRecords.d.ts.map +1 -1
  246. package/lib/AWS/Kinesis/GetRecords.js.map +1 -1
  247. package/lib/AWS/Kinesis/GetResourcePolicy.d.ts +4 -3
  248. package/lib/AWS/Kinesis/GetResourcePolicy.d.ts.map +1 -1
  249. package/lib/AWS/Kinesis/GetResourcePolicy.js.map +1 -1
  250. package/lib/AWS/Kinesis/GetShardIterator.d.ts +4 -3
  251. package/lib/AWS/Kinesis/GetShardIterator.d.ts.map +1 -1
  252. package/lib/AWS/Kinesis/GetShardIterator.js.map +1 -1
  253. package/lib/AWS/Kinesis/ListShards.d.ts +4 -3
  254. package/lib/AWS/Kinesis/ListShards.d.ts.map +1 -1
  255. package/lib/AWS/Kinesis/ListShards.js.map +1 -1
  256. package/lib/AWS/Kinesis/ListStreamConsumers.d.ts +4 -3
  257. package/lib/AWS/Kinesis/ListStreamConsumers.d.ts.map +1 -1
  258. package/lib/AWS/Kinesis/ListStreamConsumers.js.map +1 -1
  259. package/lib/AWS/Kinesis/ListStreams.d.ts +4 -3
  260. package/lib/AWS/Kinesis/ListStreams.d.ts.map +1 -1
  261. package/lib/AWS/Kinesis/ListStreams.js.map +1 -1
  262. package/lib/AWS/Kinesis/ListTagsForResource.d.ts +4 -3
  263. package/lib/AWS/Kinesis/ListTagsForResource.d.ts.map +1 -1
  264. package/lib/AWS/Kinesis/ListTagsForResource.js.map +1 -1
  265. package/lib/AWS/Kinesis/PutRecord.d.ts +4 -3
  266. package/lib/AWS/Kinesis/PutRecord.d.ts.map +1 -1
  267. package/lib/AWS/Kinesis/PutRecord.js.map +1 -1
  268. package/lib/AWS/Kinesis/PutRecords.d.ts +4 -3
  269. package/lib/AWS/Kinesis/PutRecords.d.ts.map +1 -1
  270. package/lib/AWS/Kinesis/PutRecords.js.map +1 -1
  271. package/lib/AWS/Kinesis/StreamSink.d.ts +4 -3
  272. package/lib/AWS/Kinesis/StreamSink.d.ts.map +1 -1
  273. package/lib/AWS/Kinesis/StreamSink.js.map +1 -1
  274. package/lib/AWS/Kinesis/SubscribeToShard.d.ts +4 -3
  275. package/lib/AWS/Kinesis/SubscribeToShard.d.ts.map +1 -1
  276. package/lib/AWS/Kinesis/SubscribeToShard.js.map +1 -1
  277. package/lib/AWS/Lambda/BucketEventSource.d.ts +4 -3
  278. package/lib/AWS/Lambda/BucketEventSource.d.ts.map +1 -1
  279. package/lib/AWS/Lambda/BucketEventSource.js.map +1 -1
  280. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts +4 -3
  281. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts.map +1 -1
  282. package/lib/AWS/Lambda/EventBridgeEventSource.js.map +1 -1
  283. package/lib/AWS/Lambda/Function.d.ts +45 -3
  284. package/lib/AWS/Lambda/Function.d.ts.map +1 -1
  285. package/lib/AWS/Lambda/Function.js +121 -47
  286. package/lib/AWS/Lambda/Function.js.map +1 -1
  287. package/lib/AWS/Lambda/InvokeFunction.d.ts +4 -3
  288. package/lib/AWS/Lambda/InvokeFunction.d.ts.map +1 -1
  289. package/lib/AWS/Lambda/InvokeFunction.js.map +1 -1
  290. package/lib/AWS/Lambda/QueueEventSource.d.ts +4 -3
  291. package/lib/AWS/Lambda/QueueEventSource.d.ts.map +1 -1
  292. package/lib/AWS/Lambda/QueueEventSource.js.map +1 -1
  293. package/lib/AWS/Lambda/StreamEventSource.d.ts +4 -3
  294. package/lib/AWS/Lambda/StreamEventSource.d.ts.map +1 -1
  295. package/lib/AWS/Lambda/StreamEventSource.js.map +1 -1
  296. package/lib/AWS/Lambda/TableEventSource.d.ts +4 -3
  297. package/lib/AWS/Lambda/TableEventSource.d.ts.map +1 -1
  298. package/lib/AWS/Lambda/TableEventSource.js.map +1 -1
  299. package/lib/AWS/Lambda/TopicEventSource.d.ts +4 -3
  300. package/lib/AWS/Lambda/TopicEventSource.d.ts.map +1 -1
  301. package/lib/AWS/Lambda/TopicEventSource.js.map +1 -1
  302. package/lib/AWS/Organizations/Root.js +1 -1
  303. package/lib/AWS/Organizations/Root.js.map +1 -1
  304. package/lib/AWS/Providers.d.ts +2 -2
  305. package/lib/AWS/Providers.d.ts.map +1 -1
  306. package/lib/AWS/Providers.js +4 -5
  307. package/lib/AWS/Providers.js.map +1 -1
  308. package/lib/AWS/RDS/Connect.d.ts +4 -3
  309. package/lib/AWS/RDS/Connect.d.ts.map +1 -1
  310. package/lib/AWS/RDS/Connect.js.map +1 -1
  311. package/lib/AWS/RDSData/BatchExecuteStatement.d.ts +4 -3
  312. package/lib/AWS/RDSData/BatchExecuteStatement.d.ts.map +1 -1
  313. package/lib/AWS/RDSData/BatchExecuteStatement.js.map +1 -1
  314. package/lib/AWS/RDSData/BeginTransaction.d.ts +4 -3
  315. package/lib/AWS/RDSData/BeginTransaction.d.ts.map +1 -1
  316. package/lib/AWS/RDSData/BeginTransaction.js.map +1 -1
  317. package/lib/AWS/RDSData/CommitTransaction.d.ts +4 -3
  318. package/lib/AWS/RDSData/CommitTransaction.d.ts.map +1 -1
  319. package/lib/AWS/RDSData/CommitTransaction.js.map +1 -1
  320. package/lib/AWS/RDSData/ExecuteSql.d.ts +4 -3
  321. package/lib/AWS/RDSData/ExecuteSql.d.ts.map +1 -1
  322. package/lib/AWS/RDSData/ExecuteSql.js.map +1 -1
  323. package/lib/AWS/RDSData/ExecuteStatement.d.ts +4 -3
  324. package/lib/AWS/RDSData/ExecuteStatement.d.ts.map +1 -1
  325. package/lib/AWS/RDSData/ExecuteStatement.js.map +1 -1
  326. package/lib/AWS/RDSData/RollbackTransaction.d.ts +4 -3
  327. package/lib/AWS/RDSData/RollbackTransaction.d.ts.map +1 -1
  328. package/lib/AWS/RDSData/RollbackTransaction.js.map +1 -1
  329. package/lib/AWS/Region.d.ts +5 -0
  330. package/lib/AWS/Region.d.ts.map +1 -1
  331. package/lib/AWS/Region.js.map +1 -1
  332. package/lib/AWS/S3/AbortMultipartUpload.d.ts +4 -3
  333. package/lib/AWS/S3/AbortMultipartUpload.d.ts.map +1 -1
  334. package/lib/AWS/S3/AbortMultipartUpload.js.map +1 -1
  335. package/lib/AWS/S3/Bucket.js +18 -18
  336. package/lib/AWS/S3/Bucket.js.map +1 -1
  337. package/lib/AWS/S3/CompleteMultipartUpload.d.ts +4 -3
  338. package/lib/AWS/S3/CompleteMultipartUpload.d.ts.map +1 -1
  339. package/lib/AWS/S3/CompleteMultipartUpload.js.map +1 -1
  340. package/lib/AWS/S3/CopyObject.d.ts +4 -3
  341. package/lib/AWS/S3/CopyObject.d.ts.map +1 -1
  342. package/lib/AWS/S3/CopyObject.js.map +1 -1
  343. package/lib/AWS/S3/CreateMultipartUpload.d.ts +4 -3
  344. package/lib/AWS/S3/CreateMultipartUpload.d.ts.map +1 -1
  345. package/lib/AWS/S3/CreateMultipartUpload.js.map +1 -1
  346. package/lib/AWS/S3/DeleteObject.d.ts +4 -3
  347. package/lib/AWS/S3/DeleteObject.d.ts.map +1 -1
  348. package/lib/AWS/S3/DeleteObject.js.map +1 -1
  349. package/lib/AWS/S3/GetObject.d.ts +4 -3
  350. package/lib/AWS/S3/GetObject.d.ts.map +1 -1
  351. package/lib/AWS/S3/GetObject.js.map +1 -1
  352. package/lib/AWS/S3/HeadObject.d.ts +4 -3
  353. package/lib/AWS/S3/HeadObject.d.ts.map +1 -1
  354. package/lib/AWS/S3/HeadObject.js.map +1 -1
  355. package/lib/AWS/S3/ListObjectsV2.d.ts +4 -3
  356. package/lib/AWS/S3/ListObjectsV2.d.ts.map +1 -1
  357. package/lib/AWS/S3/ListObjectsV2.js.map +1 -1
  358. package/lib/AWS/S3/PutObject.d.ts +4 -3
  359. package/lib/AWS/S3/PutObject.d.ts.map +1 -1
  360. package/lib/AWS/S3/PutObject.js.map +1 -1
  361. package/lib/AWS/S3/UploadPart.d.ts +4 -3
  362. package/lib/AWS/S3/UploadPart.d.ts.map +1 -1
  363. package/lib/AWS/S3/UploadPart.js.map +1 -1
  364. package/lib/AWS/SNS/AddPermission.d.ts +4 -3
  365. package/lib/AWS/SNS/AddPermission.d.ts.map +1 -1
  366. package/lib/AWS/SNS/AddPermission.js.map +1 -1
  367. package/lib/AWS/SNS/ConfirmSubscription.d.ts +4 -3
  368. package/lib/AWS/SNS/ConfirmSubscription.d.ts.map +1 -1
  369. package/lib/AWS/SNS/ConfirmSubscription.js.map +1 -1
  370. package/lib/AWS/SNS/GetDataProtectionPolicy.d.ts +4 -3
  371. package/lib/AWS/SNS/GetDataProtectionPolicy.d.ts.map +1 -1
  372. package/lib/AWS/SNS/GetDataProtectionPolicy.js.map +1 -1
  373. package/lib/AWS/SNS/GetSubscriptionAttributes.d.ts +4 -3
  374. package/lib/AWS/SNS/GetSubscriptionAttributes.d.ts.map +1 -1
  375. package/lib/AWS/SNS/GetSubscriptionAttributes.js.map +1 -1
  376. package/lib/AWS/SNS/GetTopicAttributes.d.ts +4 -3
  377. package/lib/AWS/SNS/GetTopicAttributes.d.ts.map +1 -1
  378. package/lib/AWS/SNS/GetTopicAttributes.js.map +1 -1
  379. package/lib/AWS/SNS/ListSubscriptions.d.ts +4 -3
  380. package/lib/AWS/SNS/ListSubscriptions.d.ts.map +1 -1
  381. package/lib/AWS/SNS/ListSubscriptions.js.map +1 -1
  382. package/lib/AWS/SNS/ListSubscriptionsByTopic.d.ts +4 -3
  383. package/lib/AWS/SNS/ListSubscriptionsByTopic.d.ts.map +1 -1
  384. package/lib/AWS/SNS/ListSubscriptionsByTopic.js.map +1 -1
  385. package/lib/AWS/SNS/ListTagsForResource.d.ts +4 -3
  386. package/lib/AWS/SNS/ListTagsForResource.d.ts.map +1 -1
  387. package/lib/AWS/SNS/ListTagsForResource.js.map +1 -1
  388. package/lib/AWS/SNS/ListTopics.d.ts +4 -3
  389. package/lib/AWS/SNS/ListTopics.d.ts.map +1 -1
  390. package/lib/AWS/SNS/ListTopics.js.map +1 -1
  391. package/lib/AWS/SNS/Publish.d.ts +4 -3
  392. package/lib/AWS/SNS/Publish.d.ts.map +1 -1
  393. package/lib/AWS/SNS/Publish.js.map +1 -1
  394. package/lib/AWS/SNS/PublishBatch.d.ts +4 -3
  395. package/lib/AWS/SNS/PublishBatch.d.ts.map +1 -1
  396. package/lib/AWS/SNS/PublishBatch.js.map +1 -1
  397. package/lib/AWS/SNS/PutDataProtectionPolicy.d.ts +4 -3
  398. package/lib/AWS/SNS/PutDataProtectionPolicy.d.ts.map +1 -1
  399. package/lib/AWS/SNS/PutDataProtectionPolicy.js.map +1 -1
  400. package/lib/AWS/SNS/RemovePermission.d.ts +4 -3
  401. package/lib/AWS/SNS/RemovePermission.d.ts.map +1 -1
  402. package/lib/AWS/SNS/RemovePermission.js.map +1 -1
  403. package/lib/AWS/SNS/SetSubscriptionAttributes.d.ts +4 -3
  404. package/lib/AWS/SNS/SetSubscriptionAttributes.d.ts.map +1 -1
  405. package/lib/AWS/SNS/SetSubscriptionAttributes.js.map +1 -1
  406. package/lib/AWS/SNS/SetTopicAttributes.d.ts +4 -3
  407. package/lib/AWS/SNS/SetTopicAttributes.d.ts.map +1 -1
  408. package/lib/AWS/SNS/SetTopicAttributes.js.map +1 -1
  409. package/lib/AWS/SNS/TagResource.d.ts +4 -3
  410. package/lib/AWS/SNS/TagResource.d.ts.map +1 -1
  411. package/lib/AWS/SNS/TagResource.js.map +1 -1
  412. package/lib/AWS/SNS/TopicSink.d.ts +4 -3
  413. package/lib/AWS/SNS/TopicSink.d.ts.map +1 -1
  414. package/lib/AWS/SNS/TopicSink.js.map +1 -1
  415. package/lib/AWS/SNS/UntagResource.d.ts +4 -3
  416. package/lib/AWS/SNS/UntagResource.d.ts.map +1 -1
  417. package/lib/AWS/SNS/UntagResource.js.map +1 -1
  418. package/lib/AWS/SQS/DeleteMessage.d.ts +4 -3
  419. package/lib/AWS/SQS/DeleteMessage.d.ts.map +1 -1
  420. package/lib/AWS/SQS/DeleteMessage.js.map +1 -1
  421. package/lib/AWS/SQS/DeleteMessageBatch.d.ts +4 -3
  422. package/lib/AWS/SQS/DeleteMessageBatch.d.ts.map +1 -1
  423. package/lib/AWS/SQS/DeleteMessageBatch.js.map +1 -1
  424. package/lib/AWS/SQS/Queue.js +1 -1
  425. package/lib/AWS/SQS/Queue.js.map +1 -1
  426. package/lib/AWS/SQS/QueueSink.d.ts +4 -3
  427. package/lib/AWS/SQS/QueueSink.d.ts.map +1 -1
  428. package/lib/AWS/SQS/QueueSink.js.map +1 -1
  429. package/lib/AWS/SQS/ReceiveMessage.d.ts +4 -3
  430. package/lib/AWS/SQS/ReceiveMessage.d.ts.map +1 -1
  431. package/lib/AWS/SQS/ReceiveMessage.js.map +1 -1
  432. package/lib/AWS/SQS/SendMessage.d.ts +4 -3
  433. package/lib/AWS/SQS/SendMessage.d.ts.map +1 -1
  434. package/lib/AWS/SQS/SendMessage.js.map +1 -1
  435. package/lib/AWS/SQS/SendMessageBatch.d.ts +4 -3
  436. package/lib/AWS/SQS/SendMessageBatch.d.ts.map +1 -1
  437. package/lib/AWS/SQS/SendMessageBatch.js.map +1 -1
  438. package/lib/AWS/SecretsManager/DescribeSecret.d.ts +4 -3
  439. package/lib/AWS/SecretsManager/DescribeSecret.d.ts.map +1 -1
  440. package/lib/AWS/SecretsManager/DescribeSecret.js.map +1 -1
  441. package/lib/AWS/SecretsManager/GetRandomPassword.d.ts +4 -3
  442. package/lib/AWS/SecretsManager/GetRandomPassword.d.ts.map +1 -1
  443. package/lib/AWS/SecretsManager/GetRandomPassword.js.map +1 -1
  444. package/lib/AWS/SecretsManager/GetSecretValue.d.ts +4 -3
  445. package/lib/AWS/SecretsManager/GetSecretValue.d.ts.map +1 -1
  446. package/lib/AWS/SecretsManager/GetSecretValue.js.map +1 -1
  447. package/lib/AWS/SecretsManager/ListSecrets.d.ts +4 -3
  448. package/lib/AWS/SecretsManager/ListSecrets.d.ts.map +1 -1
  449. package/lib/AWS/SecretsManager/ListSecrets.js.map +1 -1
  450. package/lib/AWS/SecretsManager/PutSecretValue.d.ts +4 -3
  451. package/lib/AWS/SecretsManager/PutSecretValue.d.ts.map +1 -1
  452. package/lib/AWS/SecretsManager/PutSecretValue.js.map +1 -1
  453. package/lib/AWS/StateStore/State.js +30 -6
  454. package/lib/AWS/StateStore/State.js.map +1 -1
  455. package/lib/AWS/Website/Router.d.ts.map +1 -1
  456. package/lib/AWS/Website/Router.js +7 -4
  457. package/lib/AWS/Website/Router.js.map +1 -1
  458. package/lib/AWS/Website/SsrSite.d.ts.map +1 -1
  459. package/lib/AWS/Website/SsrSite.js +3 -3
  460. package/lib/AWS/Website/SsrSite.js.map +1 -1
  461. package/lib/AWS/Website/StaticSite.d.ts +3 -3
  462. package/lib/AWS/Website/StaticSite.d.ts.map +1 -1
  463. package/lib/AWS/Website/StaticSite.js +9 -6
  464. package/lib/AWS/Website/StaticSite.js.map +1 -1
  465. package/lib/AdoptPolicy.d.ts +1 -1
  466. package/lib/AdoptPolicy.js +1 -1
  467. package/lib/Apply.d.ts.map +1 -1
  468. package/lib/Apply.js +16 -8
  469. package/lib/Apply.js.map +1 -1
  470. package/lib/Auth/Lock.d.ts.map +1 -1
  471. package/lib/Auth/Lock.js +4 -1
  472. package/lib/Auth/Lock.js.map +1 -1
  473. package/lib/Auth/Profile.d.ts +2 -1
  474. package/lib/Auth/Profile.d.ts.map +1 -1
  475. package/lib/Auth/Profile.js +28 -3
  476. package/lib/Auth/Profile.js.map +1 -1
  477. package/lib/Axiom/AuthProvider.js +2 -2
  478. package/lib/Axiom/AuthProvider.js.map +1 -1
  479. package/lib/Binding.d.ts +1 -1
  480. package/lib/Binding.d.ts.map +1 -1
  481. package/lib/Binding.js.map +1 -1
  482. package/lib/Bundle/Bundle.d.ts.map +1 -1
  483. package/lib/Bundle/Bundle.js +46 -4
  484. package/lib/Bundle/Bundle.js.map +1 -1
  485. package/lib/Bundle/Docker.d.ts +4 -1
  486. package/lib/Bundle/Docker.d.ts.map +1 -1
  487. package/lib/Bundle/Docker.js +21 -4
  488. package/lib/Bundle/Docker.js.map +1 -1
  489. package/lib/Bundle/InstalledPackages.d.ts +79 -0
  490. package/lib/Bundle/InstalledPackages.d.ts.map +1 -0
  491. package/lib/Bundle/InstalledPackages.js +364 -0
  492. package/lib/Bundle/InstalledPackages.js.map +1 -0
  493. package/lib/Bundle/TempRoot.js +1 -1
  494. package/lib/Bundle/TempRoot.js.map +1 -1
  495. package/lib/Bundle/index.d.ts +1 -0
  496. package/lib/Bundle/index.d.ts.map +1 -1
  497. package/lib/Bundle/index.js +1 -0
  498. package/lib/Bundle/index.js.map +1 -1
  499. package/lib/Cli/commands/aws.js +1 -1
  500. package/lib/Cli/commands/aws.js.map +1 -1
  501. package/lib/Cli/commands/cloudflare.d.ts.map +1 -1
  502. package/lib/Cli/commands/cloudflare.js +3 -3
  503. package/lib/Cli/commands/cloudflare.js.map +1 -1
  504. package/lib/Cli/commands/login.js +1 -1
  505. package/lib/Cli/commands/login.js.map +1 -1
  506. package/lib/Cli/commands/logs.js +1 -1
  507. package/lib/Cli/commands/logs.js.map +1 -1
  508. package/lib/Cli/commands/nuke.js +1 -1
  509. package/lib/Cli/commands/nuke.js.map +1 -1
  510. package/lib/Cli/commands/profile.js +2 -2
  511. package/lib/Cli/commands/profile.js.map +1 -1
  512. package/lib/Cli/commands/state.d.ts.map +1 -1
  513. package/lib/Cli/commands/state.js +6 -6
  514. package/lib/Cli/commands/state.js.map +1 -1
  515. package/lib/Cli/commands/tail.js +1 -1
  516. package/lib/Cli/commands/tail.js.map +1 -1
  517. package/lib/Cli/selectCli.d.ts +1 -8
  518. package/lib/Cli/selectCli.d.ts.map +1 -1
  519. package/lib/Cli/selectCli.js +2 -27
  520. package/lib/Cli/selectCli.js.map +1 -1
  521. package/lib/Cloudflare/Access/Application.d.ts.map +1 -1
  522. package/lib/Cloudflare/Access/Application.js +36 -3
  523. package/lib/Cloudflare/Access/Application.js.map +1 -1
  524. package/lib/Cloudflare/AiGateway/AiGateway.d.ts +96 -0
  525. package/lib/Cloudflare/AiGateway/AiGateway.d.ts.map +1 -1
  526. package/lib/Cloudflare/AiGateway/AiGateway.js +87 -0
  527. package/lib/Cloudflare/AiGateway/AiGateway.js.map +1 -1
  528. package/lib/Cloudflare/AiGateway/AiGatewayBinding.d.ts +4 -3
  529. package/lib/Cloudflare/AiGateway/AiGatewayBinding.d.ts.map +1 -1
  530. package/lib/Cloudflare/AiGateway/AiGatewayBinding.js.map +1 -1
  531. package/lib/Cloudflare/AiGateway/DurableObjectChatPersistence.d.ts +7 -0
  532. package/lib/Cloudflare/AiGateway/DurableObjectChatPersistence.d.ts.map +1 -0
  533. package/lib/Cloudflare/AiGateway/DurableObjectChatPersistence.js +45 -0
  534. package/lib/Cloudflare/AiGateway/DurableObjectChatPersistence.js.map +1 -0
  535. package/lib/Cloudflare/AiGateway/LanguageModel.js +1 -1
  536. package/lib/Cloudflare/AiGateway/LanguageModel.js.map +1 -1
  537. package/lib/Cloudflare/AiGateway/index.d.ts +1 -1
  538. package/lib/Cloudflare/AiGateway/index.d.ts.map +1 -1
  539. package/lib/Cloudflare/AiGateway/index.js +1 -1
  540. package/lib/Cloudflare/AiGateway/index.js.map +1 -1
  541. package/lib/Cloudflare/AiSearch/AiSearch.d.ts +3 -2
  542. package/lib/Cloudflare/AiSearch/AiSearch.d.ts.map +1 -1
  543. package/lib/Cloudflare/AiSearch/AiSearch.js +4 -3
  544. package/lib/Cloudflare/AiSearch/AiSearch.js.map +1 -1
  545. package/lib/Cloudflare/AiSearch/AiSearchBinding.d.ts +7 -6
  546. package/lib/Cloudflare/AiSearch/AiSearchBinding.d.ts.map +1 -1
  547. package/lib/Cloudflare/AiSearch/AiSearchBinding.js.map +1 -1
  548. package/lib/Cloudflare/AiSearch/AiSearchInstance.js +28 -14
  549. package/lib/Cloudflare/AiSearch/AiSearchInstance.js.map +1 -1
  550. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDataset.d.ts.map +1 -1
  551. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDataset.js +1 -1
  552. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDataset.js.map +1 -1
  553. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.d.ts +4 -3
  554. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.d.ts.map +1 -1
  555. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.js +2 -2
  556. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.js.map +1 -1
  557. package/lib/Cloudflare/ApiShield/UserSchema.d.ts.map +1 -1
  558. package/lib/Cloudflare/ApiShield/UserSchema.js +4 -1
  559. package/lib/Cloudflare/ApiShield/UserSchema.js.map +1 -1
  560. package/lib/Cloudflare/Artifacts/ArtifactsBinding.d.ts +4 -3
  561. package/lib/Cloudflare/Artifacts/ArtifactsBinding.d.ts.map +1 -1
  562. package/lib/Cloudflare/Artifacts/ArtifactsBinding.js.map +1 -1
  563. package/lib/Cloudflare/Auth/AuthProvider.d.ts +1 -0
  564. package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
  565. package/lib/Cloudflare/Auth/AuthProvider.js +5 -3
  566. package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
  567. package/lib/Cloudflare/Browser/BrowserBinding.d.ts +4 -3
  568. package/lib/Cloudflare/Browser/BrowserBinding.d.ts.map +1 -1
  569. package/lib/Cloudflare/Browser/BrowserBinding.js.map +1 -1
  570. package/lib/Cloudflare/Cache/RegionalTieredCache.d.ts.map +1 -1
  571. package/lib/Cloudflare/Cache/RegionalTieredCache.js +15 -1
  572. package/lib/Cloudflare/Cache/RegionalTieredCache.js.map +1 -1
  573. package/lib/Cloudflare/ClientCertificate/ClientCertificate.d.ts.map +1 -1
  574. package/lib/Cloudflare/ClientCertificate/ClientCertificate.js +17 -10
  575. package/lib/Cloudflare/ClientCertificate/ClientCertificate.js.map +1 -1
  576. package/lib/Cloudflare/CloudflareEnvironment.d.ts +1 -0
  577. package/lib/Cloudflare/CloudflareEnvironment.d.ts.map +1 -1
  578. package/lib/Cloudflare/CloudflareEnvironment.js +1 -0
  579. package/lib/Cloudflare/CloudflareEnvironment.js.map +1 -1
  580. package/lib/Cloudflare/Container/Container.d.ts +233 -81
  581. package/lib/Cloudflare/Container/Container.d.ts.map +1 -1
  582. package/lib/Cloudflare/Container/Container.js +181 -116
  583. package/lib/Cloudflare/Container/Container.js.map +1 -1
  584. package/lib/Cloudflare/Container/ContainerApplication.d.ts +67 -13
  585. package/lib/Cloudflare/Container/ContainerApplication.d.ts.map +1 -1
  586. package/lib/Cloudflare/Container/ContainerApplication.js +2 -557
  587. package/lib/Cloudflare/Container/ContainerApplication.js.map +1 -1
  588. package/lib/Cloudflare/Container/ContainerBundle.d.ts +26 -0
  589. package/lib/Cloudflare/Container/ContainerBundle.d.ts.map +1 -1
  590. package/lib/Cloudflare/Container/ContainerBundle.js +65 -2
  591. package/lib/Cloudflare/Container/ContainerBundle.js.map +1 -1
  592. package/lib/Cloudflare/Container/ContainerPlatform.d.ts +5 -0
  593. package/lib/Cloudflare/Container/ContainerPlatform.d.ts.map +1 -0
  594. package/lib/Cloudflare/Container/ContainerPlatform.js +129 -0
  595. package/lib/Cloudflare/Container/ContainerPlatform.js.map +1 -0
  596. package/lib/Cloudflare/Container/ContainerProvider.d.ts +10 -0
  597. package/lib/Cloudflare/Container/ContainerProvider.d.ts.map +1 -0
  598. package/lib/Cloudflare/Container/ContainerProvider.js +684 -0
  599. package/lib/Cloudflare/Container/ContainerProvider.js.map +1 -0
  600. package/lib/Cloudflare/Container/LocalContainerProvider.d.ts.map +1 -1
  601. package/lib/Cloudflare/Container/LocalContainerProvider.js +8 -8
  602. package/lib/Cloudflare/Container/LocalContainerProvider.js.map +1 -1
  603. package/lib/Cloudflare/Container/StartContainer.d.ts +3 -19
  604. package/lib/Cloudflare/Container/StartContainer.d.ts.map +1 -1
  605. package/lib/Cloudflare/Container/StartContainer.js +41 -7
  606. package/lib/Cloudflare/Container/StartContainer.js.map +1 -1
  607. package/lib/Cloudflare/Container/index.d.ts +2 -1
  608. package/lib/Cloudflare/Container/index.d.ts.map +1 -1
  609. package/lib/Cloudflare/Container/index.js +2 -1
  610. package/lib/Cloudflare/Container/index.js.map +1 -1
  611. package/lib/Cloudflare/Credentials.d.ts +5 -0
  612. package/lib/Cloudflare/Credentials.d.ts.map +1 -1
  613. package/lib/Cloudflare/Credentials.js.map +1 -1
  614. package/lib/Cloudflare/D1/D1Connection.d.ts +4 -3
  615. package/lib/Cloudflare/D1/D1Connection.d.ts.map +1 -1
  616. package/lib/Cloudflare/D1/D1Connection.js.map +1 -1
  617. package/lib/Cloudflare/Dns/DnsBinding.d.ts +2 -11
  618. package/lib/Cloudflare/Dns/DnsBinding.d.ts.map +1 -1
  619. package/lib/Cloudflare/Dns/DnsBinding.js +0 -11
  620. package/lib/Cloudflare/Dns/DnsBinding.js.map +1 -1
  621. package/lib/Cloudflare/Dns/DnsRead.d.ts +3 -2
  622. package/lib/Cloudflare/Dns/DnsRead.d.ts.map +1 -1
  623. package/lib/Cloudflare/Dns/DnsRead.js +3 -2
  624. package/lib/Cloudflare/Dns/DnsRead.js.map +1 -1
  625. package/lib/Cloudflare/Dns/DnsReadWrite.d.ts +3 -2
  626. package/lib/Cloudflare/Dns/DnsReadWrite.d.ts.map +1 -1
  627. package/lib/Cloudflare/Dns/DnsReadWrite.js.map +1 -1
  628. package/lib/Cloudflare/Dns/DnsWrite.d.ts +3 -2
  629. package/lib/Cloudflare/Dns/DnsWrite.d.ts.map +1 -1
  630. package/lib/Cloudflare/Dns/DnsWrite.js +3 -2
  631. package/lib/Cloudflare/Dns/DnsWrite.js.map +1 -1
  632. package/lib/Cloudflare/Email/EmailCatchAll.js +1 -1
  633. package/lib/Cloudflare/Email/EmailCatchAll.js.map +1 -1
  634. package/lib/Cloudflare/Email/EmailRouting.js +1 -1
  635. package/lib/Cloudflare/Email/EmailRouting.js.map +1 -1
  636. package/lib/Cloudflare/Email/EmailRule.js +1 -1
  637. package/lib/Cloudflare/Email/EmailRule.js.map +1 -1
  638. package/lib/Cloudflare/Email/SendEmail.js +1 -1
  639. package/lib/Cloudflare/Email/SendEmail.js.map +1 -1
  640. package/lib/Cloudflare/Email/SendEmailBinding.d.ts +4 -3
  641. package/lib/Cloudflare/Email/SendEmailBinding.d.ts.map +1 -1
  642. package/lib/Cloudflare/Email/SendEmailBinding.js +2 -2
  643. package/lib/Cloudflare/Email/SendEmailBinding.js.map +1 -1
  644. package/lib/Cloudflare/Fetcher.d.ts +1 -5
  645. package/lib/Cloudflare/Fetcher.d.ts.map +1 -1
  646. package/lib/Cloudflare/Fetcher.js +77 -12
  647. package/lib/Cloudflare/Fetcher.js.map +1 -1
  648. package/lib/Cloudflare/Flagship/FlagshipBinding.d.ts +4 -3
  649. package/lib/Cloudflare/Flagship/FlagshipBinding.d.ts.map +1 -1
  650. package/lib/Cloudflare/Flagship/FlagshipBinding.js.map +1 -1
  651. package/lib/Cloudflare/GoogleTagGateway/GoogleTagGateway.js +1 -1
  652. package/lib/Cloudflare/GoogleTagGateway/GoogleTagGateway.js.map +1 -1
  653. package/lib/Cloudflare/HttpClientUtils.d.ts +13 -0
  654. package/lib/Cloudflare/HttpClientUtils.d.ts.map +1 -0
  655. package/lib/Cloudflare/HttpClientUtils.js +11 -0
  656. package/lib/Cloudflare/HttpClientUtils.js.map +1 -0
  657. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.d.ts +4 -3
  658. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.d.ts.map +1 -1
  659. package/lib/Cloudflare/Hyperdrive/HyperdriveBinding.js.map +1 -1
  660. package/lib/Cloudflare/Iam/UserGroupMembership.d.ts.map +1 -1
  661. package/lib/Cloudflare/Iam/UserGroupMembership.js +6 -1
  662. package/lib/Cloudflare/Iam/UserGroupMembership.js.map +1 -1
  663. package/lib/Cloudflare/Images/ImagesBinding.d.ts +4 -3
  664. package/lib/Cloudflare/Images/ImagesBinding.d.ts.map +1 -1
  665. package/lib/Cloudflare/Images/ImagesBinding.js.map +1 -1
  666. package/lib/Cloudflare/Images/Variant.d.ts.map +1 -1
  667. package/lib/Cloudflare/Images/Variant.js +15 -3
  668. package/lib/Cloudflare/Images/Variant.js.map +1 -1
  669. package/lib/Cloudflare/KV/{KVNamespace.d.ts → Namespace.d.ts} +9 -7
  670. package/lib/Cloudflare/KV/Namespace.d.ts.map +1 -0
  671. package/lib/Cloudflare/KV/{KVNamespace.js → Namespace.js} +10 -7
  672. package/lib/Cloudflare/KV/Namespace.js.map +1 -0
  673. package/lib/Cloudflare/KV/NamespaceBinding.d.ts +24 -0
  674. package/lib/Cloudflare/KV/NamespaceBinding.d.ts.map +1 -0
  675. package/lib/Cloudflare/KV/NamespaceBinding.js +46 -0
  676. package/lib/Cloudflare/KV/NamespaceBinding.js.map +1 -0
  677. package/lib/Cloudflare/KV/NamespaceHttp.d.ts +36 -0
  678. package/lib/Cloudflare/KV/NamespaceHttp.d.ts.map +1 -0
  679. package/lib/Cloudflare/KV/NamespaceHttp.js +57 -0
  680. package/lib/Cloudflare/KV/NamespaceHttp.js.map +1 -0
  681. package/lib/Cloudflare/KV/{KVNamespaceBinding.d.ts → NamespaceRead.d.ts} +15 -30
  682. package/lib/Cloudflare/KV/NamespaceRead.d.ts.map +1 -0
  683. package/lib/Cloudflare/KV/NamespaceRead.js +11 -0
  684. package/lib/Cloudflare/KV/NamespaceRead.js.map +1 -0
  685. package/lib/Cloudflare/KV/NamespaceReadBinding.d.ts +11 -0
  686. package/lib/Cloudflare/KV/NamespaceReadBinding.d.ts.map +1 -0
  687. package/lib/Cloudflare/KV/NamespaceReadBinding.js +19 -0
  688. package/lib/Cloudflare/KV/NamespaceReadBinding.js.map +1 -0
  689. package/lib/Cloudflare/KV/NamespaceReadHttp.d.ts +16 -0
  690. package/lib/Cloudflare/KV/NamespaceReadHttp.d.ts.map +1 -0
  691. package/lib/Cloudflare/KV/NamespaceReadHttp.js +93 -0
  692. package/lib/Cloudflare/KV/NamespaceReadHttp.js.map +1 -0
  693. package/lib/Cloudflare/KV/NamespaceReadWrite.d.ts +20 -0
  694. package/lib/Cloudflare/KV/NamespaceReadWrite.d.ts.map +1 -0
  695. package/lib/Cloudflare/KV/NamespaceReadWrite.js +11 -0
  696. package/lib/Cloudflare/KV/NamespaceReadWrite.js.map +1 -0
  697. package/lib/Cloudflare/KV/NamespaceReadWriteBinding.d.ts +11 -0
  698. package/lib/Cloudflare/KV/NamespaceReadWriteBinding.d.ts.map +1 -0
  699. package/lib/Cloudflare/KV/NamespaceReadWriteBinding.js +17 -0
  700. package/lib/Cloudflare/KV/NamespaceReadWriteBinding.js.map +1 -0
  701. package/lib/Cloudflare/KV/NamespaceReadWriteHttp.d.ts +17 -0
  702. package/lib/Cloudflare/KV/NamespaceReadWriteHttp.d.ts.map +1 -0
  703. package/lib/Cloudflare/KV/NamespaceReadWriteHttp.js +22 -0
  704. package/lib/Cloudflare/KV/NamespaceReadWriteHttp.js.map +1 -0
  705. package/lib/Cloudflare/KV/NamespaceTypes.d.ts +10 -0
  706. package/lib/Cloudflare/KV/NamespaceTypes.d.ts.map +1 -0
  707. package/lib/Cloudflare/KV/NamespaceTypes.js +4 -0
  708. package/lib/Cloudflare/KV/NamespaceTypes.js.map +1 -0
  709. package/lib/Cloudflare/KV/NamespaceWrite.d.ts +22 -0
  710. package/lib/Cloudflare/KV/NamespaceWrite.d.ts.map +1 -0
  711. package/lib/Cloudflare/KV/NamespaceWrite.js +11 -0
  712. package/lib/Cloudflare/KV/NamespaceWrite.js.map +1 -0
  713. package/lib/Cloudflare/KV/NamespaceWriteBinding.d.ts +11 -0
  714. package/lib/Cloudflare/KV/NamespaceWriteBinding.d.ts.map +1 -0
  715. package/lib/Cloudflare/KV/NamespaceWriteBinding.js +17 -0
  716. package/lib/Cloudflare/KV/NamespaceWriteBinding.js.map +1 -0
  717. package/lib/Cloudflare/KV/NamespaceWriteHttp.d.ts +16 -0
  718. package/lib/Cloudflare/KV/NamespaceWriteHttp.d.ts.map +1 -0
  719. package/lib/Cloudflare/KV/NamespaceWriteHttp.js +54 -0
  720. package/lib/Cloudflare/KV/NamespaceWriteHttp.js.map +1 -0
  721. package/lib/Cloudflare/KV/index.d.ts +11 -2
  722. package/lib/Cloudflare/KV/index.d.ts.map +1 -1
  723. package/lib/Cloudflare/KV/index.js +11 -2
  724. package/lib/Cloudflare/KV/index.js.map +1 -1
  725. package/lib/Cloudflare/Providers.d.ts +2 -2
  726. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  727. package/lib/Cloudflare/Providers.js +5 -13
  728. package/lib/Cloudflare/Providers.js.map +1 -1
  729. package/lib/Cloudflare/Queue/Queue.d.ts +8 -8
  730. package/lib/Cloudflare/Queue/Queue.d.ts.map +1 -1
  731. package/lib/Cloudflare/Queue/Queue.js +9 -9
  732. package/lib/Cloudflare/Queue/Queue.js.map +1 -1
  733. package/lib/Cloudflare/Queue/QueueBinding.d.ts +17 -65
  734. package/lib/Cloudflare/Queue/QueueBinding.d.ts.map +1 -1
  735. package/lib/Cloudflare/Queue/QueueBinding.js +35 -78
  736. package/lib/Cloudflare/Queue/QueueBinding.js.map +1 -1
  737. package/lib/Cloudflare/Queue/QueueEventSource.d.ts +5 -4
  738. package/lib/Cloudflare/Queue/QueueEventSource.d.ts.map +1 -1
  739. package/lib/Cloudflare/Queue/QueueEventSource.js +1 -1
  740. package/lib/Cloudflare/Queue/QueueEventSource.js.map +1 -1
  741. package/lib/Cloudflare/Queue/QueueHttp.d.ts +36 -0
  742. package/lib/Cloudflare/Queue/QueueHttp.d.ts.map +1 -0
  743. package/lib/Cloudflare/Queue/QueueHttp.js +57 -0
  744. package/lib/Cloudflare/Queue/QueueHttp.js.map +1 -0
  745. package/lib/Cloudflare/Queue/QueueTypes.d.ts +19 -0
  746. package/lib/Cloudflare/Queue/QueueTypes.d.ts.map +1 -0
  747. package/lib/Cloudflare/Queue/QueueTypes.js +4 -0
  748. package/lib/Cloudflare/Queue/QueueTypes.js.map +1 -0
  749. package/lib/Cloudflare/Queue/QueueWrite.d.ts +55 -0
  750. package/lib/Cloudflare/Queue/QueueWrite.d.ts.map +1 -0
  751. package/lib/Cloudflare/Queue/QueueWrite.js +42 -0
  752. package/lib/Cloudflare/Queue/QueueWrite.js.map +1 -0
  753. package/lib/Cloudflare/Queue/QueueWriteBinding.d.ts +11 -0
  754. package/lib/Cloudflare/Queue/QueueWriteBinding.d.ts.map +1 -0
  755. package/lib/Cloudflare/Queue/QueueWriteBinding.js +19 -0
  756. package/lib/Cloudflare/Queue/QueueWriteBinding.js.map +1 -0
  757. package/lib/Cloudflare/Queue/QueueWriteHttp.d.ts +22 -0
  758. package/lib/Cloudflare/Queue/QueueWriteHttp.d.ts.map +1 -0
  759. package/lib/Cloudflare/Queue/QueueWriteHttp.js +50 -0
  760. package/lib/Cloudflare/Queue/QueueWriteHttp.js.map +1 -0
  761. package/lib/Cloudflare/Queue/index.d.ts +4 -1
  762. package/lib/Cloudflare/Queue/index.d.ts.map +1 -1
  763. package/lib/Cloudflare/Queue/index.js +4 -1
  764. package/lib/Cloudflare/Queue/index.js.map +1 -1
  765. package/lib/Cloudflare/R2/{R2Bucket.d.ts → Bucket.d.ts} +5 -9
  766. package/lib/Cloudflare/R2/Bucket.d.ts.map +1 -0
  767. package/lib/Cloudflare/R2/{R2Bucket.js → Bucket.js} +6 -9
  768. package/lib/Cloudflare/R2/Bucket.js.map +1 -0
  769. package/lib/Cloudflare/R2/BucketBinding.d.ts +31 -0
  770. package/lib/Cloudflare/R2/BucketBinding.d.ts.map +1 -0
  771. package/lib/Cloudflare/R2/BucketBinding.js +83 -0
  772. package/lib/Cloudflare/R2/BucketBinding.js.map +1 -0
  773. package/lib/Cloudflare/R2/BucketEventNotification.d.ts +1 -1
  774. package/lib/Cloudflare/R2/BucketEventNotification.d.ts.map +1 -1
  775. package/lib/Cloudflare/R2/BucketHttp.d.ts +59 -0
  776. package/lib/Cloudflare/R2/BucketHttp.d.ts.map +1 -0
  777. package/lib/Cloudflare/R2/BucketHttp.js +129 -0
  778. package/lib/Cloudflare/R2/BucketHttp.js.map +1 -0
  779. package/lib/Cloudflare/R2/BucketRead.d.ts +28 -0
  780. package/lib/Cloudflare/R2/BucketRead.d.ts.map +1 -0
  781. package/lib/Cloudflare/R2/BucketRead.js +11 -0
  782. package/lib/Cloudflare/R2/BucketRead.js.map +1 -0
  783. package/lib/Cloudflare/R2/BucketReadBinding.d.ts +10 -0
  784. package/lib/Cloudflare/R2/BucketReadBinding.d.ts.map +1 -0
  785. package/lib/Cloudflare/R2/BucketReadBinding.js +24 -0
  786. package/lib/Cloudflare/R2/BucketReadBinding.js.map +1 -0
  787. package/lib/Cloudflare/R2/BucketReadHttp.d.ts +15 -0
  788. package/lib/Cloudflare/R2/BucketReadHttp.d.ts.map +1 -0
  789. package/lib/Cloudflare/R2/BucketReadHttp.js +109 -0
  790. package/lib/Cloudflare/R2/BucketReadHttp.js.map +1 -0
  791. package/lib/Cloudflare/R2/BucketReadWrite.d.ts +20 -0
  792. package/lib/Cloudflare/R2/BucketReadWrite.d.ts.map +1 -0
  793. package/lib/Cloudflare/R2/BucketReadWrite.js +11 -0
  794. package/lib/Cloudflare/R2/BucketReadWrite.js.map +1 -0
  795. package/lib/Cloudflare/R2/BucketReadWriteBinding.d.ts +10 -0
  796. package/lib/Cloudflare/R2/BucketReadWriteBinding.d.ts.map +1 -0
  797. package/lib/Cloudflare/R2/BucketReadWriteBinding.js +16 -0
  798. package/lib/Cloudflare/R2/BucketReadWriteBinding.js.map +1 -0
  799. package/lib/Cloudflare/R2/BucketReadWriteHttp.d.ts +16 -0
  800. package/lib/Cloudflare/R2/BucketReadWriteHttp.d.ts.map +1 -0
  801. package/lib/Cloudflare/R2/BucketReadWriteHttp.js +21 -0
  802. package/lib/Cloudflare/R2/BucketReadWriteHttp.js.map +1 -0
  803. package/lib/Cloudflare/R2/BucketSippy.d.ts +1 -1
  804. package/lib/Cloudflare/R2/BucketSippy.d.ts.map +1 -1
  805. package/lib/Cloudflare/R2/BucketTypes.d.ts +52 -0
  806. package/lib/Cloudflare/R2/BucketTypes.d.ts.map +1 -0
  807. package/lib/Cloudflare/R2/BucketTypes.js +6 -0
  808. package/lib/Cloudflare/R2/BucketTypes.js.map +1 -0
  809. package/lib/Cloudflare/R2/BucketWrite.d.ts +32 -0
  810. package/lib/Cloudflare/R2/BucketWrite.d.ts.map +1 -0
  811. package/lib/Cloudflare/R2/BucketWrite.js +12 -0
  812. package/lib/Cloudflare/R2/BucketWrite.js.map +1 -0
  813. package/lib/Cloudflare/R2/BucketWriteBinding.d.ts +10 -0
  814. package/lib/Cloudflare/R2/BucketWriteBinding.d.ts.map +1 -0
  815. package/lib/Cloudflare/R2/BucketWriteBinding.js +46 -0
  816. package/lib/Cloudflare/R2/BucketWriteBinding.js.map +1 -0
  817. package/lib/Cloudflare/R2/BucketWriteHttp.d.ts +16 -0
  818. package/lib/Cloudflare/R2/BucketWriteHttp.d.ts.map +1 -0
  819. package/lib/Cloudflare/R2/BucketWriteHttp.js +72 -0
  820. package/lib/Cloudflare/R2/BucketWriteHttp.js.map +1 -0
  821. package/lib/Cloudflare/R2/index.d.ts +10 -2
  822. package/lib/Cloudflare/R2/index.d.ts.map +1 -1
  823. package/lib/Cloudflare/R2/index.js +10 -2
  824. package/lib/Cloudflare/R2/index.js.map +1 -1
  825. package/lib/Cloudflare/RateLimit/RateLimitBinding.d.ts +4 -3
  826. package/lib/Cloudflare/RateLimit/RateLimitBinding.d.ts.map +1 -1
  827. package/lib/Cloudflare/RateLimit/RateLimitBinding.js.map +1 -1
  828. package/lib/Cloudflare/SecretsStore/SecretBinding.d.ts +4 -3
  829. package/lib/Cloudflare/SecretsStore/SecretBinding.d.ts.map +1 -1
  830. package/lib/Cloudflare/SecretsStore/SecretBinding.js.map +1 -1
  831. package/lib/Cloudflare/StateStore/Api.d.ts +6 -6
  832. package/lib/Cloudflare/StateStore/Api.js +1 -1
  833. package/lib/Cloudflare/StateStore/Api.js.map +1 -1
  834. package/lib/Cloudflare/StateStore/State.d.ts +1 -1
  835. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  836. package/lib/Cloudflare/StateStore/State.js +6 -5
  837. package/lib/Cloudflare/StateStore/State.js.map +1 -1
  838. package/lib/Cloudflare/StateStore/Store.d.ts +13 -13
  839. package/lib/Cloudflare/StateStore/Store.d.ts.map +1 -1
  840. package/lib/Cloudflare/StateStore/Store.js +5 -7
  841. package/lib/Cloudflare/StateStore/Store.js.map +1 -1
  842. package/lib/Cloudflare/Tunnel/Tunnel.js +1 -1
  843. package/lib/Cloudflare/Tunnel/Tunnel.js.map +1 -1
  844. package/lib/Cloudflare/Tunnel/TunnelBinding.d.ts +2 -11
  845. package/lib/Cloudflare/Tunnel/TunnelBinding.d.ts.map +1 -1
  846. package/lib/Cloudflare/Tunnel/TunnelBinding.js +0 -10
  847. package/lib/Cloudflare/Tunnel/TunnelBinding.js.map +1 -1
  848. package/lib/Cloudflare/Tunnel/TunnelRead.d.ts +3 -2
  849. package/lib/Cloudflare/Tunnel/TunnelRead.d.ts.map +1 -1
  850. package/lib/Cloudflare/Tunnel/TunnelRead.js +2 -1
  851. package/lib/Cloudflare/Tunnel/TunnelRead.js.map +1 -1
  852. package/lib/Cloudflare/Tunnel/TunnelReadWrite.d.ts +3 -2
  853. package/lib/Cloudflare/Tunnel/TunnelReadWrite.d.ts.map +1 -1
  854. package/lib/Cloudflare/Tunnel/TunnelReadWrite.js.map +1 -1
  855. package/lib/Cloudflare/Tunnel/TunnelWrite.d.ts +3 -2
  856. package/lib/Cloudflare/Tunnel/TunnelWrite.d.ts.map +1 -1
  857. package/lib/Cloudflare/Tunnel/TunnelWrite.js +2 -1
  858. package/lib/Cloudflare/Tunnel/TunnelWrite.js.map +1 -1
  859. package/lib/Cloudflare/Tunnel/WarpConnector.js +1 -1
  860. package/lib/Cloudflare/Tunnel/WarpConnector.js.map +1 -1
  861. package/lib/Cloudflare/UrlNormalization/UrlNormalization.d.ts.map +1 -1
  862. package/lib/Cloudflare/UrlNormalization/UrlNormalization.js +10 -1
  863. package/lib/Cloudflare/UrlNormalization/UrlNormalization.js.map +1 -1
  864. package/lib/Cloudflare/Vectorize/VectorizeIndexBinding.d.ts +4 -3
  865. package/lib/Cloudflare/Vectorize/VectorizeIndexBinding.d.ts.map +1 -1
  866. package/lib/Cloudflare/Vectorize/VectorizeIndexBinding.js.map +1 -1
  867. package/lib/Cloudflare/VpcService/VpcService.js +1 -1
  868. package/lib/Cloudflare/VpcService/VpcService.js.map +1 -1
  869. package/lib/Cloudflare/WaitingRoom/Settings.d.ts.map +1 -1
  870. package/lib/Cloudflare/WaitingRoom/Settings.js +17 -3
  871. package/lib/Cloudflare/WaitingRoom/Settings.js.map +1 -1
  872. package/lib/Cloudflare/Website/StaticSite.d.ts +5 -4
  873. package/lib/Cloudflare/Website/StaticSite.d.ts.map +1 -1
  874. package/lib/Cloudflare/Website/StaticSite.js +8 -8
  875. package/lib/Cloudflare/Website/StaticSite.js.map +1 -1
  876. package/lib/Cloudflare/Website/Vite.d.ts +1 -1
  877. package/lib/Cloudflare/Website/Vite.d.ts.map +1 -1
  878. package/lib/Cloudflare/Workers/AccountSetting.d.ts.map +1 -1
  879. package/lib/Cloudflare/Workers/AccountSetting.js +12 -4
  880. package/lib/Cloudflare/Workers/AccountSetting.js.map +1 -1
  881. package/lib/Cloudflare/Workers/Assets.js +6 -6
  882. package/lib/Cloudflare/Workers/Assets.js.map +1 -1
  883. package/lib/Cloudflare/Workers/CronEventSource.d.ts +4 -3
  884. package/lib/Cloudflare/Workers/CronEventSource.d.ts.map +1 -1
  885. package/lib/Cloudflare/Workers/CronEventSource.js +1 -1
  886. package/lib/Cloudflare/Workers/CronEventSource.js.map +1 -1
  887. package/lib/Cloudflare/Workers/DurableObjectBridge.d.ts.map +1 -1
  888. package/lib/Cloudflare/Workers/DurableObjectBridge.js +15 -9
  889. package/lib/Cloudflare/Workers/DurableObjectBridge.js.map +1 -1
  890. package/lib/Cloudflare/Workers/DurableObjectChatPersistence.d.ts.map +1 -1
  891. package/lib/Cloudflare/Workers/DurableObjectChatPersistence.js +7 -6
  892. package/lib/Cloudflare/Workers/DurableObjectChatPersistence.js.map +1 -1
  893. package/lib/Cloudflare/Workers/DurableObjectNamespace.d.ts +67 -52
  894. package/lib/Cloudflare/Workers/DurableObjectNamespace.d.ts.map +1 -1
  895. package/lib/Cloudflare/Workers/DurableObjectNamespace.js +75 -50
  896. package/lib/Cloudflare/Workers/DurableObjectNamespace.js.map +1 -1
  897. package/lib/Cloudflare/Workers/DurableObjectState.d.ts +11 -10
  898. package/lib/Cloudflare/Workers/DurableObjectState.d.ts.map +1 -1
  899. package/lib/Cloudflare/Workers/DurableObjectState.js.map +1 -1
  900. package/lib/Cloudflare/Workers/DurableObjectStorage.d.ts +35 -35
  901. package/lib/Cloudflare/Workers/DurableObjectStorage.d.ts.map +1 -1
  902. package/lib/Cloudflare/Workers/DurableObjectStorage.js +0 -1
  903. package/lib/Cloudflare/Workers/DurableObjectStorage.js.map +1 -1
  904. package/lib/Cloudflare/Workers/Fetch.d.ts +4 -3
  905. package/lib/Cloudflare/Workers/Fetch.d.ts.map +1 -1
  906. package/lib/Cloudflare/Workers/Fetch.js.map +1 -1
  907. package/lib/Cloudflare/Workers/GitHubRepositoryEventSource.d.ts +4 -3
  908. package/lib/Cloudflare/Workers/GitHubRepositoryEventSource.d.ts.map +1 -1
  909. package/lib/Cloudflare/Workers/GitHubRepositoryEventSource.js.map +1 -1
  910. package/lib/Cloudflare/Workers/InferEnv.d.ts +1 -1
  911. package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
  912. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  913. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +14 -15
  914. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  915. package/lib/Cloudflare/Workers/Rpc.d.ts +1 -75
  916. package/lib/Cloudflare/Workers/Rpc.d.ts.map +1 -1
  917. package/lib/Cloudflare/Workers/Rpc.js +7 -162
  918. package/lib/Cloudflare/Workers/Rpc.js.map +1 -1
  919. package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.d.ts +8 -6
  920. package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.d.ts.map +1 -1
  921. package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.js +5 -4
  922. package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.js.map +1 -1
  923. package/lib/Cloudflare/Workers/RpcWorker.d.ts +4 -3
  924. package/lib/Cloudflare/Workers/RpcWorker.d.ts.map +1 -1
  925. package/lib/Cloudflare/Workers/RpcWorker.js +3 -3
  926. package/lib/Cloudflare/Workers/RpcWorker.js.map +1 -1
  927. package/lib/Cloudflare/Workers/ScheduledEvents.d.ts +5 -4
  928. package/lib/Cloudflare/Workers/ScheduledEvents.d.ts.map +1 -1
  929. package/lib/Cloudflare/Workers/ScheduledEvents.js +2 -2
  930. package/lib/Cloudflare/Workers/ScheduledEvents.js.map +1 -1
  931. package/lib/Cloudflare/Workers/VersionMetadataBinding.d.ts +4 -3
  932. package/lib/Cloudflare/Workers/VersionMetadataBinding.d.ts.map +1 -1
  933. package/lib/Cloudflare/Workers/VersionMetadataBinding.js.map +1 -1
  934. package/lib/Cloudflare/Workers/WebSocket.d.ts +1 -1
  935. package/lib/Cloudflare/Workers/WebSocket.d.ts.map +1 -1
  936. package/lib/Cloudflare/Workers/WebSocket.js +1 -1
  937. package/lib/Cloudflare/Workers/WebSocket.js.map +1 -1
  938. package/lib/Cloudflare/Workers/Worker.d.ts +64 -33
  939. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  940. package/lib/Cloudflare/Workers/Worker.js +22 -1297
  941. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  942. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
  943. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +5 -5
  944. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
  945. package/lib/Cloudflare/Workers/WorkerBinding.d.ts +15 -14
  946. package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
  947. package/lib/Cloudflare/Workers/WorkerBinding.js +1 -1
  948. package/lib/Cloudflare/Workers/WorkerBinding.js.map +1 -1
  949. package/lib/Cloudflare/Workers/WorkerBridge.d.ts.map +1 -1
  950. package/lib/Cloudflare/Workers/WorkerBridge.js +22 -18
  951. package/lib/Cloudflare/Workers/WorkerBridge.js.map +1 -1
  952. package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
  953. package/lib/Cloudflare/Workers/WorkerBundle.js +3 -3
  954. package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
  955. package/lib/Cloudflare/Workers/{DynamicWorkerLoader.d.ts → WorkerLoader.d.ts} +47 -98
  956. package/lib/Cloudflare/Workers/WorkerLoader.d.ts.map +1 -0
  957. package/lib/Cloudflare/Workers/{DynamicWorkerLoader.js → WorkerLoader.js} +40 -32
  958. package/lib/Cloudflare/Workers/WorkerLoader.js.map +1 -0
  959. package/lib/Cloudflare/Workers/WorkerProvider.d.ts +9 -0
  960. package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -0
  961. package/lib/Cloudflare/Workers/WorkerProvider.js +1318 -0
  962. package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -0
  963. package/lib/Cloudflare/Workers/Workflow.d.ts +3 -2
  964. package/lib/Cloudflare/Workers/Workflow.d.ts.map +1 -1
  965. package/lib/Cloudflare/Workers/Workflow.js +4 -4
  966. package/lib/Cloudflare/Workers/Workflow.js.map +1 -1
  967. package/lib/Cloudflare/Workers/index.d.ts +2 -2
  968. package/lib/Cloudflare/Workers/index.d.ts.map +1 -1
  969. package/lib/Cloudflare/Workers/index.js +2 -2
  970. package/lib/Cloudflare/Workers/index.js.map +1 -1
  971. package/lib/Cloudflare/Zaraz/ZarazConfig.js +1 -1
  972. package/lib/Cloudflare/Zaraz/ZarazConfig.js.map +1 -1
  973. package/lib/Cloudflare/Zone/Hold.d.ts.map +1 -1
  974. package/lib/Cloudflare/Zone/Hold.js +15 -1
  975. package/lib/Cloudflare/Zone/Hold.js.map +1 -1
  976. package/lib/Cloudflare/index.d.ts +3 -0
  977. package/lib/Cloudflare/index.d.ts.map +1 -1
  978. package/lib/Cloudflare/index.js +3 -0
  979. package/lib/Cloudflare/index.js.map +1 -1
  980. package/lib/Command/Build.d.ts +98 -0
  981. package/lib/Command/Build.d.ts.map +1 -0
  982. package/lib/Command/Build.js +118 -0
  983. package/lib/Command/Build.js.map +1 -0
  984. package/lib/Command/Command.d.ts +99 -0
  985. package/lib/Command/Command.d.ts.map +1 -0
  986. package/lib/Command/Command.js +118 -0
  987. package/lib/Command/Command.js.map +1 -0
  988. package/lib/Command/Dev.d.ts +73 -0
  989. package/lib/Command/Dev.d.ts.map +1 -0
  990. package/lib/Command/Dev.js +145 -0
  991. package/lib/Command/Dev.js.map +1 -0
  992. package/lib/Command/Exec.d.ts +70 -0
  993. package/lib/Command/Exec.d.ts.map +1 -0
  994. package/lib/Command/Exec.js +87 -0
  995. package/lib/Command/Exec.js.map +1 -0
  996. package/lib/{Build → Command}/Local.d.ts.map +1 -1
  997. package/lib/Command/Local.js +6 -0
  998. package/lib/Command/Local.js.map +1 -0
  999. package/lib/Command/Memo.d.ts.map +1 -0
  1000. package/lib/{Build → Command}/Memo.js +5 -5
  1001. package/lib/Command/Memo.js.map +1 -0
  1002. package/lib/Command/Providers.d.ts +4 -0
  1003. package/lib/Command/Providers.d.ts.map +1 -0
  1004. package/lib/Command/Providers.js +31 -0
  1005. package/lib/Command/Providers.js.map +1 -0
  1006. package/lib/Command/index.d.ts +6 -0
  1007. package/lib/Command/index.d.ts.map +1 -0
  1008. package/lib/Command/index.js +6 -0
  1009. package/lib/Command/index.js.map +1 -0
  1010. package/lib/Drizzle/Providers.d.ts +1 -1
  1011. package/lib/Drizzle/Providers.d.ts.map +1 -1
  1012. package/lib/Drizzle/Schema.d.ts +1 -1
  1013. package/lib/Drizzle/Schema.d.ts.map +1 -1
  1014. package/lib/Drizzle/Schema.js +147 -12
  1015. package/lib/Drizzle/Schema.js.map +1 -1
  1016. package/lib/GitHub/AuthProvider.js +2 -2
  1017. package/lib/GitHub/AuthProvider.js.map +1 -1
  1018. package/lib/GitHub/Secrets.d.ts.map +1 -1
  1019. package/lib/GitHub/Secrets.js +12 -9
  1020. package/lib/GitHub/Secrets.js.map +1 -1
  1021. package/lib/Local/RpcProvider.d.ts +2 -2
  1022. package/lib/Local/RpcProvider.d.ts.map +1 -1
  1023. package/lib/Local/RpcProvider.js.map +1 -1
  1024. package/lib/Local/RpcProviderProxy.js +3 -3
  1025. package/lib/Local/RpcProviderProxy.js.map +1 -1
  1026. package/lib/Local/RpcServerBun.js +1 -1
  1027. package/lib/Local/RpcServerBun.js.map +1 -1
  1028. package/lib/Local/RpcServerNode.js +1 -1
  1029. package/lib/Local/RpcServerNode.js.map +1 -1
  1030. package/lib/Local/RpcSpawner.js +3 -3
  1031. package/lib/Local/RpcSpawner.js.map +1 -1
  1032. package/lib/Named.d.ts +7 -0
  1033. package/lib/Named.d.ts.map +1 -0
  1034. package/lib/Named.js +1 -0
  1035. package/lib/Named.js.map +1 -0
  1036. package/lib/Neon/AuthProvider.js +2 -2
  1037. package/lib/Neon/AuthProvider.js.map +1 -1
  1038. package/lib/Neon/Branch.d.ts +0 -2
  1039. package/lib/Neon/Branch.d.ts.map +1 -1
  1040. package/lib/Neon/Branch.js +22 -8
  1041. package/lib/Neon/Branch.js.map +1 -1
  1042. package/lib/Neon/Project.js +2 -2
  1043. package/lib/Neon/Project.js.map +1 -1
  1044. package/lib/Phase.d.ts +15 -0
  1045. package/lib/Phase.d.ts.map +1 -1
  1046. package/lib/Phase.js.map +1 -1
  1047. package/lib/Plan.d.ts.map +1 -1
  1048. package/lib/Plan.js +12 -0
  1049. package/lib/Plan.js.map +1 -1
  1050. package/lib/Planetscale/AuthProvider.js +2 -2
  1051. package/lib/Planetscale/AuthProvider.js.map +1 -1
  1052. package/lib/Platform.d.ts +23 -14
  1053. package/lib/Platform.d.ts.map +1 -1
  1054. package/lib/Platform.js +9 -9
  1055. package/lib/Platform.js.map +1 -1
  1056. package/lib/Provider.d.ts +4 -4
  1057. package/lib/Provider.d.ts.map +1 -1
  1058. package/lib/Provider.js +1 -1
  1059. package/lib/Provider.js.map +1 -1
  1060. package/lib/Resource.d.ts +12 -6
  1061. package/lib/Resource.d.ts.map +1 -1
  1062. package/lib/Resource.js.map +1 -1
  1063. package/lib/Rpc.d.ts +124 -1
  1064. package/lib/Rpc.d.ts.map +1 -1
  1065. package/lib/Rpc.js +342 -0
  1066. package/lib/Rpc.js.map +1 -1
  1067. package/lib/RuntimeContext.d.ts +1 -0
  1068. package/lib/RuntimeContext.d.ts.map +1 -1
  1069. package/lib/RuntimeContext.js +1 -0
  1070. package/lib/RuntimeContext.js.map +1 -1
  1071. package/lib/Self.d.ts +4 -0
  1072. package/lib/Self.d.ts.map +1 -1
  1073. package/lib/Self.js.map +1 -1
  1074. package/lib/Server/S3BucketEventSource.d.ts +4 -3
  1075. package/lib/Server/S3BucketEventSource.d.ts.map +1 -1
  1076. package/lib/Server/S3BucketEventSource.js.map +1 -1
  1077. package/lib/Stack.d.ts +11 -3
  1078. package/lib/Stack.d.ts.map +1 -1
  1079. package/lib/Stack.js +6 -2
  1080. package/lib/Stack.js.map +1 -1
  1081. package/lib/State/HttpStateApi.d.ts +15 -15
  1082. package/lib/State/LocalState.js +1 -1
  1083. package/lib/State/LocalState.js.map +1 -1
  1084. package/lib/State/Sync.js +4 -4
  1085. package/lib/State/Sync.js.map +1 -1
  1086. package/lib/Tags.d.ts.map +1 -1
  1087. package/lib/Tags.js +3 -3
  1088. package/lib/Tags.js.map +1 -1
  1089. package/lib/Test/Bun.d.ts +1 -1
  1090. package/lib/Test/Bun.d.ts.map +1 -1
  1091. package/lib/Test/Bun.js +1 -0
  1092. package/lib/Test/Bun.js.map +1 -1
  1093. package/lib/Test/Http.d.ts +42 -0
  1094. package/lib/Test/Http.d.ts.map +1 -0
  1095. package/lib/Test/Http.js +48 -0
  1096. package/lib/Test/Http.js.map +1 -0
  1097. package/lib/Util/FileLogger.js +1 -1
  1098. package/lib/Util/FileLogger.js.map +1 -1
  1099. package/lib/Util/effect.d.ts.map +1 -1
  1100. package/lib/Util/effect.js +2 -1
  1101. package/lib/Util/effect.js.map +1 -1
  1102. package/lib/Util/interactive.d.ts +16 -0
  1103. package/lib/Util/interactive.d.ts.map +1 -0
  1104. package/lib/Util/interactive.js +35 -0
  1105. package/lib/Util/interactive.js.map +1 -0
  1106. package/lib/index.d.ts +2 -1
  1107. package/lib/index.d.ts.map +1 -1
  1108. package/lib/index.js +1 -1
  1109. package/lib/index.js.map +1 -1
  1110. package/package.json +23 -10
  1111. package/src/AI/Agent.ts +78 -0
  1112. package/src/AI/Parameter.ts +57 -0
  1113. package/src/AI/Tool.ts +98 -0
  1114. package/src/AI/index.ts +3 -0
  1115. package/src/AWS/ACM/Certificate.ts +30 -20
  1116. package/src/AWS/Assets.ts +1 -1
  1117. package/src/AWS/AuthProvider.ts +3 -3
  1118. package/src/AWS/AutoScaling/LaunchTemplate.ts +1 -1
  1119. package/src/AWS/CloudFront/Distribution.ts +1 -1
  1120. package/src/AWS/CloudWatch/DescribeAlarmContributors.ts +3 -1
  1121. package/src/AWS/CloudWatch/DescribeAlarmHistory.ts +3 -1
  1122. package/src/AWS/CloudWatch/DescribeAlarms.ts +3 -1
  1123. package/src/AWS/CloudWatch/DescribeAlarmsForMetric.ts +3 -1
  1124. package/src/AWS/CloudWatch/DescribeAnomalyDetectors.ts +3 -1
  1125. package/src/AWS/CloudWatch/DescribeInsightRules.ts +3 -1
  1126. package/src/AWS/CloudWatch/DisableAlarmActions.ts +3 -1
  1127. package/src/AWS/CloudWatch/DisableInsightRules.ts +3 -1
  1128. package/src/AWS/CloudWatch/EnableAlarmActions.ts +3 -1
  1129. package/src/AWS/CloudWatch/GetAlarmMuteRule.ts +3 -1
  1130. package/src/AWS/CloudWatch/GetDashboard.ts +3 -1
  1131. package/src/AWS/CloudWatch/GetInsightRuleReport.ts +3 -1
  1132. package/src/AWS/CloudWatch/GetMetricData.ts +3 -1
  1133. package/src/AWS/CloudWatch/GetMetricStatistics.ts +3 -1
  1134. package/src/AWS/CloudWatch/GetMetricStream.ts +3 -1
  1135. package/src/AWS/CloudWatch/GetMetricWidgetImage.ts +3 -1
  1136. package/src/AWS/CloudWatch/ListAlarmMuteRules.ts +3 -1
  1137. package/src/AWS/CloudWatch/ListDashboards.ts +3 -1
  1138. package/src/AWS/CloudWatch/ListManagedInsightRules.ts +3 -1
  1139. package/src/AWS/CloudWatch/ListMetricStreams.ts +3 -1
  1140. package/src/AWS/CloudWatch/ListMetrics.ts +3 -1
  1141. package/src/AWS/CloudWatch/ListTagsForResource.ts +3 -1
  1142. package/src/AWS/CloudWatch/PutMetricData.ts +3 -1
  1143. package/src/AWS/CloudWatch/SetAlarmState.ts +3 -1
  1144. package/src/AWS/Credentials.ts +6 -0
  1145. package/src/AWS/DynamoDB/BatchExecuteStatement.ts +3 -1
  1146. package/src/AWS/DynamoDB/BatchGetItem.ts +10 -6
  1147. package/src/AWS/DynamoDB/BatchWriteItem.ts +10 -6
  1148. package/src/AWS/DynamoDB/DeleteItem.ts +3 -1
  1149. package/src/AWS/DynamoDB/DescribeTable.ts +3 -1
  1150. package/src/AWS/DynamoDB/DescribeTimeToLive.ts +3 -1
  1151. package/src/AWS/DynamoDB/ExecuteStatement.ts +3 -1
  1152. package/src/AWS/DynamoDB/ExecuteTransaction.ts +3 -1
  1153. package/src/AWS/DynamoDB/GetItem.ts +3 -1
  1154. package/src/AWS/DynamoDB/ListTables.ts +3 -1
  1155. package/src/AWS/DynamoDB/ListTagsOfResource.ts +3 -1
  1156. package/src/AWS/DynamoDB/PutItem.ts +3 -1
  1157. package/src/AWS/DynamoDB/Query.ts +3 -1
  1158. package/src/AWS/DynamoDB/RestoreTableToPointInTime.ts +3 -1
  1159. package/src/AWS/DynamoDB/Scan.ts +3 -1
  1160. package/src/AWS/DynamoDB/TransactGetItems.ts +10 -6
  1161. package/src/AWS/DynamoDB/TransactWriteItems.ts +14 -8
  1162. package/src/AWS/DynamoDB/UpdateItem.ts +3 -1
  1163. package/src/AWS/DynamoDB/UpdateTimeToLive.ts +3 -1
  1164. package/src/AWS/EC2/Image.ts +2 -2
  1165. package/src/AWS/EC2/Instance.ts +1 -3
  1166. package/src/AWS/EC2/NatGateway.ts +1 -1
  1167. package/src/AWS/EC2/NetworkAcl.ts +1 -1
  1168. package/src/AWS/EC2/SecurityGroup.ts +1 -1
  1169. package/src/AWS/EC2/VpcEndpoint.ts +1 -1
  1170. package/src/AWS/EC2/hosted.ts +2 -2
  1171. package/src/AWS/ECS/DescribeTasks.ts +3 -1
  1172. package/src/AWS/ECS/ListTasks.ts +3 -1
  1173. package/src/AWS/ECS/RunTask.ts +3 -1
  1174. package/src/AWS/ECS/StopTask.ts +3 -1
  1175. package/src/AWS/ECS/Task.ts +1 -1
  1176. package/src/AWS/Environment.ts +4 -3
  1177. package/src/AWS/EventBridge/DescribeEventBus.ts +3 -1
  1178. package/src/AWS/EventBridge/DescribeRule.ts +3 -1
  1179. package/src/AWS/EventBridge/ListEventBuses.ts +3 -1
  1180. package/src/AWS/EventBridge/ListRules.ts +3 -1
  1181. package/src/AWS/EventBridge/ListTargetsByRule.ts +3 -1
  1182. package/src/AWS/EventBridge/PutEvents.ts +3 -1
  1183. package/src/AWS/EventBridge/TestEventPattern.ts +3 -1
  1184. package/src/AWS/EventBridge/ToLambda.ts +3 -1
  1185. package/src/AWS/EventBridge/ToQueue.ts +3 -1
  1186. package/src/AWS/Kinesis/DescribeAccountSettings.ts +3 -1
  1187. package/src/AWS/Kinesis/DescribeLimits.ts +3 -1
  1188. package/src/AWS/Kinesis/DescribeStream.ts +3 -1
  1189. package/src/AWS/Kinesis/DescribeStreamConsumer.ts +3 -1
  1190. package/src/AWS/Kinesis/DescribeStreamSummary.ts +3 -1
  1191. package/src/AWS/Kinesis/GetRecords.ts +3 -1
  1192. package/src/AWS/Kinesis/GetResourcePolicy.ts +3 -1
  1193. package/src/AWS/Kinesis/GetShardIterator.ts +3 -1
  1194. package/src/AWS/Kinesis/ListShards.ts +3 -1
  1195. package/src/AWS/Kinesis/ListStreamConsumers.ts +3 -1
  1196. package/src/AWS/Kinesis/ListStreams.ts +3 -1
  1197. package/src/AWS/Kinesis/ListTagsForResource.ts +3 -1
  1198. package/src/AWS/Kinesis/PutRecord.ts +3 -1
  1199. package/src/AWS/Kinesis/PutRecords.ts +3 -1
  1200. package/src/AWS/Kinesis/StreamSink.ts +3 -1
  1201. package/src/AWS/Kinesis/SubscribeToShard.ts +3 -1
  1202. package/src/AWS/Lambda/BucketEventSource.ts +3 -1
  1203. package/src/AWS/Lambda/EventBridgeEventSource.ts +3 -1
  1204. package/src/AWS/Lambda/Function.ts +182 -55
  1205. package/src/AWS/Lambda/InvokeFunction.ts +3 -1
  1206. package/src/AWS/Lambda/QueueEventSource.ts +3 -1
  1207. package/src/AWS/Lambda/StreamEventSource.ts +3 -1
  1208. package/src/AWS/Lambda/TableEventSource.ts +3 -1
  1209. package/src/AWS/Lambda/TopicEventSource.ts +3 -1
  1210. package/src/AWS/Organizations/Root.ts +1 -1
  1211. package/src/AWS/Providers.ts +4 -5
  1212. package/src/AWS/RDS/Connect.ts +3 -1
  1213. package/src/AWS/RDSData/BatchExecuteStatement.ts +3 -1
  1214. package/src/AWS/RDSData/BeginTransaction.ts +3 -1
  1215. package/src/AWS/RDSData/CommitTransaction.ts +6 -1
  1216. package/src/AWS/RDSData/ExecuteSql.ts +3 -1
  1217. package/src/AWS/RDSData/ExecuteStatement.ts +3 -1
  1218. package/src/AWS/RDSData/RollbackTransaction.ts +3 -1
  1219. package/src/AWS/Region.ts +6 -0
  1220. package/src/AWS/S3/AbortMultipartUpload.ts +3 -1
  1221. package/src/AWS/S3/Bucket.ts +18 -18
  1222. package/src/AWS/S3/CompleteMultipartUpload.ts +3 -1
  1223. package/src/AWS/S3/CopyObject.ts +3 -1
  1224. package/src/AWS/S3/CreateMultipartUpload.ts +3 -1
  1225. package/src/AWS/S3/DeleteObject.ts +3 -1
  1226. package/src/AWS/S3/GetObject.ts +3 -1
  1227. package/src/AWS/S3/HeadObject.ts +3 -1
  1228. package/src/AWS/S3/ListObjectsV2.ts +3 -1
  1229. package/src/AWS/S3/PutObject.ts +3 -1
  1230. package/src/AWS/S3/UploadPart.ts +3 -1
  1231. package/src/AWS/SNS/AddPermission.ts +3 -1
  1232. package/src/AWS/SNS/ConfirmSubscription.ts +3 -1
  1233. package/src/AWS/SNS/GetDataProtectionPolicy.ts +3 -1
  1234. package/src/AWS/SNS/GetSubscriptionAttributes.ts +3 -1
  1235. package/src/AWS/SNS/GetTopicAttributes.ts +3 -1
  1236. package/src/AWS/SNS/ListSubscriptions.ts +3 -1
  1237. package/src/AWS/SNS/ListSubscriptionsByTopic.ts +3 -1
  1238. package/src/AWS/SNS/ListTagsForResource.ts +3 -1
  1239. package/src/AWS/SNS/ListTopics.ts +3 -1
  1240. package/src/AWS/SNS/Publish.ts +3 -1
  1241. package/src/AWS/SNS/PublishBatch.ts +3 -1
  1242. package/src/AWS/SNS/PutDataProtectionPolicy.ts +3 -1
  1243. package/src/AWS/SNS/RemovePermission.ts +3 -1
  1244. package/src/AWS/SNS/SetSubscriptionAttributes.ts +3 -1
  1245. package/src/AWS/SNS/SetTopicAttributes.ts +3 -1
  1246. package/src/AWS/SNS/TagResource.ts +3 -1
  1247. package/src/AWS/SNS/TopicSink.ts +3 -1
  1248. package/src/AWS/SNS/UntagResource.ts +3 -1
  1249. package/src/AWS/SQS/DeleteMessage.ts +3 -1
  1250. package/src/AWS/SQS/DeleteMessageBatch.ts +3 -1
  1251. package/src/AWS/SQS/Queue.ts +1 -1
  1252. package/src/AWS/SQS/QueueSink.ts +3 -1
  1253. package/src/AWS/SQS/ReceiveMessage.ts +3 -1
  1254. package/src/AWS/SQS/SendMessage.ts +3 -1
  1255. package/src/AWS/SQS/SendMessageBatch.ts +3 -1
  1256. package/src/AWS/SecretsManager/DescribeSecret.ts +3 -1
  1257. package/src/AWS/SecretsManager/GetRandomPassword.ts +3 -1
  1258. package/src/AWS/SecretsManager/GetSecretValue.ts +3 -1
  1259. package/src/AWS/SecretsManager/ListSecrets.ts +3 -1
  1260. package/src/AWS/SecretsManager/PutSecretValue.ts +3 -1
  1261. package/src/AWS/StateStore/State.ts +41 -9
  1262. package/src/AWS/Website/Router.ts +212 -208
  1263. package/src/AWS/Website/SsrSite.ts +208 -209
  1264. package/src/AWS/Website/StaticSite.ts +284 -281
  1265. package/src/AdoptPolicy.ts +1 -1
  1266. package/src/Apply.ts +16 -7
  1267. package/src/Auth/Lock.ts +4 -2
  1268. package/src/Auth/Profile.ts +34 -12
  1269. package/src/Axiom/AuthProvider.ts +2 -2
  1270. package/src/Binding.ts +6 -2
  1271. package/src/Bundle/Bundle.ts +53 -4
  1272. package/src/Bundle/Docker.ts +23 -4
  1273. package/src/Bundle/InstalledPackages.ts +615 -0
  1274. package/src/Bundle/TempRoot.ts +1 -1
  1275. package/src/Bundle/index.ts +1 -0
  1276. package/src/Cli/commands/aws.ts +1 -1
  1277. package/src/Cli/commands/cloudflare.ts +3 -10
  1278. package/src/Cli/commands/login.ts +1 -1
  1279. package/src/Cli/commands/logs.ts +1 -1
  1280. package/src/Cli/commands/nuke.ts +1 -1
  1281. package/src/Cli/commands/profile.ts +2 -2
  1282. package/src/Cli/commands/state.ts +6 -11
  1283. package/src/Cli/commands/tail.ts +1 -1
  1284. package/src/Cli/selectCli.ts +2 -25
  1285. package/src/Cloudflare/Access/Application.ts +63 -20
  1286. package/src/Cloudflare/AiGateway/AiGateway.ts +186 -0
  1287. package/src/Cloudflare/AiGateway/AiGatewayBinding.ts +3 -1
  1288. package/src/Cloudflare/AiGateway/DurableObjectChatPersistence.ts +88 -0
  1289. package/src/Cloudflare/AiGateway/LanguageModel.ts +1 -3
  1290. package/src/Cloudflare/AiGateway/index.ts +1 -1
  1291. package/src/Cloudflare/AiSearch/AiSearch.ts +89 -90
  1292. package/src/Cloudflare/AiSearch/AiSearchBinding.ts +5 -2
  1293. package/src/Cloudflare/AiSearch/AiSearchInstance.ts +31 -14
  1294. package/src/Cloudflare/AnalyticsEngine/AnalyticsEngineDataset.ts +1 -4
  1295. package/src/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.ts +5 -3
  1296. package/src/Cloudflare/ApiShield/UserSchema.ts +5 -0
  1297. package/src/Cloudflare/Artifacts/ArtifactsBinding.ts +3 -1
  1298. package/src/Cloudflare/Auth/AuthProvider.ts +6 -3
  1299. package/src/Cloudflare/Browser/BrowserBinding.ts +3 -1
  1300. package/src/Cloudflare/Cache/RegionalTieredCache.ts +18 -0
  1301. package/src/Cloudflare/ClientCertificate/ClientCertificate.ts +19 -12
  1302. package/src/Cloudflare/CloudflareEnvironment.ts +3 -1
  1303. package/src/Cloudflare/Container/Container.ts +313 -171
  1304. package/src/Cloudflare/Container/ContainerApplication.ts +73 -893
  1305. package/src/Cloudflare/Container/ContainerBundle.ts +78 -2
  1306. package/src/Cloudflare/Container/ContainerPlatform.ts +220 -0
  1307. package/src/Cloudflare/Container/ContainerProvider.ts +1052 -0
  1308. package/src/Cloudflare/Container/LocalContainerProvider.ts +14 -7
  1309. package/src/Cloudflare/Container/StartContainer.ts +65 -14
  1310. package/src/Cloudflare/Container/index.ts +2 -1
  1311. package/src/Cloudflare/Credentials.ts +6 -0
  1312. package/src/Cloudflare/D1/D1Connection.ts +3 -1
  1313. package/src/Cloudflare/Dns/DnsBinding.ts +1 -30
  1314. package/src/Cloudflare/Dns/DnsRead.ts +5 -3
  1315. package/src/Cloudflare/Dns/DnsReadWrite.ts +3 -1
  1316. package/src/Cloudflare/Dns/DnsWrite.ts +5 -3
  1317. package/src/Cloudflare/Email/EmailCatchAll.ts +1 -1
  1318. package/src/Cloudflare/Email/EmailRouting.ts +1 -1
  1319. package/src/Cloudflare/Email/EmailRule.ts +1 -1
  1320. package/src/Cloudflare/Email/SendEmail.ts +1 -1
  1321. package/src/Cloudflare/Email/SendEmailBinding.ts +5 -3
  1322. package/src/Cloudflare/Fetcher.ts +86 -15
  1323. package/src/Cloudflare/Flagship/FlagshipBinding.ts +3 -1
  1324. package/src/Cloudflare/GoogleTagGateway/GoogleTagGateway.ts +1 -1
  1325. package/src/Cloudflare/HttpClientUtils.ts +31 -0
  1326. package/src/Cloudflare/Hyperdrive/HyperdriveBinding.ts +3 -1
  1327. package/src/Cloudflare/Iam/UserGroupMembership.ts +7 -0
  1328. package/src/Cloudflare/Images/ImagesBinding.ts +3 -1
  1329. package/src/Cloudflare/Images/Variant.ts +20 -3
  1330. package/src/Cloudflare/KV/{KVNamespace.ts → Namespace.ts} +9 -6
  1331. package/src/Cloudflare/KV/NamespaceBinding.ts +68 -0
  1332. package/src/Cloudflare/KV/NamespaceHttp.ts +89 -0
  1333. package/src/Cloudflare/KV/{KVNamespaceBinding.ts → NamespaceRead.ts} +15 -104
  1334. package/src/Cloudflare/KV/NamespaceReadBinding.ts +39 -0
  1335. package/src/Cloudflare/KV/NamespaceReadHttp.ts +171 -0
  1336. package/src/Cloudflare/KV/NamespaceReadWrite.ts +20 -0
  1337. package/src/Cloudflare/KV/NamespaceReadWriteBinding.ts +32 -0
  1338. package/src/Cloudflare/KV/NamespaceReadWriteHttp.ts +38 -0
  1339. package/src/Cloudflare/KV/NamespaceTypes.ts +6 -0
  1340. package/src/Cloudflare/KV/NamespaceWrite.ts +26 -0
  1341. package/src/Cloudflare/KV/NamespaceWriteBinding.ts +34 -0
  1342. package/src/Cloudflare/KV/NamespaceWriteHttp.ts +105 -0
  1343. package/src/Cloudflare/KV/index.ts +11 -2
  1344. package/src/Cloudflare/Providers.ts +4 -22
  1345. package/src/Cloudflare/Queue/Queue.ts +9 -9
  1346. package/src/Cloudflare/Queue/QueueBinding.ts +48 -131
  1347. package/src/Cloudflare/Queue/QueueEventSource.ts +4 -2
  1348. package/src/Cloudflare/Queue/QueueHttp.ts +86 -0
  1349. package/src/Cloudflare/Queue/QueueTypes.ts +17 -0
  1350. package/src/Cloudflare/Queue/QueueWrite.ts +64 -0
  1351. package/src/Cloudflare/Queue/QueueWriteBinding.ts +33 -0
  1352. package/src/Cloudflare/Queue/QueueWriteHttp.ts +82 -0
  1353. package/src/Cloudflare/Queue/index.ts +4 -1
  1354. package/src/Cloudflare/R2/{R2Bucket.ts → Bucket.ts} +6 -9
  1355. package/src/Cloudflare/R2/BucketBinding.ts +115 -0
  1356. package/src/Cloudflare/R2/BucketEventNotification.ts +1 -1
  1357. package/src/Cloudflare/R2/BucketHttp.ts +201 -0
  1358. package/src/Cloudflare/R2/BucketRead.ts +43 -0
  1359. package/src/Cloudflare/R2/BucketReadBinding.ts +44 -0
  1360. package/src/Cloudflare/R2/BucketReadHttp.ts +181 -0
  1361. package/src/Cloudflare/R2/BucketReadWrite.ts +20 -0
  1362. package/src/Cloudflare/R2/BucketReadWriteBinding.ts +26 -0
  1363. package/src/Cloudflare/R2/BucketReadWriteHttp.ts +35 -0
  1364. package/src/Cloudflare/R2/BucketSippy.ts +1 -1
  1365. package/src/Cloudflare/R2/BucketTypes.ts +59 -0
  1366. package/src/Cloudflare/R2/BucketWrite.ts +77 -0
  1367. package/src/Cloudflare/R2/BucketWriteBinding.ts +111 -0
  1368. package/src/Cloudflare/R2/BucketWriteHttp.ts +144 -0
  1369. package/src/Cloudflare/R2/index.ts +10 -2
  1370. package/src/Cloudflare/RateLimit/RateLimitBinding.ts +3 -1
  1371. package/src/Cloudflare/SecretsStore/SecretBinding.ts +3 -1
  1372. package/src/Cloudflare/StateStore/Api.ts +1 -1
  1373. package/src/Cloudflare/StateStore/State.ts +6 -4
  1374. package/src/Cloudflare/StateStore/Store.ts +5 -8
  1375. package/src/Cloudflare/Tunnel/Tunnel.ts +1 -1
  1376. package/src/Cloudflare/Tunnel/TunnelBinding.ts +1 -30
  1377. package/src/Cloudflare/Tunnel/TunnelRead.ts +4 -2
  1378. package/src/Cloudflare/Tunnel/TunnelReadWrite.ts +3 -1
  1379. package/src/Cloudflare/Tunnel/TunnelWrite.ts +4 -2
  1380. package/src/Cloudflare/Tunnel/WarpConnector.ts +1 -1
  1381. package/src/Cloudflare/UrlNormalization/UrlNormalization.ts +12 -0
  1382. package/src/Cloudflare/Vectorize/VectorizeIndexBinding.ts +3 -1
  1383. package/src/Cloudflare/VpcService/VpcService.ts +1 -1
  1384. package/src/Cloudflare/WaitingRoom/Settings.ts +19 -1
  1385. package/src/Cloudflare/Website/StaticSite.ts +12 -11
  1386. package/src/Cloudflare/Website/Vite.ts +1 -1
  1387. package/src/Cloudflare/Workers/AccountSetting.ts +9 -6
  1388. package/src/Cloudflare/Workers/Assets.ts +6 -6
  1389. package/src/Cloudflare/Workers/CronEventSource.ts +4 -2
  1390. package/src/Cloudflare/Workers/DurableObjectBridge.ts +22 -17
  1391. package/src/Cloudflare/Workers/DurableObjectChatPersistence.ts +20 -4
  1392. package/src/Cloudflare/Workers/DurableObjectNamespace.ts +125 -73
  1393. package/src/Cloudflare/Workers/DurableObjectState.ts +25 -11
  1394. package/src/Cloudflare/Workers/DurableObjectStorage.ts +50 -37
  1395. package/src/Cloudflare/Workers/Fetch.ts +3 -1
  1396. package/src/Cloudflare/Workers/GitHubRepositoryEventSource.ts +3 -1
  1397. package/src/Cloudflare/Workers/InferEnv.ts +2 -2
  1398. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +15 -18
  1399. package/src/Cloudflare/Workers/Rpc.ts +7 -273
  1400. package/src/Cloudflare/Workers/RpcDurableObjectNamespace.ts +10 -8
  1401. package/src/Cloudflare/Workers/RpcWorker.ts +8 -8
  1402. package/src/Cloudflare/Workers/ScheduledEvents.ts +24 -20
  1403. package/src/Cloudflare/Workers/VersionMetadataBinding.ts +3 -1
  1404. package/src/Cloudflare/Workers/WebSocket.ts +1 -1
  1405. package/src/Cloudflare/Workers/Worker.ts +157 -1799
  1406. package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +5 -5
  1407. package/src/Cloudflare/Workers/WorkerBinding.ts +8 -6
  1408. package/src/Cloudflare/Workers/WorkerBridge.ts +22 -18
  1409. package/src/Cloudflare/Workers/WorkerBundle.ts +3 -5
  1410. package/src/Cloudflare/Workers/{DynamicWorkerLoader.ts → WorkerLoader.ts} +137 -140
  1411. package/src/Cloudflare/Workers/WorkerProvider.ts +1771 -0
  1412. package/src/Cloudflare/Workers/Workflow.ts +9 -5
  1413. package/src/Cloudflare/Workers/index.ts +2 -2
  1414. package/src/Cloudflare/Zaraz/ZarazConfig.ts +1 -1
  1415. package/src/Cloudflare/Zone/Hold.ts +18 -0
  1416. package/src/Cloudflare/index.ts +3 -0
  1417. package/src/Command/Build.ts +187 -0
  1418. package/src/Command/Command.ts +244 -0
  1419. package/src/Command/Dev.ts +219 -0
  1420. package/src/Command/Exec.ts +121 -0
  1421. package/src/Command/Local.ts +6 -0
  1422. package/src/{Build → Command}/Memo.ts +5 -5
  1423. package/src/Command/Providers.ts +41 -0
  1424. package/src/Command/index.ts +5 -0
  1425. package/src/Drizzle/Schema.ts +213 -26
  1426. package/src/GitHub/AuthProvider.ts +2 -2
  1427. package/src/GitHub/Secrets.ts +15 -12
  1428. package/src/Local/RpcProvider.ts +2 -2
  1429. package/src/Local/RpcProviderProxy.ts +3 -3
  1430. package/src/Local/RpcServerBun.ts +1 -1
  1431. package/src/Local/RpcServerNode.ts +1 -1
  1432. package/src/Local/RpcSpawner.ts +3 -3
  1433. package/src/Named.ts +6 -0
  1434. package/src/Neon/AuthProvider.ts +2 -2
  1435. package/src/Neon/Branch.ts +25 -12
  1436. package/src/Neon/Project.ts +2 -2
  1437. package/src/Phase.ts +16 -0
  1438. package/src/Plan.ts +12 -0
  1439. package/src/Planetscale/AuthProvider.ts +2 -2
  1440. package/src/Platform.ts +137 -96
  1441. package/src/Provider.ts +5 -6
  1442. package/src/Resource.ts +14 -7
  1443. package/src/Rpc.ts +552 -1
  1444. package/src/RuntimeContext.ts +3 -1
  1445. package/src/Self.ts +5 -2
  1446. package/src/Server/S3BucketEventSource.ts +3 -1
  1447. package/src/Stack.ts +26 -5
  1448. package/src/State/LocalState.ts +1 -1
  1449. package/src/State/Sync.ts +4 -4
  1450. package/src/Tags.ts +3 -5
  1451. package/src/Test/Bun.ts +7 -0
  1452. package/src/Test/Http.ts +74 -0
  1453. package/src/Util/FileLogger.ts +1 -1
  1454. package/src/Util/effect.ts +2 -1
  1455. package/src/Util/interactive.ts +32 -0
  1456. package/src/index.ts +2 -2
  1457. package/lib/Build/Command.d.ts +0 -114
  1458. package/lib/Build/Command.d.ts.map +0 -1
  1459. package/lib/Build/Command.js +0 -191
  1460. package/lib/Build/Command.js.map +0 -1
  1461. package/lib/Build/DevServer.d.ts +0 -113
  1462. package/lib/Build/DevServer.d.ts.map +0 -1
  1463. package/lib/Build/DevServer.js +0 -220
  1464. package/lib/Build/DevServer.js.map +0 -1
  1465. package/lib/Build/Local.js +0 -4
  1466. package/lib/Build/Local.js.map +0 -1
  1467. package/lib/Build/Memo.d.ts.map +0 -1
  1468. package/lib/Build/Memo.js.map +0 -1
  1469. package/lib/Build/index.d.ts +0 -2
  1470. package/lib/Build/index.d.ts.map +0 -1
  1471. package/lib/Build/index.js +0 -2
  1472. package/lib/Build/index.js.map +0 -1
  1473. package/lib/Cloudflare/AiGateway/AiGatewaySpendingLimit.d.ts +0 -167
  1474. package/lib/Cloudflare/AiGateway/AiGatewaySpendingLimit.d.ts.map +0 -1
  1475. package/lib/Cloudflare/AiGateway/AiGatewaySpendingLimit.js +0 -263
  1476. package/lib/Cloudflare/AiGateway/AiGatewaySpendingLimit.js.map +0 -1
  1477. package/lib/Cloudflare/Container/ContainerBinding.d.ts +0 -8
  1478. package/lib/Cloudflare/Container/ContainerBinding.d.ts.map +0 -1
  1479. package/lib/Cloudflare/Container/ContainerBinding.js +0 -39
  1480. package/lib/Cloudflare/Container/ContainerBinding.js.map +0 -1
  1481. package/lib/Cloudflare/KV/KVNamespace.d.ts.map +0 -1
  1482. package/lib/Cloudflare/KV/KVNamespace.js.map +0 -1
  1483. package/lib/Cloudflare/KV/KVNamespaceBinding.d.ts.map +0 -1
  1484. package/lib/Cloudflare/KV/KVNamespaceBinding.js +0 -63
  1485. package/lib/Cloudflare/KV/KVNamespaceBinding.js.map +0 -1
  1486. package/lib/Cloudflare/R2/R2Bucket.d.ts.map +0 -1
  1487. package/lib/Cloudflare/R2/R2Bucket.js.map +0 -1
  1488. package/lib/Cloudflare/R2/R2BucketBinding.d.ts +0 -92
  1489. package/lib/Cloudflare/R2/R2BucketBinding.d.ts.map +0 -1
  1490. package/lib/Cloudflare/R2/R2BucketBinding.js +0 -121
  1491. package/lib/Cloudflare/R2/R2BucketBinding.js.map +0 -1
  1492. package/lib/Cloudflare/Workers/DynamicWorkerLoader.d.ts.map +0 -1
  1493. package/lib/Cloudflare/Workers/DynamicWorkerLoader.js.map +0 -1
  1494. package/lib/Construct.d.ts +0 -56
  1495. package/lib/Construct.d.ts.map +0 -1
  1496. package/lib/Construct.js +0 -51
  1497. package/lib/Construct.js.map +0 -1
  1498. package/src/Build/Command.ts +0 -293
  1499. package/src/Build/DevServer.ts +0 -338
  1500. package/src/Build/Local.ts +0 -4
  1501. package/src/Build/index.ts +0 -1
  1502. package/src/Cloudflare/AiGateway/AiGatewaySpendingLimit.ts +0 -398
  1503. package/src/Cloudflare/Container/ContainerBinding.ts +0 -74
  1504. package/src/Cloudflare/R2/R2BucketBinding.ts +0 -339
  1505. package/src/Construct.ts +0 -71
  1506. /package/lib/{Build → Command}/Local.d.ts +0 -0
  1507. /package/lib/{Build → Command}/Memo.d.ts +0 -0
@@ -0,0 +1,1771 @@
1
+ import * as workers from "@distilled.cloud/cloudflare/workers";
2
+ import * as zones from "@distilled.cloud/cloudflare/zones";
3
+ import * as Data from "effect/Data";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Path from "effect/Path";
6
+ import * as Predicate from "effect/Predicate";
7
+ import * as Redacted from "effect/Redacted";
8
+ import * as Schedule from "effect/Schedule";
9
+ import * as Stream from "effect/Stream";
10
+ import * as crypto from "node:crypto";
11
+ import { Unowned } from "../../AdoptPolicy.ts";
12
+ import * as Artifacts from "../../Artifacts.ts";
13
+ import { hashDirectory } from "../../Command/Memo.ts";
14
+ import * as Bundle from "../../Bundle/Bundle.ts";
15
+ import type { ScopedPlanStatusSession } from "../../Cli/Cli.ts";
16
+ import { isResolved } from "../../Diff.ts";
17
+ import * as ProviderLayer from "../../Local/ProviderLayer.ts";
18
+ import * as Provider from "../../Provider.ts";
19
+ import { type ResourceBinding } from "../../Resource.ts";
20
+ import { Stack } from "../../Stack.ts";
21
+ import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
22
+ import { CloudflareLogs } from "../Logs.ts";
23
+ import { readAssets, uploadAssets } from "./Assets.ts";
24
+ import { getCompatibility } from "./Compatibility.ts";
25
+ import { isDurableObjectExport } from "./DurableObjectNamespace.ts";
26
+ import { LocalWorkerProvider } from "./LocalWorkerProvider.ts";
27
+ import { Worker, type WorkerProps } from "./Worker.ts";
28
+ import { getCronBindings } from "./WorkerAsyncBindings.ts";
29
+ import type { WorkerBinding, WorkerSettingsBinding } from "./WorkerBinding.ts";
30
+ import { readPrebuiltWorkerBundle, WorkerBundle } from "./WorkerBundle.ts";
31
+ import { isWorkerLoader } from "./WorkerLoader.ts";
32
+ import { createWorkerName } from "./WorkerName.ts";
33
+ class MissingDurableObjectNamespaces extends Data.TaggedError(
34
+ "MissingDurableObjectNamespaces",
35
+ )<{
36
+ scriptName: string;
37
+ expected: string[];
38
+ }> {}
39
+
40
+ export const WorkerProvider = () =>
41
+ ProviderLayer.select({
42
+ live: () => LiveWorkerProvider(),
43
+ local: () => LocalWorkerProvider(),
44
+ });
45
+
46
+ export const LiveWorkerProvider = () =>
47
+ Provider.effect(
48
+ Worker,
49
+ Effect.gen(function* () {
50
+ const path = yield* Path.Path;
51
+
52
+ const bundler = yield* WorkerBundle;
53
+ const stack = yield* Stack;
54
+
55
+ // const createScriptSubdomain = yield* workers.createScriptSubdomain;
56
+ // const deleteScript = yield* workers.deleteScript;
57
+ // const getScriptSubdomain = yield* workers.getScriptSubdomain;
58
+ // const getScriptSchedule = yield* workers.getScriptSchedule;
59
+ // const getScriptSettings = yield* workers.getScriptScriptAndVersionSetting;
60
+ // const getSubdomain = yield* workers.getSubdomain;
61
+ // const putScript = yield* workers.putScript;
62
+ // const putScriptSchedule = yield* workers.putScriptSchedule;
63
+ // const putDomain = yield* workers.putDomain;
64
+ // const listDomains = yield* workers.listDomains;
65
+ // const deleteDomain = yield* workers.deleteDomain;
66
+ // const listZones = yield* zones.listZones;
67
+ const telemetry = yield* CloudflareLogs;
68
+
69
+ const getAccountSubdomain = (accountId: string) =>
70
+ workers
71
+ .getSubdomain({
72
+ accountId,
73
+ })
74
+ .pipe(Effect.map((result) => result.subdomain));
75
+
76
+ // Toggle the workers.dev subdomain via `POST /subdomain` with
77
+ // `enabled: true | false`. Mirrors the upstream Alchemy
78
+ // implementation in `.vendor/alchemy/.../worker-subdomain.ts`.
79
+ // When enabling we also set `previewsEnabled: true` so the
80
+ // script is reachable both at its stable workers.dev URL and at
81
+ // version-preview URLs; on disable we send just `enabled: false`.
82
+ const setWorkerSubdomain = Effect.fn(function* (
83
+ name: string,
84
+ enabled: boolean,
85
+ ) {
86
+ const { accountId } = yield* yield* CloudflareEnvironment;
87
+ return yield* workers.createScriptSubdomain({
88
+ accountId,
89
+ scriptName: name,
90
+ enabled,
91
+ previewsEnabled: enabled ? true : undefined,
92
+ });
93
+ });
94
+
95
+ // Convert non-ASCII hostnames (emoji, IDN, etc.) to punycode so the
96
+ // Cloudflare API receives the form it stores domains in. `new URL(...)`
97
+ // does IDNA via WHATWG URL parsing — `📦.alchemy.run` → `xn--5z8h.alchemy.run`.
98
+ const toPunycode = (hostname: string): string => {
99
+ try {
100
+ return new URL(`https://${hostname}`).hostname;
101
+ } catch {
102
+ return hostname;
103
+ }
104
+ };
105
+
106
+ const normalizeDomains = (
107
+ domain: string | string[] | undefined,
108
+ ): string[] =>
109
+ domain === undefined
110
+ ? []
111
+ : Array.from(
112
+ new Set(
113
+ (Array.isArray(domain) ? domain : [domain]).map(toPunycode),
114
+ ),
115
+ );
116
+
117
+ const normalizeCrons = (crons: string[] | undefined): string[] =>
118
+ Array.from(new Set(crons ?? []));
119
+
120
+ const getWorkerCrons = Effect.fn(function* (scriptName: string) {
121
+ const { accountId } = yield* yield* CloudflareEnvironment;
122
+ return yield* workers
123
+ .getScriptSchedule({
124
+ accountId,
125
+ scriptName,
126
+ })
127
+ .pipe(
128
+ Effect.map((response) =>
129
+ normalizeCrons(
130
+ response.schedules.map((schedule) => schedule.cron),
131
+ ),
132
+ ),
133
+ Effect.catchTag("WorkerNotFound", () => Effect.succeed([])),
134
+ );
135
+ });
136
+
137
+ const reconcileCrons = (
138
+ scriptName: string,
139
+ desired: string[],
140
+ previous: string[],
141
+ session: ScopedPlanStatusSession,
142
+ ) =>
143
+ Effect.gen(function* () {
144
+ const { accountId } = yield* yield* CloudflareEnvironment;
145
+ const live = yield* getWorkerCrons(scriptName);
146
+ const desiredSorted = [...desired].sort();
147
+ const liveSorted = [...live].sort();
148
+ const changed =
149
+ desiredSorted.length !== liveSorted.length ||
150
+ desiredSorted.some((cron, index) => cron !== liveSorted[index]);
151
+
152
+ if (!changed) return live;
153
+
154
+ if (desired.length > 0 || previous.length > 0 || live.length > 0) {
155
+ yield* session.note(
156
+ `Reconciling Cron Triggers (${desired.length}) ...`,
157
+ );
158
+ }
159
+
160
+ const result = yield* workers
161
+ .putScriptSchedule({
162
+ accountId,
163
+ scriptName,
164
+ body: desired.map((cron) => ({ cron })),
165
+ })
166
+ .pipe(
167
+ Effect.retry({
168
+ while: (error) => error._tag === "WorkerNotFound",
169
+ schedule: Schedule.exponential(200).pipe(
170
+ Schedule.both(Schedule.recurs(15)),
171
+ ),
172
+ }),
173
+ );
174
+ return normalizeCrons(
175
+ result.schedules.map((schedule) => schedule.cron),
176
+ );
177
+ });
178
+
179
+ /**
180
+ * Infer the Cloudflare Zone ID for a given hostname by listing the
181
+ * account's zones and matching the hostname against each zone's name —
182
+ * walking up the DNS label hierarchy until a match is found.
183
+ */
184
+ const inferZoneIdForHostname = (
185
+ hostname: string,
186
+ zoneCache: Map<string, string>,
187
+ ) =>
188
+ Effect.gen(function* () {
189
+ const cached = zoneCache.get(hostname);
190
+ if (cached) return cached;
191
+
192
+ const zoneList = yield* zones
193
+ .listZones({})
194
+ .pipe(Effect.map((response) => response.result ?? []));
195
+ for (const zone of zoneList) {
196
+ zoneCache.set(zone.name, zone.id);
197
+ }
198
+
199
+ const parts = hostname.split(".");
200
+ for (let i = 0; i < parts.length - 1; i++) {
201
+ const candidate = parts.slice(i).join(".");
202
+ const match = zoneList.find((z) => z.name === candidate);
203
+ if (match) {
204
+ zoneCache.set(hostname, match.id);
205
+ return match.id;
206
+ }
207
+ }
208
+ return yield* Effect.die(
209
+ `Could not infer Cloudflare Zone for hostname "${hostname}". ` +
210
+ "Ensure the parent zone exists in this account.",
211
+ );
212
+ });
213
+
214
+ const reconcileDomains = (scriptName: string, desired: string[]) =>
215
+ Effect.gen(function* () {
216
+ const { accountId } = yield* yield* CloudflareEnvironment;
217
+ // Always query the live state of domains attached to *this*
218
+ // Worker rather than trusting `_previous` from local state.
219
+ // State may have been wiped, populated by another machine, or
220
+ // simply be out of date. Without this we PUT domains that are
221
+ // already registered to this same Worker and Cloudflare
222
+ // returns a confusing "hostname already in use" error.
223
+ const liveAll = yield* workers
224
+ .listDomains({
225
+ accountId,
226
+ service: scriptName,
227
+ })
228
+ .pipe(
229
+ Effect.map((r) =>
230
+ (r.result ?? []).flatMap((d) =>
231
+ d.id && d.hostname && d.zoneId
232
+ ? [
233
+ {
234
+ id: d.id,
235
+ hostname: d.hostname,
236
+ zoneId: d.zoneId,
237
+ service: d.service ?? undefined,
238
+ },
239
+ ]
240
+ : [],
241
+ ),
242
+ ),
243
+ Effect.catch(() => Effect.succeed([])),
244
+ );
245
+
246
+ const desiredSet = new Set(desired);
247
+ const liveByHostname = new Map(liveAll.map((d) => [d.hostname, d]));
248
+
249
+ // Detach what's no longer wanted. Use the live list so we
250
+ // don't try to delete domains we no longer track.
251
+ const toRemove = liveAll.filter((d) => !desiredSet.has(d.hostname));
252
+ yield* Effect.all(
253
+ toRemove.map((d) =>
254
+ workers
255
+ .deleteDomain({ accountId, domainId: d.id })
256
+ .pipe(Effect.catchTag("DomainNotFound", () => Effect.void)),
257
+ ),
258
+ { concurrency: "unbounded" },
259
+ );
260
+
261
+ if (desired.length === 0) return [];
262
+
263
+ const zoneCache = new Map<string, string>();
264
+
265
+ // Attach `hostname` to this Worker. Skip the PUT entirely if
266
+ // the hostname is already attached to *this* Worker — that's a
267
+ // no-op for Cloudflare and avoids the "already in use" 409.
268
+ // If it's attached to a *different* Worker, refuse with a
269
+ // clear message rather than silently re-routing traffic.
270
+ const attachDomain = Effect.fn(function* (hostname: string) {
271
+ const live = liveByHostname.get(hostname);
272
+ if (live) {
273
+ return {
274
+ hostname: live.hostname,
275
+ id: live.id,
276
+ zoneId: live.zoneId,
277
+ };
278
+ }
279
+
280
+ // Not attached to this Worker — but it could still belong
281
+ // to another Worker. Check before we try to PUT so we can
282
+ // emit a helpful error instead of the raw 409.
283
+ const otherOwner = yield* workers
284
+ .listDomains({
285
+ accountId,
286
+ hostname,
287
+ })
288
+ .pipe(
289
+ Effect.map((r) =>
290
+ (r.result ?? []).find(
291
+ (d) => d.hostname === hostname && d.service !== scriptName,
292
+ ),
293
+ ),
294
+ Effect.catch(() => Effect.succeed(undefined)),
295
+ );
296
+ if (otherOwner?.id) {
297
+ return yield* Effect.die(
298
+ new Error(
299
+ `Cannot attach hostname '${hostname}' to Worker '${scriptName}': ` +
300
+ `it is already attached to Worker '${otherOwner.service ?? "<unknown>"}'. ` +
301
+ `Detach it from that Worker first, or pick a different hostname.`,
302
+ ),
303
+ );
304
+ }
305
+
306
+ const zoneId = yield* inferZoneIdForHostname(hostname, zoneCache);
307
+ // Same eventual-consistency window as `setWorkerSubdomain`:
308
+ // PUT /accounts/.../workers/domains right after `putScript`
309
+ // can return `WorkerNotFound` until Cloudflare's script
310
+ // registry has propagated. Retry on that specific tag.
311
+ const res = yield* workers
312
+ .putDomain({
313
+ accountId,
314
+ hostname,
315
+ service: scriptName,
316
+ zoneId,
317
+ })
318
+ .pipe(
319
+ Effect.retry({
320
+ while: (error) => error._tag === "WorkerNotFound",
321
+ schedule: Schedule.exponential(200).pipe(
322
+ Schedule.both(Schedule.recurs(15)),
323
+ ),
324
+ }),
325
+ );
326
+ return {
327
+ hostname,
328
+ id: res.id ?? "",
329
+ zoneId: res.zoneId ?? zoneId,
330
+ };
331
+ });
332
+
333
+ const applied = yield* Effect.all(desired.map(attachDomain), {
334
+ concurrency: "unbounded",
335
+ });
336
+ return applied;
337
+ });
338
+
339
+ const createAlchemyWorkerTags = (id: string) => [
340
+ `alchemy:stack:${stack.name}`,
341
+ `alchemy:stage:${stack.stage}`,
342
+ `alchemy:id:${id}`,
343
+ ];
344
+
345
+ const hasAlchemyWorkerTags = (
346
+ id: string,
347
+ tags: readonly string[] | undefined,
348
+ ) => {
349
+ const actualTags = new Set(tags ?? []);
350
+ return createAlchemyWorkerTags(id).every((tag) => actualTags.has(tag));
351
+ };
352
+
353
+ const getDurableObjectNamespaces = (
354
+ bindings: readonly WorkerSettingsBinding[] | null | undefined,
355
+ ) => {
356
+ const namespaces = Object.fromEntries(
357
+ (bindings ?? []).flatMap((binding) =>
358
+ binding.type === "durable_object_namespace" &&
359
+ binding.className &&
360
+ binding.namespaceId
361
+ ? [[binding.className, binding.namespaceId]]
362
+ : [],
363
+ ),
364
+ );
365
+ return namespaces;
366
+ };
367
+
368
+ const getExpectedDurableObjectClassNames = (
369
+ bindings: readonly WorkerBinding[] | undefined,
370
+ workerName: string,
371
+ ) =>
372
+ Array.from(
373
+ new Set(
374
+ bindings?.flatMap((binding) =>
375
+ binding.type === "durable_object_namespace" &&
376
+ binding.className &&
377
+ (binding.scriptName === undefined ||
378
+ binding.scriptName === workerName)
379
+ ? [binding.className]
380
+ : [],
381
+ ) ?? [],
382
+ ),
383
+ );
384
+
385
+ const getWorkerSettingsWithDurableObjects = Effect.fn(function* (
386
+ scriptName: string,
387
+ expectedClassNames: readonly string[],
388
+ ) {
389
+ const { accountId } = yield* yield* CloudflareEnvironment;
390
+ return yield* workers
391
+ .getScriptScriptAndVersionSetting({
392
+ accountId,
393
+ scriptName,
394
+ })
395
+ .pipe(
396
+ Effect.map((settings) => {
397
+ const namespaces = getDurableObjectNamespaces(settings.bindings);
398
+ const missing = expectedClassNames.filter(
399
+ (className) => !namespaces[className],
400
+ );
401
+ if (missing.length > 0) {
402
+ return Effect.fail(
403
+ new MissingDurableObjectNamespaces({
404
+ scriptName,
405
+ expected: missing,
406
+ }),
407
+ );
408
+ }
409
+ return Effect.succeed({
410
+ settings,
411
+ durableObjectNamespaces: namespaces,
412
+ });
413
+ }),
414
+ Effect.flatten,
415
+ Effect.retry({
416
+ // `MissingDurableObjectNamespaces`: the DO bindings haven't
417
+ // surfaced in the version settings yet. `WorkerHasNoVersions` /
418
+ // `WorkerNotFound`: right after the first `putScript`, the
419
+ // version-settings read can race the script registry — under a
420
+ // busy account this read can briefly 404 with "has no versions"
421
+ // (or the worker itself as not-yet-found) before the upload
422
+ // propagates. All three are eventual-consistency blips.
423
+ while: (error) =>
424
+ error._tag === "MissingDurableObjectNamespaces" ||
425
+ error._tag === "WorkerHasNoVersions" ||
426
+ error._tag === "WorkerNotFound",
427
+ schedule: Schedule.exponential(100).pipe(
428
+ Schedule.both(Schedule.recurs(20)),
429
+ ),
430
+ }),
431
+ );
432
+ });
433
+
434
+ const prepareAssets = Effect.fn(function* (
435
+ assets: WorkerProps["assets"],
436
+ ) {
437
+ if (!assets) {
438
+ return undefined;
439
+ }
440
+
441
+ if (typeof assets === "object" && "hash" in assets) {
442
+ const { hash: _, ...config } = assets;
443
+ return yield* readAssets(config);
444
+ }
445
+
446
+ // Handle string path or AssetsProps
447
+ return yield* readAssets(
448
+ typeof assets === "string" ? { directory: assets } : assets,
449
+ );
450
+ });
451
+
452
+ const prepareBundle = (id: string, props: WorkerProps) =>
453
+ (props.bundle === false
454
+ ? readPrebuiltWorkerBundle({
455
+ main: props.main!,
456
+ rules: props.rules,
457
+ })
458
+ : bundler.build({
459
+ id,
460
+ main: props.main!,
461
+ compatibility: getCompatibility(props),
462
+ entry: props.isExternal
463
+ ? {
464
+ kind: "external",
465
+ }
466
+ : {
467
+ kind: "effect",
468
+ exports: props.exports ?? {},
469
+ },
470
+ stack: { name: stack.name, stage: stack.stage },
471
+ extraOptions: props.build,
472
+ })
473
+ ).pipe(Artifacts.cached("build"));
474
+
475
+ const hashScript = (script: string) =>
476
+ Effect.sync(() =>
477
+ crypto.createHash("sha256").update(script).digest("hex"),
478
+ );
479
+
480
+ const viteBuild = Effect.fn(function* (props: WorkerProps) {
481
+ const compatibility = getCompatibility(props);
482
+ // Loaded lazily: `./Vite.ts` pulls in `@distilled.cloud/cloudflare-vite-plugin`
483
+ // (~0.5s), which is only needed for vite-based workers at build time —
484
+ // not for every Worker definition at module-load time.
485
+ const Vite = yield* Effect.promise(() => import("./Vite.ts"));
486
+ const { assetsDirectory, serverBundle } = yield* Vite.viteBuild(
487
+ props.vite?.rootDir,
488
+ Object.fromEntries(
489
+ (yield* Effect.all(
490
+ Object.entries(props.env ?? {}).map(
491
+ Effect.fn(function* ([key, value]) {
492
+ return [
493
+ key,
494
+ typeof value === "string"
495
+ ? value
496
+ : Redacted.isRedacted(value) &&
497
+ typeof Redacted.value(value) === "string"
498
+ ? Redacted.value(value)
499
+ : // A `WorkerLoader` is a real Effect that also carries
500
+ // the `~alchemy/Kind` marker — it is a binding, not a
501
+ // runnable env value. Check it before `Effect.isEffect`
502
+ // so we don't execute it as an inlined env entry.
503
+ isWorkerLoader(value)
504
+ ? undefined
505
+ : Effect.isEffect(value)
506
+ ? yield* value as Effect.Effect<any>
507
+ : undefined,
508
+ ];
509
+ }),
510
+ ),
511
+ )).filter(([_, value]) => value !== undefined),
512
+ ),
513
+ {
514
+ compatibilityDate: compatibility.date,
515
+ compatibilityFlags: compatibility.flags,
516
+ },
517
+ );
518
+
519
+ if (!assetsDirectory && !serverBundle) {
520
+ return yield* Effect.die(
521
+ new Error("Vite build produced neither server nor client output"),
522
+ );
523
+ }
524
+ const [assets, bundle] = yield* Effect.all(
525
+ [
526
+ assetsDirectory
527
+ ? readAssets({
528
+ ...(props.assets && typeof props.assets !== "string"
529
+ ? props.assets
530
+ : undefined),
531
+ directory: assetsDirectory,
532
+ })
533
+ : Effect.succeed(undefined),
534
+ serverBundle
535
+ ? Bundle.bundleOutputFromRolldownOutputBundle(serverBundle)
536
+ : Effect.succeed(undefined),
537
+ ],
538
+ { concurrency: "unbounded" },
539
+ );
540
+ return { assets, bundle };
541
+ });
542
+
543
+ const prepareAssetsAndBundle = (
544
+ id: string,
545
+ props: WorkerProps,
546
+ opts: { skipAssetsRead?: boolean } = {},
547
+ ) =>
548
+ Effect.gen(function* () {
549
+ if (props.script !== undefined) {
550
+ const [assets, bundleHash] = yield* Effect.all(
551
+ [
552
+ opts.skipAssetsRead
553
+ ? Effect.succeed(undefined)
554
+ : prepareAssets(props.assets),
555
+ hashScript(props.script),
556
+ ],
557
+ { concurrency: "unbounded" },
558
+ );
559
+ return {
560
+ assets,
561
+ bundle: {
562
+ files: [{ path: "main.js", content: props.script }],
563
+ hash: bundleHash,
564
+ },
565
+ };
566
+ }
567
+ if (props.vite) {
568
+ const [{ assets, bundle }, input] = yield* Effect.all(
569
+ [
570
+ viteBuild(props),
571
+ // hashDirectory expects `{ cwd, memo }`. The vite props
572
+ // store the project root under `rootDir`, so map it
573
+ // here. Without this, `cwd` falls back to
574
+ // `process.cwd()` and the input hash is computed over
575
+ // the wrong directory tree (often the entire monorepo
576
+ // root), making it both slow and unable to detect
577
+ // changes scoped to the actual Vite project.
578
+ hashDirectory({
579
+ cwd: props.vite.rootDir,
580
+ memo: props.vite.memo,
581
+ }),
582
+ ],
583
+ { concurrency: "unbounded" },
584
+ );
585
+ return { assets, bundle, input };
586
+ }
587
+ const [assets, bundle] = yield* Effect.all(
588
+ [
589
+ opts.skipAssetsRead
590
+ ? Effect.succeed(undefined)
591
+ : prepareAssets(props.assets),
592
+ prepareBundle(id, props),
593
+ ],
594
+ { concurrency: "unbounded" },
595
+ );
596
+ return { assets, bundle };
597
+ }).pipe(
598
+ Effect.map(({ assets, bundle, input }) => ({
599
+ assets,
600
+ bundle: {
601
+ main: bundle?.files[0].path,
602
+ files: bundle?.files.map(
603
+ (file) =>
604
+ new File([file.content as BlobPart], file.path, {
605
+ type: contentTypeFromExtension(path.extname(file.path)),
606
+ }),
607
+ ),
608
+ },
609
+ hash: {
610
+ assets: assets?.hash,
611
+ bundle: bundle?.hash,
612
+ input,
613
+ } satisfies Worker["Attributes"]["hash"],
614
+ })),
615
+ );
616
+
617
+ const normalizePrebuiltAssets = (
618
+ assets: WorkerProps["assets"],
619
+ output: Worker["Attributes"] | undefined,
620
+ ) => {
621
+ if (!Predicate.hasProperty(assets, "hash")) return undefined;
622
+ const { directory: _, hash, ...config } = assets;
623
+ return { config, hash, skip: hash === output?.hash?.assets };
624
+ };
625
+
626
+ const putWorker = Effect.fn(function* (
627
+ id: string,
628
+ news: WorkerProps,
629
+ bindings: ResourceBinding<Worker["Binding"]>[],
630
+ olds: WorkerProps | undefined,
631
+ output: Worker["Attributes"] | undefined,
632
+ session: ScopedPlanStatusSession,
633
+ existingSettings?: workers.GetScriptScriptAndVersionSettingResponse,
634
+ ) {
635
+ const { accountId } = yield* yield* CloudflareEnvironment;
636
+ const name = yield* createWorkerName(id, news.name);
637
+ yield* Effect.logInfo(
638
+ `Cloudflare Worker ${olds ? "update" : "create"}: preparing bundle for ${name}`,
639
+ );
640
+ // If the caller handed us a precomputed asset hash that matches
641
+ // what we previously stored, we can skip walking the directory
642
+ // entirely and tell Cloudflare to keep the assets it already
643
+ // has bound to this script. The disk read is the expensive
644
+ // part; the script PUT happens either way.
645
+ const prebuiltAssets = normalizePrebuiltAssets(news.assets, output);
646
+ const {
647
+ assets,
648
+ bundle,
649
+ hash: preparedHash,
650
+ } = yield* prepareAssetsAndBundle(id, news, {
651
+ skipAssetsRead: prebuiltAssets?.skip,
652
+ });
653
+ // When the caller supplied a precomputed hash (e.g. via
654
+ // `Command.Build`), store *that* hash in output state so the
655
+ // next diff can short-circuit by comparing it directly. The
656
+ // hash that `readAssets` produces is the manifest-derived
657
+ // hash, which is shaped differently from any upstream
658
+ // build-input hash and will never match it on the next pass.
659
+ const hash = {
660
+ ...preparedHash,
661
+ assets: prebuiltAssets?.hash ?? preparedHash.assets,
662
+ } satisfies Worker["Attributes"]["hash"];
663
+ const metadataBindings = bindings.flatMap((b) => b.data.bindings ?? []);
664
+ const expectedDurableObjectClassNames =
665
+ getExpectedDurableObjectClassNames(metadataBindings, name);
666
+ let metadataAssets:
667
+ | workers.PutScriptRequest["metadata"]["assets"]
668
+ | undefined;
669
+ let keepAssets = false;
670
+ if (prebuiltAssets?.skip) {
671
+ // Hash matched what's already on Cloudflare: keep the
672
+ // existing asset manifest and skip the upload session.
673
+ yield* Effect.logInfo(
674
+ `Cloudflare Worker update: assets unchanged for ${name}, keeping existing`,
675
+ );
676
+ keepAssets = true;
677
+ metadataAssets = { config: prebuiltAssets.config };
678
+ metadataBindings.push({
679
+ type: "assets",
680
+ name: "ASSETS",
681
+ });
682
+ } else if (assets) {
683
+ // We had to read the directory. Even after the read, the
684
+ // computed hash may match what's already deployed (e.g.
685
+ // legacy `string` / `AssetsProps` shapes that don't carry a
686
+ // precomputed hash, or a precomputed hash that disagreed with
687
+ // disk). In that case still keep the existing manifest and
688
+ // skip the upload session — Cloudflare's content-addressed
689
+ // session would no-op on every byte anyway.
690
+ if (assets.hash === prebuiltAssets?.hash) {
691
+ yield* Effect.logInfo(
692
+ `Cloudflare Worker update: assets unchanged for ${name}, keeping existing`,
693
+ );
694
+ keepAssets = true;
695
+ metadataAssets = { config: assets.config };
696
+ } else {
697
+ yield* Effect.logInfo(
698
+ `Cloudflare Worker ${olds ? "update" : "create"}: uploading assets for ${name}`,
699
+ );
700
+ const { jwt } = yield* uploadAssets(
701
+ accountId,
702
+ name,
703
+ assets,
704
+ session,
705
+ );
706
+ metadataAssets = {
707
+ jwt,
708
+ config: assets.config,
709
+ };
710
+ }
711
+ metadataBindings.push({
712
+ type: "assets",
713
+ name: "ASSETS",
714
+ });
715
+ }
716
+ metadataBindings.push(
717
+ {
718
+ type: "plain_text",
719
+ name: "ALCHEMY_PHASE",
720
+ text: "runtime",
721
+ },
722
+ {
723
+ type: "plain_text",
724
+ name: "ALCHEMY_STACK_NAME",
725
+ text: stack.name,
726
+ },
727
+ {
728
+ type: "plain_text",
729
+ name: "ALCHEMY_STAGE",
730
+ text: stack.stage,
731
+ },
732
+ {
733
+ type: "plain_text",
734
+ name: "ALCHEMY_CLOUDFLARE_ACCOUNT_ID",
735
+ text: accountId,
736
+ },
737
+ );
738
+ // Add environment variables as metadata bindings
739
+ if (news.env) {
740
+ for (const [key, value] of Object.entries(news.env)) {
741
+ if (value === undefined) continue;
742
+ if (metadataBindings.some((b) => b.name === key)) continue;
743
+ if (Redacted.isRedacted(value)) {
744
+ const unredacted = Redacted.value(value);
745
+ metadataBindings.push({
746
+ type: "secret_text",
747
+ name: key,
748
+ text:
749
+ typeof unredacted === "string"
750
+ ? unredacted
751
+ : JSON.stringify(unredacted),
752
+ });
753
+ } else if (typeof value === "string") {
754
+ metadataBindings.push({
755
+ type: "plain_text",
756
+ name: key,
757
+ text: value,
758
+ });
759
+ } else {
760
+ metadataBindings.push({
761
+ type: "json",
762
+ name: key,
763
+ json: value,
764
+ });
765
+ }
766
+ }
767
+ }
768
+ yield* Effect.logInfo(
769
+ `Cloudflare Worker ${olds ? "update" : "create"}: uploading script for ${name}`,
770
+ );
771
+ const size =
772
+ bundle.files
773
+ ?.filter((file) => !file.name.endsWith(".map"))
774
+ .reduce((acc, file) => acc + file.size, 0) ?? 0;
775
+ const sizeKB = size / 1024;
776
+ const sizeMB = sizeKB / 1024;
777
+ const bundleSize = `${sizeKB > 1024 ? `${sizeMB.toFixed(2)} MB` : `${sizeKB.toFixed(2)} KB`}`;
778
+ yield* session.note(`Uploading worker (${bundleSize}) ...`);
779
+
780
+ // Read existing worker settings for migration tracking
781
+ const oldSettings =
782
+ existingSettings ??
783
+ (yield* workers
784
+ .getScriptScriptAndVersionSetting({
785
+ accountId,
786
+ scriptName: name,
787
+ })
788
+ .pipe(
789
+ Effect.map((s) => s as typeof s | undefined),
790
+ Effect.catch(() => Effect.succeed(undefined)),
791
+ ));
792
+
793
+ const oldTags = Array.from(new Set(oldSettings?.tags ?? []));
794
+ const oldBindings = oldSettings?.bindings ?? [];
795
+
796
+ // Parse alchemy:do:{logicalId}:{className} tags
797
+ const oldDoClassNameByLogicalId = getDurableObjectTagMap(oldTags);
798
+ const currentDoBindings = getDurableObjectBindings(bindings, name);
799
+ const currentDoClassNameByLogicalId = Object.fromEntries(
800
+ currentDoBindings.map((binding) => [
801
+ binding.logicalId,
802
+ binding.className,
803
+ ]),
804
+ );
805
+
806
+ // Parse alchemy:migration-tag:{version}
807
+ const oldMigrationTag = oldTags.flatMap((tag) =>
808
+ tag.startsWith("alchemy:migration-tag:")
809
+ ? [tag.slice("alchemy:migration-tag:".length)]
810
+ : [],
811
+ )[0];
812
+ const newMigrationTag = bumpMigrationTagVersion(oldMigrationTag);
813
+
814
+ // Compute deleted classes
815
+ const deletedClasses: string[] = [];
816
+ for (const [logicalId, className] of Object.entries(
817
+ oldDoClassNameByLogicalId,
818
+ )) {
819
+ if (!currentDoClassNameByLogicalId[logicalId]) {
820
+ deletedClasses.push(className);
821
+ }
822
+ }
823
+
824
+ // Backward compatibility for old workers that have DO bindings but no
825
+ // alchemy:do tags yet. Cross-script bindings (`scriptName` set to
826
+ // anything other than this worker) are NEVER candidates for
827
+ // delete-class migrations — the class lives on the foreign script
828
+ // and we don't own its lifecycle.
829
+ if (Object.keys(oldDoClassNameByLogicalId).length === 0) {
830
+ for (const oldBinding of oldBindings) {
831
+ const ownedLocally =
832
+ !("scriptName" in oldBinding) || oldBinding.scriptName === name;
833
+ if (
834
+ oldBinding.type === "durable_object_namespace" &&
835
+ "className" in oldBinding &&
836
+ oldBinding.className &&
837
+ ownedLocally &&
838
+ !currentDoBindings.some(
839
+ (binding) => binding.bindingName === oldBinding.name,
840
+ )
841
+ ) {
842
+ deletedClasses.push(oldBinding.className);
843
+ }
844
+ }
845
+ }
846
+
847
+ // Collect container-backed class names so we can send container metadata
848
+ const containerClassNames = new Set(
849
+ bindings.flatMap((b) =>
850
+ (b.data.containers ?? []).map((c) => c.className),
851
+ ),
852
+ );
853
+
854
+ // Compute new and renamed classes
855
+ const newClasses: string[] = [];
856
+ const newSqliteClasses: string[] = [];
857
+ const renamedClasses: { from: string; to: string }[] = [];
858
+ for (const binding of currentDoBindings) {
859
+ const previousClassName =
860
+ oldDoClassNameByLogicalId[binding.logicalId];
861
+ if (!previousClassName) {
862
+ // Default all new Durable Object classes to SQLite. Cloudflare
863
+ // recommends SQLite for new namespaces, and container-backed
864
+ // Durable Objects require it.
865
+ newSqliteClasses.push(binding.className);
866
+ } else if (previousClassName !== binding.className) {
867
+ renamedClasses.push({
868
+ from: previousClassName,
869
+ to: binding.className,
870
+ });
871
+ }
872
+ }
873
+
874
+ yield* Effect.logInfo(
875
+ `Cloudflare Worker put: durable object reconciliation ${JSON.stringify(
876
+ {
877
+ oldDoClassNameByLogicalId,
878
+ currentDoClassNameByLogicalId,
879
+ deletedClasses,
880
+ renamedClasses,
881
+ newSqliteClasses,
882
+ },
883
+ )}`,
884
+ );
885
+
886
+ // Build alchemy:do:{logicalId}:{className} tags for each DO binding
887
+ const alchemyDoTags: string[] = [];
888
+ for (const binding of currentDoBindings) {
889
+ alchemyDoTags.push(
890
+ `alchemy:do:${binding.logicalId}:${binding.className}`,
891
+ );
892
+ }
893
+
894
+ const metadataTags = Array.from(
895
+ new Set([
896
+ ...createAlchemyWorkerTags(id),
897
+ ...alchemyDoTags,
898
+ ...(newMigrationTag
899
+ ? [`alchemy:migration-tag:${newMigrationTag}`]
900
+ : []),
901
+ ...(news.tags ?? []),
902
+ ]),
903
+ );
904
+
905
+ const migrations = {
906
+ oldTag: oldMigrationTag,
907
+ newTag: newMigrationTag,
908
+ newClasses,
909
+ deletedClasses,
910
+ renamedClasses,
911
+ transferredClasses: [] as { from: string; to: string }[],
912
+ newSqliteClasses,
913
+ };
914
+
915
+ const metadataContainers = [...containerClassNames].map(
916
+ (className) => ({
917
+ className,
918
+ }),
919
+ );
920
+
921
+ const compatibility = getCompatibility(news);
922
+ const metadata: workers.PutScriptRequest["metadata"] = {
923
+ assets: metadataAssets,
924
+ bindings: metadataBindings,
925
+ bodyPart: undefined,
926
+ compatibilityDate: compatibility.date,
927
+ compatibilityFlags: compatibility.flags,
928
+ containers:
929
+ metadataContainers.length > 0 ? metadataContainers : undefined,
930
+ keepAssets,
931
+ keepBindings: undefined,
932
+ limits: news.limits,
933
+ logpush: news.logpush,
934
+ mainModule: bundle.main,
935
+ migrations,
936
+ observability: news.observability ?? {
937
+ enabled: true,
938
+ logs: {
939
+ enabled: true,
940
+ invocationLogs: true,
941
+ },
942
+ },
943
+ placement: news.placement,
944
+ tags: metadataTags,
945
+ tailConsumers: undefined,
946
+ usageModel: undefined,
947
+ };
948
+ const worker = yield* workers
949
+ .putScript({
950
+ accountId,
951
+ scriptName: name,
952
+ metadata,
953
+ files: bundle.files,
954
+ })
955
+ .pipe(
956
+ Effect.catch((err) => {
957
+ // When adopting a Worker managed by Wrangler (or after a previous
958
+ // deploy with mismatched migrations), the old_tag precondition
959
+ // fails. The only way to discover the actual tag is through the
960
+ // error message — getScriptSettings is meant to return it but
961
+ // doesn't at runtime.
962
+ const msg = String(
963
+ typeof err === "object" && err !== null && "message" in err
964
+ ? err.message
965
+ : err,
966
+ );
967
+ const expectedTag = msg.match(
968
+ /when expected tag is ['"]?([^'"]+)['"]?/,
969
+ )?.[1];
970
+ if (expectedTag) {
971
+ return workers.putScript({
972
+ accountId,
973
+ scriptName: name,
974
+ metadata: {
975
+ ...metadata,
976
+ migrations: {
977
+ ...migrations,
978
+ oldTag: expectedTag,
979
+ newTag: bumpMigrationTagVersion(expectedTag),
980
+ },
981
+ },
982
+ files: bundle.files,
983
+ });
984
+ }
985
+ return Effect.fail(err as any);
986
+ }),
987
+ );
988
+ const { settings, durableObjectNamespaces } =
989
+ yield* getWorkerSettingsWithDurableObjects(
990
+ name,
991
+ expectedDurableObjectClassNames,
992
+ );
993
+ // Reconcile workers.dev subdomain against observed cloud state.
994
+ // We can't diff `news.url` against `olds.url` here because both
995
+ // default to `undefined` (meaning "enable") — that comparison
996
+ // would skip the API call on every deploy where the user never
997
+ // explicitly set `url`, leaving the subdomain in whatever state
998
+ // Cloudflare currently has it (disabled by default, or whatever
999
+ // a previous failed/external action left it as).
1000
+ const desiredSubdomainEnabled = news.url !== false;
1001
+ const observedSubdomain = yield* workers
1002
+ .getScriptSubdomain({
1003
+ accountId,
1004
+ scriptName: name,
1005
+ })
1006
+ .pipe(
1007
+ Effect.orElseSucceed<workers.GetScriptSubdomainResponse>(() => ({
1008
+ enabled: false,
1009
+ previewsEnabled: false,
1010
+ })),
1011
+ );
1012
+ if (
1013
+ desiredSubdomainEnabled !== observedSubdomain.enabled ||
1014
+ desiredSubdomainEnabled !== observedSubdomain.previewsEnabled
1015
+ ) {
1016
+ yield* session.note(
1017
+ `${desiredSubdomainEnabled ? "Enabling" : "Disabling"} workers.dev subdomain...`,
1018
+ );
1019
+ // Cloudflare's script registry is eventually consistent — for the
1020
+ // first few hundred ms after `putScript` returns, POST /subdomain
1021
+ // can still get back `WorkerNotFound` (a generic "unknown error"
1022
+ // body), or a bare 500 surfaced as `InternalServerError` /
1023
+ // `UnknownCloudflareError` (code 10013). Bigger uploads race harder.
1024
+ // Retry the subdomain toggle on those transient tags with a short
1025
+ // exponential backoff; same pattern we use elsewhere in this
1026
+ // provider for DO-namespace propagation and for `putScript` itself.
1027
+ yield* setWorkerSubdomain(name, desiredSubdomainEnabled).pipe(
1028
+ Effect.retry({
1029
+ while: (error) =>
1030
+ error._tag === "WorkerNotFound" ||
1031
+ error._tag === "InternalServerError" ||
1032
+ error._tag === "UnknownCloudflareError",
1033
+ schedule: Schedule.exponential(200).pipe(
1034
+ Schedule.both(Schedule.recurs(15)),
1035
+ ),
1036
+ }),
1037
+ );
1038
+ }
1039
+ const desiredDomains = normalizeDomains(news.domain);
1040
+ const previousDomains = output?.domains ?? [];
1041
+ if (desiredDomains.length > 0 || previousDomains.length > 0) {
1042
+ yield* session.note(
1043
+ `Reconciling custom domains (${desiredDomains.length}) ...`,
1044
+ );
1045
+ }
1046
+ const reconciled = yield* reconcileDomains(name, desiredDomains);
1047
+ const workersDevUrl =
1048
+ news.url !== false
1049
+ ? `https://${name}.${yield* getAccountSubdomain(accountId)}.workers.dev`
1050
+ : undefined;
1051
+ const domains = [
1052
+ ...reconciled.map((d) => `https://${d.hostname}`),
1053
+ ...(workersDevUrl ? [workersDevUrl] : []),
1054
+ ];
1055
+ const crons = yield* reconcileCrons(
1056
+ name,
1057
+ normalizeCrons([...getCronBindings(bindings), ...(news.crons ?? [])]),
1058
+ output?.crons ?? [],
1059
+ session,
1060
+ );
1061
+ return {
1062
+ workerId: worker.id ?? name,
1063
+ workerName: name,
1064
+ logpush: worker.logpush ?? undefined,
1065
+ url: domains[0],
1066
+ tags: settings.tags ?? metadata.tags,
1067
+ durableObjectNamespaces,
1068
+ accountId,
1069
+ domains,
1070
+ crons,
1071
+ hash,
1072
+ } satisfies Worker["Attributes"];
1073
+ });
1074
+
1075
+ const hasChanged = Effect.fn(function* (
1076
+ id: string,
1077
+ props: WorkerProps,
1078
+ output: Worker["Attributes"],
1079
+ ) {
1080
+ if (props.script !== undefined) {
1081
+ const scriptHash = yield* hashScript(props.script);
1082
+ if (scriptHash !== output.hash?.bundle) {
1083
+ return true;
1084
+ }
1085
+ if (!props.assets) {
1086
+ return false;
1087
+ }
1088
+ const assetsHash = Predicate.hasProperty(props.assets, "hash")
1089
+ ? props.assets.hash
1090
+ : undefined;
1091
+ if (assetsHash === undefined) {
1092
+ return true;
1093
+ }
1094
+ return assetsHash !== output.hash?.assets;
1095
+ }
1096
+ if (props.vite) {
1097
+ const input = yield* hashDirectory({
1098
+ cwd: props.vite.rootDir,
1099
+ memo: props.vite.memo,
1100
+ });
1101
+ return input !== output.hash?.input;
1102
+ }
1103
+ const bundleHash = yield* prepareBundle(id, props).pipe(
1104
+ Effect.map((b) => b.hash),
1105
+ );
1106
+ if (bundleHash !== output.hash?.bundle) {
1107
+ return true;
1108
+ }
1109
+ if (!props.assets) {
1110
+ return false;
1111
+ }
1112
+ // We deliberately don't read the assets directory during diff.
1113
+ // For `AssetsWithHash` (the documented contract) the upstream
1114
+ // `Command.Build` already gave us an authoritative hash — we
1115
+ // just compare strings. Reading the directory here would
1116
+ // (a) hash the same tree twice per apply (`putWorker` reads
1117
+ // again when an upload is actually required), and (b) crash
1118
+ // when the prior state was written on a different machine
1119
+ // and `path` doesn't exist locally — blocking any local
1120
+ // reapply even though the precomputed hash is right there
1121
+ // in props.
1122
+ //
1123
+ // For the legacy `string` / `AssetsProps` shapes there's no
1124
+ // hash in props to compare against, so we conservatively
1125
+ // assume the assets changed; `putWorker` will read once,
1126
+ // hash, and use `keepAssets` if it turns out nothing actually
1127
+ // changed.
1128
+ const assetsHash = Predicate.hasProperty(props.assets, "hash")
1129
+ ? props.assets.hash
1130
+ : undefined;
1131
+ if (assetsHash === undefined) {
1132
+ return true;
1133
+ }
1134
+ return assetsHash !== output.hash?.assets;
1135
+ });
1136
+
1137
+ return Worker.Provider.of({
1138
+ stables: ["workerId", "workerName"],
1139
+ list: () =>
1140
+ Effect.gen(function* () {
1141
+ const { accountId } = yield* yield* CloudflareEnvironment;
1142
+ // Account-scoped enumeration of every Worker script. The
1143
+ // per-script `read` makes several extra calls (subdomain,
1144
+ // settings, domains, schedule) to fully hydrate
1145
+ // url/durableObjectNamespaces/domains/crons. Doing that for
1146
+ // every script on the account is both expensive (4 calls × N)
1147
+ // and fragile — a single script with a binding shape the
1148
+ // settings schema doesn't know about would break the whole
1149
+ // listing (the same reason `read` deliberately avoids
1150
+ // `listScripts`). For `list()` we hydrate the core identifying
1151
+ // and settings fields that come straight from the script
1152
+ // metadata and leave the binding-derived fields at the same
1153
+ // defaults `read` returns when those sub-resources are absent
1154
+ // (`url: undefined`, `durableObjectNamespaces: {}`,
1155
+ // `domains: []`, `crons: []`). `accountId` + `workerName` are
1156
+ // sufficient for `delete`.
1157
+ return yield* workers.listScripts.pages({ accountId }).pipe(
1158
+ Stream.runCollect,
1159
+ Effect.map((chunk) =>
1160
+ Array.from(chunk).flatMap((page) =>
1161
+ // Annotate the element type as the full `Attributes` shape
1162
+ // (incl. the optional `hash`) so it matches `read` exactly.
1163
+ // `list()` is an inference source for the provider's resource
1164
+ // type; a narrower element (e.g. via `satisfies`, which omits
1165
+ // `hash`) would derail `Res` inference and cascade every
1166
+ // lifecycle method's requirement channel to `never`.
1167
+ (page.result ?? []).flatMap(
1168
+ (script): Worker["Attributes"][] =>
1169
+ script.id
1170
+ ? [
1171
+ {
1172
+ accountId,
1173
+ workerId: script.id,
1174
+ workerName: script.id,
1175
+ logpush: script.logpush ?? undefined,
1176
+ url: undefined,
1177
+ tags: script.tags ?? undefined,
1178
+ durableObjectNamespaces: {},
1179
+ domains: [],
1180
+ crons: [],
1181
+ },
1182
+ ]
1183
+ : [],
1184
+ ),
1185
+ ),
1186
+ ),
1187
+ );
1188
+ }),
1189
+ diff: Effect.fn(function* ({ id, news, olds, output, newBindings }) {
1190
+ const { accountId } = yield* yield* CloudflareEnvironment;
1191
+ if (!isResolved(news)) return undefined;
1192
+ if ((output?.accountId ?? accountId) !== accountId) {
1193
+ return { action: "replace" };
1194
+ }
1195
+ const workerName = yield* createWorkerName(id, news.name);
1196
+ const oldWorkerName = output?.workerName
1197
+ ? output.workerName
1198
+ : yield* createWorkerName(id, olds?.name);
1199
+ if (workerName !== oldWorkerName) {
1200
+ return { action: "replace" };
1201
+ }
1202
+ if (!output) {
1203
+ return;
1204
+ }
1205
+ const newDomains = normalizeDomains(news.domain)
1206
+ .map((h) => `https://${h}`)
1207
+ .sort();
1208
+ const oldDomains = (output?.domains ?? [])
1209
+ .filter((u) => !u.endsWith(".workers.dev"))
1210
+ .sort();
1211
+ const domainsChanged =
1212
+ newDomains.length !== oldDomains.length ||
1213
+ newDomains.some((d, i) => d !== oldDomains[i]);
1214
+ const newCrons = normalizeCrons([
1215
+ ...(Array.isArray(newBindings)
1216
+ ? getCronBindings(
1217
+ newBindings as ResourceBinding<Worker["Binding"]>[],
1218
+ )
1219
+ : []),
1220
+ ...(news.crons ?? []),
1221
+ ]).sort();
1222
+ const oldCrons = [...(output?.crons ?? [])].sort();
1223
+ const cronsChanged =
1224
+ newCrons.length !== oldCrons.length ||
1225
+ newCrons.some((cron, index) => cron !== oldCrons[index]);
1226
+ // `url` is `domains[0]`: the first custom domain in user order if
1227
+ // any, otherwise the workers.dev URL (derived from the stable
1228
+ // worker name + account subdomain). It's stable across this update
1229
+ // exactly when that first domain is unchanged — which is NOT the
1230
+ // same as "the domain set is unchanged": adding a second custom
1231
+ // domain leaves `url` put, while reordering changes it even though
1232
+ // the set is equal. Compute the resulting `url` and carry it
1233
+ // forward as a stable only when it matches the old one, so
1234
+ // downstream resources that reference `worker.url` (e.g. a GitHub
1235
+ // Webhook delivery URL built via `Output.interpolate`) resolve it
1236
+ // to a concrete value during planning instead of an unresolved
1237
+ // Output — otherwise every worker update spuriously re-updates them.
1238
+ const newCustomDomains = normalizeDomains(news.domain);
1239
+ const newUrl =
1240
+ newCustomDomains.length > 0
1241
+ ? `https://${newCustomDomains[0]}`
1242
+ : news.url !== false
1243
+ ? (output.domains ?? []).find((u) => u.endsWith(".workers.dev"))
1244
+ : undefined;
1245
+ const urlStable = newUrl !== undefined && newUrl === output.url;
1246
+ // `durableObjectNamespaces` maps each hosted DO class name to the
1247
+ // namespace id Cloudflare assigned it. Those ids are permanent for
1248
+ // the lifetime of a (worker, class) pair, so the map only changes
1249
+ // when a class is added or removed — never on a plain code/config
1250
+ // update. Carry it forward as a stable whenever the set of local DO
1251
+ // class names is unchanged, for the same reason as `url` above:
1252
+ // downstream resources that bind a DO namespace via
1253
+ // `worker.durableObjectNamespaces[name]` (e.g. a Container attached
1254
+ // to a DO) must resolve it to a concrete value during planning.
1255
+ // Otherwise the binding holds an unresolved Output, which
1256
+ // `diffBindings` treats as "changed", spuriously re-updating the
1257
+ // bound resource on every deploy. Class names are structural (not the
1258
+ // namespace id), so this comparison holds even when `newBindings` is
1259
+ // otherwise unresolved.
1260
+ const newDoClassNames = Array.isArray(newBindings)
1261
+ ? getExpectedDurableObjectClassNames(
1262
+ (newBindings as ResourceBinding<Worker["Binding"]>[]).flatMap(
1263
+ (b) => b.data.bindings ?? [],
1264
+ ),
1265
+ workerName,
1266
+ ).sort()
1267
+ : [];
1268
+ const oldDoClassNames = Object.keys(
1269
+ output.durableObjectNamespaces ?? {},
1270
+ ).sort();
1271
+ const doNamespacesStable =
1272
+ oldWorkerName === workerName &&
1273
+ newDoClassNames.length === oldDoClassNames.length &&
1274
+ newDoClassNames.every((name, i) => name === oldDoClassNames[i]);
1275
+ if (
1276
+ domainsChanged ||
1277
+ cronsChanged ||
1278
+ (yield* hasChanged(id, news, output))
1279
+ ) {
1280
+ // `workerId` is always stable across an update; seed it so it
1281
+ // survives now that `diff.stables` overrides `provider.stables`
1282
+ // rather than being merged with it.
1283
+ const stables: string[] = ["workerId"];
1284
+ if (oldWorkerName === workerName) {
1285
+ stables.push("workerName");
1286
+ }
1287
+ if (urlStable) {
1288
+ stables.push("url");
1289
+ }
1290
+ if (doNamespacesStable) {
1291
+ stables.push("durableObjectNamespaces");
1292
+ }
1293
+ return {
1294
+ action: "update",
1295
+ stables: stables.length > 0 ? stables : undefined,
1296
+ };
1297
+ }
1298
+ }),
1299
+ precreate: Effect.fn(function* ({ id, news, session }) {
1300
+ const { accountId } = yield* yield* CloudflareEnvironment;
1301
+ const name = yield* createWorkerName(id, news.name);
1302
+ const exportMap = news.exports ?? {};
1303
+ const durableObjects = Object.keys(exportMap)
1304
+ .filter((logicalId) => isDurableObjectExport(exportMap[logicalId]))
1305
+ .map((logicalId) => ({
1306
+ logicalId,
1307
+ className: logicalId,
1308
+ }));
1309
+ const doClasses = durableObjects.map((binding) => binding.className);
1310
+ const containers = doClasses.map((className) => ({ className }));
1311
+ const alchemyDoTags = durableObjects.map(
1312
+ ({ logicalId, className }) =>
1313
+ `alchemy:do:${logicalId}:${className}`,
1314
+ );
1315
+ const tags = Array.from(
1316
+ new Set([
1317
+ ...createAlchemyWorkerTags(id),
1318
+ ...alchemyDoTags,
1319
+ ...(news.tags ?? []),
1320
+ ]),
1321
+ );
1322
+ yield* Effect.logInfo(
1323
+ `Cloudflare Worker precreate: starting ${name}`,
1324
+ );
1325
+ yield* Effect.logInfo(
1326
+ `Cloudflare Worker precreate: durable objects ${JSON.stringify(
1327
+ durableObjects,
1328
+ )}`,
1329
+ );
1330
+ const existingSettings = yield* workers
1331
+ .getScriptScriptAndVersionSetting({
1332
+ accountId,
1333
+ scriptName: name,
1334
+ })
1335
+ .pipe(
1336
+ // A freshly pre-created stub can briefly report "has no
1337
+ // versions" before its first version registers — treat it the
1338
+ // same as a missing worker (nothing to adopt yet).
1339
+ Effect.catchTag("WorkerNotFound", () =>
1340
+ Effect.succeed(undefined),
1341
+ ),
1342
+ Effect.catchTag("WorkerHasNoVersions", () =>
1343
+ Effect.succeed(undefined),
1344
+ ),
1345
+ );
1346
+ let durableObjectNamespaces = getDurableObjectNamespaces(
1347
+ existingSettings?.bindings,
1348
+ );
1349
+
1350
+ if (existingSettings) {
1351
+ // Engine has already cleared this resource for write via
1352
+ // `read` + AdoptPolicy. Either we own it (matching tags) or
1353
+ // the user opted in to a takeover (`--adopt` / `adopt(true)`).
1354
+ yield* Effect.logInfo(
1355
+ `Cloudflare Worker precreate: reusing existing ${name}`,
1356
+ );
1357
+ } else {
1358
+ yield* session.note("Pre-creating worker...");
1359
+ const mainModule = "main.js";
1360
+ const placeholderScript = `${doClasses.length > 0 ? 'import { DurableObject } from "cloudflare:workers";\n\n' : ""}export default { fetch() { return new Response("Alchemy worker is being deployed...") } };\n${doClasses
1361
+ .map(
1362
+ (className) =>
1363
+ `export class ${className} extends DurableObject {}`,
1364
+ )
1365
+ .join("\n")}`;
1366
+ yield* workers
1367
+ .putScript({
1368
+ accountId,
1369
+ scriptName: name,
1370
+ metadata: {
1371
+ mainModule,
1372
+ bindings:
1373
+ doClasses.length > 0
1374
+ ? doClasses.map((className) => ({
1375
+ type: "durable_object_namespace" as const,
1376
+ name: className,
1377
+ className,
1378
+ }))
1379
+ : undefined,
1380
+ ...getCompatibility(news),
1381
+ containers,
1382
+ migrations:
1383
+ doClasses.length > 0
1384
+ ? {
1385
+ oldTag: undefined,
1386
+ newTag: undefined,
1387
+ newClasses: [],
1388
+ deletedClasses: [],
1389
+ renamedClasses: [],
1390
+ transferredClasses: [],
1391
+ newSqliteClasses: doClasses,
1392
+ }
1393
+ : undefined,
1394
+ observability: news.observability ?? {
1395
+ enabled: true,
1396
+ logs: {
1397
+ enabled: true,
1398
+ invocationLogs: true,
1399
+ },
1400
+ },
1401
+ tags,
1402
+ },
1403
+ files: [
1404
+ new File([placeholderScript], mainModule, {
1405
+ type: "application/javascript+module",
1406
+ }),
1407
+ ],
1408
+ })
1409
+ .pipe(
1410
+ // Cloudflare's PUT /workers/scripts/{name} intermittently
1411
+ // returns code 10002 / "An unknown error has occurred" on the
1412
+ // first put for a fresh worker name. Surfaced as the shared
1413
+ // `InternalServerError` upstream (alchemy-run/distilled#290).
1414
+ // Also match `UnknownCloudflareError` for older
1415
+ // @distilled.cloud/cloudflare versions that haven't picked
1416
+ // up the patch yet.
1417
+ Effect.retry({
1418
+ while: (e) =>
1419
+ e._tag === "InternalServerError" ||
1420
+ e._tag === "UnknownCloudflareError",
1421
+ schedule: Schedule.exponential(1000).pipe(
1422
+ Schedule.both(Schedule.recurs(5)),
1423
+ ),
1424
+ }),
1425
+ );
1426
+ if (doClasses.length > 0) {
1427
+ ({ durableObjectNamespaces } =
1428
+ yield* getWorkerSettingsWithDurableObjects(name, doClasses));
1429
+ }
1430
+ }
1431
+
1432
+ if (existingSettings && doClasses.length > 0) {
1433
+ ({ durableObjectNamespaces } =
1434
+ yield* getWorkerSettingsWithDurableObjects(name, doClasses));
1435
+ }
1436
+
1437
+ return {
1438
+ workerId: name,
1439
+ workerName: name,
1440
+ logpush: existingSettings?.logpush ?? undefined,
1441
+ url: undefined,
1442
+ tags: existingSettings?.tags ?? tags,
1443
+ durableObjectNamespaces,
1444
+ accountId,
1445
+ domains: [],
1446
+ crons: [],
1447
+ } satisfies Worker["Attributes"];
1448
+ }),
1449
+ read: Effect.fn(
1450
+ function* ({ id, output, olds }) {
1451
+ const { accountId } = yield* yield* CloudflareEnvironment;
1452
+ const workerName =
1453
+ output?.workerName ?? (yield* createWorkerName(id, olds?.name));
1454
+ yield* Effect.logInfo(
1455
+ `Cloudflare Worker read: checking ${workerName}`,
1456
+ );
1457
+ // We deliberately don't call `listScripts({ accountId })` here:
1458
+ // it pulls every Worker on the account back through a strict
1459
+ // schema decode, and a single existing Worker the schema doesn't
1460
+ // know about (e.g. `placement_mode: "targeted"`) breaks the
1461
+ // entire read. `getScriptSettings` already fails with
1462
+ // `WorkerNotFound` if the script doesn't exist, which the
1463
+ // surrounding `Effect.catchTag` turns into `undefined` — that's
1464
+ // all the existence check we need.
1465
+ const [subdomain, settings, domainsList] = yield* Effect.all([
1466
+ workers.getScriptSubdomain({
1467
+ accountId,
1468
+ scriptName: workerName,
1469
+ }),
1470
+ workers.getScriptScriptAndVersionSetting({
1471
+ accountId,
1472
+ scriptName: workerName,
1473
+ }),
1474
+ workers
1475
+ .listDomains({
1476
+ accountId,
1477
+ service: workerName,
1478
+ })
1479
+ .pipe(Effect.map((r) => r.result ?? [])),
1480
+ ]);
1481
+ // Preserve the order the user provided in `olds.domain`. The
1482
+ // Cloudflare API returns domains in non-deterministic order,
1483
+ // which would cause downstream `worker.domains[0]` reads to flip
1484
+ // between deploys. Drift (domains we don't know about) is
1485
+ // appended after the user-ordered ones.
1486
+ const userOrder = normalizeDomains(olds?.domain);
1487
+ const orderedHostnames = [
1488
+ ...userOrder.flatMap(
1489
+ (h) =>
1490
+ domainsList.find((d) => d.hostname === h)?.hostname ?? [],
1491
+ ),
1492
+ ...domainsList.flatMap((d) =>
1493
+ d.hostname && !userOrder.includes(d.hostname)
1494
+ ? [d.hostname]
1495
+ : [],
1496
+ ),
1497
+ ];
1498
+ const workersDevUrl = subdomain.enabled
1499
+ ? `https://${workerName}.${yield* getAccountSubdomain(accountId)}.workers.dev`
1500
+ : undefined;
1501
+ const domains = [
1502
+ ...orderedHostnames.map((h) => `https://${h}`),
1503
+ ...(workersDevUrl ? [workersDevUrl] : []),
1504
+ ];
1505
+ const crons = yield* getWorkerCrons(workerName);
1506
+ yield* Effect.logInfo(
1507
+ `Cloudflare Worker read: found ${workerName}`,
1508
+ );
1509
+ const attrs = {
1510
+ accountId,
1511
+ workerId: workerName,
1512
+ workerName,
1513
+ logpush: settings.logpush ?? undefined,
1514
+ url: domains[0],
1515
+ tags: settings.tags ?? undefined,
1516
+ durableObjectNamespaces: getDurableObjectNamespaces(
1517
+ settings.bindings,
1518
+ ),
1519
+ domains,
1520
+ crons,
1521
+ } satisfies Worker["Attributes"];
1522
+
1523
+ // Centralized ownership decision: the engine routes `read`'s
1524
+ // return value based on `AdoptPolicy`. We hand it the attrs
1525
+ // either as-is (owned: alchemy tags identify this stack/stage/id,
1526
+ // safe to silently adopt even without `--adopt`) or branded with
1527
+ // `Unowned` (caller must opt in via `--adopt` or the engine
1528
+ // raises `OwnedBySomeoneElse`).
1529
+ return hasAlchemyWorkerTags(id, settings.tags ?? [])
1530
+ ? attrs
1531
+ : Unowned(attrs);
1532
+ },
1533
+ (effect) =>
1534
+ effect.pipe(
1535
+ // A worker that exists but hasn't registered a version yet reads
1536
+ // as "not deployed" — fall through to (re)create like NotFound.
1537
+ Effect.catchTag("WorkerNotFound", () =>
1538
+ Effect.succeed(undefined),
1539
+ ),
1540
+ Effect.catchTag("WorkerHasNoVersions", () =>
1541
+ Effect.succeed(undefined),
1542
+ ),
1543
+ ),
1544
+ ),
1545
+ reconcile: Effect.fn(function* ({
1546
+ id,
1547
+ news,
1548
+ olds,
1549
+ bindings,
1550
+ output,
1551
+ session,
1552
+ }) {
1553
+ const { accountId } = yield* yield* CloudflareEnvironment;
1554
+ const name =
1555
+ output?.workerName ?? (yield* createWorkerName(id, news.name));
1556
+ const durableObjects = getDurableObjectBindings(bindings, name).map(
1557
+ ({ logicalId, className }) => ({
1558
+ logicalId,
1559
+ className,
1560
+ }),
1561
+ );
1562
+ yield* Effect.logInfo(
1563
+ `Cloudflare Worker reconcile: starting ${name}`,
1564
+ );
1565
+ yield* Effect.logInfo(
1566
+ `Cloudflare Worker reconcile: durable objects ${JSON.stringify(
1567
+ durableObjects,
1568
+ )}`,
1569
+ );
1570
+
1571
+ // Observe — fetch the script's current settings if it already exists.
1572
+ // `putWorker` is a true upsert against the Cloudflare API; the
1573
+ // existing settings inform asset/migration decisions and let the
1574
+ // reconciler converge whether the worker is brand-new, adopted, or
1575
+ // an in-place update.
1576
+ const existingSettings = yield* workers
1577
+ .getScriptScriptAndVersionSetting({
1578
+ accountId,
1579
+ scriptName: name,
1580
+ })
1581
+ .pipe(
1582
+ // After a pre-create stub (or under a busy account right after
1583
+ // the first upload) the settings read can race the script
1584
+ // registry and 404 with "has no versions". Treat it as "no
1585
+ // existing settings" so reconcile proceeds to upload/converge.
1586
+ Effect.catchTag("WorkerNotFound", () =>
1587
+ Effect.succeed(undefined),
1588
+ ),
1589
+ Effect.catchTag("WorkerHasNoVersions", () =>
1590
+ Effect.succeed(undefined),
1591
+ ),
1592
+ );
1593
+ yield* Effect.logInfo(
1594
+ `Cloudflare Worker reconcile: existing durable object tags ${JSON.stringify(
1595
+ (existingSettings?.tags ?? []).filter((tag) =>
1596
+ tag.startsWith("alchemy:do:"),
1597
+ ),
1598
+ )}`,
1599
+ );
1600
+ yield* Effect.logInfo(
1601
+ `Cloudflare Worker reconcile: previous durable object tags ${JSON.stringify(
1602
+ (output?.tags ?? []).filter((tag) =>
1603
+ tag.startsWith("alchemy:do:"),
1604
+ ),
1605
+ )}`,
1606
+ );
1607
+ return yield* putWorker(
1608
+ id,
1609
+ news,
1610
+ bindings,
1611
+ olds,
1612
+ output,
1613
+ session,
1614
+ existingSettings,
1615
+ );
1616
+ }),
1617
+ delete: Effect.fn(function* ({ output }) {
1618
+ yield* Effect.logInfo(
1619
+ `Cloudflare Worker delete: deleting ${output.workerName}`,
1620
+ );
1621
+ // Look up live domain IDs rather than trusting persisted state.
1622
+ // We no longer track `{ id, zoneId }` on the output; fetching
1623
+ // straight from Cloudflare handles both the normal case and
1624
+ // adopted workers whose domains we never recorded.
1625
+ const liveDomains = yield* workers
1626
+ .listDomains({
1627
+ accountId: output.accountId,
1628
+ service: output.workerName,
1629
+ })
1630
+ .pipe(
1631
+ Effect.map((r) => r.result ?? []),
1632
+ Effect.catch(() => Effect.succeed([])),
1633
+ );
1634
+ if (liveDomains.length) {
1635
+ yield* Effect.all(
1636
+ liveDomains.flatMap((d) =>
1637
+ d.id
1638
+ ? [
1639
+ workers
1640
+ .deleteDomain({
1641
+ accountId: output.accountId,
1642
+ domainId: d.id,
1643
+ })
1644
+ .pipe(
1645
+ Effect.catchTag("DomainNotFound", () => Effect.void),
1646
+ ),
1647
+ ]
1648
+ : [],
1649
+ ),
1650
+ { concurrency: "unbounded" },
1651
+ );
1652
+ }
1653
+ yield* workers
1654
+ .deleteScript({
1655
+ accountId: output.accountId,
1656
+ scriptName: output.workerName,
1657
+ // Force teardown of queue consumers, durable object classes, and
1658
+ // service bindings hanging off this worker. Without `force`, those
1659
+ // conditions raise QueueConsumerConflict / ServiceBindingConflict
1660
+ // and leave the script in CF. Alchemy is the source of truth for
1661
+ // the worker, so we want a hard delete on teardown.
1662
+ force: true,
1663
+ })
1664
+ .pipe(Effect.catchTag("WorkerNotFound", () => Effect.void));
1665
+ }),
1666
+ tail: ({ output }) =>
1667
+ telemetry.tailScript({
1668
+ accountId: output.accountId,
1669
+ scriptName: output.workerName,
1670
+ }),
1671
+ logs: ({ output, options }) =>
1672
+ telemetry.queryLogs({
1673
+ accountId: output.accountId,
1674
+ filters: [
1675
+ {
1676
+ key: "$workers.scriptName",
1677
+ operation: "eq",
1678
+ type: "string",
1679
+ value: output.workerName,
1680
+ },
1681
+ ],
1682
+ options,
1683
+ }),
1684
+ });
1685
+ }),
1686
+ );
1687
+
1688
+ const contentTypeFromExtension = (extension: string) => {
1689
+ switch (extension) {
1690
+ case ".wasm":
1691
+ return "application/wasm";
1692
+ case ".txt":
1693
+ case ".html":
1694
+ case ".sql":
1695
+ case ".custom":
1696
+ return "text/plain";
1697
+ case ".bin":
1698
+ return "application/octet-stream";
1699
+ case ".mjs":
1700
+ case ".js":
1701
+ return "application/javascript+module";
1702
+ case ".cjs":
1703
+ return "application/javascript";
1704
+ case ".map":
1705
+ return "application/source-map";
1706
+ default:
1707
+ return "application/octet-stream";
1708
+ }
1709
+ };
1710
+
1711
+ function bumpMigrationTagVersion(
1712
+ oldTag: string | undefined,
1713
+ ): string | undefined {
1714
+ if (!oldTag) return undefined;
1715
+ const version = oldTag.match(/^(alchemy:)?v(\d+)$/)?.[2];
1716
+ if (!version) return "alchemy:v1";
1717
+ return `alchemy:v${parseInt(version, 10) + 1}`;
1718
+ }
1719
+
1720
+ function getDurableObjectBindings(
1721
+ bindings: ReadonlyArray<ResourceBinding>,
1722
+ workerName: string,
1723
+ ) {
1724
+ // Resource authors (and the `make`/`yield* Tag`/plan-vs-apply machinery)
1725
+ // can register the same DO binding multiple times under the same logical
1726
+ // id — `binding()` is a plain `worker.bind` and intentionally has no
1727
+ // dedup. Collapse duplicates here so each `(logicalId, bindingName,
1728
+ // className)` tuple appears at most once. We also exclude cross-script
1729
+ // references: a `scriptName` pointing to *another* worker means this
1730
+ // worker just references a foreign class — ship the binding to
1731
+ // Cloudflare, but don't drive class migrations for it.
1732
+ const seen = new Set<string>();
1733
+ return bindings.flatMap((binding) =>
1734
+ (binding.data.bindings ?? []).flatMap((item: WorkerBinding) => {
1735
+ if (
1736
+ item.type !== "durable_object_namespace" ||
1737
+ !("className" in item) ||
1738
+ !item.className
1739
+ ) {
1740
+ return [];
1741
+ }
1742
+ if (item.scriptName !== undefined && item.scriptName !== workerName) {
1743
+ return [];
1744
+ }
1745
+ const dedupKey = `${binding.sid}::${item.name}::${item.className}`;
1746
+ if (seen.has(dedupKey)) return [];
1747
+ seen.add(dedupKey);
1748
+ return [
1749
+ {
1750
+ logicalId: binding.sid,
1751
+ bindingName: item.name,
1752
+ className: item.className,
1753
+ },
1754
+ ];
1755
+ }),
1756
+ );
1757
+ }
1758
+
1759
+ function getDurableObjectTagMap(tags: ReadonlyArray<string>) {
1760
+ return Object.fromEntries(
1761
+ tags.flatMap((tag) => {
1762
+ if (!tag.startsWith("alchemy:do:")) {
1763
+ return [];
1764
+ }
1765
+ const parts = tag.split(":");
1766
+ const logicalId = parts[2];
1767
+ const className = parts.slice(3).join(":");
1768
+ return logicalId && className ? [[logicalId, className]] : [];
1769
+ }),
1770
+ );
1771
+ }