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,569 @@
1
+ import type { Credentials } from "@distilled.cloud/aws/Credentials";
2
+ import type { Region } from "@distilled.cloud/aws/Region";
3
+ import type * as microvms from "@distilled.cloud/aws/lambda-microvms";
4
+
5
+ import * as Effect from "effect/Effect";
6
+ import { Platform } from "../../Platform.ts";
7
+ import type { Main } from "../../Platform.ts";
8
+ import type { Resource } from "../../Resource.ts";
9
+ import type * as Server from "../../Server/index.ts";
10
+ import type { PolicyStatement } from "../IAM/Policy.ts";
11
+ import type { Role } from "../IAM/Role.ts";
12
+ import type { Providers } from "../Providers.ts";
13
+ import {
14
+ makeMicrovmRuntimeContext,
15
+ MicrovmImageTypeId,
16
+ } from "./MicrovmRuntimeContext.ts";
17
+
18
+ /**
19
+ * The IAM permissions a build role needs: read the code artifact from the
20
+ * Assets bucket(s) and write build logs to CloudWatch. Used to auto-grant a
21
+ * {@link Role} passed as `buildRole`.
22
+ */
23
+ const buildRolePolicyStatements: PolicyStatement[] = [
24
+ {
25
+ Effect: "Allow",
26
+ Action: ["s3:GetObject"],
27
+ Resource: ["arn:aws:s3:::alchemy-assets-*-an/*"],
28
+ },
29
+ {
30
+ Effect: "Allow",
31
+ Action: [
32
+ "logs:CreateLogGroup",
33
+ "logs:CreateLogStream",
34
+ "logs:PutLogEvents",
35
+ ],
36
+ Resource: ["arn:aws:logs:*:*:log-group:/aws/lambda/microvms/*"],
37
+ },
38
+ ];
39
+
40
+ export { MicrovmImageTypeId } from "./MicrovmRuntimeContext.ts";
41
+
42
+ export interface MicrovmImageProps {
43
+ /**
44
+ * The name of the MicroVM image. Must be 1-64 characters of letters,
45
+ * numbers, hyphens, or underscores. If omitted, a unique name is generated.
46
+ * Changing the name replaces the image.
47
+ */
48
+ name?: string;
49
+
50
+ /**
51
+ * **Effectful mode.** Entrypoint file for an Effect-native HTTP server,
52
+ * typically `import.meta.filename`. Alchemy bundles it (with its bindings),
53
+ * generates a Dockerfile, zips the result, and uploads it as the
54
+ * `codeArtifact`.
55
+ */
56
+ main?: string;
57
+
58
+ /**
59
+ * **External mode.** A build-context directory containing your Dockerfile and
60
+ * the files it copies. Alchemy zips and uploads it; AWS runs your Dockerfile.
61
+ * @default "./"
62
+ */
63
+ context?: string;
64
+
65
+ /**
66
+ * The Dockerfile. In effectful mode this is an inline base string (defaults
67
+ * to `FROM public.ecr.aws/lambda/microvms:al2023-minimal`). In external mode
68
+ * it is a path relative to {@link context} (defaults to `<context>/Dockerfile`).
69
+ */
70
+ dockerfile?: string;
71
+
72
+ /**
73
+ * The port the in-VM HTTP server listens on (effectful mode).
74
+ * @default 8080
75
+ */
76
+ port?: number;
77
+
78
+ /**
79
+ * The JS runtime to bundle for (effectful mode).
80
+ * @default "node"
81
+ */
82
+ runtime?: "bun" | "node";
83
+
84
+ /**
85
+ * Extra module ids to leave external when bundling (effectful mode).
86
+ */
87
+ external?: string[];
88
+
89
+ /**
90
+ * The base MicroVM image to build on top of — either its ARN or another
91
+ * {@link MicrovmImage} instance. If omitted, the latest AWS-managed `al2023`
92
+ * base is used (discover bases with {@link microvms.listManagedMicrovmImages}).
93
+ */
94
+ baseImage?: string | MicrovmImage;
95
+
96
+ /**
97
+ * The specific version of the base MicroVM image.
98
+ */
99
+ baseImageVersion?: string;
100
+
101
+ /**
102
+ * The IAM role Lambda assumes to build the image (read the code artifact,
103
+ * write build logs) — either its ARN or an {@link Role} instance. When you
104
+ * pass a `Role`, the required S3 (Assets bucket) and CloudWatch-logs
105
+ * permissions are granted to it automatically via a binding, so you don't
106
+ * have to write the inline policy yourself. Required for all builds.
107
+ */
108
+ buildRole?: string | Role;
109
+
110
+ /**
111
+ * **Prebuilt mode.** A code artifact (S3 zip path or ECR image URI) to use
112
+ * as-is, instead of bundling (`main`) or building a context (`context`).
113
+ */
114
+ codeArtifact?: microvms.CodeArtifact;
115
+
116
+ /**
117
+ * A description of the image version.
118
+ */
119
+ description?: string;
120
+
121
+ /**
122
+ * Logging configuration for the MicroVM runtime/build. Specify exactly one of
123
+ * `cloudWatch` or `disabled`.
124
+ */
125
+ logging?: microvms.Logging;
126
+
127
+ /**
128
+ * The names/ARNs of egress network connectors available to the MicroVM at
129
+ * runtime (see {@link NetworkConnector}).
130
+ */
131
+ egressNetworkConnectors?: string[];
132
+
133
+ /**
134
+ * The CPU configurations the image supports.
135
+ */
136
+ cpuConfigurations?: microvms.CpuConfiguration[];
137
+
138
+ /**
139
+ * The resource requirements (e.g. minimum memory) for the MicroVM.
140
+ */
141
+ resources?: microvms.Resources[];
142
+
143
+ /**
144
+ * Additional OS capabilities granted to the MicroVM runtime.
145
+ */
146
+ additionalOsCapabilities?: microvms.Capability[];
147
+
148
+ /**
149
+ * Lifecycle hook configuration for the MicroVM and its image.
150
+ */
151
+ hooks?: microvms.Hooks;
152
+
153
+ /**
154
+ * Environment variables set in the MicroVM runtime environment. Capability
155
+ * bindings (e.g. S3/DynamoDB clients) also contribute entries here during
156
+ * plan; all of them are written to the image's environment.
157
+ */
158
+ env?: Record<string, any>;
159
+
160
+ /**
161
+ * Tags to apply to the image.
162
+ */
163
+ tags?: Record<string, string>;
164
+
165
+ /**
166
+ * @internal Platform-managed: the bundled runtime entrypoint.
167
+ */
168
+ exports?: string[] | Record<string, any>;
169
+
170
+ /**
171
+ * @internal Platform-managed: signals a non-Effect-native (external) image.
172
+ */
173
+ isExternal?: boolean;
174
+ }
175
+
176
+ export interface MicrovmImage extends Resource<
177
+ "AWS.Lambda.MicrovmImage",
178
+ MicrovmImageProps,
179
+ {
180
+ /** The ARN of the MicroVM image. */
181
+ imageArn: string;
182
+ /** The name of the MicroVM image. */
183
+ name: string;
184
+ /** The current state of the image (e.g. `CREATED`, `CREATING`). */
185
+ state: microvms.MicrovmImageState;
186
+ /** The image version produced by the most recent build. */
187
+ imageVersion?: string;
188
+ /** The latest version that built successfully. */
189
+ latestActiveImageVersion?: string;
190
+ /** The latest version that failed to build, if any. */
191
+ latestFailedImageVersion?: string;
192
+ /** When the image was created (ISO 8601). */
193
+ createdAt?: string;
194
+ /** When the image was last updated (ISO 8601). */
195
+ updatedAt?: string;
196
+ /** The resolved code artifact and its build identity hash. */
197
+ codeArtifact?: { uri?: string; hash?: string };
198
+ },
199
+ {
200
+ env?: Record<string, any>;
201
+ policyStatements?: PolicyStatement[];
202
+ },
203
+ Providers
204
+ > {}
205
+
206
+ export type MicrovmImageServices = Credentials | Region;
207
+ export type MicrovmImageShape = Main<MicrovmImageServices>;
208
+
209
+ /**
210
+ * A Lambda **MicroVM image** — a Firecracker snapshot that boots a fully
211
+ * initialized application in milliseconds. The model is *image-then-launch*:
212
+ * you create an image once (this resource), then launch isolated, stateful
213
+ * MicroVM instances from it at runtime (one per end-user/session) with the
214
+ * {@link RunMicrovm} binding from a Lambda Function.
215
+ *
216
+ * ### How the build works
217
+ *
218
+ * The build runs **server-side on AWS** — there is no local Docker. You supply
219
+ * a *code artifact* (a zip of a Dockerfile + your code) and a *base image*
220
+ * (`baseImage`); AWS runs your Dockerfile on top of the base, initializes
221
+ * the app, and takes a Firecracker snapshot. The build is asynchronous: the
222
+ * provider uploads the artifact, calls `CreateMicrovmImage`/`UpdateMicrovmImage`,
223
+ * and polls until the image reaches `CREATED`/`UPDATED` (or surfaces the build
224
+ * failure). Build logs stream to CloudWatch at `/aws/lambda/microvms/<name>`.
225
+ *
226
+ * Alchemy produces the code artifact for you in three ways, selected by which
227
+ * prop you set (`main` → `context` → `codeArtifact.uri`):
228
+ *
229
+ * - **Effectful** (`main`): write the in-VM HTTP server in TypeScript as an
230
+ * Effect. Alchemy bundles it (with its capability bindings), generates a
231
+ * Dockerfile on the MicroVM base, zips both, and uploads to the Assets bucket.
232
+ * - **External** (`context`/`dockerfile`): bring your own Dockerfile + build
233
+ * context (any language). Alchemy zips the directory and uploads it.
234
+ * - **Prebuilt** (`codeArtifact.uri`): point at an existing S3 zip or ECR image
235
+ * URI; nothing is built or uploaded.
236
+ *
237
+ * Re-deploys only trigger a new build when the artifact's content hash or a
238
+ * build-affecting prop changes; otherwise the image is left untouched.
239
+ *
240
+ * ### Prerequisites
241
+ *
242
+ * - A **build role** (`buildRole`) Lambda assumes to read the code artifact and
243
+ * write build logs. Pass a {@link Role} instance and the required permissions
244
+ * are granted automatically — see the example below.
245
+ * - A **bootstrapped Assets bucket** (`alchemy aws bootstrap`) for effectful /
246
+ * external modes, which upload the artifact to S3.
247
+ * - The account must be **onboarded to the Lambda MicroVM preview**.
248
+ *
249
+ * @resource
250
+ *
251
+ * @section Creating the Build Role
252
+ * Pass a bare {@link Role} as `buildRole` and the MicroVM image grants
253
+ * everything it needs via a binding: the trust policy (so Lambda can assume it)
254
+ * plus the S3 (Assets bucket) and CloudWatch-logs permissions (folded into an
255
+ * `alchemy-bindings` inline policy). You don't write any policy yourself.
256
+ * @example Bare build role
257
+ * ```typescript
258
+ * const buildRole = yield* AWS.IAM.Role("MicrovmBuildRole", {});
259
+ *
260
+ * // Pass the role instance; trust + permissions are attached for you.
261
+ * const image = yield* AWS.Lambda.MicrovmImage("Sandbox", {
262
+ * main: import.meta.filename,
263
+ * buildRole,
264
+ * });
265
+ * ```
266
+ *
267
+ * @section Effectful MicroVMs
268
+ * Write the in-VM server in TypeScript. Alchemy bundles `main` and bakes it into
269
+ * the image; the server listens on `port` (default 8080), which becomes the
270
+ * MicroVM `endpoint`.
271
+ * @example In-VM HTTP server (single file)
272
+ * ```typescript
273
+ * export default class Sandbox extends AWS.Lambda.MicrovmImage<Sandbox>()(
274
+ * "Sandbox",
275
+ * { main: import.meta.filename, buildRole },
276
+ * Effect.gen(function* () {
277
+ * return {
278
+ * fetch: Effect.gen(function* () {
279
+ * const request = yield* HttpServerRequest;
280
+ * return HttpServerResponse.text(`hello from ${request.url}`);
281
+ * }),
282
+ * };
283
+ * }),
284
+ * ) {}
285
+ * ```
286
+ *
287
+ * @example With capability bindings and env vars
288
+ * ```typescript
289
+ * export default class Sandbox extends AWS.Lambda.MicrovmImage<Sandbox>()(
290
+ * "Sandbox",
291
+ * {
292
+ * main: import.meta.filename,
293
+ * buildRole,
294
+ * runtime: "bun",
295
+ * env: { LOG_LEVEL: "info" },
296
+ * },
297
+ * Effect.gen(function* () {
298
+ * // bindings are bundled into the image and resolved at runtime
299
+ * const getObject = yield* AWS.S3.GetObject(bucket);
300
+ * return {
301
+ * fetch: Effect.gen(function* () {
302
+ * const obj = yield* getObject({ key: "data.json" });
303
+ * return HttpServerResponse.json(yield* obj.json);
304
+ * }),
305
+ * };
306
+ * }).pipe(Effect.provide(AWS.S3.GetObjectHttp)),
307
+ * ) {}
308
+ * ```
309
+ *
310
+ * @example Class + `.make()` (two files, for a Lambda orchestrator)
311
+ * When a Lambda Function imports the image to bind its instance operations, keep
312
+ * the class (a typed handle) and the `.make()` runtime in separate files so the
313
+ * orchestrator's bundle doesn't pull in the VM's runtime deps.
314
+ * ```typescript
315
+ * // sandbox.ts — imported by the orchestrator
316
+ * export class Sandbox extends AWS.Lambda.MicrovmImage<Sandbox>()("Sandbox") {}
317
+ *
318
+ * // sandbox.live.ts — provided on the Stack; bundled into the image.
319
+ * // Must be the `default` export: the bundler resolves the image entrypoint
320
+ * // from the code artifact's default export.
321
+ * export default Sandbox.make(
322
+ * { main: import.meta.filename, buildRole },
323
+ * Effect.gen(function* () {
324
+ * return { fetch: Effect.gen(function* () {
325
+ * return HttpServerResponse.text("ok");
326
+ * }) };
327
+ * }),
328
+ * );
329
+ * ```
330
+ *
331
+ * @section Tagged RPC
332
+ * Beyond (or instead of) a raw `fetch` handler, an image can expose a typed
333
+ * **RPC `Shape`** as the second type parameter. The in-VM runtime serves those
334
+ * methods over an `/__rpc__/*` protocol and falls through to `fetch` for every
335
+ * other request, so an image can offer BOTH a typed RPC surface and ordinary
336
+ * HTTP routes. A caller gets a fully-typed client with {@link connectMicrovm}:
337
+ * value methods `yield*` as `Effect`s, streaming methods pipe as `Stream`s.
338
+ * @example Define a tagged-RPC image (RPC + fetch)
339
+ * ```typescript
340
+ * // sandbox.ts — the typed handle imported by the orchestrator Lambda
341
+ * export class Sandbox extends AWS.Lambda.MicrovmImage<
342
+ * Sandbox,
343
+ * { hello: (message: string) => Effect.Effect<string> }
344
+ * >()("Sandbox") {}
345
+ *
346
+ * // sandbox.live.ts — provided on the Stack; bundled into the image (default export)
347
+ * export default Sandbox.make(
348
+ * { main: import.meta.filename, buildRole },
349
+ * Effect.gen(function* () {
350
+ * return {
351
+ * // RPC method — reached with `connectMicrovm` below
352
+ * hello: (message: string) => Effect.succeed(`hello, ${message}!`),
353
+ * // raw HTTP route — reached with a plain HTTPS request to the endpoint
354
+ * fetch: Effect.gen(function* () {
355
+ * const request = yield* HttpServerRequest;
356
+ * const url = new URL(request.url, "http://microvm");
357
+ * return HttpServerResponse.json({ path: url.pathname });
358
+ * }),
359
+ * };
360
+ * }),
361
+ * );
362
+ * ```
363
+ *
364
+ * @example Call the RPC method from a Lambda
365
+ * `connectMicrovm` builds the typed stub over an `HttpClient` (provide
366
+ * `FetchHttpClient.layer` for the request scope), pointing at the running
367
+ * MicroVM's `endpoint` and authenticating with the `authToken` headers.
368
+ * ```typescript
369
+ * const vm = yield* runMicrovm({});
370
+ * // ...wait until `vm.state` is RUNNING (poll `getMicrovm`)...
371
+ * const { authToken } = yield* createAuthToken({
372
+ * microvmIdentifier: vm.microvmId,
373
+ * expirationInMinutes: 5,
374
+ * allowedPorts: [{ port: 8080 }], // the in-VM server's port
375
+ * });
376
+ *
377
+ * const sandbox = yield* AWS.Lambda.connectMicrovm(Sandbox, {
378
+ * endpoint: vm.endpoint,
379
+ * authToken,
380
+ * });
381
+ * const reply = yield* sandbox.hello("world"); // "hello, world!"
382
+ * ```
383
+ *
384
+ * @example Call the same MicroVM's `fetch` route directly
385
+ * For the raw HTTP path, send the auth token as request headers via
386
+ * {@link microvmAuthHeaders}.
387
+ * ```typescript
388
+ * const client = yield* HttpClient.HttpClient;
389
+ * const res = yield* client.get(`https://${vm.endpoint}/echo?message=hi`, {
390
+ * headers: AWS.Lambda.microvmAuthHeaders(authToken),
391
+ * });
392
+ * const body = yield* res.json;
393
+ * ```
394
+ *
395
+ * @section External Images (your own Dockerfile)
396
+ * Bring a build context directory containing a Dockerfile (any language).
397
+ * Alchemy zips and uploads it; AWS runs your Dockerfile. Your Dockerfile should
398
+ * build on a MicroVM-compatible base (e.g.
399
+ * `FROM public.ecr.aws/lambda/microvms:al2023-minimal`).
400
+ * @example Flask app from a Dockerfile
401
+ * ```typescript
402
+ * const image = yield* AWS.Lambda.MicrovmImage("Flask", {
403
+ * context: `${import.meta.dirname}/app`, // dir with Dockerfile + app.py
404
+ * buildRole,
405
+ * });
406
+ * ```
407
+ * @example Custom Dockerfile path within the context
408
+ * ```typescript
409
+ * const image = yield* AWS.Lambda.MicrovmImage("Worker", {
410
+ * context: `${import.meta.dirname}/app`,
411
+ * dockerfile: "docker/worker.Dockerfile", // relative to `context`
412
+ * buildRole,
413
+ * });
414
+ * ```
415
+ *
416
+ * @section Prebuilt Artifacts
417
+ * Skip the build entirely and point at an artifact you already produced.
418
+ * @example From an existing S3 zip
419
+ * ```typescript
420
+ * const image = yield* AWS.Lambda.MicrovmImage("Prebuilt", {
421
+ * codeArtifact: { uri: "s3://my-bucket/app.zip" }, // or an ECR image URI
422
+ * buildRole,
423
+ * });
424
+ * ```
425
+ *
426
+ * @section Sizing and Base Image
427
+ * `baseImage` defaults to the latest AWS-managed `al2023` base (discovered
428
+ * via `listManagedMicrovmImages`). Override it, and tune CPU/memory, explicitly.
429
+ * @example Pin the base image and resources
430
+ * ```typescript
431
+ * const image = yield* AWS.Lambda.MicrovmImage("Sized", {
432
+ * main: import.meta.filename,
433
+ * buildRole,
434
+ * baseImage: "arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1",
435
+ * cpuConfigurations: [{ architecture: "ARM_64" }],
436
+ * resources: [{ minimumMemoryInMiB: 2048 }],
437
+ * });
438
+ * ```
439
+ *
440
+ * @section Logging
441
+ * @example Stream runtime + build logs to a custom CloudWatch group
442
+ * ```typescript
443
+ * const image = yield* AWS.Lambda.MicrovmImage("Logged", {
444
+ * main: import.meta.filename,
445
+ * buildRole,
446
+ * logging: { cloudWatch: { logGroup: "/aws/microvm/my-app" } },
447
+ * // or disable: logging: { disabled: {} }
448
+ * });
449
+ * ```
450
+ *
451
+ * @section VPC Egress
452
+ * Give the MicroVM a managed egress path into your VPC with a
453
+ * {@link NetworkConnector} (reference it by ARN).
454
+ * @example Image-level egress connector
455
+ * ```typescript
456
+ * const egress = yield* AWS.Lambda.NetworkConnector("Egress", {
457
+ * subnetIds: [subnet.subnetId],
458
+ * securityGroupIds: [sg.groupId],
459
+ * operatorRole: operatorRole.roleArn,
460
+ * });
461
+ *
462
+ * const image = yield* AWS.Lambda.MicrovmImage("Connected", {
463
+ * main: import.meta.filename,
464
+ * buildRole,
465
+ * egressNetworkConnectors: [egress.networkConnectorArn],
466
+ * });
467
+ * ```
468
+ *
469
+ * @section Launching MicroVMs
470
+ * The image is just the template. Launch and drive instances from a Lambda
471
+ * Function using the per-operation bindings ({@link RunMicrovm},
472
+ * {@link GetMicrovm}, {@link CreateAuthToken}, {@link TerminateMicrovm}, …).
473
+ * Each binding's IAM policy is scoped to this image automatically.
474
+ * @example Run a MicroVM, call its RPC, and tear it down
475
+ * Always terminate the MicroVM you launched — wrap the work in
476
+ * `Effect.ensuring` so a failure (or a client retry) never leaks a running
477
+ * MicroVM against your account's memory quota. Give the Function a generous
478
+ * `timeout` since it waits for the MicroVM to reach RUNNING in-line.
479
+ * ```typescript
480
+ * export default class Api extends AWS.Lambda.Function<Api>()(
481
+ * "Api",
482
+ * { main: import.meta.filename, url: true, timeout: Duration.seconds(120) },
483
+ * Effect.gen(function* () {
484
+ * const runMicrovm = yield* AWS.Lambda.RunMicrovm(Sandbox);
485
+ * const getMicrovm = yield* AWS.Lambda.GetMicrovm(Sandbox);
486
+ * const createAuthToken = yield* AWS.Lambda.CreateAuthToken(Sandbox);
487
+ * const terminateMicrovm = yield* AWS.Lambda.TerminateMicrovm(Sandbox);
488
+ * return {
489
+ * fetch: Effect.gen(function* () {
490
+ * const vm = yield* runMicrovm({
491
+ * idlePolicy: {
492
+ * maxIdleDurationSeconds: 900,
493
+ * suspendedDurationSeconds: 300,
494
+ * autoResumeEnabled: true,
495
+ * },
496
+ * });
497
+ * return yield* Effect.gen(function* () {
498
+ * // wait until the MicroVM is RUNNING before connecting
499
+ * yield* getMicrovm({ microvmIdentifier: vm.microvmId }).pipe(
500
+ * Effect.flatMap((m) =>
501
+ * m.state === "RUNNING"
502
+ * ? Effect.void
503
+ * : Effect.fail(new Error(`microvm ${m.state}`)),
504
+ * ),
505
+ * Effect.retry({ schedule: Schedule.spaced("2 seconds"), times: 30 }),
506
+ * );
507
+ * const { authToken } = yield* createAuthToken({
508
+ * microvmIdentifier: vm.microvmId,
509
+ * expirationInMinutes: 5,
510
+ * allowedPorts: [{ port: 8080 }],
511
+ * });
512
+ * const sandbox = yield* AWS.Lambda.connectMicrovm(Sandbox, {
513
+ * endpoint: vm.endpoint,
514
+ * authToken,
515
+ * });
516
+ * const reply = yield* sandbox.hello("world");
517
+ * return yield* HttpServerResponse.json({ reply });
518
+ * }).pipe(
519
+ * // terminate on success OR failure — never leak a running MicroVM
520
+ * Effect.ensuring(
521
+ * terminateMicrovm({ microvmIdentifier: vm.microvmId }).pipe(
522
+ * Effect.ignore,
523
+ * ),
524
+ * ),
525
+ * // the in-VM endpoint calls need an HttpClient for this scope
526
+ * Effect.provide(FetchHttpClient.layer),
527
+ * );
528
+ * }),
529
+ * };
530
+ * }).pipe(
531
+ * Effect.provide(
532
+ * Layer.mergeAll(
533
+ * AWS.Lambda.RunMicrovmHttp,
534
+ * AWS.Lambda.GetMicrovmHttp,
535
+ * AWS.Lambda.CreateAuthTokenHttp,
536
+ * AWS.Lambda.TerminateMicrovmHttp,
537
+ * ),
538
+ * ),
539
+ * ),
540
+ * ) {}
541
+ * ```
542
+ */
543
+ export const MicrovmImage: Platform<
544
+ MicrovmImage,
545
+ MicrovmImageServices,
546
+ MicrovmImageShape,
547
+ Server.ProcessContext
548
+ > = Platform(MicrovmImageTypeId, {
549
+ createRuntimeContext: makeMicrovmRuntimeContext,
550
+ // When `buildRole` is a Role instance, grant it the build permissions via a
551
+ // binding so the user doesn't have to author the inline policy.
552
+ onCreate: (_resource, props: MicrovmImageProps) =>
553
+ props.buildRole && typeof props.buildRole !== "string"
554
+ ? props.buildRole
555
+ .bind`Allow(${_resource}, AWS.Lambda.MicrovmImage.build)`({
556
+ // Grant the build permissions...
557
+ policyStatements: buildRolePolicyStatements,
558
+ // ...and the trust statement, so a build role passed as a bare
559
+ // `Role` (no `assumeRolePolicyDocument`) can be assumed by Lambda.
560
+ assumeRolePolicyStatements: [
561
+ {
562
+ Effect: "Allow",
563
+ Principal: { Service: "lambda.amazonaws.com" },
564
+ Action: ["sts:AssumeRole"],
565
+ },
566
+ ],
567
+ })
568
+ : Effect.void,
569
+ });