alchemy 2.0.0-beta.37 → 2.0.0-beta.39

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 (640) hide show
  1. package/bin/exec.js +488 -69
  2. package/bin/exec.js.map +1 -1
  3. package/lib/AWS/AutoScaling/LaunchTemplate.d.ts +1 -1
  4. package/lib/AWS/CloudWatch/common.d.ts +1 -1
  5. package/lib/AWS/Credentials.d.ts.map +1 -1
  6. package/lib/AWS/Credentials.js +1 -2
  7. package/lib/AWS/Credentials.js.map +1 -1
  8. package/lib/AWS/DynamoDB/Stream.d.ts.map +1 -1
  9. package/lib/AWS/DynamoDB/Stream.js +1 -1
  10. package/lib/AWS/DynamoDB/Stream.js.map +1 -1
  11. package/lib/AWS/EC2/Instance.d.ts +1 -1
  12. package/lib/AWS/EC2/hosted.d.ts +1 -1
  13. package/lib/AWS/EC2/hosted.d.ts.map +1 -1
  14. package/lib/AWS/EC2/hosted.js +3 -5
  15. package/lib/AWS/EC2/hosted.js.map +1 -1
  16. package/lib/AWS/ECS/Task.d.ts +1 -1
  17. package/lib/AWS/ECS/Task.d.ts.map +1 -1
  18. package/lib/AWS/ECS/Task.js +3 -5
  19. package/lib/AWS/ECS/Task.js.map +1 -1
  20. package/lib/AWS/Endpoint.d.ts.map +1 -1
  21. package/lib/AWS/Endpoint.js +1 -2
  22. package/lib/AWS/Endpoint.js.map +1 -1
  23. package/lib/AWS/Environment.d.ts +2 -2
  24. package/lib/AWS/EventBridge/EventSource.d.ts.map +1 -1
  25. package/lib/AWS/EventBridge/EventSource.js +1 -1
  26. package/lib/AWS/EventBridge/EventSource.js.map +1 -1
  27. package/lib/AWS/Kinesis/StreamEventSource.d.ts.map +1 -1
  28. package/lib/AWS/Kinesis/StreamEventSource.js +1 -1
  29. package/lib/AWS/Kinesis/StreamEventSource.js.map +1 -1
  30. package/lib/AWS/Lambda/BucketEventSource.d.ts +1 -1
  31. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts +1 -1
  32. package/lib/AWS/Lambda/Function.d.ts +1 -1
  33. package/lib/AWS/Lambda/Function.d.ts.map +1 -1
  34. package/lib/AWS/Lambda/Function.js +7 -11
  35. package/lib/AWS/Lambda/Function.js.map +1 -1
  36. package/lib/AWS/Lambda/QueueEventSource.d.ts +1 -1
  37. package/lib/AWS/Lambda/StreamEventSource.d.ts +1 -1
  38. package/lib/AWS/Lambda/TableEventSource.d.ts +1 -1
  39. package/lib/AWS/Lambda/TopicEventSource.d.ts +1 -1
  40. package/lib/AWS/Organizations/common.d.ts +1 -1
  41. package/lib/AWS/Providers.d.ts.map +1 -1
  42. package/lib/AWS/Providers.js +21 -3
  43. package/lib/AWS/Providers.js.map +1 -1
  44. package/lib/AWS/Region.d.ts +1 -1
  45. package/lib/AWS/Region.d.ts.map +1 -1
  46. package/lib/AWS/Region.js +2 -3
  47. package/lib/AWS/Region.js.map +1 -1
  48. package/lib/AWS/S3/Bucket.d.ts.map +1 -1
  49. package/lib/AWS/S3/Bucket.js +5 -2
  50. package/lib/AWS/S3/Bucket.js.map +1 -1
  51. package/lib/AWS/S3/BucketNotifications.d.ts.map +1 -1
  52. package/lib/AWS/S3/BucketNotifications.js +1 -1
  53. package/lib/AWS/S3/BucketNotifications.js.map +1 -1
  54. package/lib/AWS/SNS/TopicEventSource.d.ts.map +1 -1
  55. package/lib/AWS/SNS/TopicEventSource.js +1 -1
  56. package/lib/AWS/SNS/TopicEventSource.js.map +1 -1
  57. package/lib/AWS/SQS/Queue.d.ts.map +1 -1
  58. package/lib/AWS/SQS/Queue.js +23 -5
  59. package/lib/AWS/SQS/Queue.js.map +1 -1
  60. package/lib/Action.d.ts +77 -0
  61. package/lib/Action.d.ts.map +1 -0
  62. package/lib/Action.js +89 -0
  63. package/lib/Action.js.map +1 -0
  64. package/lib/AlchemyContext.d.ts +1 -1
  65. package/lib/Apply.d.ts.map +1 -1
  66. package/lib/Apply.js +222 -3
  67. package/lib/Apply.js.map +1 -1
  68. package/lib/Artifacts.d.ts +1 -1
  69. package/lib/Artifacts.d.ts.map +1 -1
  70. package/lib/Artifacts.js +1 -1
  71. package/lib/Artifacts.js.map +1 -1
  72. package/lib/Auth/AuthProvider.js +1 -1
  73. package/lib/Auth/AuthProvider.js.map +1 -1
  74. package/lib/Auth/Env.d.ts.map +1 -1
  75. package/lib/Auth/Env.js +4 -12
  76. package/lib/Auth/Env.js.map +1 -1
  77. package/lib/Binding.d.ts.map +1 -1
  78. package/lib/Binding.js +5 -5
  79. package/lib/Binding.js.map +1 -1
  80. package/lib/Build/Command.d.ts +1 -1
  81. package/lib/Build/Memo.d.ts +1 -1
  82. package/lib/Bundle/Docker.d.ts +3 -3
  83. package/lib/Bundle/Docker.js +1 -1
  84. package/lib/Bundle/Docker.js.map +1 -1
  85. package/lib/Bundle/TempRoot.d.ts +3 -3
  86. package/lib/Cli/Event.d.ts +1 -1
  87. package/lib/Cli/Event.d.ts.map +1 -1
  88. package/lib/Cli/NamespaceTree.d.ts +11 -5
  89. package/lib/Cli/NamespaceTree.d.ts.map +1 -1
  90. package/lib/Cli/NamespaceTree.js +28 -1
  91. package/lib/Cli/NamespaceTree.js.map +1 -1
  92. package/lib/Cli/commands/_shared.d.ts +1 -1
  93. package/lib/Cli/commands/_shared.js +2 -2
  94. package/lib/Cli/commands/_shared.js.map +1 -1
  95. package/lib/Cli/commands/aws.d.ts +1 -1
  96. package/lib/Cli/commands/cloudflare.d.ts +2 -2
  97. package/lib/Cli/commands/cloudflare.d.ts.map +1 -1
  98. package/lib/Cli/commands/deploy.d.ts +9 -9
  99. package/lib/Cli/commands/deploy.js +1 -1
  100. package/lib/Cli/commands/deploy.js.map +1 -1
  101. package/lib/Cli/commands/login.d.ts +1 -1
  102. package/lib/Cli/commands/logs.d.ts +1 -1
  103. package/lib/Cli/commands/logs.js.map +1 -1
  104. package/lib/Cli/commands/profile.d.ts +1 -3
  105. package/lib/Cli/commands/profile.d.ts.map +1 -1
  106. package/lib/Cli/commands/state.d.ts +1 -1
  107. package/lib/Cli/commands/state.d.ts.map +1 -1
  108. package/lib/Cli/commands/tail.d.ts +1 -1
  109. package/lib/Cli/commands/tail.js.map +1 -1
  110. package/lib/Cli/tui/components/Plan.d.ts.map +1 -1
  111. package/lib/Cli/tui/components/Plan.js +27 -13
  112. package/lib/Cli/tui/components/Plan.js.map +1 -1
  113. package/lib/Cli/tui/components/PlanProgress.d.ts +8 -1
  114. package/lib/Cli/tui/components/PlanProgress.d.ts.map +1 -1
  115. package/lib/Cli/tui/components/PlanProgress.js +95 -16
  116. package/lib/Cli/tui/components/PlanProgress.js.map +1 -1
  117. package/lib/Cloudflare/Access.js +0 -1
  118. package/lib/Cloudflare/Access.js.map +1 -1
  119. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.js +1 -1
  120. package/lib/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.js.map +1 -1
  121. package/lib/Cloudflare/Artifacts/ArtifactsBinding.js +1 -1
  122. package/lib/Cloudflare/Artifacts/ArtifactsBinding.js.map +1 -1
  123. package/lib/Cloudflare/CloudflareEnvironment.d.ts +1 -1
  124. package/lib/Cloudflare/Container/Container.js +0 -1
  125. package/lib/Cloudflare/Container/Container.js.map +1 -1
  126. package/lib/Cloudflare/Container/ContainerApplication.d.ts +1 -1
  127. package/lib/Cloudflare/Container/ContainerApplication.d.ts.map +1 -1
  128. package/lib/Cloudflare/Container/ContainerApplication.js +4 -6
  129. package/lib/Cloudflare/Container/ContainerApplication.js.map +1 -1
  130. package/lib/Cloudflare/Container/ContainerBinding.js +2 -2
  131. package/lib/Cloudflare/Container/ContainerBinding.js.map +1 -1
  132. package/lib/Cloudflare/D1/D1Database.d.ts +1 -1
  133. package/lib/Cloudflare/D1/D1SqlFile.d.ts +2 -2
  134. package/lib/Cloudflare/Email/EmailAddress.d.ts +45 -0
  135. package/lib/Cloudflare/Email/EmailAddress.d.ts.map +1 -0
  136. package/lib/Cloudflare/Email/EmailAddress.js +99 -0
  137. package/lib/Cloudflare/Email/EmailAddress.js.map +1 -0
  138. package/lib/Cloudflare/Email/EmailRouting.d.ts +42 -0
  139. package/lib/Cloudflare/Email/EmailRouting.d.ts.map +1 -0
  140. package/lib/Cloudflare/Email/EmailRouting.js +89 -0
  141. package/lib/Cloudflare/Email/EmailRouting.js.map +1 -0
  142. package/lib/Cloudflare/Email/EmailRule.d.ts +80 -0
  143. package/lib/Cloudflare/Email/EmailRule.d.ts.map +1 -0
  144. package/lib/Cloudflare/Email/EmailRule.js +110 -0
  145. package/lib/Cloudflare/Email/EmailRule.js.map +1 -0
  146. package/lib/Cloudflare/Email/SendEmail.d.ts +74 -0
  147. package/lib/Cloudflare/Email/SendEmail.d.ts.map +1 -0
  148. package/lib/Cloudflare/Email/SendEmail.js +19 -0
  149. package/lib/Cloudflare/Email/SendEmail.js.map +1 -0
  150. package/lib/Cloudflare/Email/SendEmailBinding.d.ts +64 -0
  151. package/lib/Cloudflare/Email/SendEmailBinding.d.ts.map +1 -0
  152. package/lib/Cloudflare/Email/SendEmailBinding.js +54 -0
  153. package/lib/Cloudflare/Email/SendEmailBinding.js.map +1 -0
  154. package/lib/Cloudflare/Email/index.d.ts +6 -0
  155. package/lib/Cloudflare/Email/index.d.ts.map +1 -0
  156. package/lib/Cloudflare/Email/index.js +6 -0
  157. package/lib/Cloudflare/Email/index.js.map +1 -0
  158. package/lib/Cloudflare/Hyperdrive/Hyperdrive.d.ts +1 -1
  159. package/lib/Cloudflare/Images/ImagesBinding.js +1 -1
  160. package/lib/Cloudflare/Images/ImagesBinding.js.map +1 -1
  161. package/lib/Cloudflare/KV/KVNamespaceBinding.js +1 -1
  162. package/lib/Cloudflare/KV/KVNamespaceBinding.js.map +1 -1
  163. package/lib/Cloudflare/Local/Sidecar.d.ts +1 -1
  164. package/lib/Cloudflare/Local/SidecarHandlers.d.ts +1 -1
  165. package/lib/Cloudflare/Local/SidecarServer.js +1 -1
  166. package/lib/Cloudflare/Local/SidecarServer.js.map +1 -1
  167. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  168. package/lib/Cloudflare/Providers.js +6 -1
  169. package/lib/Cloudflare/Providers.js.map +1 -1
  170. package/lib/Cloudflare/Queue/QueueBinding.js +1 -1
  171. package/lib/Cloudflare/Queue/QueueBinding.js.map +1 -1
  172. package/lib/Cloudflare/R2/R2BucketBinding.js +1 -1
  173. package/lib/Cloudflare/R2/R2BucketBinding.js.map +1 -1
  174. package/lib/Cloudflare/SecretsStore/SecretBinding.js +1 -1
  175. package/lib/Cloudflare/SecretsStore/SecretBinding.js.map +1 -1
  176. package/lib/Cloudflare/StateStore/Api.d.ts +1 -1
  177. package/lib/Cloudflare/StateStore/State.d.ts +2 -2
  178. package/lib/Cloudflare/Workers/Assets.d.ts +2 -2
  179. package/lib/Cloudflare/Workers/Assets.d.ts.map +1 -1
  180. package/lib/Cloudflare/Workers/Assets.js +5 -4
  181. package/lib/Cloudflare/Workers/Assets.js.map +1 -1
  182. package/lib/Cloudflare/Workers/HttpServer.d.ts.map +1 -1
  183. package/lib/Cloudflare/Workers/HttpServer.js +25 -3
  184. package/lib/Cloudflare/Workers/HttpServer.js.map +1 -1
  185. package/lib/Cloudflare/Workers/InferEnv.d.ts +1 -1
  186. package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
  187. package/lib/Cloudflare/Workers/Worker.d.ts +4 -3
  188. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  189. package/lib/Cloudflare/Workers/Worker.js +67 -32
  190. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  191. package/lib/Cloudflare/Workers/WorkerBundle.d.ts +1 -1
  192. package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
  193. package/lib/Cloudflare/Workers/WorkerBundle.js +4 -6
  194. package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
  195. package/lib/Cloudflare/Workers/WorkerName.d.ts +1 -1
  196. package/lib/Cloudflare/Workers/Workflow.js +2 -2
  197. package/lib/Cloudflare/Workers/Workflow.js.map +1 -1
  198. package/lib/Cloudflare/index.d.ts +1 -0
  199. package/lib/Cloudflare/index.d.ts.map +1 -1
  200. package/lib/Cloudflare/index.js +1 -0
  201. package/lib/Cloudflare/index.js.map +1 -1
  202. package/lib/Construct.d.ts +3 -3
  203. package/lib/Construct.d.ts.map +1 -1
  204. package/lib/Construct.js.map +1 -1
  205. package/lib/Deploy.d.ts +1 -1
  206. package/lib/Destroy.d.ts +1 -1
  207. package/lib/Destroy.d.ts.map +1 -1
  208. package/lib/Destroy.js +1 -0
  209. package/lib/Destroy.js.map +1 -1
  210. package/lib/Drizzle/Providers.d.ts +1 -1
  211. package/lib/Drizzle/Schema.d.ts +1 -1
  212. package/lib/GitHub/Providers.d.ts +1 -1
  213. package/lib/Http.d.ts +1 -1
  214. package/lib/Http.d.ts.map +1 -1
  215. package/lib/Http.js +1 -1
  216. package/lib/Http.js.map +1 -1
  217. package/lib/Namespace.d.ts.map +1 -1
  218. package/lib/Namespace.js +3 -4
  219. package/lib/Namespace.js.map +1 -1
  220. package/lib/Neon/Branch.d.ts +2 -2
  221. package/lib/Neon/Branch.d.ts.map +1 -1
  222. package/lib/Neon/Branch.js +59 -27
  223. package/lib/Neon/Branch.js.map +1 -1
  224. package/lib/Neon/Credentials.d.ts +2 -2
  225. package/lib/Neon/Credentials.d.ts.map +1 -1
  226. package/lib/Neon/Credentials.js +2 -2
  227. package/lib/Neon/Credentials.js.map +1 -1
  228. package/lib/Neon/NeonEnvironment.d.ts +1 -1
  229. package/lib/Neon/Project.d.ts +25 -1
  230. package/lib/Neon/Project.d.ts.map +1 -1
  231. package/lib/Neon/Project.js +121 -42
  232. package/lib/Neon/Project.js.map +1 -1
  233. package/lib/Neon/Providers.d.ts +1 -1
  234. package/lib/Neon/SqlFile.d.ts +2 -2
  235. package/lib/Output.d.ts +3 -4
  236. package/lib/Output.d.ts.map +1 -1
  237. package/lib/Output.js +7 -4
  238. package/lib/Output.js.map +1 -1
  239. package/lib/PhysicalName.d.ts +1 -1
  240. package/lib/Plan.d.ts +36 -1
  241. package/lib/Plan.d.ts.map +1 -1
  242. package/lib/Plan.js +197 -31
  243. package/lib/Plan.js.map +1 -1
  244. package/lib/Platform.js +6 -6
  245. package/lib/Platform.js.map +1 -1
  246. package/lib/Provider.d.ts +1 -1
  247. package/lib/Provider.d.ts.map +1 -1
  248. package/lib/Provider.js +1 -1
  249. package/lib/Provider.js.map +1 -1
  250. package/lib/Random.d.ts +1 -1
  251. package/lib/Random.d.ts.map +1 -1
  252. package/lib/Random.js +1 -1
  253. package/lib/Random.js.map +1 -1
  254. package/lib/Resource.d.ts.map +1 -1
  255. package/lib/Resource.js +2 -25
  256. package/lib/Resource.js.map +1 -1
  257. package/lib/Runtime.d.ts +24 -0
  258. package/lib/Runtime.d.ts.map +1 -0
  259. package/lib/Runtime.js +31 -0
  260. package/lib/Runtime.js.map +1 -0
  261. package/lib/Secret.js +1 -1
  262. package/lib/Secret.js.map +1 -1
  263. package/lib/Sidecar/RpcClient.d.ts +1 -1
  264. package/lib/Sidecar/RpcPaths.d.ts +1 -1
  265. package/lib/Sidecar/RpcServer.d.ts +1 -1
  266. package/lib/Sidecar/RpcServices.d.ts +1 -1
  267. package/lib/Stack.d.ts +7 -2
  268. package/lib/Stack.d.ts.map +1 -1
  269. package/lib/Stack.js +4 -4
  270. package/lib/Stack.js.map +1 -1
  271. package/lib/State/ActionState.d.ts +48 -0
  272. package/lib/State/ActionState.d.ts.map +1 -0
  273. package/lib/State/ActionState.js +1 -0
  274. package/lib/State/ActionState.js.map +1 -0
  275. package/lib/State/HttpStateStore.d.ts.map +1 -1
  276. package/lib/State/HttpStateStore.js +1 -1
  277. package/lib/State/HttpStateStore.js.map +1 -1
  278. package/lib/State/InMemoryState.d.ts.map +1 -1
  279. package/lib/State/InMemoryState.js.map +1 -1
  280. package/lib/State/LocalState.d.ts +2 -2
  281. package/lib/State/ResourceState.d.ts +5 -0
  282. package/lib/State/ResourceState.d.ts.map +1 -1
  283. package/lib/State/State.d.ts +10 -2
  284. package/lib/State/State.d.ts.map +1 -1
  285. package/lib/State/State.js +2 -0
  286. package/lib/State/State.js.map +1 -1
  287. package/lib/State/index.d.ts +1 -0
  288. package/lib/State/index.d.ts.map +1 -1
  289. package/lib/State/index.js +1 -0
  290. package/lib/State/index.js.map +1 -1
  291. package/lib/Test/Core.d.ts +2 -2
  292. package/lib/Test/Core.d.ts.map +1 -1
  293. package/lib/Test/Core.js +4 -1
  294. package/lib/Test/Core.js.map +1 -1
  295. package/lib/Util/FileLogger.d.ts +1 -1
  296. package/lib/Util/effect.js +4 -4
  297. package/lib/Util/effect.js.map +1 -1
  298. package/lib/Util/exec.d.ts.map +1 -0
  299. package/lib/Util/exec.js.map +1 -0
  300. package/lib/Util/hash.d.ts +8 -0
  301. package/lib/Util/hash.d.ts.map +1 -0
  302. package/lib/Util/hash.js +11 -0
  303. package/lib/Util/hash.js.map +1 -0
  304. package/lib/Util/ignore.d.ts +40 -0
  305. package/lib/Util/ignore.d.ts.map +1 -0
  306. package/lib/Util/ignore.js +591 -0
  307. package/lib/Util/ignore.js.map +1 -0
  308. package/lib/index.d.ts +1 -0
  309. package/lib/index.d.ts.map +1 -1
  310. package/lib/index.js +1 -0
  311. package/lib/index.js.map +1 -1
  312. package/lib/tsconfig.test.tsbuildinfo +1 -1
  313. package/package.json +22 -28
  314. package/src/AWS/Credentials.ts +1 -2
  315. package/src/AWS/DynamoDB/Stream.ts +1 -4
  316. package/src/AWS/EC2/hosted.ts +14 -16
  317. package/src/AWS/ECS/Task.ts +14 -16
  318. package/src/AWS/Endpoint.ts +2 -5
  319. package/src/AWS/EventBridge/EventSource.ts +1 -4
  320. package/src/AWS/Kinesis/StreamEventSource.ts +1 -4
  321. package/src/AWS/Lambda/Function.ts +31 -35
  322. package/src/AWS/Providers.ts +22 -3
  323. package/src/AWS/Region.ts +2 -3
  324. package/src/AWS/S3/Bucket.ts +7 -2
  325. package/src/AWS/S3/BucketNotifications.ts +1 -4
  326. package/src/AWS/SNS/TopicEventSource.ts +1 -4
  327. package/src/AWS/SQS/Queue.ts +40 -6
  328. package/src/Action.ts +280 -0
  329. package/src/Apply.ts +351 -23
  330. package/src/Artifacts.ts +2 -4
  331. package/src/Auth/AuthProvider.ts +1 -1
  332. package/src/Auth/Env.ts +12 -20
  333. package/src/Binding.ts +5 -9
  334. package/src/Bundle/Docker.ts +1 -1
  335. package/src/Cli/Event.ts +4 -0
  336. package/src/Cli/NamespaceTree.ts +52 -5
  337. package/src/Cli/commands/_shared.ts +2 -2
  338. package/src/Cli/commands/deploy.ts +1 -1
  339. package/src/Cli/commands/logs.ts +4 -4
  340. package/src/Cli/commands/tail.ts +4 -4
  341. package/src/Cli/tui/components/Plan.tsx +65 -17
  342. package/src/Cli/tui/components/PlanProgress.tsx +142 -32
  343. package/src/Cloudflare/Access.ts +1 -1
  344. package/src/Cloudflare/AnalyticsEngine/AnalyticsEngineDatasetBinding.ts +1 -1
  345. package/src/Cloudflare/Artifacts/ArtifactsBinding.ts +1 -1
  346. package/src/Cloudflare/Container/Container.ts +1 -1
  347. package/src/Cloudflare/Container/ContainerApplication.ts +4 -6
  348. package/src/Cloudflare/Container/ContainerBinding.ts +2 -2
  349. package/src/Cloudflare/Email/EmailAddress.ts +155 -0
  350. package/src/Cloudflare/Email/EmailRouting.ts +138 -0
  351. package/src/Cloudflare/Email/EmailRule.ts +210 -0
  352. package/src/Cloudflare/Email/SendEmail.ts +95 -0
  353. package/src/Cloudflare/Email/SendEmailBinding.ts +124 -0
  354. package/src/Cloudflare/Email/index.ts +5 -0
  355. package/src/Cloudflare/Images/ImagesBinding.ts +1 -1
  356. package/src/Cloudflare/KV/KVNamespaceBinding.ts +1 -1
  357. package/src/Cloudflare/Local/SidecarServer.ts +1 -1
  358. package/src/Cloudflare/Providers.ts +9 -0
  359. package/src/Cloudflare/Queue/QueueBinding.ts +1 -1
  360. package/src/Cloudflare/R2/R2BucketBinding.ts +1 -1
  361. package/src/Cloudflare/SecretsStore/SecretBinding.ts +1 -1
  362. package/src/Cloudflare/Workers/Assets.ts +5 -6
  363. package/src/Cloudflare/Workers/HttpServer.ts +37 -5
  364. package/src/Cloudflare/Workers/InferEnv.ts +15 -11
  365. package/src/Cloudflare/Workers/Worker.ts +78 -36
  366. package/src/Cloudflare/Workers/WorkerBundle.ts +4 -6
  367. package/src/Cloudflare/Workers/Workflow.ts +2 -2
  368. package/src/Cloudflare/index.ts +1 -0
  369. package/src/Construct.ts +3 -7
  370. package/src/Destroy.ts +1 -0
  371. package/src/Http.ts +1 -1
  372. package/src/Namespace.ts +4 -4
  373. package/src/Neon/Branch.ts +93 -59
  374. package/src/Neon/Credentials.ts +2 -2
  375. package/src/Neon/Project.ts +193 -64
  376. package/src/Output.ts +9 -7
  377. package/src/Plan.ts +303 -53
  378. package/src/Platform.ts +7 -7
  379. package/src/Provider.ts +8 -3
  380. package/src/Random.ts +1 -1
  381. package/src/Resource.ts +2 -25
  382. package/src/Runtime.ts +38 -0
  383. package/src/Secret.ts +1 -1
  384. package/src/Stack.ts +10 -6
  385. package/src/State/ActionState.ts +51 -0
  386. package/src/State/HttpStateStore.ts +6 -2
  387. package/src/State/InMemoryState.ts +3 -3
  388. package/src/State/ResourceState.ts +5 -0
  389. package/src/State/State.ts +17 -2
  390. package/src/State/index.ts +1 -0
  391. package/src/Test/Core.ts +4 -3
  392. package/src/Util/effect.ts +4 -4
  393. package/src/Util/hash.ts +14 -0
  394. package/src/Util/ignore.ts +815 -0
  395. package/src/index.ts +6 -0
  396. package/lib/Agent/Agent.d.ts +0 -9
  397. package/lib/Agent/Agent.d.ts.map +0 -1
  398. package/lib/Agent/Agent.js +0 -10
  399. package/lib/Agent/Agent.js.map +0 -1
  400. package/lib/Agent/Aspect.d.ts +0 -51
  401. package/lib/Agent/Aspect.d.ts.map +0 -1
  402. package/lib/Agent/Aspect.js +0 -45
  403. package/lib/Agent/Aspect.js.map +0 -1
  404. package/lib/Agent/AspectGraph.d.ts +0 -45
  405. package/lib/Agent/AspectGraph.d.ts.map +0 -1
  406. package/lib/Agent/AspectGraph.js +0 -39
  407. package/lib/Agent/AspectGraph.js.map +0 -1
  408. package/lib/Agent/ContextPlugin.d.ts +0 -8
  409. package/lib/Agent/ContextPlugin.d.ts.map +0 -1
  410. package/lib/Agent/ContextPlugin.js +0 -3
  411. package/lib/Agent/ContextPlugin.js.map +0 -1
  412. package/lib/Agent/Plugin.d.ts +0 -18
  413. package/lib/Agent/Plugin.d.ts.map +0 -1
  414. package/lib/Agent/Plugin.js +0 -8
  415. package/lib/Agent/Plugin.js.map +0 -1
  416. package/lib/Agent/chat/channel.d.ts +0 -9
  417. package/lib/Agent/chat/channel.d.ts.map +0 -1
  418. package/lib/Agent/chat/channel.js +0 -10
  419. package/lib/Agent/chat/channel.js.map +0 -1
  420. package/lib/Agent/chat/event.d.ts +0 -32
  421. package/lib/Agent/chat/event.d.ts.map +0 -1
  422. package/lib/Agent/chat/event.js +0 -32
  423. package/lib/Agent/chat/event.js.map +0 -1
  424. package/lib/Agent/chat/message.d.ts +0 -22
  425. package/lib/Agent/chat/message.d.ts.map +0 -1
  426. package/lib/Agent/chat/message.js +0 -31
  427. package/lib/Agent/chat/message.js.map +0 -1
  428. package/lib/Agent/chat/service.d.ts +0 -102
  429. package/lib/Agent/chat/service.d.ts.map +0 -1
  430. package/lib/Agent/chat/service.js +0 -79
  431. package/lib/Agent/chat/service.js.map +0 -1
  432. package/lib/Agent/chat/thread.d.ts +0 -13
  433. package/lib/Agent/chat/thread.d.ts.map +0 -1
  434. package/lib/Agent/chat/thread.js +0 -16
  435. package/lib/Agent/chat/thread.js.map +0 -1
  436. package/lib/Agent/coding/bash.d.ts +0 -36
  437. package/lib/Agent/coding/bash.d.ts.map +0 -1
  438. package/lib/Agent/coding/bash.js +0 -170
  439. package/lib/Agent/coding/bash.js.map +0 -1
  440. package/lib/Agent/coding/edit.d.ts +0 -31
  441. package/lib/Agent/coding/edit.d.ts.map +0 -1
  442. package/lib/Agent/coding/edit.js +0 -90
  443. package/lib/Agent/coding/edit.js.map +0 -1
  444. package/lib/Agent/coding/glob.d.ts +0 -23
  445. package/lib/Agent/coding/glob.d.ts.map +0 -1
  446. package/lib/Agent/coding/glob.js +0 -78
  447. package/lib/Agent/coding/glob.js.map +0 -1
  448. package/lib/Agent/coding/grep.d.ts +0 -26
  449. package/lib/Agent/coding/grep.d.ts.map +0 -1
  450. package/lib/Agent/coding/grep.js +0 -105
  451. package/lib/Agent/coding/grep.js.map +0 -1
  452. package/lib/Agent/coding/index.d.ts +0 -8
  453. package/lib/Agent/coding/index.d.ts.map +0 -1
  454. package/lib/Agent/coding/index.js +0 -8
  455. package/lib/Agent/coding/index.js.map +0 -1
  456. package/lib/Agent/coding/read.d.ts +0 -27
  457. package/lib/Agent/coding/read.d.ts.map +0 -1
  458. package/lib/Agent/coding/read.js +0 -89
  459. package/lib/Agent/coding/read.js.map +0 -1
  460. package/lib/Agent/coding/readlints.d.ts +0 -19
  461. package/lib/Agent/coding/readlints.d.ts.map +0 -1
  462. package/lib/Agent/coding/readlints.js +0 -53
  463. package/lib/Agent/coding/readlints.js.map +0 -1
  464. package/lib/Agent/coding/write.d.ts +0 -22
  465. package/lib/Agent/coding/write.d.ts.map +0 -1
  466. package/lib/Agent/coding/write.js +0 -53
  467. package/lib/Agent/coding/write.js.map +0 -1
  468. package/lib/Agent/fs/file.d.ts +0 -12
  469. package/lib/Agent/fs/file.d.ts.map +0 -1
  470. package/lib/Agent/fs/file.js +0 -8
  471. package/lib/Agent/fs/file.js.map +0 -1
  472. package/lib/Agent/fs/folder.d.ts +0 -5
  473. package/lib/Agent/fs/folder.d.ts.map +0 -1
  474. package/lib/Agent/fs/folder.js +0 -3
  475. package/lib/Agent/fs/folder.js.map +0 -1
  476. package/lib/Agent/index.d.ts +0 -9
  477. package/lib/Agent/index.d.ts.map +0 -1
  478. package/lib/Agent/index.js +0 -9
  479. package/lib/Agent/index.js.map +0 -1
  480. package/lib/Agent/llm/error.d.ts +0 -208
  481. package/lib/Agent/llm/error.d.ts.map +0 -1
  482. package/lib/Agent/llm/error.js +0 -209
  483. package/lib/Agent/llm/error.js.map +0 -1
  484. package/lib/Agent/llm/index.d.ts +0 -5
  485. package/lib/Agent/llm/index.d.ts.map +0 -1
  486. package/lib/Agent/llm/index.js +0 -5
  487. package/lib/Agent/llm/index.js.map +0 -1
  488. package/lib/Agent/llm/llm.d.ts +0 -32
  489. package/lib/Agent/llm/llm.d.ts.map +0 -1
  490. package/lib/Agent/llm/llm.js +0 -74
  491. package/lib/Agent/llm/llm.js.map +0 -1
  492. package/lib/Agent/llm/stream-collectors.d.ts +0 -46
  493. package/lib/Agent/llm/stream-collectors.d.ts.map +0 -1
  494. package/lib/Agent/llm/stream-collectors.js +0 -33
  495. package/lib/Agent/llm/stream-collectors.js.map +0 -1
  496. package/lib/Agent/llm/stream-text-part.d.ts +0 -5
  497. package/lib/Agent/llm/stream-text-part.d.ts.map +0 -1
  498. package/lib/Agent/llm/stream-text-part.js +0 -4
  499. package/lib/Agent/llm/stream-text-part.js.map +0 -1
  500. package/lib/Agent/lsp/client.d.ts +0 -122
  501. package/lib/Agent/lsp/client.d.ts.map +0 -1
  502. package/lib/Agent/lsp/client.js +0 -180
  503. package/lib/Agent/lsp/client.js.map +0 -1
  504. package/lib/Agent/lsp/diagnostics.d.ts +0 -16
  505. package/lib/Agent/lsp/diagnostics.d.ts.map +0 -1
  506. package/lib/Agent/lsp/diagnostics.js +0 -48
  507. package/lib/Agent/lsp/diagnostics.js.map +0 -1
  508. package/lib/Agent/lsp/jsonrpc.d.ts +0 -90
  509. package/lib/Agent/lsp/jsonrpc.d.ts.map +0 -1
  510. package/lib/Agent/lsp/jsonrpc.js +0 -178
  511. package/lib/Agent/lsp/jsonrpc.js.map +0 -1
  512. package/lib/Agent/lsp/manager.d.ts +0 -38
  513. package/lib/Agent/lsp/manager.d.ts.map +0 -1
  514. package/lib/Agent/lsp/manager.js +0 -98
  515. package/lib/Agent/lsp/manager.js.map +0 -1
  516. package/lib/Agent/lsp/servers.d.ts +0 -28
  517. package/lib/Agent/lsp/servers.d.ts.map +0 -1
  518. package/lib/Agent/lsp/servers.js +0 -21
  519. package/lib/Agent/lsp/servers.js.map +0 -1
  520. package/lib/Agent/process/driver.d.ts +0 -10
  521. package/lib/Agent/process/driver.d.ts.map +0 -1
  522. package/lib/Agent/process/driver.js +0 -153
  523. package/lib/Agent/process/driver.js.map +0 -1
  524. package/lib/Agent/process/issue-service.d.ts +0 -44
  525. package/lib/Agent/process/issue-service.d.ts.map +0 -1
  526. package/lib/Agent/process/issue-service.js +0 -28
  527. package/lib/Agent/process/issue-service.js.map +0 -1
  528. package/lib/Agent/process/issue-tools.d.ts +0 -28
  529. package/lib/Agent/process/issue-tools.d.ts.map +0 -1
  530. package/lib/Agent/process/issue-tools.js +0 -28
  531. package/lib/Agent/process/issue-tools.js.map +0 -1
  532. package/lib/Agent/process/issue.d.ts +0 -16
  533. package/lib/Agent/process/issue.d.ts.map +0 -1
  534. package/lib/Agent/process/issue.js +0 -17
  535. package/lib/Agent/process/issue.js.map +0 -1
  536. package/lib/Agent/process/organization.d.ts +0 -4
  537. package/lib/Agent/process/organization.d.ts.map +0 -1
  538. package/lib/Agent/process/organization.js +0 -3
  539. package/lib/Agent/process/organization.js.map +0 -1
  540. package/lib/Agent/process/process.d.ts +0 -5
  541. package/lib/Agent/process/process.d.ts.map +0 -1
  542. package/lib/Agent/process/process.js +0 -3
  543. package/lib/Agent/process/process.js.map +0 -1
  544. package/lib/Agent/process/reply.d.ts +0 -16
  545. package/lib/Agent/process/reply.d.ts.map +0 -1
  546. package/lib/Agent/process/reply.js +0 -18
  547. package/lib/Agent/process/reply.js.map +0 -1
  548. package/lib/Agent/process/task.d.ts +0 -25
  549. package/lib/Agent/process/task.d.ts.map +0 -1
  550. package/lib/Agent/process/task.js +0 -26
  551. package/lib/Agent/process/task.js.map +0 -1
  552. package/lib/Agent/tool/index.d.ts +0 -4
  553. package/lib/Agent/tool/index.d.ts.map +0 -1
  554. package/lib/Agent/tool/index.js +0 -4
  555. package/lib/Agent/tool/index.js.map +0 -1
  556. package/lib/Agent/tool/parameter.d.ts +0 -12
  557. package/lib/Agent/tool/parameter.d.ts.map +0 -1
  558. package/lib/Agent/tool/parameter.js +0 -6
  559. package/lib/Agent/tool/parameter.js.map +0 -1
  560. package/lib/Agent/tool/result.d.ts +0 -17
  561. package/lib/Agent/tool/result.d.ts.map +0 -1
  562. package/lib/Agent/tool/result.js +0 -6
  563. package/lib/Agent/tool/result.js.map +0 -1
  564. package/lib/Agent/tool/tool.d.ts +0 -32
  565. package/lib/Agent/tool/tool.d.ts.map +0 -1
  566. package/lib/Agent/tool/tool.js +0 -16
  567. package/lib/Agent/tool/tool.js.map +0 -1
  568. package/lib/Agent/util/command-validator.d.ts +0 -12
  569. package/lib/Agent/util/command-validator.d.ts.map +0 -1
  570. package/lib/Agent/util/command-validator.js +0 -74
  571. package/lib/Agent/util/command-validator.js.map +0 -1
  572. package/lib/Agent/util/exec.d.ts.map +0 -1
  573. package/lib/Agent/util/exec.js.map +0 -1
  574. package/lib/Agent/util/parser.d.ts +0 -5
  575. package/lib/Agent/util/parser.d.ts.map +0 -1
  576. package/lib/Agent/util/parser.js +0 -41
  577. package/lib/Agent/util/parser.js.map +0 -1
  578. package/lib/Agent/util/replace.d.ts +0 -38
  579. package/lib/Agent/util/replace.d.ts.map +0 -1
  580. package/lib/Agent/util/replace.js +0 -458
  581. package/lib/Agent/util/replace.js.map +0 -1
  582. package/lib/Agent/util/ripgrep.d.ts +0 -109
  583. package/lib/Agent/util/ripgrep.d.ts.map +0 -1
  584. package/lib/Agent/util/ripgrep.js +0 -221
  585. package/lib/Agent/util/ripgrep.js.map +0 -1
  586. package/lib/Neon/api.d.ts +0 -258
  587. package/lib/Neon/api.d.ts.map +0 -1
  588. package/lib/Neon/api.js +0 -215
  589. package/lib/Neon/api.js.map +0 -1
  590. package/src/Agent/Agent.ts +0 -26
  591. package/src/Agent/Aspect.ts +0 -173
  592. package/src/Agent/AspectGraph.ts +0 -98
  593. package/src/Agent/ContextPlugin.ts +0 -18
  594. package/src/Agent/Plugin.ts +0 -29
  595. package/src/Agent/chat/channel.ts +0 -26
  596. package/src/Agent/chat/event.ts +0 -43
  597. package/src/Agent/chat/message.ts +0 -35
  598. package/src/Agent/chat/service.ts +0 -133
  599. package/src/Agent/chat/thread.ts +0 -17
  600. package/src/Agent/coding/bash.ts +0 -197
  601. package/src/Agent/coding/edit.ts +0 -152
  602. package/src/Agent/coding/glob.ts +0 -96
  603. package/src/Agent/coding/grep.ts +0 -143
  604. package/src/Agent/coding/index.ts +0 -7
  605. package/src/Agent/coding/read.ts +0 -119
  606. package/src/Agent/coding/readlints.ts +0 -78
  607. package/src/Agent/coding/write.ts +0 -79
  608. package/src/Agent/fs/file.ts +0 -22
  609. package/src/Agent/fs/folder.ts +0 -16
  610. package/src/Agent/index.ts +0 -9
  611. package/src/Agent/llm/error.ts +0 -330
  612. package/src/Agent/llm/index.ts +0 -4
  613. package/src/Agent/llm/llm.ts +0 -131
  614. package/src/Agent/llm/stream-collectors.ts +0 -58
  615. package/src/Agent/llm/stream-text-part.ts +0 -7
  616. package/src/Agent/lsp/client.ts +0 -293
  617. package/src/Agent/lsp/diagnostics.ts +0 -64
  618. package/src/Agent/lsp/jsonrpc.ts +0 -317
  619. package/src/Agent/lsp/manager.ts +0 -213
  620. package/src/Agent/lsp/servers.ts +0 -37
  621. package/src/Agent/process/driver.ts +0 -168
  622. package/src/Agent/process/issue-service.ts +0 -48
  623. package/src/Agent/process/issue-tools.ts +0 -33
  624. package/src/Agent/process/issue.ts +0 -22
  625. package/src/Agent/process/organization.ts +0 -16
  626. package/src/Agent/process/process.ts +0 -16
  627. package/src/Agent/process/reply.ts +0 -21
  628. package/src/Agent/process/task.ts +0 -34
  629. package/src/Agent/tool/index.ts +0 -3
  630. package/src/Agent/tool/parameter.ts +0 -35
  631. package/src/Agent/tool/result.ts +0 -51
  632. package/src/Agent/tool/tool.ts +0 -74
  633. package/src/Agent/util/command-validator.ts +0 -98
  634. package/src/Agent/util/parser.ts +0 -39
  635. package/src/Agent/util/replace.ts +0 -559
  636. package/src/Agent/util/ripgrep.ts +0 -256
  637. package/src/Neon/api.ts +0 -579
  638. /package/lib/{Agent/util → Util}/exec.d.ts +0 -0
  639. /package/lib/{Agent/util → Util}/exec.js +0 -0
  640. /package/src/{Agent/util → Util}/exec.ts +0 -0
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "alchemy",
3
- "version": "2.0.0-beta.37",
3
+ "version": "2.0.0-beta.39",
4
4
  "homepage": "https://alchemy.run",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Sam Goodwin <sam@alchemy.run>",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/alchemy-run/alchemy-effect.git",
