alchemy 2.0.0-beta.59 → 2.0.0-beta.60

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 (697) hide show
  1. package/README.md +1 -1
  2. package/bin/exec.js +684 -758
  3. package/bin/exec.js.map +1 -1
  4. package/lib/AWS/AuthProvider.d.ts.map +1 -1
  5. package/lib/AWS/AuthProvider.js +22 -9
  6. package/lib/AWS/AuthProvider.js.map +1 -1
  7. package/lib/AWS/AutoScaling/LaunchTemplate.d.ts +1 -1
  8. package/lib/AWS/AutoScaling/LaunchTemplate.js +1 -1
  9. package/lib/AWS/CloudWatch/Dashboard.d.ts.map +1 -1
  10. package/lib/AWS/CloudWatch/Dashboard.js +4 -1
  11. package/lib/AWS/CloudWatch/Dashboard.js.map +1 -1
  12. package/lib/AWS/Credentials.d.ts +58 -2
  13. package/lib/AWS/Credentials.d.ts.map +1 -1
  14. package/lib/AWS/Credentials.js +124 -2
  15. package/lib/AWS/Credentials.js.map +1 -1
  16. package/lib/AWS/EC2/Image.d.ts.map +1 -1
  17. package/lib/AWS/EC2/Image.js +4 -1
  18. package/lib/AWS/EC2/Image.js.map +1 -1
  19. package/lib/AWS/EC2/Instance.d.ts +4 -3
  20. package/lib/AWS/EC2/Instance.d.ts.map +1 -1
  21. package/lib/AWS/EC2/Instance.js +4 -2
  22. package/lib/AWS/EC2/Instance.js.map +1 -1
  23. package/lib/AWS/EC2/KeyPair.d.ts +87 -0
  24. package/lib/AWS/EC2/KeyPair.d.ts.map +1 -0
  25. package/lib/AWS/EC2/KeyPair.js +198 -0
  26. package/lib/AWS/EC2/KeyPair.js.map +1 -0
  27. package/lib/AWS/EC2/NetworkAcl.d.ts.map +1 -1
  28. package/lib/AWS/EC2/NetworkAcl.js +4 -1
  29. package/lib/AWS/EC2/NetworkAcl.js.map +1 -1
  30. package/lib/AWS/EC2/SecurityGroup.d.ts.map +1 -1
  31. package/lib/AWS/EC2/SecurityGroup.js +4 -1
  32. package/lib/AWS/EC2/SecurityGroup.js.map +1 -1
  33. package/lib/AWS/EC2/SecurityGroupRule.d.ts.map +1 -1
  34. package/lib/AWS/EC2/SecurityGroupRule.js +14 -7
  35. package/lib/AWS/EC2/SecurityGroupRule.js.map +1 -1
  36. package/lib/AWS/EC2/Subnet.d.ts.map +1 -1
  37. package/lib/AWS/EC2/Subnet.js +29 -5
  38. package/lib/AWS/EC2/Subnet.js.map +1 -1
  39. package/lib/AWS/EC2/hosted.d.ts +8 -10
  40. package/lib/AWS/EC2/hosted.d.ts.map +1 -1
  41. package/lib/AWS/EC2/hosted.js +81 -67
  42. package/lib/AWS/EC2/hosted.js.map +1 -1
  43. package/lib/AWS/EC2/index.d.ts +1 -0
  44. package/lib/AWS/EC2/index.d.ts.map +1 -1
  45. package/lib/AWS/EC2/index.js +1 -0
  46. package/lib/AWS/EC2/index.js.map +1 -1
  47. package/lib/AWS/ECS/Task.d.ts +8 -8
  48. package/lib/AWS/ECS/Task.d.ts.map +1 -1
  49. package/lib/AWS/ECS/Task.js +82 -56
  50. package/lib/AWS/ECS/Task.js.map +1 -1
  51. package/lib/AWS/IAM/Role.d.ts +19 -4
  52. package/lib/AWS/IAM/Role.d.ts.map +1 -1
  53. package/lib/AWS/IAM/Role.js +81 -16
  54. package/lib/AWS/IAM/Role.js.map +1 -1
  55. package/lib/AWS/Lambda/CreateAuthToken.d.ts +28 -0
  56. package/lib/AWS/Lambda/CreateAuthToken.d.ts.map +1 -0
  57. package/lib/AWS/Lambda/CreateAuthToken.js +3 -0
  58. package/lib/AWS/Lambda/CreateAuthToken.js.map +1 -0
  59. package/lib/AWS/Lambda/CreateAuthTokenHttp.d.ts +3 -0
  60. package/lib/AWS/Lambda/CreateAuthTokenHttp.d.ts.map +1 -0
  61. package/lib/AWS/Lambda/CreateAuthTokenHttp.js +11 -0
  62. package/lib/AWS/Lambda/CreateAuthTokenHttp.js.map +1 -0
  63. package/lib/AWS/Lambda/CreateShellAuthToken.d.ts +27 -0
  64. package/lib/AWS/Lambda/CreateShellAuthToken.d.ts.map +1 -0
  65. package/lib/AWS/Lambda/CreateShellAuthToken.js +3 -0
  66. package/lib/AWS/Lambda/CreateShellAuthToken.js.map +1 -0
  67. package/lib/AWS/Lambda/CreateShellAuthTokenHttp.d.ts +3 -0
  68. package/lib/AWS/Lambda/CreateShellAuthTokenHttp.d.ts.map +1 -0
  69. package/lib/AWS/Lambda/CreateShellAuthTokenHttp.js +11 -0
  70. package/lib/AWS/Lambda/CreateShellAuthTokenHttp.js.map +1 -0
  71. package/lib/AWS/Lambda/DeleteMicrovmImageVersion.d.ts +18 -0
  72. package/lib/AWS/Lambda/DeleteMicrovmImageVersion.d.ts.map +1 -0
  73. package/lib/AWS/Lambda/DeleteMicrovmImageVersion.js +3 -0
  74. package/lib/AWS/Lambda/DeleteMicrovmImageVersion.js.map +1 -0
  75. package/lib/AWS/Lambda/DeleteMicrovmImageVersionHttp.d.ts +3 -0
  76. package/lib/AWS/Lambda/DeleteMicrovmImageVersionHttp.d.ts.map +1 -0
  77. package/lib/AWS/Lambda/DeleteMicrovmImageVersionHttp.js +12 -0
  78. package/lib/AWS/Lambda/DeleteMicrovmImageVersionHttp.js.map +1 -0
  79. package/lib/AWS/Lambda/Function.d.ts +4 -2
  80. package/lib/AWS/Lambda/Function.d.ts.map +1 -1
  81. package/lib/AWS/Lambda/Function.js +10 -5
  82. package/lib/AWS/Lambda/Function.js.map +1 -1
  83. package/lib/AWS/Lambda/GetMicrovm.d.ts +23 -0
  84. package/lib/AWS/Lambda/GetMicrovm.d.ts.map +1 -0
  85. package/lib/AWS/Lambda/GetMicrovm.js +3 -0
  86. package/lib/AWS/Lambda/GetMicrovm.js.map +1 -0
  87. package/lib/AWS/Lambda/GetMicrovmHttp.d.ts +3 -0
  88. package/lib/AWS/Lambda/GetMicrovmHttp.d.ts.map +1 -0
  89. package/lib/AWS/Lambda/GetMicrovmHttp.js +13 -0
  90. package/lib/AWS/Lambda/GetMicrovmHttp.js.map +1 -0
  91. package/lib/AWS/Lambda/GetMicrovmImage.d.ts +23 -0
  92. package/lib/AWS/Lambda/GetMicrovmImage.d.ts.map +1 -0
  93. package/lib/AWS/Lambda/GetMicrovmImage.js +3 -0
  94. package/lib/AWS/Lambda/GetMicrovmImage.js.map +1 -0
  95. package/lib/AWS/Lambda/GetMicrovmImageBuild.d.ts +18 -0
  96. package/lib/AWS/Lambda/GetMicrovmImageBuild.d.ts.map +1 -0
  97. package/lib/AWS/Lambda/GetMicrovmImageBuild.js +3 -0
  98. package/lib/AWS/Lambda/GetMicrovmImageBuild.js.map +1 -0
  99. package/lib/AWS/Lambda/GetMicrovmImageBuildHttp.d.ts +3 -0
  100. package/lib/AWS/Lambda/GetMicrovmImageBuildHttp.d.ts.map +1 -0
  101. package/lib/AWS/Lambda/GetMicrovmImageBuildHttp.js +12 -0
  102. package/lib/AWS/Lambda/GetMicrovmImageBuildHttp.js.map +1 -0
  103. package/lib/AWS/Lambda/GetMicrovmImageHttp.d.ts +3 -0
  104. package/lib/AWS/Lambda/GetMicrovmImageHttp.d.ts.map +1 -0
  105. package/lib/AWS/Lambda/GetMicrovmImageHttp.js +12 -0
  106. package/lib/AWS/Lambda/GetMicrovmImageHttp.js.map +1 -0
  107. package/lib/AWS/Lambda/GetMicrovmImageVersion.d.ts +18 -0
  108. package/lib/AWS/Lambda/GetMicrovmImageVersion.d.ts.map +1 -0
  109. package/lib/AWS/Lambda/GetMicrovmImageVersion.js +3 -0
  110. package/lib/AWS/Lambda/GetMicrovmImageVersion.js.map +1 -0
  111. package/lib/AWS/Lambda/GetMicrovmImageVersionHttp.d.ts +3 -0
  112. package/lib/AWS/Lambda/GetMicrovmImageVersionHttp.d.ts.map +1 -0
  113. package/lib/AWS/Lambda/GetMicrovmImageVersionHttp.js +12 -0
  114. package/lib/AWS/Lambda/GetMicrovmImageVersionHttp.js.map +1 -0
  115. package/lib/AWS/Lambda/ListManagedMicrovmImageVersions.d.ts +17 -0
  116. package/lib/AWS/Lambda/ListManagedMicrovmImageVersions.d.ts.map +1 -0
  117. package/lib/AWS/Lambda/ListManagedMicrovmImageVersions.js +3 -0
  118. package/lib/AWS/Lambda/ListManagedMicrovmImageVersions.js.map +1 -0
  119. package/lib/AWS/Lambda/ListManagedMicrovmImageVersionsHttp.d.ts +3 -0
  120. package/lib/AWS/Lambda/ListManagedMicrovmImageVersionsHttp.d.ts.map +1 -0
  121. package/lib/AWS/Lambda/ListManagedMicrovmImageVersionsHttp.js +10 -0
  122. package/lib/AWS/Lambda/ListManagedMicrovmImageVersionsHttp.js.map +1 -0
  123. package/lib/AWS/Lambda/ListManagedMicrovmImages.d.ts +17 -0
  124. package/lib/AWS/Lambda/ListManagedMicrovmImages.d.ts.map +1 -0
  125. package/lib/AWS/Lambda/ListManagedMicrovmImages.js +3 -0
  126. package/lib/AWS/Lambda/ListManagedMicrovmImages.js.map +1 -0
  127. package/lib/AWS/Lambda/ListManagedMicrovmImagesHttp.d.ts +3 -0
  128. package/lib/AWS/Lambda/ListManagedMicrovmImagesHttp.d.ts.map +1 -0
  129. package/lib/AWS/Lambda/ListManagedMicrovmImagesHttp.js +10 -0
  130. package/lib/AWS/Lambda/ListManagedMicrovmImagesHttp.js.map +1 -0
  131. package/lib/AWS/Lambda/ListMicrovmImageBuilds.d.ts +19 -0
  132. package/lib/AWS/Lambda/ListMicrovmImageBuilds.d.ts.map +1 -0
  133. package/lib/AWS/Lambda/ListMicrovmImageBuilds.js +3 -0
  134. package/lib/AWS/Lambda/ListMicrovmImageBuilds.js.map +1 -0
  135. package/lib/AWS/Lambda/ListMicrovmImageBuildsHttp.d.ts +3 -0
  136. package/lib/AWS/Lambda/ListMicrovmImageBuildsHttp.d.ts.map +1 -0
  137. package/lib/AWS/Lambda/ListMicrovmImageBuildsHttp.js +12 -0
  138. package/lib/AWS/Lambda/ListMicrovmImageBuildsHttp.js.map +1 -0
  139. package/lib/AWS/Lambda/ListMicrovmImageVersions.d.ts +18 -0
  140. package/lib/AWS/Lambda/ListMicrovmImageVersions.d.ts.map +1 -0
  141. package/lib/AWS/Lambda/ListMicrovmImageVersions.js +3 -0
  142. package/lib/AWS/Lambda/ListMicrovmImageVersions.js.map +1 -0
  143. package/lib/AWS/Lambda/ListMicrovmImageVersionsHttp.d.ts +3 -0
  144. package/lib/AWS/Lambda/ListMicrovmImageVersionsHttp.d.ts.map +1 -0
  145. package/lib/AWS/Lambda/ListMicrovmImageVersionsHttp.js +12 -0
  146. package/lib/AWS/Lambda/ListMicrovmImageVersionsHttp.js.map +1 -0
  147. package/lib/AWS/Lambda/ListMicrovms.d.ts +23 -0
  148. package/lib/AWS/Lambda/ListMicrovms.d.ts.map +1 -0
  149. package/lib/AWS/Lambda/ListMicrovms.js +3 -0
  150. package/lib/AWS/Lambda/ListMicrovms.js.map +1 -0
  151. package/lib/AWS/Lambda/ListMicrovmsHttp.d.ts +3 -0
  152. package/lib/AWS/Lambda/ListMicrovmsHttp.d.ts.map +1 -0
  153. package/lib/AWS/Lambda/ListMicrovmsHttp.js +12 -0
  154. package/lib/AWS/Lambda/ListMicrovmsHttp.js.map +1 -0
  155. package/lib/AWS/Lambda/MicrovmBinding.d.ts +61 -0
  156. package/lib/AWS/Lambda/MicrovmBinding.d.ts.map +1 -0
  157. package/lib/AWS/Lambda/MicrovmBinding.js +279 -0
  158. package/lib/AWS/Lambda/MicrovmBinding.js.map +1 -0
  159. package/lib/AWS/Lambda/MicrovmBundle.d.ts +62 -0
  160. package/lib/AWS/Lambda/MicrovmBundle.d.ts.map +1 -0
  161. package/lib/AWS/Lambda/MicrovmBundle.js +197 -0
  162. package/lib/AWS/Lambda/MicrovmBundle.js.map +1 -0
  163. package/lib/AWS/Lambda/MicrovmImage.d.ts +488 -0
  164. package/lib/AWS/Lambda/MicrovmImage.d.ts.map +1 -0
  165. package/lib/AWS/Lambda/MicrovmImage.js +381 -0
  166. package/lib/AWS/Lambda/MicrovmImage.js.map +1 -0
  167. package/lib/AWS/Lambda/MicrovmProvider.d.ts +7 -0
  168. package/lib/AWS/Lambda/MicrovmProvider.d.ts.map +1 -0
  169. package/lib/AWS/Lambda/MicrovmProvider.js +384 -0
  170. package/lib/AWS/Lambda/MicrovmProvider.js.map +1 -0
  171. package/lib/AWS/Lambda/MicrovmRpc.d.ts +50 -0
  172. package/lib/AWS/Lambda/MicrovmRpc.d.ts.map +1 -0
  173. package/lib/AWS/Lambda/MicrovmRpc.js +50 -0
  174. package/lib/AWS/Lambda/MicrovmRpc.js.map +1 -0
  175. package/lib/AWS/Lambda/MicrovmRuntimeContext.d.ts +9 -0
  176. package/lib/AWS/Lambda/MicrovmRuntimeContext.d.ts.map +1 -0
  177. package/lib/AWS/Lambda/MicrovmRuntimeContext.js +67 -0
  178. package/lib/AWS/Lambda/MicrovmRuntimeContext.js.map +1 -0
  179. package/lib/AWS/Lambda/NetworkConnector.d.ts +142 -0
  180. package/lib/AWS/Lambda/NetworkConnector.d.ts.map +1 -0
  181. package/lib/AWS/Lambda/NetworkConnector.js +283 -0
  182. package/lib/AWS/Lambda/NetworkConnector.js.map +1 -0
  183. package/lib/AWS/Lambda/QueueEventSource.d.ts.map +1 -1
  184. package/lib/AWS/Lambda/QueueEventSource.js +1 -0
  185. package/lib/AWS/Lambda/QueueEventSource.js.map +1 -1
  186. package/lib/AWS/Lambda/ResumeMicrovm.d.ts +23 -0
  187. package/lib/AWS/Lambda/ResumeMicrovm.d.ts.map +1 -0
  188. package/lib/AWS/Lambda/ResumeMicrovm.js +3 -0
  189. package/lib/AWS/Lambda/ResumeMicrovm.js.map +1 -0
  190. package/lib/AWS/Lambda/ResumeMicrovmHttp.d.ts +3 -0
  191. package/lib/AWS/Lambda/ResumeMicrovmHttp.d.ts.map +1 -0
  192. package/lib/AWS/Lambda/ResumeMicrovmHttp.js +11 -0
  193. package/lib/AWS/Lambda/ResumeMicrovmHttp.js.map +1 -0
  194. package/lib/AWS/Lambda/RunMicrovm.d.ts +33 -0
  195. package/lib/AWS/Lambda/RunMicrovm.d.ts.map +1 -0
  196. package/lib/AWS/Lambda/RunMicrovm.js +3 -0
  197. package/lib/AWS/Lambda/RunMicrovm.js.map +1 -0
  198. package/lib/AWS/Lambda/RunMicrovmHttp.d.ts +3 -0
  199. package/lib/AWS/Lambda/RunMicrovmHttp.d.ts.map +1 -0
  200. package/lib/AWS/Lambda/RunMicrovmHttp.js +13 -0
  201. package/lib/AWS/Lambda/RunMicrovmHttp.js.map +1 -0
  202. package/lib/AWS/Lambda/SuspendMicrovm.d.ts +23 -0
  203. package/lib/AWS/Lambda/SuspendMicrovm.d.ts.map +1 -0
  204. package/lib/AWS/Lambda/SuspendMicrovm.js +3 -0
  205. package/lib/AWS/Lambda/SuspendMicrovm.js.map +1 -0
  206. package/lib/AWS/Lambda/SuspendMicrovmHttp.d.ts +3 -0
  207. package/lib/AWS/Lambda/SuspendMicrovmHttp.d.ts.map +1 -0
  208. package/lib/AWS/Lambda/SuspendMicrovmHttp.js +11 -0
  209. package/lib/AWS/Lambda/SuspendMicrovmHttp.js.map +1 -0
  210. package/lib/AWS/Lambda/TerminateMicrovm.d.ts +23 -0
  211. package/lib/AWS/Lambda/TerminateMicrovm.d.ts.map +1 -0
  212. package/lib/AWS/Lambda/TerminateMicrovm.js +3 -0
  213. package/lib/AWS/Lambda/TerminateMicrovm.js.map +1 -0
  214. package/lib/AWS/Lambda/TerminateMicrovmHttp.d.ts +3 -0
  215. package/lib/AWS/Lambda/TerminateMicrovmHttp.d.ts.map +1 -0
  216. package/lib/AWS/Lambda/TerminateMicrovmHttp.js +11 -0
  217. package/lib/AWS/Lambda/TerminateMicrovmHttp.js.map +1 -0
  218. package/lib/AWS/Lambda/UpdateMicrovmImageVersion.d.ts +18 -0
  219. package/lib/AWS/Lambda/UpdateMicrovmImageVersion.d.ts.map +1 -0
  220. package/lib/AWS/Lambda/UpdateMicrovmImageVersion.js +3 -0
  221. package/lib/AWS/Lambda/UpdateMicrovmImageVersion.js.map +1 -0
  222. package/lib/AWS/Lambda/UpdateMicrovmImageVersionHttp.d.ts +3 -0
  223. package/lib/AWS/Lambda/UpdateMicrovmImageVersionHttp.d.ts.map +1 -0
  224. package/lib/AWS/Lambda/UpdateMicrovmImageVersionHttp.js +12 -0
  225. package/lib/AWS/Lambda/UpdateMicrovmImageVersionHttp.js.map +1 -0
  226. package/lib/AWS/Lambda/index.d.ts +38 -0
  227. package/lib/AWS/Lambda/index.d.ts.map +1 -1
  228. package/lib/AWS/Lambda/index.js +38 -0
  229. package/lib/AWS/Lambda/index.js.map +1 -1
  230. package/lib/AWS/Providers.d.ts +1 -1
  231. package/lib/AWS/Providers.d.ts.map +1 -1
  232. package/lib/AWS/Providers.js +6 -2
  233. package/lib/AWS/Providers.js.map +1 -1
  234. package/lib/AWS/RDS/DBClusterParameterGroup.d.ts.map +1 -1
  235. package/lib/AWS/RDS/DBClusterParameterGroup.js +4 -1
  236. package/lib/AWS/RDS/DBClusterParameterGroup.js.map +1 -1
  237. package/lib/AWS/RDS/DBParameterGroup.d.ts.map +1 -1
  238. package/lib/AWS/RDS/DBParameterGroup.js +4 -1
  239. package/lib/AWS/RDS/DBParameterGroup.js.map +1 -1
  240. package/lib/AWS/Region.d.ts.map +1 -1
  241. package/lib/AWS/Region.js +6 -1
  242. package/lib/AWS/Region.js.map +1 -1
  243. package/lib/AWS/S3/Bucket.d.ts.map +1 -1
  244. package/lib/AWS/S3/Bucket.js +46 -26
  245. package/lib/AWS/S3/Bucket.js.map +1 -1
  246. package/lib/AlchemyContext.d.ts +7 -0
  247. package/lib/AlchemyContext.d.ts.map +1 -1
  248. package/lib/AlchemyContext.js.map +1 -1
  249. package/lib/Apply.js +2 -2
  250. package/lib/Apply.js.map +1 -1
  251. package/lib/Axiom/Chart.d.ts +9 -1
  252. package/lib/Axiom/Chart.d.ts.map +1 -1
  253. package/lib/Bundle/Bundle.d.ts +1 -0
  254. package/lib/Bundle/Bundle.d.ts.map +1 -1
  255. package/lib/Bundle/Bundle.js +1 -1
  256. package/lib/Bundle/Bundle.js.map +1 -1
  257. package/lib/Bundle/TempRoot.d.ts +9 -0
  258. package/lib/Bundle/TempRoot.d.ts.map +1 -1
  259. package/lib/Bundle/TempRoot.js +22 -0
  260. package/lib/Bundle/TempRoot.js.map +1 -1
  261. package/lib/Bundle/Vite.d.ts +20 -0
  262. package/lib/Bundle/Vite.d.ts.map +1 -0
  263. package/lib/Bundle/Vite.js +130 -0
  264. package/lib/Bundle/Vite.js.map +1 -0
  265. package/lib/Bundle/index.d.ts +0 -1
  266. package/lib/Bundle/index.d.ts.map +1 -1
  267. package/lib/Bundle/index.js +0 -1
  268. package/lib/Bundle/index.js.map +1 -1
  269. package/lib/Cli/Event.d.ts +1 -1
  270. package/lib/Cli/Event.d.ts.map +1 -1
  271. package/lib/Cli/LoggingCli.d.ts.map +1 -1
  272. package/lib/Cli/LoggingCli.js +3 -0
  273. package/lib/Cli/LoggingCli.js.map +1 -1
  274. package/lib/Cli/commands/_shared.d.ts.map +1 -1
  275. package/lib/Cli/commands/_shared.js +7 -1
  276. package/lib/Cli/commands/_shared.js.map +1 -1
  277. package/lib/Cli/commands/cloudflare.d.ts +2 -2
  278. package/lib/Cli/commands/cloudflare.d.ts.map +1 -1
  279. package/lib/Cli/commands/cloudflare.js +21 -2
  280. package/lib/Cli/commands/cloudflare.js.map +1 -1
  281. package/lib/Cli/commands/deploy.d.ts.map +1 -1
  282. package/lib/Cli/commands/deploy.js +4 -1
  283. package/lib/Cli/commands/deploy.js.map +1 -1
  284. package/lib/Cli/tui/components/PlanProgress.js +5 -3
  285. package/lib/Cli/tui/components/PlanProgress.js.map +1 -1
  286. package/lib/Cloudflare/AI/Gateway.d.ts +1 -1
  287. package/lib/Cloudflare/AI/Gateway.js +1 -1
  288. package/lib/Cloudflare/AI/Search.d.ts +1 -1
  289. package/lib/Cloudflare/AI/Search.js +1 -1
  290. package/lib/Cloudflare/AI/SearchInstance.d.ts +1 -1
  291. package/lib/Cloudflare/AI/SearchInstance.js +1 -1
  292. package/lib/Cloudflare/AI/SearchNamespace.d.ts +1 -1
  293. package/lib/Cloudflare/AI/SearchNamespace.js +1 -1
  294. package/lib/Cloudflare/AI/SearchToken.d.ts.map +1 -1
  295. package/lib/Cloudflare/AI/SearchToken.js +6 -1
  296. package/lib/Cloudflare/AI/SearchToken.js.map +1 -1
  297. package/lib/Cloudflare/Access/Application.d.ts.map +1 -1
  298. package/lib/Cloudflare/Access/Application.js +51 -11
  299. package/lib/Cloudflare/Access/Application.js.map +1 -1
  300. package/lib/Cloudflare/Alerting/Webhook.d.ts.map +1 -1
  301. package/lib/Cloudflare/Alerting/Webhook.js +9 -2
  302. package/lib/Cloudflare/Alerting/Webhook.js.map +1 -1
  303. package/lib/Cloudflare/AnalyticsEngine/WriteDataset.d.ts +2 -2
  304. package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts.map +1 -1
  305. package/lib/Cloudflare/ApiToken/AccountApiToken.js +5 -1
  306. package/lib/Cloudflare/ApiToken/AccountApiToken.js.map +1 -1
  307. package/lib/Cloudflare/Auth/AuthProvider.js +1 -1
  308. package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
  309. package/lib/Cloudflare/Containers/Container.d.ts +46 -4
  310. package/lib/Cloudflare/Containers/Container.d.ts.map +1 -1
  311. package/lib/Cloudflare/Containers/Container.js +27 -3
  312. package/lib/Cloudflare/Containers/Container.js.map +1 -1
  313. package/lib/Cloudflare/Containers/ContainerApplication.d.ts +25 -19
  314. package/lib/Cloudflare/Containers/ContainerApplication.d.ts.map +1 -1
  315. package/lib/Cloudflare/Containers/ContainerApplication.js.map +1 -1
  316. package/lib/Cloudflare/Containers/ContainerBundle.d.ts +1 -2
  317. package/lib/Cloudflare/Containers/ContainerBundle.d.ts.map +1 -1
  318. package/lib/Cloudflare/Containers/ContainerBundle.js +2 -4
  319. package/lib/Cloudflare/Containers/ContainerBundle.js.map +1 -1
  320. package/lib/Cloudflare/Containers/ContainerPlatform.js +2 -2
  321. package/lib/Cloudflare/Containers/ContainerPlatform.js.map +1 -1
  322. package/lib/Cloudflare/Containers/ContainerProvider.d.ts +2 -1
  323. package/lib/Cloudflare/Containers/ContainerProvider.d.ts.map +1 -1
  324. package/lib/Cloudflare/Containers/ContainerProvider.js +51 -35
  325. package/lib/Cloudflare/Containers/ContainerProvider.js.map +1 -1
  326. package/lib/Cloudflare/Containers/LocalContainerProvider.d.ts +3 -1
  327. package/lib/Cloudflare/Containers/LocalContainerProvider.d.ts.map +1 -1
  328. package/lib/Cloudflare/Containers/LocalContainerProvider.js +11 -4
  329. package/lib/Cloudflare/Containers/LocalContainerProvider.js.map +1 -1
  330. package/lib/Cloudflare/Containers/StartContainer.d.ts.map +1 -1
  331. package/lib/Cloudflare/Containers/StartContainer.js +222 -15
  332. package/lib/Cloudflare/Containers/StartContainer.js.map +1 -1
  333. package/lib/Cloudflare/DNS/ReadDns.d.ts +1 -1
  334. package/lib/Cloudflare/DNS/ReadWriteDns.d.ts +1 -1
  335. package/lib/Cloudflare/DNS/WriteDns.d.ts +1 -1
  336. package/lib/Cloudflare/Flagship/App.d.ts +1 -1
  337. package/lib/Cloudflare/Flagship/App.js +1 -1
  338. package/lib/Cloudflare/Images/Images.d.ts +1 -1
  339. package/lib/Cloudflare/Local.js +2 -1
  340. package/lib/Cloudflare/Local.js.map +1 -1
  341. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  342. package/lib/Cloudflare/Providers.js +2 -1
  343. package/lib/Cloudflare/Providers.js.map +1 -1
  344. package/lib/Cloudflare/Queues/Consumer.d.ts +2 -2
  345. package/lib/Cloudflare/Queues/Consumer.d.ts.map +1 -1
  346. package/lib/Cloudflare/Queues/Consumer.js +21 -13
  347. package/lib/Cloudflare/Queues/Consumer.js.map +1 -1
  348. package/lib/Cloudflare/Queues/Queue.d.ts +1 -1
  349. package/lib/Cloudflare/Queues/Queue.js +1 -1
  350. package/lib/Cloudflare/R2/Bucket.d.ts +2 -2
  351. package/lib/Cloudflare/R2/Bucket.js +2 -2
  352. package/lib/Cloudflare/StateStore/Api.d.ts +4 -1
  353. package/lib/Cloudflare/StateStore/Api.d.ts.map +1 -1
  354. package/lib/Cloudflare/StateStore/Api.js +6 -4
  355. package/lib/Cloudflare/StateStore/Api.js.map +1 -1
  356. package/lib/Cloudflare/StateStore/State.d.ts +28 -2
  357. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  358. package/lib/Cloudflare/StateStore/State.js +122 -19
  359. package/lib/Cloudflare/StateStore/State.js.map +1 -1
  360. package/lib/Cloudflare/Website/Vite.d.ts +26 -23
  361. package/lib/Cloudflare/Website/Vite.d.ts.map +1 -1
  362. package/lib/Cloudflare/Website/Vite.js +25 -7
  363. package/lib/Cloudflare/Website/Vite.js.map +1 -1
  364. package/lib/Cloudflare/Workers/Binding.d.ts +1 -1
  365. package/lib/Cloudflare/Workers/Browser.d.ts +1 -1
  366. package/lib/Cloudflare/Workers/DurableObject.d.ts +54 -3
  367. package/lib/Cloudflare/Workers/DurableObject.d.ts.map +1 -1
  368. package/lib/Cloudflare/Workers/DurableObject.js +54 -3
  369. package/lib/Cloudflare/Workers/DurableObject.js.map +1 -1
  370. package/lib/Cloudflare/Workers/InferEnv.d.ts +4 -2
  371. package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
  372. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  373. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +55 -6
  374. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  375. package/lib/Cloudflare/Workers/RpcDurableObject.d.ts +3 -3
  376. package/lib/Cloudflare/Workers/RpcDurableObject.js +3 -3
  377. package/lib/Cloudflare/Workers/RpcWorker.d.ts +4 -4
  378. package/lib/Cloudflare/Workers/RpcWorker.js +4 -4
  379. package/lib/Cloudflare/Workers/ScheduledEvents.js +1 -1
  380. package/lib/Cloudflare/Workers/ScheduledEvents.js.map +1 -1
  381. package/lib/Cloudflare/Workers/VersionMetadata.d.ts +1 -1
  382. package/lib/Cloudflare/Workers/Vite.d.ts +1 -4
  383. package/lib/Cloudflare/Workers/Vite.d.ts.map +1 -1
  384. package/lib/Cloudflare/Workers/Vite.js +19 -38
  385. package/lib/Cloudflare/Workers/Vite.js.map +1 -1
  386. package/lib/Cloudflare/Workers/Worker.d.ts +73 -13
  387. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  388. package/lib/Cloudflare/Workers/Worker.js +9 -9
  389. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  390. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts +2 -1
  391. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
  392. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +31 -0
  393. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
  394. package/lib/Cloudflare/Workers/WorkerBinding.d.ts +7 -1
  395. package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
  396. package/lib/Cloudflare/Workers/WorkerBinding.js.map +1 -1
  397. package/lib/Cloudflare/Workers/WorkerLoader.d.ts +1 -1
  398. package/lib/Cloudflare/Workers/WorkerLoader.js +1 -1
  399. package/lib/Cloudflare/Workers/WorkerProvider.d.ts +10 -0
  400. package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
  401. package/lib/Cloudflare/Workers/WorkerProvider.js +240 -60
  402. package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
  403. package/lib/Cloudflare/Workers/WorkerRuntimeContext.js +1 -1
  404. package/lib/Cloudflare/Workers/WorkerRuntimeContext.js.map +1 -1
  405. package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.d.ts +44 -2
  406. package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.d.ts.map +1 -1
  407. package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.js +44 -2
  408. package/lib/Cloudflare/WorkersForPlatforms/DispatchNamespace.js.map +1 -1
  409. package/lib/Cloudflare/WorkersForPlatforms/Get.d.ts +77 -0
  410. package/lib/Cloudflare/WorkersForPlatforms/Get.d.ts.map +1 -0
  411. package/lib/Cloudflare/WorkersForPlatforms/Get.js +9 -0
  412. package/lib/Cloudflare/WorkersForPlatforms/Get.js.map +1 -0
  413. package/lib/Cloudflare/WorkersForPlatforms/GetBinding.d.ts +9 -0
  414. package/lib/Cloudflare/WorkersForPlatforms/GetBinding.d.ts.map +1 -0
  415. package/lib/Cloudflare/WorkersForPlatforms/GetBinding.js +43 -0
  416. package/lib/Cloudflare/WorkersForPlatforms/GetBinding.js.map +1 -0
  417. package/lib/Cloudflare/WorkersForPlatforms/index.d.ts +2 -0
  418. package/lib/Cloudflare/WorkersForPlatforms/index.d.ts.map +1 -1
  419. package/lib/Cloudflare/WorkersForPlatforms/index.js +2 -0
  420. package/lib/Cloudflare/WorkersForPlatforms/index.js.map +1 -1
  421. package/lib/Cloudflare/Workflows/Workflow.d.ts +107 -1
  422. package/lib/Cloudflare/Workflows/Workflow.d.ts.map +1 -1
  423. package/lib/Cloudflare/Workflows/Workflow.js +93 -6
  424. package/lib/Cloudflare/Workflows/Workflow.js.map +1 -1
  425. package/lib/Command/Build.d.ts.map +1 -1
  426. package/lib/Command/Build.js +24 -1
  427. package/lib/Command/Build.js.map +1 -1
  428. package/lib/Docker/Container.d.ts +156 -0
  429. package/lib/Docker/Container.d.ts.map +1 -0
  430. package/lib/Docker/Container.js +221 -0
  431. package/lib/Docker/Container.js.map +1 -0
  432. package/lib/Docker/Docker.d.ts +199 -0
  433. package/lib/Docker/Docker.d.ts.map +1 -0
  434. package/lib/Docker/Docker.js +224 -0
  435. package/lib/Docker/Docker.js.map +1 -0
  436. package/lib/Docker/Image.d.ts +109 -0
  437. package/lib/Docker/Image.d.ts.map +1 -0
  438. package/lib/Docker/Image.js +150 -0
  439. package/lib/Docker/Image.js.map +1 -0
  440. package/lib/Docker/Network.d.ts +61 -0
  441. package/lib/Docker/Network.d.ts.map +1 -0
  442. package/lib/Docker/Network.js +99 -0
  443. package/lib/Docker/Network.js.map +1 -0
  444. package/lib/Docker/Providers.d.ts +15 -0
  445. package/lib/Docker/Providers.d.ts.map +1 -0
  446. package/lib/Docker/Providers.js +18 -0
  447. package/lib/Docker/Providers.js.map +1 -0
  448. package/lib/Docker/Registry.d.ts +30 -0
  449. package/lib/Docker/Registry.d.ts.map +1 -0
  450. package/lib/Docker/Registry.js +44 -0
  451. package/lib/Docker/Registry.js.map +1 -0
  452. package/lib/Docker/RemoteImage.d.ts +102 -0
  453. package/lib/Docker/RemoteImage.d.ts.map +1 -0
  454. package/lib/Docker/RemoteImage.js +123 -0
  455. package/lib/Docker/RemoteImage.js.map +1 -0
  456. package/lib/Docker/Volume.d.ts +81 -0
  457. package/lib/Docker/Volume.d.ts.map +1 -0
  458. package/lib/Docker/Volume.js +107 -0
  459. package/lib/Docker/Volume.js.map +1 -0
  460. package/lib/Docker/index.d.ts +9 -0
  461. package/lib/Docker/index.d.ts.map +1 -0
  462. package/lib/Docker/index.js +8 -0
  463. package/lib/Docker/index.js.map +1 -0
  464. package/lib/Local/ProviderLayer.d.ts +1 -0
  465. package/lib/Local/ProviderLayer.d.ts.map +1 -1
  466. package/lib/Local/ProviderLayer.js +1 -0
  467. package/lib/Local/ProviderLayer.js.map +1 -1
  468. package/lib/Neon/Branch.d.ts +5 -0
  469. package/lib/Neon/Branch.d.ts.map +1 -1
  470. package/lib/Neon/Branch.js +8 -1
  471. package/lib/Neon/Branch.js.map +1 -1
  472. package/lib/Neon/Project.d.ts +5 -0
  473. package/lib/Neon/Project.d.ts.map +1 -1
  474. package/lib/Neon/Project.js +6 -0
  475. package/lib/Neon/Project.js.map +1 -1
  476. package/lib/Plan.d.ts.map +1 -1
  477. package/lib/Plan.js +3 -1
  478. package/lib/Plan.js.map +1 -1
  479. package/lib/Planetscale/Branch.d.ts +10 -0
  480. package/lib/Planetscale/Branch.d.ts.map +1 -1
  481. package/lib/Planetscale/Branch.js +43 -1
  482. package/lib/Planetscale/Branch.js.map +1 -1
  483. package/lib/Planetscale/Postgres/PostgresBranch.d.ts +5 -0
  484. package/lib/Planetscale/Postgres/PostgresBranch.d.ts.map +1 -1
  485. package/lib/Planetscale/Postgres/PostgresBranch.js.map +1 -1
  486. package/lib/Planetscale/Postgres/PostgresRole.d.ts +3 -1
  487. package/lib/Planetscale/Postgres/PostgresRole.d.ts.map +1 -1
  488. package/lib/Planetscale/Postgres/PostgresRole.js +8 -0
  489. package/lib/Planetscale/Postgres/PostgresRole.js.map +1 -1
  490. package/lib/Planetscale/Util.d.ts +3 -124
  491. package/lib/Planetscale/Util.d.ts.map +1 -1
  492. package/lib/Platform.d.ts +2 -1
  493. package/lib/Platform.d.ts.map +1 -1
  494. package/lib/Platform.js +37 -10
  495. package/lib/Platform.js.map +1 -1
  496. package/lib/Provider.d.ts.map +1 -1
  497. package/lib/Provider.js.map +1 -1
  498. package/lib/Resource.d.ts.map +1 -1
  499. package/lib/Resource.js +3 -1
  500. package/lib/Resource.js.map +1 -1
  501. package/lib/Rpc.d.ts +1 -1
  502. package/lib/Server/Process.d.ts +29 -1
  503. package/lib/Server/Process.d.ts.map +1 -1
  504. package/lib/Server/Process.js +48 -1
  505. package/lib/Server/Process.js.map +1 -1
  506. package/lib/Stack.d.ts +4 -1
  507. package/lib/Stack.d.ts.map +1 -1
  508. package/lib/Stack.js +1 -1
  509. package/lib/Stack.js.map +1 -1
  510. package/lib/State/HttpStateApi.d.ts +10 -10
  511. package/lib/Tags.d.ts +6 -0
  512. package/lib/Tags.d.ts.map +1 -1
  513. package/lib/Tags.js +6 -0
  514. package/lib/Tags.js.map +1 -1
  515. package/lib/Telemetry/Attributes.d.ts.map +1 -1
  516. package/lib/Telemetry/Attributes.js +6 -15
  517. package/lib/Telemetry/Attributes.js.map +1 -1
  518. package/lib/Test/Bun.d.ts +1 -0
  519. package/lib/Test/Bun.d.ts.map +1 -1
  520. package/lib/Test/Bun.js +1 -0
  521. package/lib/Test/Bun.js.map +1 -1
  522. package/lib/Test/Core.d.ts +1 -0
  523. package/lib/Test/Core.d.ts.map +1 -1
  524. package/lib/Test/Core.js +3 -2
  525. package/lib/Test/Core.js.map +1 -1
  526. package/lib/Test/Vitest.d.ts.map +1 -1
  527. package/lib/Test/Vitest.js +1 -0
  528. package/lib/Test/Vitest.js.map +1 -1
  529. package/lib/Util/effect.js.map +1 -1
  530. package/lib/Util/proxy-chain.d.ts +1 -0
  531. package/lib/Util/proxy-chain.d.ts.map +1 -1
  532. package/lib/Util/proxy-chain.js +1 -0
  533. package/lib/Util/proxy-chain.js.map +1 -1
  534. package/package.json +26 -10
  535. package/src/AWS/AuthProvider.ts +32 -17
  536. package/src/AWS/AutoScaling/LaunchTemplate.ts +1 -1
  537. package/src/AWS/CloudWatch/Dashboard.ts +4 -1
  538. package/src/AWS/Credentials.ts +178 -2
  539. package/src/AWS/EC2/Image.ts +4 -1
  540. package/src/AWS/EC2/Instance.ts +9 -6
  541. package/src/AWS/EC2/KeyPair.ts +319 -0
  542. package/src/AWS/EC2/NetworkAcl.ts +4 -1
  543. package/src/AWS/EC2/SecurityGroup.ts +4 -1
  544. package/src/AWS/EC2/SecurityGroupRule.ts +14 -5
  545. package/src/AWS/EC2/Subnet.ts +49 -4
  546. package/src/AWS/EC2/hosted.ts +93 -93
  547. package/src/AWS/EC2/index.ts +1 -0
  548. package/src/AWS/ECS/Task.ts +96 -78
  549. package/src/AWS/IAM/Role.ts +132 -22
  550. package/src/AWS/Lambda/CreateAuthToken.ts +43 -0
  551. package/src/AWS/Lambda/CreateAuthTokenHttp.ts +11 -0
  552. package/src/AWS/Lambda/CreateShellAuthToken.ts +42 -0
  553. package/src/AWS/Lambda/CreateShellAuthTokenHttp.ts +11 -0
  554. package/src/AWS/Lambda/DeleteMicrovmImageVersion.ts +36 -0
  555. package/src/AWS/Lambda/DeleteMicrovmImageVersionHttp.ts +12 -0
  556. package/src/AWS/Lambda/Function.ts +36 -9
  557. package/src/AWS/Lambda/GetMicrovm.ts +32 -0
  558. package/src/AWS/Lambda/GetMicrovmHttp.ts +13 -0
  559. package/src/AWS/Lambda/GetMicrovmImage.ts +40 -0
  560. package/src/AWS/Lambda/GetMicrovmImageBuild.ts +35 -0
  561. package/src/AWS/Lambda/GetMicrovmImageBuildHttp.ts +12 -0
  562. package/src/AWS/Lambda/GetMicrovmImageHttp.ts +12 -0
  563. package/src/AWS/Lambda/GetMicrovmImageVersion.ts +35 -0
  564. package/src/AWS/Lambda/GetMicrovmImageVersionHttp.ts +12 -0
  565. package/src/AWS/Lambda/ListManagedMicrovmImageVersions.ts +31 -0
  566. package/src/AWS/Lambda/ListManagedMicrovmImageVersionsHttp.ts +10 -0
  567. package/src/AWS/Lambda/ListManagedMicrovmImages.ts +31 -0
  568. package/src/AWS/Lambda/ListManagedMicrovmImagesHttp.ts +10 -0
  569. package/src/AWS/Lambda/ListMicrovmImageBuilds.ts +36 -0
  570. package/src/AWS/Lambda/ListMicrovmImageBuildsHttp.ts +12 -0
  571. package/src/AWS/Lambda/ListMicrovmImageVersions.ts +36 -0
  572. package/src/AWS/Lambda/ListMicrovmImageVersionsHttp.ts +12 -0
  573. package/src/AWS/Lambda/ListMicrovms.ts +40 -0
  574. package/src/AWS/Lambda/ListMicrovmsHttp.ts +12 -0
  575. package/src/AWS/Lambda/MicrovmBinding.ts +442 -0
  576. package/src/AWS/Lambda/MicrovmBundle.ts +256 -0
  577. package/src/AWS/Lambda/MicrovmImage.ts +569 -0
  578. package/src/AWS/Lambda/MicrovmProvider.ts +597 -0
  579. package/src/AWS/Lambda/MicrovmRpc.ts +75 -0
  580. package/src/AWS/Lambda/MicrovmRuntimeContext.ts +110 -0
  581. package/src/AWS/Lambda/NetworkConnector.ts +529 -0
  582. package/src/AWS/Lambda/QueueEventSource.ts +1 -0
  583. package/src/AWS/Lambda/ResumeMicrovm.ts +37 -0
  584. package/src/AWS/Lambda/ResumeMicrovmHttp.ts +11 -0
  585. package/src/AWS/Lambda/RunMicrovm.ts +45 -0
  586. package/src/AWS/Lambda/RunMicrovmHttp.ts +13 -0
  587. package/src/AWS/Lambda/SuspendMicrovm.ts +37 -0
  588. package/src/AWS/Lambda/SuspendMicrovmHttp.ts +11 -0
  589. package/src/AWS/Lambda/TerminateMicrovm.ts +38 -0
  590. package/src/AWS/Lambda/TerminateMicrovmHttp.ts +11 -0
  591. package/src/AWS/Lambda/UpdateMicrovmImageVersion.ts +36 -0
  592. package/src/AWS/Lambda/UpdateMicrovmImageVersionHttp.ts +12 -0
  593. package/src/AWS/Lambda/index.ts +38 -0
  594. package/src/AWS/Providers.ts +147 -133
  595. package/src/AWS/RDS/DBClusterParameterGroup.ts +5 -1
  596. package/src/AWS/RDS/DBParameterGroup.ts +5 -1
  597. package/src/AWS/Region.ts +9 -2
  598. package/src/AWS/S3/Bucket.ts +71 -36
  599. package/src/AlchemyContext.ts +7 -0
  600. package/src/Apply.ts +4 -2
  601. package/src/Axiom/Chart.ts +9 -1
  602. package/src/Bundle/Bundle.ts +1 -1
  603. package/src/Bundle/TempRoot.ts +22 -0
  604. package/src/Bundle/Vite.ts +204 -0
  605. package/src/Bundle/index.ts +0 -1
  606. package/src/Cli/Event.ts +1 -0
  607. package/src/Cli/LoggingCli.ts +3 -0
  608. package/src/Cli/commands/_shared.ts +7 -1
  609. package/src/Cli/commands/cloudflare.ts +37 -2
  610. package/src/Cli/commands/deploy.ts +4 -1
  611. package/src/Cli/tui/components/PlanProgress.tsx +5 -3
  612. package/src/Cloudflare/AI/Gateway.ts +1 -1
  613. package/src/Cloudflare/AI/Search.ts +1 -1
  614. package/src/Cloudflare/AI/SearchInstance.ts +1 -1
  615. package/src/Cloudflare/AI/SearchNamespace.ts +1 -1
  616. package/src/Cloudflare/AI/SearchToken.ts +6 -1
  617. package/src/Cloudflare/Access/Application.ts +61 -10
  618. package/src/Cloudflare/Alerting/Webhook.ts +18 -7
  619. package/src/Cloudflare/AnalyticsEngine/WriteDataset.ts +2 -2
  620. package/src/Cloudflare/ApiToken/AccountApiToken.ts +4 -0
  621. package/src/Cloudflare/Auth/AuthProvider.ts +1 -1
  622. package/src/Cloudflare/Containers/Container.ts +43 -4
  623. package/src/Cloudflare/Containers/ContainerApplication.ts +24 -18
  624. package/src/Cloudflare/Containers/ContainerBundle.ts +2 -4
  625. package/src/Cloudflare/Containers/ContainerPlatform.ts +3 -3
  626. package/src/Cloudflare/Containers/ContainerProvider.ts +50 -42
  627. package/src/Cloudflare/Containers/LocalContainerProvider.ts +11 -4
  628. package/src/Cloudflare/Containers/StartContainer.ts +316 -32
  629. package/src/Cloudflare/DNS/ReadDns.ts +1 -1
  630. package/src/Cloudflare/DNS/ReadWriteDns.ts +1 -1
  631. package/src/Cloudflare/DNS/WriteDns.ts +1 -1
  632. package/src/Cloudflare/Flagship/App.ts +1 -1
  633. package/src/Cloudflare/Images/Images.ts +1 -1
  634. package/src/Cloudflare/Local.ts +2 -0
  635. package/src/Cloudflare/Providers.ts +2 -0
  636. package/src/Cloudflare/Queues/Consumer.ts +21 -12
  637. package/src/Cloudflare/Queues/Queue.ts +1 -1
  638. package/src/Cloudflare/R2/Bucket.ts +2 -2
  639. package/src/Cloudflare/StateStore/Api.ts +6 -4
  640. package/src/Cloudflare/StateStore/State.ts +192 -20
  641. package/src/Cloudflare/Website/Vite.ts +29 -24
  642. package/src/Cloudflare/Workers/Binding.ts +1 -1
  643. package/src/Cloudflare/Workers/Browser.ts +1 -1
  644. package/src/Cloudflare/Workers/DurableObject.ts +54 -3
  645. package/src/Cloudflare/Workers/InferEnv.ts +47 -36
  646. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +54 -7
  647. package/src/Cloudflare/Workers/RpcDurableObject.ts +3 -3
  648. package/src/Cloudflare/Workers/RpcWorker.ts +4 -4
  649. package/src/Cloudflare/Workers/ScheduledEvents.ts +1 -1
  650. package/src/Cloudflare/Workers/VersionMetadata.ts +1 -1
  651. package/src/Cloudflare/Workers/Vite.ts +21 -40
  652. package/src/Cloudflare/Workers/Worker.ts +74 -13
  653. package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +30 -0
  654. package/src/Cloudflare/Workers/WorkerBinding.ts +5 -1
  655. package/src/Cloudflare/Workers/WorkerLoader.ts +1 -1
  656. package/src/Cloudflare/Workers/WorkerProvider.ts +470 -200
  657. package/src/Cloudflare/Workers/WorkerRuntimeContext.ts +1 -1
  658. package/src/Cloudflare/WorkersForPlatforms/DispatchNamespace.ts +44 -2
  659. package/src/Cloudflare/WorkersForPlatforms/Get.ts +87 -0
  660. package/src/Cloudflare/WorkersForPlatforms/GetBinding.ts +63 -0
  661. package/src/Cloudflare/WorkersForPlatforms/index.ts +2 -0
  662. package/src/Cloudflare/Workflows/Workflow.ts +207 -78
  663. package/src/Command/Build.ts +32 -1
  664. package/src/Docker/Container.ts +413 -0
  665. package/src/Docker/Docker.ts +564 -0
  666. package/src/Docker/Image.ts +265 -0
  667. package/src/Docker/Network.ts +178 -0
  668. package/src/Docker/Providers.ts +37 -0
  669. package/src/Docker/Registry.ts +63 -0
  670. package/src/Docker/RemoteImage.ts +215 -0
  671. package/src/Docker/Volume.ts +187 -0
  672. package/src/Docker/index.ts +8 -0
  673. package/src/Local/ProviderLayer.ts +2 -0
  674. package/src/Neon/Branch.ts +15 -1
  675. package/src/Neon/Project.ts +13 -0
  676. package/src/Plan.ts +3 -1
  677. package/src/Planetscale/Branch.ts +70 -0
  678. package/src/Planetscale/Postgres/PostgresBranch.ts +6 -0
  679. package/src/Planetscale/Postgres/PostgresRole.ts +11 -1
  680. package/src/Platform.ts +50 -12
  681. package/src/Provider.ts +1 -1
  682. package/src/Resource.ts +9 -3
  683. package/src/Rpc.ts +1 -1
  684. package/src/Server/Process.ts +82 -1
  685. package/src/Stack.ts +11 -3
  686. package/src/Tags.ts +12 -0
  687. package/src/Telemetry/Attributes.ts +9 -12
  688. package/src/Test/Bun.ts +2 -0
  689. package/src/Test/Core.ts +13 -8
  690. package/src/Test/Vitest.ts +1 -0
  691. package/src/Util/effect.ts +1 -1
  692. package/src/Util/proxy-chain.ts +1 -0
  693. package/lib/Bundle/Docker.d.ts +0 -75
  694. package/lib/Bundle/Docker.d.ts.map +0 -1
  695. package/lib/Bundle/Docker.js +0 -148
  696. package/lib/Bundle/Docker.js.map +0 -1
  697. package/src/Bundle/Docker.ts +0 -229