10
- "directory": "package/alchemy"
10
+ "directory": "packages/alchemy"
11
11
  },
12
12
  "bin": {
13
13
  "alchemy": "./bin/cli.js"
@@ -40,12 +40,6 @@
40
40
  "worker": "./src/*.ts",
41
41
  "import": "./lib/*.js"
42
42
  },
43
- "./Agent": {
44
- "types": "./lib/Agent/index.d.ts",
45
- "bun": "./src/Agent/index.ts",
46
- "worker": "./src/Agent/index.ts",
47
- "import": "./lib/Agent/index.js"
48
- },
49
43
  "./Auth": {
50
44
  "types": "./lib/Auth/index.d.ts",
51
45
  "bun": "./src/Auth/index.ts",
@@ -196,6 +190,12 @@
196
190
  "worker": "./src/Output.ts",
197
191
  "import": "./lib/Output.js"
198
192
  },
193
+ "./Runtime": {
194
+ "types": "./lib/Runtime.d.ts",
195
+ "bun": "./src/Runtime.ts",
196
+ "worker": "./src/Runtime.ts",
197
+ "import": "./lib/Runtime.js"
198
+ },
199
199
  "./Process": {
200
200
  "types": "./lib/Process/index.d.ts",
201
201
  "bun": "./src/Process/index.ts",
@@ -270,34 +270,29 @@
270
270
  "access": "public"
271
271
  },
272
272
  "dependencies": {
273
- "@ai-sdk/anthropic": "^3.0.31",
274
- "@ai-sdk/openai": "^3.0.23",
275
- "@ai-sdk/provider": "^3.0.8",
276
273
  "@aws-sdk/credential-providers": "^3.0.0",
277
274
  "@clack/prompts": "^0.11.0",
278
- "@distilled.cloud/aws": "^0.19.1",
279
- "@distilled.cloud/axiom": "^0.19.1",
280
- "@distilled.cloud/cloudflare": "^0.19.1",
275
+ "@distilled.cloud/aws": "^0.20.1",
276
+ "@distilled.cloud/axiom": "^0.20.1",
277
+ "@distilled.cloud/cloudflare": "^0.20.1",
281
278
  "@distilled.cloud/cloudflare-rolldown-plugin": "0.3.0",
282
279
  "@distilled.cloud/cloudflare-runtime": "0.3.2",
283
280
  "@distilled.cloud/cloudflare-vite-plugin": "0.2.0",
284
- "@distilled.cloud/core": "^0.19.1",
285
- "@distilled.cloud/neon": "^0.19.1",
281
+ "@distilled.cloud/core": "^0.20.1",
282
+ "@distilled.cloud/neon": "^0.20.1",
286
283
  "pg": "^8.13.0",
287
- "@effect/vitest": ">=4.0.0-beta.60 || >=4.0.0",
284
+ "@effect/vitest": ">=4.0.0-beta.66 || >=4.0.0",
288
285
  "@libsql/client": "^0.17.0",
289
286
  "@octokit/rest": "^22.0.1",
290
287
  "@smithy/node-config-provider": "^4.0.0",
291
288
  "@smithy/shared-ini-file-loader": "^4.3.4",
292
289
  "@smithy/types": "^4.8.1",
293
290
  "@types/aws-lambda": "^8.10.152",
294
- "ai": "^6.0.62",
295
291
  "aws4fetch": "^1.0.20",
296
292
  "capnweb": "^0.6.1",
297
293
  "fast-glob": "^3.3.2",
298
294
  "fast-xml-parser": "^5.3.4",
299
295
  "foreground-child": "^4.0.3",
300
- "ignore": "^7.0.5",
301
296
  "ink": "^6.3.1",
302
297
  "jszip": "^3.10.1",
303
298
  "libsodium-wrappers": "^0.8.3",
@@ -309,15 +304,14 @@
309
304
  "rolldown": "1.0.0-rc.17",
310
305
  "sonda": "^0.11.1",
311
306
  "undici": "^7.16.0",
312
- "web-tree-sitter": "0.25.10",
313
307
  "yaml": "^2.0.0"
314
308
  },