@@ -0,0 +1,215 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { isResolved } from "../Diff.ts";
3
+ import * as Provider from "../Provider.ts";
4
+ import { Resource } from "../Resource.ts";
5
+ import { Docker } from "./Docker.ts";
6
+ import type { Providers } from "./Providers.ts";
7
+ import {
8
+ type ImageRegistry,
9
+ parseCreatedAt,
10
+ parseRepoDigest,
11
+ repositoryFromImageRef,
12
+ withRegistryHost,
13
+ } from "./Registry.ts";
14
+
15
+ export interface RemoteImageProps {
16
+ /** Docker image name to pull, without tag. */
17
+ name: string;
18
+ /** Docker image tag to pull. @default "latest" */
19
+ tag?: string;
20
+ /** Pull for this platform. */
21
+ platform?: string;
22
+ /**
23
+ * Pull even when an image with the same reference already exists locally.
24
+ *
25
+ * @default true
26
+ */
27
+ alwaysPull?: boolean;
28
+ /**
29
+ * Re-tag the pulled image under this repository/name. When omitted the pulled
30
+ * `name` is kept.
31
+ */
32
+ targetName?: string;
33
+ /**
34
+ * Tag applied to the re-tagged image.
35
+ *
36
+ * @default The pulled `tag`.
37
+ */
38
+ targetTag?: string;
39
+ /** Registry credentials. When set, the (re-tagged) image is pushed. */
40
+ registry?: ImageRegistry;
41
+ /**
42
+ * Skip registry push even when `registry` is set.
43
+ *
44
+ * @default false
45
+ */
46
+ skipPush?: boolean;
47
+ }
48
+
49
+ export interface RemoteImage extends Resource<
50
+ "Docker.RemoteImage",
51
+ RemoteImageProps,
52
+ {
53
+ /** Final image reference. Includes the registry host when pushed there. */
54
+ imageRef: string;
55
+ /** Local image id after pull. */
56
+ imageId: string;
57
+ /** Pull timestamp in milliseconds since epoch. */
58
+ createdAt: number;
59
+ /** Final image repository/name. */
60
+ name: string;
61
+ /** Final image tag. */
62
+ tag: string;
63
+ /** Registry digest after push when available. */
64
+ repoDigest?: string;
65
+ },
66
+ never,
67
+ Providers
68
+ > {}
69
+
70
+ /**
71
+ * Pulls a remote Docker image through the active Docker context, optionally
72
+ * re-tagging it and pushing it to a registry.
73
+ *
74
+ * The image is available to other Docker resources by `imageRef`. Use
75
+ * `alwaysPull: false` when you want to reuse an existing tag in the configured
76
+ * Docker daemon instead of pulling on every deploy. Set `targetName`/`targetTag`
77
+ * to re-tag the pulled image, and `registry` to push it (mirroring it from a
78
+ * source registry into your own, for example).
79
+ *
80
+ * @resource
81
+ *
82
+ * @section Pulling Images
83
+ * @example Pull nginx
84
+ * ```typescript
85
+ * const nginx = yield* Docker.RemoteImage("nginx", {
86
+ * name: "nginx",
87
+ * tag: "alpine",
88
+ * });
89
+ * ```
90
+ *
91
+ * @example Reuse an existing daemon tag
92
+ * ```typescript
93
+ * const postgres = yield* Docker.RemoteImage("postgres", {
94
+ * name: "postgres",
95
+ * tag: "18-alpine",
96
+ * alwaysPull: false,
97
+ * });
98
+ * ```
99
+ *
100
+ * @section Re-tagging and Pushing
101
+ * @example Mirror a public image into your registry
102
+ * ```typescript
103
+ * const mirrored = yield* Docker.RemoteImage("nginx-mirror", {
104
+ * name: "nginx",
105
+ * tag: "alpine",
106
+ * targetName: "acme/nginx",
107
+ * targetTag: "alpine",
108
+ * registry: {
109
+ * server: "ghcr.io",
110
+ * username: "octocat",
111
+ * password: Config.redacted("GITHUB_TOKEN"),
112
+ * },
113
+ * });
114
+ * ```
115
+ */
116
+ export const RemoteImage = Resource<RemoteImage>("Docker.RemoteImage");
117
+
118
+ export const RemoteImageProvider = () =>
119
+ Provider.effect(
120
+ RemoteImage,
121
+ Effect.gen(function* () {
122
+ const docker = yield* Docker;
123
+
124
+ return RemoteImage.Provider.of({
125
+ list: () => Effect.succeed([]),
126
+ read: Effect.fn(function* ({ olds, output }) {
127
+ const ref = output?.imageRef ?? targetImageRef(olds);
128
+ return yield* docker.image.inspect(ref).pipe(
129
+ Effect.map((image) => ({
130
+ imageRef: ref,
131
+ imageId: image.Id,
132
+ createdAt: output?.createdAt ?? parseCreatedAt(image.Created),
133
+ name: output?.name ?? repositoryFromImageRef(ref),
134
+ tag: output?.tag ?? targetTag(olds),
135
+ repoDigest: output?.repoDigest,
136
+ })),
137
+ Effect.catchReason(
138
+ "PlatformError",
139
+ "NotFound",
140
+ () => Effect.undefined,
141
+ ),
142
+ );
143
+ }),
144
+ diff: Effect.fn(function* ({ output, news }) {
145
+ if (!isResolved(news)) return undefined;
146
+ if (
147
+ !output ||
148
+ news.alwaysPull !== false ||
149
+ output.imageRef !== targetImageRef(news)
150
+ ) {
151
+ return { action: "update" };
152
+ }
153
+ }),
154
+ reconcile: Effect.fn(function* ({ news, session }) {
155
+ const sourceRef = remoteImageRef(news);
156
+ yield* session.note(`Pulling Docker image: ${sourceRef}`);
157
+ yield* docker.image.pull(sourceRef, news.platform);
158
+
159
+ const finalRef = targetImageRef(news);
160
+ if (finalRef !== sourceRef) {
161
+ yield* session.note(
162
+ `Tagging Docker image: ${sourceRef} -> ${finalRef}`,
163
+ );
164
+ yield* docker.image.tag(sourceRef, finalRef);
165
+ }
166
+
167
+ let repoDigest: string | undefined;
168
+ if (news.registry && !news.skipPush) {
169
+ yield* session.note(
170
+ `Pushing image to registry "${news.registry.server}"`,
171
+ );
172
+ repoDigest = yield* docker.image
173
+ .push(finalRef, news.registry)
174
+ .pipe(
175
+ Effect.map((result) =>
176
+ parseRepoDigest(finalRef, result.stdout),
177
+ ),
178
+ );
179
+ }
180
+
181
+ const inspected = yield* docker.image.inspect(finalRef);
182
+ return {
183
+ imageRef: finalRef,
184
+ imageId: inspected.Id,
185
+ createdAt: parseCreatedAt(inspected.Created),
186
+ name: repositoryFromImageRef(finalRef),
187
+ tag: targetTag(news),
188
+ repoDigest,
189
+ };
190
+ }),
191
+ delete: Effect.fn(function* () {
192
+ // Remote images are not removed on destroy because tags may be shared by
193
+ // unrelated local stacks or developer workflows.
194
+ }),
195
+ });
196
+ }),
197
+ );
198
+
199
+ /** The reference the image is pulled from. */
200
+ const remoteImageRef = (props: RemoteImageProps): string =>
201
+ `${props.name}:${props.tag ?? "latest"}`;
202
+
203
+ const targetTag = (props: RemoteImageProps): string =>
204
+ props.targetTag ?? props.tag ?? "latest";
205
+
206
+ /**
207
+ * The final reference after re-tagging and registry-host prefixing. Equals the
208
+ * pulled reference when no re-tag/registry is configured.
209
+ */
210
+ const targetImageRef = (props: RemoteImageProps): string => {
211
+ const local = `${props.targetName ?? props.name}:${targetTag(props)}`;
212
+ return props.registry && !props.skipPush
213
+ ? withRegistryHost(local, props.registry)
214
+ : local;
215
+ };
@@ -0,0 +1,187 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Equal from "effect/Equal";
3
+ import { Unowned } from "../AdoptPolicy.ts";
4
+ import { isResolved } from "../Diff.ts";
5
+ import * as Provider from "../Provider.ts";
6
+ import { Resource } from "../Resource.ts";
7
+ import {
8
+ createInternalTags,
9
+ hasAlchemyTags,
10
+ stripInternalTags,
11
+ } from "../Tags.ts";
12
+ import { Docker, dockerPhysicalName } from "./Docker.ts";
13
+ import type { Providers } from "./Providers.ts";
14
+
15
+ export interface VolumeLabel {
16
+ /** Label name. */
17
+ name: string;
18
+ /** Label value. */
19
+ value: string;
20
+ }
21
+
22
+ export interface VolumeProps {
23
+ /**
24
+ * Docker volume name.
25
+ *
26
+ * @default Generated from stack, stage, logical id, and instance id.
27
+ */
28
+ name?: string;
29
+ /** Volume driver. @default "local" */
30
+ driver?: string;
31
+ /** Driver-specific options. */
32
+ driverOpts?: Record<string, string>;
33
+ /** Custom metadata labels. */
34
+ labels?: Record<string, string>;
35
+ }
36
+
37
+ export interface Volume extends Resource<
38
+ "Docker.Volume",
39
+ VolumeProps,
40
+ {
41
+ /** Docker volume name. */
42
+ id: string;
43
+ /** Docker volume name. */
44
+ name: string;
45
+ /** Volume driver. */
46
+ driver: string;
47
+ /** Driver-specific options reported by Docker. */
48
+ driverOpts: Record<string, string>;
49
+ /** Labels reported by Docker. */
50
+ labels: Record<string, string>;
51
+ /** Host mountpoint path. */
52
+ mountpoint?: string;
53
+ /** Creation timestamp in milliseconds since epoch. */
54
+ createdAt: number;
55
+ },
56
+ never,
57
+ Providers
58
+ > {}
59
+
60
+ /**
61
+ * A Docker volume managed through the active Docker context.
62
+ *
63
+ * Pre-existing same-name volumes are treated as foreign until the engine is
64
+ * allowed to adopt them with `--adopt` or `adopt(true)`.
65
+ *
66
+ * @resource
67
+ *
68
+ * @section Creating Volumes
69
+ * @example Basic volume
70
+ * ```typescript
71
+ * const data = yield* Docker.Volume("data", {
72
+ * name: "app-data",
73
+ * });
74
+ * ```
75
+ *
76
+ * @example PostgreSQL data volume
77
+ * ```typescript
78
+ * const data = yield* Docker.Volume("postgres-data");
79
+ * ```
80
+ *
81
+ * @example Driver options and labels
82
+ * ```typescript
83
+ * const data = yield* Docker.Volume("db-data", {
84
+ * driver: "local",
85
+ * driverOpts: {
86
+ * type: "nfs",
87
+ * o: "addr=10.0.0.1,rw",
88
+ * device: ":/path/to/dir",
89
+ * },
90
+ * labels: {
91
+ * "com.example.usage": "database",
92
+ * },
93
+ * });
94
+ * ```
95
+ */
96
+ export const Volume = Resource<Volume>("Docker.Volume");
97
+
98
+ export const VolumeProvider = () =>
99
+ Provider.effect(
100
+ Volume,
101
+ Effect.gen(function* () {
102
+ const docker = yield* Docker;
103
+
104
+ return Volume.Provider.of({
105
+ list: () => Effect.succeed([]),
106
+ read: Effect.fn(function* ({ id, instanceId, olds, output }) {
107
+ const name = yield* dockerPhysicalName(id, olds, instanceId);
108
+ const info = yield* docker.volume
109
+ .inspect(name)
110
+ .pipe(
111
+ Effect.catchReason(
112
+ "PlatformError",
113
+ "NotFound",
114
+ () => Effect.undefined,
115
+ ),
116
+ );
117
+ if (!info) return undefined;
118
+ const attrs = toVolumeAttributes(info);
119
+ if (output) return attrs;
120
+ // Without prior state, only adopt a volume that carries our branding;
121
+ // anything else is foreign and gated behind `--adopt`.
122
+ const owned = yield* hasAlchemyTags(id, info.Labels ?? undefined);
123
+ return owned ? attrs : Unowned(attrs);
124
+ }),
125
+ diff: Effect.fn(function* ({ id, instanceId, output, news }) {
126
+ if (!isResolved(news)) return undefined;
127
+ const args = yield* makeVolumeArgs(id, news, instanceId);
128
+ if (
129
+ output?.name !== args.name ||
130
+ output?.driver !== args.driver ||
131
+ !Equal.equals(output?.driverOpts ?? {}, args.opt ?? {}) ||
132
+ // Compare only user labels; internal `alchemy::*` branding lives on
133
+ // the observed volume but must not drive replacement.
134
+ !Equal.equals(stripInternalTags(output?.labels), args.label ?? {})
135
+ ) {
136
+ return { action: "replace" as const, deleteFirst: true };
137
+ }
138
+ }),
139
+ reconcile: Effect.fn(function* ({ id, instanceId, news }) {
140
+ const args = yield* makeVolumeArgs(id, news, instanceId);
141
+ const internalTags = yield* createInternalTags(id);
142
+ const result = yield* docker.volume.create({
143
+ ...args,
144
+ label: { ...internalTags, ...args.label },
145
+ });
146
+ return toVolumeAttributes(
147
+ yield* docker.volume.inspect(result.stdout),
148
+ );
149
+ }),
150
+ delete: Effect.fn(({ output }) =>
151
+ docker.volume
152
+ .remove(output.name)
153
+ .pipe(
154
+ Effect.catchReason(
155
+ "PlatformError",
156
+ "NotFound",
157
+ () => Effect.void,
158
+ ),
159
+ ),
160
+ ),
161
+ });
162
+ }),
163
+ );
164
+
165
+ const makeVolumeArgs = (id: string, props: VolumeProps, instanceId: string) =>
166
+ dockerPhysicalName(id, props, instanceId).pipe(
167
+ Effect.map(
168
+ (name): Parameters<Docker["Service"]["volume"]["create"]>[0] => ({
169
+ name,
170
+ driver: props.driver ?? "local",
171
+ opt: props.driverOpts,
172
+ label: props.labels,
173
+ }),
174
+ ),
175
+ );
176
+
177
+ export const toVolumeAttributes = (
178
+ info: Docker.Volume,
179
+ ): Volume["Attributes"] => ({
180
+ id: info.Name,
181
+ name: info.Name,
182
+ driver: info.Driver,
183
+ driverOpts: info.Options ?? {},
184
+ labels: info.Labels ?? {},
185
+ mountpoint: info.Mountpoint,
186
+ createdAt: Date.parse(info.CreatedAt) || Date.now(),
187
+ });
@@ -0,0 +1,8 @@
1
+ export * from "./Container.ts";
2
+ export * from "./Docker.ts";
3
+ export * from "./Image.ts";
4
+ export * from "./Network.ts";
5
+ export * from "./Providers.ts";
6
+ export type { ImageRegistry } from "./Registry.ts";
7
+ export * from "./RemoteImage.ts";
8
+ export * from "./Volume.ts";
@@ -1,3 +1,5 @@
1
+ /** @effect-diagnostics anyUnknownInErrorContext:off */
2
+
1
3
  import * as Layer from "effect/Layer";
2
4
  import { AlchemyContext } from "../AlchemyContext.ts";
3
5
 
@@ -135,6 +135,11 @@ export type Branch = Resource<
135
135
  * when fronting Neon with another pooler like Hyperdrive.
136
136
  */
137
137
  origin: PostgresOrigin;
138
+ /**
139
+ * Parsed pooled connection components. Useful as a Hyperdrive `dev`
140
+ * origin when local workers bypass Hyperdrive and connect directly.
141
+ */
142
+ pooledOrigin: PostgresOrigin;
138
143
  migrationsDir: string | undefined;
139
144
  migrationsTable: string | undefined;
140
145
  migrationsHashes: Record<string, string>;
@@ -270,6 +275,9 @@ export const BranchProvider = () =>
270
275
  protected: branch.protected,
271
276
  default: branch.default,
272
277
  expiresAt: branch.expires_at,
278
+ pooledOrigin:
279
+ output.pooledOrigin ??
280
+ parsePostgresOrigin(output.pooledConnectionUri),
273
281
  })),
274
282
  Effect.catchTag("NotFound", () => Effect.succeed(undefined)),
275
283
  );
@@ -311,6 +319,7 @@ export const BranchProvider = () =>
311
319
  connectionUri: conn.uri,
312
320
  pooledConnectionUri: conn.pooled,