315
309
  "devDependencies": {
316
310
  "@clack/prompts": "^0.11.0",
317
311
  "@cloudflare/workers-types": "^4.20250805.0",
318
- "@effect/platform-bun": ">=4.0.0-beta.60 || >=4.0.0",
319
- "@effect/platform-node": ">=4.0.0-beta.60 || >=4.0.0",
320
- "@effect/platform-node-shared": ">=4.0.0-beta.60 || >=4.0.0",
312
+ "@effect/platform-bun": ">=4.0.0-beta.66 || >=4.0.0",
313
+ "@effect/platform-node": ">=4.0.0-beta.66 || >=4.0.0",
314
+ "@effect/platform-node-shared": ">=4.0.0-beta.66 || >=4.0.0",
321
315
  "@oxc-project/types": "^0.127.0",
322
316
  "@types/pg": "^8.11.0",
323
317
  "@types/aws-lambda": "^8.10.152",
@@ -328,7 +322,7 @@
328
322
  "@types/react": "^19.2.2",
329
323
  "@types/ws": "^8.18.1",
330
324
  "better-auth": "^1.6.2",
331
- "effect": ">=4.0.0-beta.60 || >=4.0.0",
325
+ "effect": ">=4.0.0-beta.66 || >=4.0.0",
332
326
  "react-devtools-core": "^7.0.1",
333
327
  "solid-js": "latest",
334
328
  "tsconfig-paths": "^4.2.0",
@@ -338,12 +332,12 @@
338
332
  "ws": "^8.20.0"
339
333
  },