313
321
  origin: parsePostgresOrigin(conn.uri),
322
+ pooledOrigin: parsePostgresOrigin(conn.pooled),
314
323
  migrationsDir: olds?.migrationsDir,
315
324
  migrationsTable: olds?.migrationsTable,
316
325
  migrationsHashes: {},
@@ -349,6 +358,9 @@ export const BranchProvider = () =>
349
358
  connectionUri: output.connectionUri,
350
359
  pooledConnectionUri: output.pooledConnectionUri,
351
360
  origin: output.origin,
361
+ pooledOrigin:
362
+ output.pooledOrigin ??
363
+ parsePostgresOrigin(output.pooledConnectionUri),
352
364
  })),
353
365
  )
354
366
  : yield* Effect.gen(function* () {
@@ -403,6 +415,7 @@ export const BranchProvider = () =>
403
415
  connectionUri: conn.uri,
404
416
  pooledConnectionUri: conn.pooled,
405
417
  origin: parsePostgresOrigin(conn.uri),
418
+ pooledOrigin: parsePostgresOrigin(conn.pooled),
406
419
  };
407
420
  });
408
421
 
@@ -542,6 +555,7 @@ const hydrateBranch = (
542
555
  connectionUri: conn.uri,
543
556
  pooledConnectionUri: conn.pooled,
544
557
  origin: parsePostgresOrigin(conn.uri),
558
+ pooledOrigin: parsePostgresOrigin(conn.pooled),
545
559
  migrationsDir: undefined,
546
560
  migrationsTable: undefined,
547
561
  migrationsHashes: {},
@@ -578,7 +592,7 @@ const findBranchByName = (projectId: string, name: string) =>
578
592
  });
579
593
 
580
594
  const maybeResolveProjectId = (source: BranchSource): string | undefined => {
581
- if ("projectId" in source && source.projectId) {
595
+ if (source && "projectId" in source && source.projectId) {
582
596
  return source.projectId as unknown as string;
583
597
  }
584
598
  return undefined;
@@ -147,6 +147,11 @@ export type Project = Resource<
147
147
  * when fronting Neon with another pooler like Hyperdrive.
148
148
  */
149
149
  origin: PostgresOrigin;
150
+ /**
151
+ * Parsed pooled connection components. Useful as a Hyperdrive `dev`
152
+ * origin when local workers bypass Hyperdrive and connect directly.
153
+ */
154
+ pooledOrigin: PostgresOrigin;
150
155
  historyRetentionSeconds: number;
151
156
  enableLogicalReplication: boolean;
152
157
  migrationsDir: string | undefined;
@@ -283,6 +288,9 @@ export const ProjectProvider = () =>
283
288
  Effect.map(({ project }) => ({
284
289
  ...output,
285
290
  projectName: project.name,
291
+ pooledOrigin:
292
+ output.pooledOrigin ??
293
+ parsePostgresOrigin(output.pooledConnectionUri),
286
294
  historyRetentionSeconds: project.history_retention_seconds,
287
295
  enableLogicalReplication:
288
296
  project.settings?.enable_logical_replication === true,
@@ -332,6 +340,9 @@ export const ProjectProvider = () =>
332
340
  connectionUri: output.connectionUri,
333
341
  pooledConnectionUri: output.pooledConnectionUri,
334
342
  origin: output.origin,
343
+ pooledOrigin:
344
+ output.pooledOrigin ??
345
+ parsePostgresOrigin(output.pooledConnectionUri),
335
346
  historyRetentionSeconds:
336
347
  r.project.history_retention_seconds ??
337
348
  output.historyRetentionSeconds,
@@ -381,6 +392,7 @@ export const ProjectProvider = () =>
381
392
  connectionUri: conn.uri,
382
393
  pooledConnectionUri: conn.pooled,
383
394
  origin: parsePostgresOrigin(conn.uri),
395
+ pooledOrigin: parsePostgresOrigin(conn.pooled),
384
396
  historyRetentionSeconds:
385
397
  created.project.history_retention_seconds ?? 86400,
386
398
  enableLogicalReplication:
@@ -664,6 +676,7 @@ const hydrateProjectAttributes = (
664
676
  connectionUri: conn.uri,
665
677
  pooledConnectionUri: conn.pooled,
666
678
  origin: parsePostgresOrigin(conn.uri),
679
+ pooledOrigin: parsePostgresOrigin(conn.pooled),
667
680
  historyRetentionSeconds: project.history_retention_seconds ?? 86400,
668
681
  enableLogicalReplication:
669
682
  project.settings?.enable_logical_replication === true,
package/src/Plan.ts CHANGED
@@ -1,3 +1,5 @@
1
+ /** @effect-diagnostics anyUnknownInErrorContext:off */
2
+ /** @effect-diagnostics missingEffectError:off */
1
3
  import * as Config from "effect/Config";
2
4
  import * as Data from "effect/Data";
3
5
  import * as Duration from "effect/Duration";
@@ -55,8 +57,8 @@ import {
55
57
  type UpdatedResourceState,
56
58
  type UpdatingReourceState,
57
59
  } from "./State/index.ts";
58
- import { hashInput } from "./Util/sha256.ts";
59
60
  import { findCycleMembers } from "./Util/scc.ts";
61
+ import { hashInput } from "./Util/sha256.ts";
60
62
 
61
63
  export type PlanError = never;
62
64
 
@@ -14,6 +14,7 @@ import { ensureMySQLProductionBranchClusterSize } from "./MySQL/MySQLClusterSize
14
14
  import {
15
15
  ensurePostgresProductionBranchClusterSize,
16
16
  toPostgresClusterSku,
17
+ waitForPendingPostgresChanges,
17
18
  } from "./Postgres/PostgresClusterSize.ts";
18
19
  import {
19
20
  DEFAULT_MIGRATIONS_TABLE,
@@ -105,6 +106,16 @@ export interface BaseBranchAttributes {
105
106
  migrationsHashes: Record<string, string>;
106
107
  /** Content hashes for the last applied import files. */
107
108
  importHashes: Record<string, string>;
109
+ /**
110
+ * Desired total replica count requested by the resource input, when known.
111
+ * PlanetScale's branch read API exposes only boolean HA state, so this is
112
+ * persisted from Alchemy state rather than observed from live provider data.
113
+ */
114
+ desiredReplicas: number | undefined;
115
+ /** Whether the branch currently has HA replicas. */
116
+ hasReplicas: boolean | undefined;
117
+ /** Whether the branch currently has read-only replicas. */
118
+ hasReadOnlyReplicas: boolean | undefined;
108
119
  }
109
120
 
110
121
  // Runtime-resolved Database/Branch references. `news.database` can be a
@@ -230,6 +241,9 @@ export const makeBranchProvider = <R extends ResourceLike>(opts: {
230
241
  migrationsTable: undefined,
231
242
  migrationsHashes: {},
232
243
  importHashes: {},
244
+ desiredReplicas: undefined,
245
+ hasReplicas: branch.has_replicas,
246
+ hasReadOnlyReplicas: branch.has_read_only_replicas,
233
247
  }) satisfies BaseBranchAttributes,
234
248
  ),
235
249
  ),
@@ -273,6 +287,20 @@ export const makeBranchProvider = <R extends ResourceLike>(opts: {
273
287
  return { action: "replace" } as const;
274
288
  }
275
289
 
290
+ if (news.replicas !== undefined) {
291
+ if (output?.desiredReplicas !== news.replicas) {
292
+ return { action: "update" } as const;
293
+ }
294
+
295
+ const desiredHasReplicas = news.replicas > 0;
296
+ if (
297
+ output?.hasReplicas !== undefined &&
298
+ output.hasReplicas !== desiredHasReplicas
299
+ ) {
300
+ return { action: "update" } as const;
301
+ }
302
+ }
303
+
276
304
  if (news.migrationsDir) {
277
305
  const newHashes = yield* hashMigrations(news.migrationsDir);
278
306
  if (!recordsEqual(newHashes, output?.migrationsHashes ?? {})) {
@@ -336,6 +364,12 @@ export const makeBranchProvider = <R extends ResourceLike>(opts: {
336
364
  migrationsTable: output?.migrationsTable ?? olds?.migrationsTable,
337
365
  migrationsHashes: output?.migrationsHashes ?? {},
338
366
  importHashes: output?.importHashes ?? {},
367
+ desiredReplicas:
368
+ output?.desiredReplicas ??
369
+ olds?.desiredReplicas ??
370
+ olds?.replicas,
371
+ hasReplicas: data.has_replicas,
372
+ hasReadOnlyReplicas: data.has_read_only_replicas,
339
373
  } satisfies BaseBranchAttributes;
340
374
 
341
375
  return output ? attrs : Unowned(attrs);
@@ -493,6 +527,39 @@ export const makeBranchProvider = <R extends ResourceLike>(opts: {
493
527
  }
494
528
  }
495
529
 
530
+ if (opts.expectedKind === "postgresql" && news.replicas !== undefined) {
531
+ const desiredReplicas = news.replicas;
532
+ const desiredHasReplicas = desiredReplicas > 0;
533
+ const shouldApplyReplicaChange =
534
+ current.has_replicas !== desiredHasReplicas ||
535
+ (desiredHasReplicas && output?.desiredReplicas !== desiredReplicas);
536
+
537
+ if (shouldApplyReplicaChange) {
538
+ yield* waitForPendingPostgresChanges(
539
+ organization,
540
+ databaseName,
541
+ branchName,
542
+ );
543
+ const change = yield* planetscale.updateBranchChangeRequest({
544
+ organization,
545
+ database: databaseName,
546
+ branch: branchName,
547
+ replicas: desiredReplicas,
548
+ });
549
+ yield* waitForPendingPostgresChanges(
550
+ organization,
551
+ databaseName,
552
+ branchName,
553
+ change.id,
554
+ );
555
+ current = yield* planetscale.getBranch({
556
+ organization,
557
+ database: databaseName,
558
+ branch: branchName,
559
+ });
560
+ }
561
+ }
562
+
496
563
  // Sync clusterSize — only meaningful on production branches.
497
564
  if (news.clusterSize) {
498
565
  if (current.kind === "postgresql") {
@@ -559,6 +626,9 @@ export const makeBranchProvider = <R extends ResourceLike>(opts: {
559
626
  migrationsTable: news.migrationsDir ? migrationsTable : undefined,
560
627
  migrationsHashes,
561
628
  importHashes,
629
+ desiredReplicas: news.replicas ?? output?.desiredReplicas,
630
+ hasReplicas: updated.has_replicas,
631
+ hasReadOnlyReplicas: updated.has_read_only_replicas,
562
632
  } satisfies BaseBranchAttributes;
563
633
  }),
564
634
 
@@ -28,6 +28,12 @@ export interface PostgresBranchProps extends BaseBranchProps {
28
28
  */
29
29
  clusterSize?: PostgresClusterSize;
30
30
 
31
+ /**
32
+ * Total number of replicas for the branch. `0` creates or converges the
33
+ * branch to non-HA/single-node; `2+` enables HA.
34
+ */
35
+ replicas?: number;
36
+
31
37
  /**
32
38
  * Parent branch — either a string name or another {@link PostgresBranch}.
33
39
  * @default "main"