340
334
  "peerDependencies": {
341
- "@effect/platform-bun": ">=4.0.0-beta.60 || >=4.0.0",
342
- "@effect/platform-node": ">=4.0.0-beta.60 || >=4.0.0",
343
- "@effect/sql-pg": ">=4.0.0-beta.60 || >=4.0.0",
335
+ "@effect/platform-bun": ">=4.0.0-beta.66 || >=4.0.0",
336
+ "@effect/platform-node": ">=4.0.0-beta.66 || >=4.0.0",
337
+ "@effect/sql-pg": ">=4.0.0-beta.66 || >=4.0.0",
344
338
  "drizzle-kit": ">=1.0.0-rc.1",
345
339
  "drizzle-orm": ">=1.0.0-rc.1",
346
- "effect": ">=4.0.0-beta.60 || >=4.0.0",
340
+ "effect": ">=4.0.0-beta.66 || >=4.0.0",
347
341
  "vite": "^8.0.7",
348
342
  "ws": "^8.20.0"
349
343
  },
@@ -1,5 +1,4 @@
1
1
  import { Credentials } from "@distilled.cloud/aws/Credentials";
2
- import * as Effect from "effect/Effect";
3
2
  import * as Layer from "effect/Layer";
4
3
  import { AWSEnvironment } from "./Environment.ts";
5
4
 
@@ -12,5 +11,5 @@ export { Credentials } from "@distilled.cloud/aws/Credentials";
12
11
  */
13
12
  export const fromEnvironment = Layer.effect(
14
13
  Credentials,
15
- Effect.map(AWSEnvironment.asEffect(), (env) => env.credentials),
14
+ AWSEnvironment.useSync((env) => env.credentials),
16
15
  );
@@ -87,8 +87,5 @@ export const stream = <T extends Table>(
87
87
  process: (
88
88
  stream: Stream.Stream<StreamRecord<Data>, never, StreamReq>,
89
89
  ) => Effect.Effect<void, never, Req>,
90
- ) =>
91
- TableEventSource.asEffect().pipe(
92
- Effect.flatMap((source) => source(table, props, process)),
93
- ),
90
+ ) => TableEventSource.use((source) => source(table, props, process)),
94
91
  });
@@ -96,23 +96,21 @@ export const createEc2HostRuntimeContext =
96
96
  return key;
97
97
  }),
98
98
  get: <T>(key: string) =>
99
- Config.string(key)
100
- .asEffect()
101
- .pipe(
102
- Effect.flatMap((value) =>
103
- Effect.try({
104
- try: () => JSON.parse(value) as T,
105
- catch: (error) => error as Error,
99
+ Config.string(key).pipe(
100
+ Effect.flatMap((value) =>
101
+ Effect.try({
102
+ try: () => JSON.parse(value) as T,
103
+ catch: (error) => error as Error,
104
+ }),
105
+ ),
106
+ Effect.catch((cause) =>
107
+ Effect.die(
108
+ new Error(`Failed to get environment variable: ${key}`, {
109
+ cause,
106
110
  }),
107
111
  ),
108
- Effect.catch((cause) =>
109
- Effect.die(
110
- new Error(`Failed to get environment variable: ${key}`, {
111
- cause,
112
- }),
113
- ),
114
- ),
115
112
  ),
113
+ ),
116
114
  run: (effect: Effect.Effect<void, never, any>) =>
117
115
  Effect.sync(() => {
118
116
  runners.push(effect);
@@ -247,8 +245,8 @@ const program = handler.pipe(
247
245
  Layer.effect(
248
246
  Stack,
249
247
  Effect.all([
250
- Config.string("ALCHEMY_STACK_NAME").asEffect(),
251
- Config.string("ALCHEMY_STAGE").asEffect()
248
+ Config.string("ALCHEMY_STACK_NAME"),
249
+ Config.string("ALCHEMY_STAGE")
252
250
  ]).pipe(
253
251
  Effect.map(([name, stage]) => ({
254
252
  name,
@@ -191,23 +191,21 @@ export const Task: Platform<Task, TaskServices, TaskShape, TaskRuntimeContext> =
191
191
  return key;
192
192
  }),
193
193
  get: <T>(key: string) =>
194
- Config.string(key)
195
- .asEffect()
196
- .pipe(
197
- Effect.flatMap((value) =>
198
- Effect.try({
199
- try: () => JSON.parse(value) as T,
200
- catch: (error) => error as Error,
194
+ Config.string(key).pipe(
195
+ Effect.flatMap((value) =>
196
+ Effect.try({
197
+ try: () => JSON.parse(value) as T,
198
+ catch: (error) => error as Error,
199
+ }),
200
+ ),
201
+ Effect.catch((cause) =>
202
+ Effect.die(
203
+ new Error(`Failed to get environment variable: ${key}`, {
204
+ cause,
201
205
  }),
202
206
  ),
203
- Effect.catch((cause) =>
204
- Effect.die(
205
- new Error(`Failed to get environment variable: ${key}`, {
206
- cause,
207
- }),
208
- ),
209
- ),
210
207
  ),
208
+ ),
211
209
  run: (effect: Effect.Effect<void, never, any>) =>
212
210
  Effect.sync(() => {
213
211
  runners.push(effect);
@@ -508,8 +506,8 @@ const program = handler.pipe(
508
506
  Layer.effect(
509
507
  Stack,
510
508
  Effect.all([
511
- Config.string("ALCHEMY_STACK_NAME").asEffect(),
512
- Config.string("ALCHEMY_STAGE").asEffect()
509
+ Config.string("ALCHEMY_STACK_NAME"),
510
+ Config.string("ALCHEMY_STAGE")
513
511
  ]).pipe(
514
512
  Effect.map(([name, stage]) => ({
515
513
  name,
@@ -1,5 +1,4 @@
1
1
  import { Endpoint } from "@distilled.cloud/aws";
2
- import * as Effect from "effect/Effect";
3
2
  import * as Layer from "effect/Layer";
4
3
  import { AWSEnvironment } from "./Environment.ts";
5
4
 
@@ -12,9 +11,7 @@ export const of = (endpoint: string) =>
12
11
  * Layer is empty (the SDK uses its default endpoint resolver).
13
12
  */
14
13
  export const fromEnvironment = Layer.unwrap(
15
- AWSEnvironment.asEffect().pipe(
16
- Effect.map((env) =>
17
- env.endpoint === undefined ? Layer.empty : of(env.endpoint),
18
- ),
14
+ AWSEnvironment.useSync((env) =>
15
+ env.endpoint === undefined ? Layer.empty : of(env.endpoint),
19
16
  ),
20
17
  );
@@ -68,10 +68,7 @@ export const events = (...args: any[]) => {
68
68
  process: (
69
69
  events: Stream.Stream<EventRecord<Detail>, never, StreamReq>,
70
70
  ) => Effect.Effect<void, never, Req>,
71
- ) =>
72
- EventSource.asEffect().pipe(
73
- Effect.flatMap((source) => source(descriptor, process)),
74
- ),
71
+ ) => EventSource.use((source) => source(descriptor, process)),
75
72
  toLambda: (fn: LambdaFunction, props: LambdaRouteTargetProps = {}) =>
76
73
  createLambdaRoute(descriptor, fn, props),
77
74
  toQueue: (queue: Queue, props: QueueRouteTargetProps = {}) =>
@@ -99,8 +99,5 @@ export const records = <S extends KinesisStream>(
99
99
  process: (
100
100
  stream: Stream.Stream<KinesisEventRecord, never, StreamReq>,
101
101
  ) => Effect.Effect<void, never, Req>,
102
- ) =>
103
- StreamEventSource.asEffect().pipe(
104
- Effect.flatMap((source) => source(stream, props, process)),
105
- ),
102
+ ) => StreamEventSource.use((source) => source(stream, props, process)),
106
103
  });
@@ -387,36 +387,34 @@ export const Function: Platform<
387
387
  return key;
388
388
  }),
389
389
  get: <T>(key: string) =>
390
- Config.string(key)
391
- .asEffect()
392
- .pipe(
393
- Effect.flatMap((val) =>
394
- Effect.try({
395
- try: () => {
396
- const value = JSON.parse(val);
397
- if (
398
- value !== null &&
399
- typeof value === "object" &&
400
- (value as { _tag?: unknown })._tag === "Redacted" &&
401
- "value" in (value as object)
402
- ) {
403
- return Redacted.make(
404
- (value as { value: unknown }).value,
405
- ) as unknown as T;
406
- }
407
- return value as T;
408
- },
409
- catch: () => val, // assume it's just a string
390
+ Config.string(key).pipe(
391
+ Effect.flatMap((val) =>
392
+ Effect.try({
393
+ try: () => {
394
+ const value = JSON.parse(val);
395
+ if (
396
+ value !== null &&
397
+ typeof value === "object" &&
398
+ (value as { _tag?: unknown })._tag === "Redacted" &&
399
+ "value" in (value as object)
400
+ ) {
401
+ return Redacted.make(
402
+ (value as { value: unknown }).value,
403
+ ) as unknown as T;
404
+ }
405
+ return value as T;
406
+ },
407
+ catch: () => val, // assume it's just a string
408
+ }),
409
+ ),
410
+ Effect.catch((cause) =>
411
+ Effect.die(
412
+ new Error(`Failed to get environment variable: ${key}`, {
413
+ cause,
410
414
  }),
411
415
  ),
412
- Effect.catch((cause) =>
413
- Effect.die(
414
- new Error(`Failed to get environment variable: ${key}`, {
415
- cause,
416
- }),
417
- ),
418
- ),
419
416
  ),
417
+ ),
420
418
  serve: (handler: HttpEffect) =>
421
419
  ctx.listen(makeFunctionHttpHandler(handler)),
422
420
  listen: ((
@@ -669,6 +667,7 @@ export const FunctionProvider = () =>
669
667
  (importPath) => `
670
668
  import { layer as nodeServicesLayer } from "@effect/platform-node/NodeServices";
671
669
  import { Stack } from "alchemy/Stack";
670
+ import { makeEntrypointLayer } from "alchemy/Runtime";
672
671
  import * as Config from "effect/Config";
673
672
  import * as ConfigProvider from "effect/ConfigProvider";
674
673
  import * as Credentials from "@distilled.cloud/aws/Credentials";
@@ -680,13 +679,10 @@ import * as Region from "@distilled.cloud/aws/Region";
680
679
  import * as Context from "effect/Context";
681
680
  import { MinimumLogLevel } from "effect/References";
682
681
 
683
- import entry from "${importPath}";
682
+ import entrypoint from "${importPath}";
684
683
 
685
684
  const tag = Context.Service("${Self.key}")
686
- const layer =
687
- typeof entry?.build === "function"
688
- ? entry
689
- : Layer.effect(tag, typeof entry?.asEffect === "function" ? entry.asEffect() : entry);
685
+ const layer = makeEntrypointLayer(tag, entrypoint);
690
686
 
691
687
  const platform = Layer.mergeAll(
692
688
  nodeServicesLayer,
@@ -698,8 +694,8 @@ const platform = Layer.mergeAll(
698
694
  const stack = Layer.effect(
699
695
  Stack,
700
696
  Effect.all([
701
- Config.string("ALCHEMY_STACK_NAME").asEffect(),
702
- Config.string("ALCHEMY_STAGE").asEffect()
697
+ Config.string("ALCHEMY_STACK_NAME"),
698
+ Config.string("ALCHEMY_STAGE")
703
699
  ]).pipe(
704
700
  Effect.map(([name, stage]) => ({
705
701
  name,
@@ -710,7 +706,7 @@ const stack = Layer.effect(
710
706
  )
711
707
  );
712
708
 
713
- const handlerEffect = tag.asEffect().pipe(
709
+ const handlerEffect = tag.pipe(
714
710
  Effect.flatMap(func => func.RuntimeContext.exports),
715
711
  Effect.flatMap(exports => exports.handler),
716
712
  Effect.provide(
@@ -15,13 +15,14 @@ import { pipe } from "effect/Function";
15
15
  import * as Layer from "effect/Layer";
16
16
  import * as Ref from "effect/Ref";
17
17
  import * as Schedule from "effect/Schedule";
18
+ import * as HttpClientError from "effect/unstable/http/HttpClientError";
19
+ import { CredentialsStoreLive } from "../Auth/Credentials.ts";
18
20
  import { Command, CommandProvider } from "../Build/Command.ts";
19
21
  import * as Provider from "../Provider.ts";
20
22
  import { Random, RandomProvider } from "../Random.ts";
21
23
  import * as ACM from "./ACM/index.ts";
22
24
  import * as ApiGateway from "./ApiGateway/index.ts";
23
25
  import * as Assets from "./Assets.ts";
24
- import { CredentialsStoreLive } from "../Auth/Credentials.ts";
25
26
  import { AwsAuth } from "./AuthProvider.ts";
26
27
  import * as AutoScaling from "./AutoScaling/index.ts";
27
28
  import * as CloudFront from "./CloudFront/index.ts";
@@ -34,6 +35,7 @@ import * as ECS from "./ECS/index.ts";
34
35
  import * as EKS from "./EKS/index.ts";
35
36
  import * as ELBv2 from "./ELBv2/index.ts";
36
37
  import * as Endpoint from "./Endpoint.ts";
38
+ import { Default as DefaultEnvironment } from "./Environment.ts";
37
39
  import * as EventBridge from "./EventBridge/index.ts";
38
40
  import * as IAM from "./IAM/index.ts";
39
41
  import * as IdentityCenter from "./IdentityCenter/index.ts";
@@ -50,7 +52,6 @@ import * as Scheduler from "./Scheduler/index.ts";
50
52
  import * as SecretsManager from "./SecretsManager/index.ts";
51
53
  import * as SNS from "./SNS/index.ts";
52
54
  import * as SQS from "./SQS/index.ts";
53
- import { Default as DefaultEnvironment } from "./Environment.ts";
54
55
  import * as Website from "./Website/index.ts";
55
56
 
56
57
  export class Providers extends Provider.ProviderCollection<Providers>()(
@@ -591,9 +592,27 @@ export const providers = () =>
591
592
  Layer.orDie,
592
593
  );
593
594
 
595
+ // TODO(sam): remove this once it's upstreamed to distilled
596
+ const isHttpTransportError = (error: unknown): boolean => {
597
+ if (!HttpClientError.isHttpClientError(error)) return false;
598
+ const tag = error.reason._tag;
599
+ if (tag === "TransportError") return true;
600
+ if (
601
+ tag === "StatusCodeError" &&
602
+ "response" in error.reason &&
603
+ error.reason.response.status >= 500
604
+ ) {
605
+ return true;
606
+ }
607
+ return false;
608
+ };
609
+
594
610
  const awsRetryFactory: RetryFactory = (lastError) => ({
595
611
  while: (error) =>
596
- isTransientError(error) || isThrottlingError(error) || isRetryable(error),
612
+ isTransientError(error) ||
613
+ isThrottlingError(error) ||
614
+ isRetryable(error) ||
615
+ isHttpTransportError(error),
597
616
  schedule: pipe(
598
617
  Schedule.exponential(Duration.millis(200), 2),
599
618
  Schedule.modifyDelay(
package/src/AWS/Region.ts CHANGED
@@ -1,10 +1,9 @@
1
1
  import * as Region from "@distilled.cloud/aws/Region";
2
- import * as Effect from "effect/Effect";
3
2
  import * as Layer from "effect/Layer";
4
3
  import { AWSEnvironment } from "./Environment.ts";
5
4
 
6
- export { Region } from "@distilled.cloud/aws/Region";
7
5
  export { AWS_REGION, type RegionID } from "./Environment.ts";
6
+ export { Region } from "@distilled.cloud/aws/Region";
8
7
 
9
8
  export const of = (region: string) => Layer.succeed(Region.Region, region);
10
9
 
@@ -16,5 +15,5 @@ export const fromEnvOrElse = (region: string) =>
16
15
  */
17
16
  export const fromEnvironment = Layer.effect(
18
17
  Region.Region,
19
- Effect.map(AWSEnvironment.asEffect(), (env) => env.region),
18
+ AWSEnvironment.useSync((env) => env.region),
20
19
  );
@@ -564,12 +564,17 @@ export const BucketProvider = () =>
564
564
  yield* Effect.logInfo(
565
565
  `S3 Bucket delete: bucket=${output.bucketName} forceDestroy=${olds.forceDestroy ?? false}`,
566
566
  );
567
- // If forceDestroy is enabled, delete all objects first
567
+ // If forceDestroy is enabled, delete all objects first. The bucket
568
+ // may already be gone (deleted out-of-band, or a previous destroy
569
+ // partially succeeded) — treat NoSuchBucket as a no-op so the
570
+ // overall delete still converges.
568
571
  if (olds.forceDestroy) {
569
572
  yield* session.note(
570
573
  `Force destroying bucket: ${output.bucketName} - deleting all objects...`,
571
574
  );
572
- yield* deleteAllObjects(output.bucketName);
575
+ yield* deleteAllObjects(output.bucketName).pipe(
576
+ Effect.catchTag("NoSuchBucket", () => Effect.void),
577
+ );
573
578
  }
574
579
 
575
580
  yield* s3
@@ -70,8 +70,5 @@ export const notifications = <
70
70
  process: (
71
71
  stream: Stream.Stream<BucketNotification, never, StreamReq>,
72
72
  ) => Effect.Effect<void, never, Req>,
73
- ) =>
74
- BucketEventSource.asEffect().pipe(
75
- Effect.flatMap((source) => source(bucket, props, process)),
76
- ),
73
+ ) => BucketEventSource.use((source) => source(bucket, props, process)),
77
74
  });
@@ -35,8 +35,5 @@ export const notifications = <T extends Topic>(
35
35
  process: (
36
36
  stream: Stream.Stream<TopicNotification, never, StreamReq>,
37
37
  ) => Effect.Effect<void, never, Req>,
38
- ) =>
39
- TopicEventSource.asEffect().pipe(
40
- Effect.flatMap((source) => source(topic, props, process)),
41
- ),
38
+ ) => TopicEventSource.use((source) => source(topic, props, process)),
42
39
  });
@@ -313,12 +313,24 @@ export const QueueProvider = () =>
313
313
  // apply only the delta. SQS returns all attribute values as strings,
314
314
  // and `desiredAttributes` is already string-shaped, so equality
315
315
  // comparison is direct.
316
+ // SQS is eventually consistent: a freshly-created queue can return
317
+ // `QueueDoesNotExist` from `getQueueAttributes` for a few seconds
318
+ // even after `createQueue` succeeded. Retry briefly so the
319
+ // reconciler converges instead of failing the first deploy.
316
320
  const currentAttributes = yield* sqs
317
321
  .getQueueAttributes({
318
322
  QueueUrl: queueUrl,
319
323
  AttributeNames: ["All"],
320
324
  })
321
- .pipe(Effect.map((r) => r.Attributes ?? {}));
325
+ .pipe(
326
+ Effect.retry({
327
+ while: (e) => e._tag === "QueueDoesNotExist",
328
+ schedule: Schedule.fixed(1000).pipe(
329
+ Schedule.both(Schedule.recurs(30)),
330
+ ),
331
+ }),
332
+ Effect.map((r) => r.Attributes ?? {}),
333
+ );
322
334
 
323
335
  const attributeDelta: Record<string, string> = {};
324
336
  for (const [key, value] of Object.entries(desiredAttributes)) {
@@ -330,10 +342,19 @@ export const QueueProvider = () =>
330
342
  }
331
343
  }
332
344
  if (Object.keys(attributeDelta).length > 0) {
333
- yield* sqs.setQueueAttributes({
334
- QueueUrl: queueUrl,
335
- Attributes: attributeDelta,
336
- });
345
+ yield* sqs
346
+ .setQueueAttributes({
347
+ QueueUrl: queueUrl,
348
+ Attributes: attributeDelta,
349
+ })
350
+ .pipe(
351
+ Effect.retry({
352
+ while: (e) => e._tag === "QueueDoesNotExist",
353
+ schedule: Schedule.fixed(1000).pipe(
354
+ Schedule.both(Schedule.recurs(30)),
355
+ ),
356
+ }),
357
+ );
337
358
  }
338
359
 
339
360
  // Sync alchemy-owned tags. The `tags` parameter on `createQueue`
@@ -342,6 +363,12 @@ export const QueueProvider = () =>
342
363
  const currentTags = yield* sqs
343
364
  .listQueueTags({ QueueUrl: queueUrl })
344
365
  .pipe(
366
+ Effect.retry({
367
+ while: (e) => e._tag === "QueueDoesNotExist",
368
+ schedule: Schedule.fixed(1000).pipe(
369
+ Schedule.both(Schedule.recurs(30)),
370
+ ),
371
+ }),
345
372
  Effect.map((r) => r.Tags ?? {}),
346
373
  Effect.catch(() => Effect.succeed({} as Record<string, string>)),
347
374
  );
@@ -352,7 +379,14 @@ export const QueueProvider = () =>
352
379
  }
353
380
  }
354
381
  if (Object.keys(tagDelta).length > 0) {
355
- yield* sqs.tagQueue({ QueueUrl: queueUrl, Tags: tagDelta });
382
+ yield* sqs.tagQueue({ QueueUrl: queueUrl, Tags: tagDelta }).pipe(
383
+ Effect.retry({
384
+ while: (e) => e._tag === "QueueDoesNotExist",
385
+ schedule: Schedule.fixed(1000).pipe(
386
+ Schedule.both(Schedule.recurs(30)),
387
+ ),
388
+ }),
389
+ );
356
390
  }
357
391
 
358
392
  yield* session.note(queueUrl);