alchemy-effect 0.6.0 → 0.6.3

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 (1245) hide show
  1. package/bin/alchemy-effect.js +7152 -17685
  2. package/bin/alchemy-effect.js.map +1 -1
  3. package/bin/alchemy-effect.sh +14 -0
  4. package/bin/alchemy-effect.ts +644 -130
  5. package/bin/process-manager.ts +10 -0
  6. package/lib/cli/index.d.ts +206 -377
  7. package/lib/cli/index.d.ts.map +1 -1
  8. package/lib/cli/index.js +4134 -985
  9. package/lib/cli/index.js.map +1 -1
  10. package/package.json +152 -87
  11. package/src/AWS/ACM/Certificate.ts +502 -0
  12. package/src/AWS/ACM/index.ts +1 -0
  13. package/src/AWS/AGENTS.md +505 -0
  14. package/src/AWS/Account.ts +56 -0
  15. package/src/AWS/Assets.ts +182 -0
  16. package/src/AWS/AutoScaling/AutoScalingGroup.ts +440 -0
  17. package/src/AWS/AutoScaling/LaunchTemplate.ts +535 -0
  18. package/src/AWS/AutoScaling/ScalingPolicy.ts +232 -0
  19. package/src/AWS/AutoScaling/index.ts +3 -0
  20. package/src/AWS/Bootstrap.ts +281 -0
  21. package/src/AWS/CloudFront/Distribution.ts +952 -0
  22. package/src/AWS/CloudFront/Function.ts +374 -0
  23. package/src/AWS/CloudFront/Invalidation.ts +202 -0
  24. package/src/AWS/CloudFront/KeyValueStore.ts +216 -0
  25. package/src/AWS/CloudFront/KvEntries.ts +250 -0
  26. package/src/AWS/CloudFront/KvRoutesUpdate.ts +301 -0
  27. package/src/AWS/CloudFront/ManagedPolicies.ts +20 -0
  28. package/src/AWS/CloudFront/OriginAccessControl.ts +266 -0
  29. package/src/AWS/CloudFront/common.ts +55 -0
  30. package/src/AWS/CloudFront/index.ts +15 -0
  31. package/src/AWS/CloudWatch/Alarm.ts +198 -0
  32. package/src/AWS/CloudWatch/AlarmMuteRule.ts +183 -0
  33. package/src/AWS/CloudWatch/AnomalyDetector.ts +242 -0
  34. package/src/AWS/CloudWatch/CompositeAlarm.ts +198 -0
  35. package/src/AWS/CloudWatch/Dashboard.ts +262 -0
  36. package/src/AWS/CloudWatch/DescribeAlarmContributors.ts +79 -0
  37. package/src/AWS/CloudWatch/DescribeAlarmHistory.ts +66 -0
  38. package/src/AWS/CloudWatch/DescribeAlarms.ts +94 -0
  39. package/src/AWS/CloudWatch/DescribeAlarmsForMetric.ts +66 -0
  40. package/src/AWS/CloudWatch/DescribeAnomalyDetectors.ts +68 -0
  41. package/src/AWS/CloudWatch/DescribeInsightRules.ts +66 -0
  42. package/src/AWS/CloudWatch/DisableAlarmActions.ts +74 -0
  43. package/src/AWS/CloudWatch/DisableInsightRules.ts +74 -0
  44. package/src/AWS/CloudWatch/EnableAlarmActions.ts +74 -0
  45. package/src/AWS/CloudWatch/GetAlarmMuteRule.ts +75 -0
  46. package/src/AWS/CloudWatch/GetDashboard.ts +75 -0
  47. package/src/AWS/CloudWatch/GetInsightRuleReport.ts +76 -0
  48. package/src/AWS/CloudWatch/GetMetricData.ts +62 -0
  49. package/src/AWS/CloudWatch/GetMetricStatistics.ts +64 -0
  50. package/src/AWS/CloudWatch/GetMetricStream.ts +75 -0
  51. package/src/AWS/CloudWatch/GetMetricWidgetImage.ts +66 -0
  52. package/src/AWS/CloudWatch/InsightRule.ts +277 -0
  53. package/src/AWS/CloudWatch/ListAlarmMuteRules.ts +64 -0
  54. package/src/AWS/CloudWatch/ListDashboards.ts +62 -0
  55. package/src/AWS/CloudWatch/ListManagedInsightRules.ts +68 -0
  56. package/src/AWS/CloudWatch/ListMetricStreams.ts +64 -0
  57. package/src/AWS/CloudWatch/ListMetrics.ts +62 -0
  58. package/src/AWS/CloudWatch/ListTagsForResource.ts +79 -0
  59. package/src/AWS/CloudWatch/MetricStream.ts +262 -0
  60. package/src/AWS/CloudWatch/PutMetricData.ts +62 -0
  61. package/src/AWS/CloudWatch/SetAlarmState.ts +73 -0
  62. package/src/AWS/CloudWatch/alarmStateChanges.ts +24 -0
  63. package/src/AWS/CloudWatch/binding-common.ts +42 -0
  64. package/src/AWS/CloudWatch/common.ts +168 -0
  65. package/src/AWS/CloudWatch/index.ts +32 -0
  66. package/src/AWS/Context.ts +30 -0
  67. package/src/AWS/Credentials.ts +52 -0
  68. package/src/AWS/DynamoDB/AttributeValue.ts +250 -0
  69. package/src/AWS/DynamoDB/BatchExecuteStatement.ts +113 -0
  70. package/src/AWS/DynamoDB/BatchGetItem.ts +138 -0
  71. package/src/AWS/DynamoDB/BatchWriteItem.ts +144 -0
  72. package/src/AWS/DynamoDB/DeleteItem.ts +67 -0
  73. package/src/AWS/DynamoDB/DescribeTable.ts +69 -0
  74. package/src/AWS/DynamoDB/DescribeTimeToLive.ts +72 -0
  75. package/src/AWS/DynamoDB/ExecuteStatement.ts +91 -0
  76. package/src/AWS/DynamoDB/ExecuteTransaction.ts +77 -0
  77. package/src/AWS/DynamoDB/GetItem.ts +85 -0
  78. package/src/AWS/DynamoDB/ListTables.ts +56 -0
  79. package/src/AWS/DynamoDB/ListTagsOfResource.ts +72 -0
  80. package/src/AWS/DynamoDB/ProjectionExpression.ts +159 -0
  81. package/src/AWS/DynamoDB/PutItem.ts +67 -0
  82. package/src/AWS/DynamoDB/Query.ts +68 -0
  83. package/src/AWS/DynamoDB/RestoreTableToPointInTime.ts +94 -0
  84. package/src/AWS/DynamoDB/Scan.ts +68 -0
  85. package/src/AWS/DynamoDB/Stream.ts +94 -0
  86. package/src/AWS/DynamoDB/Table.ts +1175 -0
  87. package/src/AWS/DynamoDB/TransactGetItems.ts +154 -0
  88. package/src/AWS/DynamoDB/TransactWriteItems.ts +216 -0
  89. package/src/AWS/DynamoDB/UpdateItem.ts +67 -0
  90. package/src/AWS/DynamoDB/UpdateTimeToLive.ts +71 -0
  91. package/src/AWS/DynamoDB/index.ts +24 -0
  92. package/src/AWS/EC2/EIP.ts +285 -0
  93. package/src/AWS/EC2/EgressOnlyInternetGateway.ts +248 -0
  94. package/src/AWS/EC2/Image.ts +108 -0
  95. package/src/AWS/EC2/Instance.ts +877 -0
  96. package/src/AWS/EC2/InternetGateway.ts +382 -0
  97. package/src/AWS/EC2/NatGateway.ts +474 -0
  98. package/src/AWS/EC2/Network.ts +459 -0
  99. package/src/AWS/EC2/NetworkAcl.ts +247 -0
  100. package/src/AWS/EC2/NetworkAclAssociation.ts +206 -0
  101. package/src/AWS/EC2/NetworkAclEntry.ts +300 -0
  102. package/src/AWS/EC2/Route.ts +323 -0
  103. package/src/AWS/EC2/RouteTable.ts +448 -0
  104. package/src/AWS/EC2/RouteTableAssociation.ts +274 -0
  105. package/src/AWS/EC2/SecurityGroup.ts +552 -0
  106. package/src/AWS/EC2/SecurityGroupRule.ts +395 -0
  107. package/src/AWS/EC2/Subnet.ts +583 -0
  108. package/src/AWS/EC2/Vpc.ts +455 -0
  109. package/src/AWS/EC2/VpcEndpoint.ts +657 -0
  110. package/src/AWS/EC2/hosted.ts +891 -0
  111. package/src/AWS/EC2/index.ts +18 -0
  112. package/src/AWS/ECR/Repository.ts +254 -0
  113. package/src/AWS/ECR/index.ts +1 -0
  114. package/src/AWS/ECS/Cluster.ts +257 -0
  115. package/src/AWS/ECS/DescribeTasks.ts +67 -0
  116. package/src/AWS/ECS/ListTasks.ts +67 -0
  117. package/src/AWS/ECS/RunTask.ts +82 -0
  118. package/src/AWS/ECS/Schedule.ts +115 -0
  119. package/src/AWS/ECS/Service.ts +572 -0
  120. package/src/AWS/ECS/StopTask.ts +64 -0
  121. package/src/AWS/ECS/Task.ts +981 -0
  122. package/src/AWS/ECS/index.ts +28 -0
  123. package/src/AWS/EKS/AccessEntry.ts +382 -0
  124. package/src/AWS/EKS/Addon.ts +385 -0
  125. package/src/AWS/EKS/AutoCluster.ts +288 -0
  126. package/src/AWS/EKS/Cluster.ts +655 -0
  127. package/src/AWS/EKS/LoadBalancedWorkload.ts +76 -0
  128. package/src/AWS/EKS/PodIdentityAssociation.ts +354 -0
  129. package/src/AWS/EKS/PodIdentityServiceAccount.ts +156 -0
  130. package/src/AWS/EKS/PodIdentityWorkload.ts +185 -0
  131. package/src/AWS/EKS/Workload.ts +145 -0
  132. package/src/AWS/EKS/index.ts +9 -0
  133. package/src/AWS/ELBv2/Listener.ts +139 -0
  134. package/src/AWS/ELBv2/LoadBalancer.ts +227 -0
  135. package/src/AWS/ELBv2/TargetGroup.ts +209 -0
  136. package/src/AWS/ELBv2/index.ts +3 -0
  137. package/src/AWS/Endpoint.ts +16 -0
  138. package/src/AWS/EventBridge/DescribeEventBus.ts +71 -0
  139. package/src/AWS/EventBridge/DescribeRule.ts +73 -0
  140. package/src/AWS/EventBridge/EventBus.ts +273 -0
  141. package/src/AWS/EventBridge/EventSource.ts +146 -0
  142. package/src/AWS/EventBridge/ListEventBuses.ts +60 -0
  143. package/src/AWS/EventBridge/ListRules.ts +87 -0
  144. package/src/AWS/EventBridge/ListTargetsByRule.ts +76 -0
  145. package/src/AWS/EventBridge/Permission.ts +151 -0
  146. package/src/AWS/EventBridge/PutEvents.ts +91 -0
  147. package/src/AWS/EventBridge/Rule.ts +620 -0
  148. package/src/AWS/EventBridge/TestEventPattern.ts +60 -0
  149. package/src/AWS/EventBridge/ToEcsTask.ts +118 -0
  150. package/src/AWS/EventBridge/ToLambda.ts +87 -0
  151. package/src/AWS/EventBridge/ToQueue.ts +97 -0
  152. package/src/AWS/EventBridge/index.ts +14 -0
  153. package/src/AWS/IAM/AccessKey.ts +142 -0
  154. package/src/AWS/IAM/AccountAlias.ts +96 -0
  155. package/src/AWS/IAM/AccountPasswordPolicy.ts +64 -0
  156. package/src/AWS/IAM/Group.ts +357 -0
  157. package/src/AWS/IAM/GroupMembership.ts +142 -0
  158. package/src/AWS/IAM/InstanceProfile.ts +285 -0
  159. package/src/AWS/IAM/LoginProfile.ts +137 -0
  160. package/src/AWS/IAM/OpenIDConnectProvider.ts +192 -0
  161. package/src/AWS/IAM/Policy.ts +387 -0
  162. package/src/AWS/IAM/Role.ts +500 -0
  163. package/src/AWS/IAM/SAMLProvider.ts +165 -0
  164. package/src/AWS/IAM/SSHPublicKey.ts +148 -0
  165. package/src/AWS/IAM/ServerCertificate.ts +261 -0
  166. package/src/AWS/IAM/ServiceSpecificCredential.ts +172 -0
  167. package/src/AWS/IAM/SigningCertificate.ts +137 -0
  168. package/src/AWS/IAM/User.ts +436 -0
  169. package/src/AWS/IAM/VirtualMFADevice.ts +259 -0
  170. package/src/AWS/IAM/common.ts +89 -0
  171. package/src/AWS/IAM/index.ts +40 -0
  172. package/src/AWS/IdentityCenter/AccountAssignment.ts +290 -0
  173. package/src/AWS/IdentityCenter/Group.ts +211 -0
  174. package/src/AWS/IdentityCenter/Instance.ts +190 -0
  175. package/src/AWS/IdentityCenter/PermissionSet.ts +235 -0
  176. package/src/AWS/IdentityCenter/common.ts +117 -0
  177. package/src/AWS/IdentityCenter/index.ts +4 -0
  178. package/src/AWS/Kinesis/DescribeAccountSettings.ts +63 -0
  179. package/src/AWS/Kinesis/DescribeLimits.ts +59 -0
  180. package/src/AWS/Kinesis/DescribeStream.ts +69 -0
  181. package/src/AWS/Kinesis/DescribeStreamConsumer.ts +72 -0
  182. package/src/AWS/Kinesis/DescribeStreamSummary.ts +72 -0
  183. package/src/AWS/Kinesis/GetRecords.ts +59 -0
  184. package/src/AWS/Kinesis/GetResourcePolicy.ts +72 -0
  185. package/src/AWS/Kinesis/GetShardIterator.ts +71 -0
  186. package/src/AWS/Kinesis/ListShards.ts +66 -0
  187. package/src/AWS/Kinesis/ListStreamConsumers.ts +72 -0
  188. package/src/AWS/Kinesis/ListStreams.ts +56 -0
  189. package/src/AWS/Kinesis/ListTagsForResource.ts +78 -0
  190. package/src/AWS/Kinesis/PutRecord.ts +67 -0
  191. package/src/AWS/Kinesis/PutRecords.ts +67 -0
  192. package/src/AWS/Kinesis/Stream.ts +731 -0
  193. package/src/AWS/Kinesis/StreamConsumer.ts +325 -0
  194. package/src/AWS/Kinesis/StreamEventSource.ts +106 -0
  195. package/src/AWS/Kinesis/StreamSink.ts +68 -0
  196. package/src/AWS/Kinesis/SubscribeToShard.ts +71 -0
  197. package/src/AWS/Kinesis/index.ts +19 -0
  198. package/src/AWS/Lambda/BucketEventSource.ts +146 -0
  199. package/src/AWS/Lambda/EventBridgeEventSource.ts +183 -0
  200. package/src/AWS/Lambda/EventSourceMapping.ts +438 -0
  201. package/src/AWS/Lambda/Function.ts +1185 -0
  202. package/src/AWS/Lambda/HttpServer.ts +125 -0
  203. package/src/AWS/Lambda/InvokeFunction.ts +67 -0
  204. package/src/AWS/Lambda/Permission.ts +217 -0
  205. package/src/AWS/Lambda/QueueEventSource.ts +96 -0
  206. package/src/AWS/Lambda/StreamEventSource.ts +123 -0
  207. package/src/AWS/Lambda/TableEventSource.ts +156 -0
  208. package/src/AWS/Lambda/TopicEventSource.ts +105 -0
  209. package/src/AWS/Lambda/index.ts +13 -0
  210. package/src/AWS/Logs/LogGroup.ts +209 -0
  211. package/src/AWS/Logs/index.ts +1 -0
  212. package/src/AWS/Organizations/Account.ts +328 -0
  213. package/src/AWS/Organizations/DelegatedAdministrator.ts +158 -0
  214. package/src/AWS/Organizations/Organization.ts +179 -0
  215. package/src/AWS/Organizations/OrganizationResourcePolicy.ts +108 -0
  216. package/src/AWS/Organizations/OrganizationalUnit.ts +268 -0
  217. package/src/AWS/Organizations/Policy.ts +241 -0
  218. package/src/AWS/Organizations/PolicyAttachment.ts +130 -0
  219. package/src/AWS/Organizations/Root.ts +151 -0
  220. package/src/AWS/Organizations/RootPolicyType.ts +130 -0
  221. package/src/AWS/Organizations/TenantRoot.ts +506 -0
  222. package/src/AWS/Organizations/TrustedServiceAccess.ts +107 -0
  223. package/src/AWS/Organizations/common.ts +130 -0
  224. package/src/AWS/Organizations/index.ts +11 -0
  225. package/src/AWS/Profile.ts +5 -0
  226. package/src/AWS/Providers.ts +326 -0
  227. package/src/AWS/RDS/Aurora.ts +499 -0
  228. package/src/AWS/RDS/Connect.ts +127 -0
  229. package/src/AWS/RDS/DBCluster.ts +361 -0
  230. package/src/AWS/RDS/DBClusterEndpoint.ts +226 -0
  231. package/src/AWS/RDS/DBClusterParameterGroup.ts +195 -0
  232. package/src/AWS/RDS/DBInstance.ts +274 -0
  233. package/src/AWS/RDS/DBParameterGroup.ts +190 -0
  234. package/src/AWS/RDS/DBProxy.ts +257 -0
  235. package/src/AWS/RDS/DBProxyEndpoint.ts +255 -0
  236. package/src/AWS/RDS/DBProxyTargetGroup.ts +243 -0
  237. package/src/AWS/RDS/DBSubnetGroup.ts +208 -0
  238. package/src/AWS/RDS/index.ts +11 -0
  239. package/src/AWS/RDSData/BatchExecuteStatement.ts +103 -0
  240. package/src/AWS/RDSData/BeginTransaction.ts +97 -0
  241. package/src/AWS/RDSData/CommitTransaction.ts +102 -0
  242. package/src/AWS/RDSData/ExecuteSql.ts +98 -0
  243. package/src/AWS/RDSData/ExecuteStatement.ts +99 -0
  244. package/src/AWS/RDSData/RollbackTransaction.ts +105 -0
  245. package/src/AWS/RDSData/index.ts +6 -0
  246. package/src/AWS/Region.ts +77 -0
  247. package/src/AWS/Route53/Record.ts +342 -0
  248. package/src/AWS/Route53/index.ts +1 -0
  249. package/src/AWS/S3/AbortMultipartUpload.ts +73 -0
  250. package/src/AWS/S3/Bucket.ts +550 -0
  251. package/src/AWS/S3/BucketEventSource.ts +26 -0
  252. package/src/AWS/S3/BucketNotifications.ts +77 -0
  253. package/src/AWS/S3/CompleteMultipartUpload.ts +73 -0
  254. package/src/AWS/S3/CopyObject.ts +68 -0
  255. package/src/AWS/S3/CreateMultipartUpload.ts +73 -0
  256. package/src/AWS/S3/DeleteObject.ts +67 -0
  257. package/src/AWS/S3/GetObject.ts +74 -0
  258. package/src/AWS/S3/HeadObject.ts +67 -0
  259. package/src/AWS/S3/ListObjectsV2.ts +67 -0
  260. package/src/AWS/S3/PutObject.ts +83 -0
  261. package/src/AWS/S3/S3Event.ts +43 -0
  262. package/src/AWS/S3/UploadPart.ts +67 -0
  263. package/src/AWS/S3/index.ts +14 -0
  264. package/src/AWS/SNS/AddPermission.ts +66 -0
  265. package/src/AWS/SNS/ConfirmSubscription.ts +72 -0
  266. package/src/AWS/SNS/GetDataProtectionPolicy.ts +72 -0
  267. package/src/AWS/SNS/GetSubscriptionAttributes.ts +72 -0
  268. package/src/AWS/SNS/GetTopicAttributes.ts +70 -0
  269. package/src/AWS/SNS/ListSubscriptions.ts +60 -0
  270. package/src/AWS/SNS/ListSubscriptionsByTopic.ts +72 -0
  271. package/src/AWS/SNS/ListTagsForResource.ts +72 -0
  272. package/src/AWS/SNS/ListTopics.ts +56 -0
  273. package/src/AWS/SNS/Publish.ts +66 -0
  274. package/src/AWS/SNS/PublishBatch.ts +66 -0
  275. package/src/AWS/SNS/PutDataProtectionPolicy.ts +72 -0
  276. package/src/AWS/SNS/RemovePermission.ts +66 -0
  277. package/src/AWS/SNS/SetSubscriptionAttributes.ts +72 -0
  278. package/src/AWS/SNS/SetTopicAttributes.ts +70 -0
  279. package/src/AWS/SNS/Subscription.ts +305 -0
  280. package/src/AWS/SNS/TagResource.ts +66 -0
  281. package/src/AWS/SNS/Topic.ts +363 -0
  282. package/src/AWS/SNS/TopicEventSource.ts +42 -0
  283. package/src/AWS/SNS/TopicSink.ts +61 -0
  284. package/src/AWS/SNS/UntagResource.ts +66 -0
  285. package/src/AWS/SNS/index.ts +21 -0
  286. package/src/AWS/SQS/DeleteMessage.ts +67 -0
  287. package/src/AWS/SQS/DeleteMessageBatch.ts +72 -0
  288. package/src/AWS/SQS/Queue.ts +210 -0
  289. package/src/AWS/SQS/QueueEventSource.ts +57 -0
  290. package/src/AWS/SQS/QueueSink.ts +62 -0
  291. package/src/AWS/SQS/ReceiveMessage.ts +68 -0
  292. package/src/AWS/SQS/SendMessage.ts +69 -0
  293. package/src/AWS/SQS/SendMessageBatch.ts +67 -0
  294. package/src/AWS/SQS/index.ts +8 -0
  295. package/src/AWS/Scheduler/Schedule.ts +296 -0
  296. package/src/AWS/Scheduler/ScheduleGroup.ts +186 -0
  297. package/src/AWS/Scheduler/builders.ts +229 -0
  298. package/src/AWS/Scheduler/index.ts +3 -0
  299. package/src/AWS/SecretsManager/DescribeSecret.ts +66 -0
  300. package/src/AWS/SecretsManager/GetRandomPassword.ts +65 -0
  301. package/src/AWS/SecretsManager/GetSecretValue.ts +78 -0
  302. package/src/AWS/SecretsManager/ListSecrets.ts +62 -0
  303. package/src/AWS/SecretsManager/PutSecretValue.ts +78 -0
  304. package/src/AWS/SecretsManager/Secret.ts +318 -0
  305. package/src/AWS/SecretsManager/index.ts +6 -0
  306. package/src/AWS/StageConfig.ts +44 -0
  307. package/src/AWS/Website/AssetDeployment.ts +348 -0
  308. package/src/AWS/Website/Router.ts +384 -0
  309. package/src/AWS/Website/SsrSite.ts +393 -0
  310. package/src/AWS/Website/StaticSite.ts +611 -0
  311. package/src/AWS/Website/cfcode.ts +180 -0
  312. package/src/AWS/Website/index.ts +5 -0
  313. package/src/AWS/Website/shared.ts +223 -0
  314. package/src/AWS/index.ts +37 -0
  315. package/src/AdoptPolicy.ts +25 -0
  316. package/src/Agent/Agent.ts +26 -0
  317. package/src/Agent/Aspect.ts +173 -0
  318. package/src/Agent/AspectGraph.ts +98 -0
  319. package/src/Agent/ContextPlugin.ts +18 -0
  320. package/src/Agent/Plugin.ts +29 -0
  321. package/src/Agent/chat/channel.ts +26 -0
  322. package/src/Agent/chat/event.ts +43 -0
  323. package/src/Agent/chat/message.ts +35 -0
  324. package/src/Agent/chat/service.ts +133 -0
  325. package/src/Agent/chat/thread.ts +17 -0
  326. package/src/Agent/coding/bash.ts +198 -0
  327. package/src/Agent/coding/edit.ts +152 -0
  328. package/src/Agent/coding/glob.ts +97 -0
  329. package/src/Agent/coding/grep.ts +144 -0
  330. package/src/Agent/coding/index.ts +7 -0
  331. package/src/Agent/coding/read.ts +119 -0
  332. package/src/Agent/coding/readlints.ts +78 -0
  333. package/src/Agent/coding/write.ts +79 -0
  334. package/src/Agent/fs/file.ts +22 -0
  335. package/src/Agent/fs/folder.ts +16 -0
  336. package/src/Agent/index.ts +9 -0
  337. package/src/Agent/llm/error.ts +330 -0
  338. package/src/Agent/llm/index.ts +4 -0
  339. package/src/Agent/llm/llm.ts +131 -0
  340. package/src/Agent/llm/stream-collectors.ts +58 -0
  341. package/src/Agent/llm/stream-text-part.ts +7 -0
  342. package/src/Agent/lsp/client.ts +293 -0
  343. package/src/Agent/lsp/diagnostics.ts +64 -0
  344. package/src/Agent/lsp/jsonrpc.ts +317 -0
  345. package/src/Agent/lsp/manager.ts +213 -0
  346. package/src/Agent/lsp/servers.ts +37 -0
  347. package/src/Agent/process/driver.ts +168 -0
  348. package/src/Agent/process/issue-service.ts +48 -0
  349. package/src/Agent/process/issue-tools.ts +33 -0
  350. package/src/Agent/process/issue.ts +22 -0
  351. package/src/Agent/process/organization.ts +16 -0
  352. package/src/Agent/process/process.ts +16 -0
  353. package/src/Agent/process/reply.ts +21 -0
  354. package/src/Agent/process/task.ts +34 -0
  355. package/src/Agent/tool/index.ts +3 -0
  356. package/src/Agent/tool/parameter.ts +35 -0
  357. package/src/Agent/tool/result.ts +51 -0
  358. package/src/Agent/tool/tool.ts +74 -0
  359. package/src/Agent/util/command-validator.ts +98 -0
  360. package/src/Agent/util/exec.ts +18 -0
  361. package/src/Agent/util/parser.ts +39 -0
  362. package/src/Agent/util/replace.ts +559 -0
  363. package/src/Agent/util/ripgrep.ts +256 -0
  364. package/src/Apply.ts +1070 -0
  365. package/src/Binding.ts +193 -0
  366. package/src/Build/Command.ts +322 -0
  367. package/src/Build/index.ts +1 -0
  368. package/src/Bundle/Bundle.ts +215 -0
  369. package/src/Bundle/Docker.ts +213 -0
  370. package/src/Bundle/TempRoot.ts +104 -0
  371. package/src/Bundle/index.ts +3 -0
  372. package/src/Cli/Cli.ts +23 -0
  373. package/src/Cli/Event.ts +32 -0
  374. package/src/Cli/InkCLI.tsx +60 -0
  375. package/src/Cli/NamespaceTree.ts +199 -0
  376. package/src/Cli/Reporter.ts +8 -0
  377. package/src/Cli/components/ApprovePlan.tsx +44 -0
  378. package/src/Cli/components/Plan.tsx +148 -0
  379. package/src/Cli/components/PlanProgress.tsx +325 -0
  380. package/src/Cli/index.ts +2 -0
  381. package/src/Cloudflare/Account.ts +38 -0
  382. package/src/Cloudflare/Container.ts +1345 -0
  383. package/src/Cloudflare/D1/D1Connection.ts +74 -0
  384. package/src/Cloudflare/D1/D1Database.ts +222 -0
  385. package/src/Cloudflare/D1/D1DatabaseBinding.ts +25 -0
  386. package/src/Cloudflare/D1/index.ts +3 -0
  387. package/src/Cloudflare/KV/Delete.ts +38 -0
  388. package/src/Cloudflare/KV/Get.ts +40 -0
  389. package/src/Cloudflare/KV/GetWithMetadata.ts +54 -0
  390. package/src/Cloudflare/KV/List.ts +45 -0
  391. package/src/Cloudflare/KV/Namespace.ts +150 -0
  392. package/src/Cloudflare/KV/NamespaceBinding.ts +25 -0
  393. package/src/Cloudflare/KV/Put.ts +59 -0
  394. package/src/Cloudflare/KV/index.ts +6 -0
  395. package/src/Cloudflare/Logs.ts +122 -0
  396. package/src/Cloudflare/Providers.ts +80 -0
  397. package/src/Cloudflare/R2/Bucket.ts +173 -0
  398. package/src/Cloudflare/R2/BucketBinding.ts +31 -0
  399. package/src/Cloudflare/R2/CreateMultipartUpload.ts +59 -0
  400. package/src/Cloudflare/R2/DeleteObject.ts +41 -0
  401. package/src/Cloudflare/R2/GetObject.ts +47 -0
  402. package/src/Cloudflare/R2/HeadObject.ts +41 -0
  403. package/src/Cloudflare/R2/ListObjects.ts +45 -0
  404. package/src/Cloudflare/R2/MultipartUploadClient.ts +40 -0
  405. package/src/Cloudflare/R2/PutObject.ts +55 -0
  406. package/src/Cloudflare/R2/ResumeMultipartUpload.ts +48 -0
  407. package/src/Cloudflare/R2/UploadValue.ts +10 -0
  408. package/src/Cloudflare/R2/index.ts +9 -0
  409. package/src/Cloudflare/StageConfig.ts +8 -0
  410. package/src/Cloudflare/Website/StaticSite.ts +35 -0
  411. package/src/Cloudflare/Website/TanstackStart.ts +14 -0
  412. package/src/Cloudflare/Website/index.ts +2 -0
  413. package/src/Cloudflare/Workers/Assets.ts +286 -0
  414. package/src/Cloudflare/Workers/ConfigProvider.ts +9 -0
  415. package/src/Cloudflare/Workers/DurableObject.ts +558 -0
  416. package/src/Cloudflare/Workers/DynamicWorker.ts +144 -0
  417. package/src/Cloudflare/Workers/Fetch.ts +142 -0
  418. package/src/Cloudflare/Workers/Fetcher.ts +280 -0
  419. package/src/Cloudflare/Workers/HttpServer.ts +163 -0
  420. package/src/Cloudflare/Workers/Request.ts +5 -0
  421. package/src/Cloudflare/Workers/Rpc.ts +472 -0
  422. package/src/Cloudflare/Workers/WebSocket.ts +44 -0
  423. package/src/Cloudflare/Workers/Worker.ts +1222 -0
  424. package/src/Cloudflare/Workers/Workflow.ts +400 -0
  425. package/src/Cloudflare/Workers/cloudflare_workers.ts +25 -0
  426. package/src/Cloudflare/Workers/index.ts +11 -0
  427. package/src/Cloudflare/index.ts +8 -0
  428. package/src/Cloudflare/stream.ts +20 -0
  429. package/src/Config.ts +31 -0
  430. package/src/Construct.ts +75 -0
  431. package/src/Daemon/Client.ts +116 -0
  432. package/src/Daemon/Config.ts +28 -0
  433. package/src/Daemon/Errors.ts +48 -0
  434. package/src/Daemon/Lock.ts +162 -0
  435. package/src/Daemon/ProcessRegistry.ts +284 -0
  436. package/src/Daemon/RpcSchema.ts +43 -0
  437. package/src/Daemon/RpcServer.ts +231 -0
  438. package/src/Daemon/index.ts +27 -0
  439. package/src/Destroy.ts +15 -0
  440. package/src/Diff.ts +142 -0
  441. package/src/ExecutionContext.ts +30 -0
  442. package/src/FQN.ts +94 -0
  443. package/src/Http.ts +105 -0
  444. package/src/Input.ts +91 -0
  445. package/src/InstanceId.ts +19 -0
  446. package/src/Kubernetes/ConfigMap.ts +59 -0
  447. package/src/Kubernetes/Deployment.ts +123 -0
  448. package/src/Kubernetes/Job.ts +82 -0
  449. package/src/Kubernetes/Namespace.ts +49 -0
  450. package/src/Kubernetes/Object.ts +99 -0
  451. package/src/Kubernetes/Service.ts +78 -0
  452. package/src/Kubernetes/ServiceAccount.ts +49 -0
  453. package/src/Kubernetes/client.ts +298 -0
  454. package/src/Kubernetes/common.ts +23 -0
  455. package/src/Kubernetes/index.ts +11 -0
  456. package/src/Kubernetes/types.ts +177 -0
  457. package/src/Namespace.ts +64 -0
  458. package/src/Observability.ts +0 -0
  459. package/src/Output.ts +584 -0
  460. package/src/Phase.ts +5 -0
  461. package/src/PhysicalName.ts +62 -0
  462. package/src/Plan.ts +910 -0
  463. package/src/Platform.ts +398 -0
  464. package/src/Provider.ts +156 -0
  465. package/src/Random.ts +61 -0
  466. package/src/Ref.ts +46 -0
  467. package/src/RemovalPolicy.ts +51 -0
  468. package/src/Resource.ts +387 -0
  469. package/src/SQLite/BunSQLite.ts +132 -0
  470. package/src/SQLite/SQLite.ts +19 -0
  471. package/src/SQLite/SQLiteConnection.ts +55 -0
  472. package/src/SQLite/SQLiteError.ts +904 -0
  473. package/src/SQLite/SQLiteStatement.ts +24 -0
  474. package/src/SQLite/index.ts +6 -0
  475. package/src/SQLite/libSQL.ts +194 -0
  476. package/src/Schema.ts +333 -0
  477. package/src/Self.ts +10 -0
  478. package/src/Server/Process.ts +30 -0
  479. package/src/Server/S3BucketEventSource.ts +100 -0
  480. package/src/Server/SQSQueueEventSource.ts +77 -0
  481. package/src/Server/index.ts +3 -0
  482. package/src/Serverless/Function.ts +18 -0
  483. package/src/Serverless/index.ts +1 -0
  484. package/src/Spawn.ts +23 -0
  485. package/src/Stack.ts +84 -0
  486. package/src/Stage.ts +3 -0
  487. package/src/State/InMemoryState.ts +86 -0
  488. package/src/State/LocalState.ts +120 -0
  489. package/src/State/ResourceState.ts +121 -0
  490. package/src/State/State.ts +72 -0
  491. package/src/State/index.ts +4 -0
  492. package/src/Tags.ts +106 -0
  493. package/src/Test/TestCli.ts +21 -0
  494. package/src/Test/TestState.ts +37 -0
  495. package/src/Test/Vitest.ts +503 -0
  496. package/src/Test/index.ts +3 -0
  497. package/src/Trait.ts +105 -0
  498. package/src/Util/base32.ts +44 -0
  499. package/src/Util/camel.ts +23 -0
  500. package/src/Util/class.ts +7 -0
  501. package/src/Util/effect.ts +57 -0
  502. package/src/Util/index.ts +15 -0
  503. package/src/Util/instance.ts +9 -0
  504. package/src/Util/pointer.ts +5 -0
  505. package/src/Util/schema-to-type.ts +456 -0
  506. package/src/Util/service.ts +16 -0
  507. package/src/Util/sha256.ts +27 -0
  508. package/src/Util/stable.ts +41 -0
  509. package/src/Util/todo.ts +4 -0
  510. package/src/Util/types.ts +25 -0
  511. package/src/Util/unknown.ts +19 -0
  512. package/src/Util/zip.ts +27 -0
  513. package/src/index.ts +30 -26
  514. package/README.md +0 -185
  515. package/lib/$.d.ts +0 -5
  516. package/lib/$.d.ts.map +0 -1
  517. package/lib/$.js +0 -9
  518. package/lib/$.js.map +0 -1
  519. package/lib/app.d.ts +0 -15
  520. package/lib/app.d.ts.map +0 -1
  521. package/lib/app.js +0 -7
  522. package/lib/app.js.map +0 -1
  523. package/lib/apply.d.ts +0 -18
  524. package/lib/apply.d.ts.map +0 -1
  525. package/lib/apply.js +0 -569
  526. package/lib/apply.js.map +0 -1
  527. package/lib/assert-never.d.ts +0 -12
  528. package/lib/assert-never.d.ts.map +0 -1
  529. package/lib/assert-never.js +0 -11
  530. package/lib/assert-never.js.map +0 -1
  531. package/lib/aws/account.d.ts +0 -27
  532. package/lib/aws/account.d.ts.map +0 -1
  533. package/lib/aws/account.js +0 -33
  534. package/lib/aws/account.js.map +0 -1
  535. package/lib/aws/arn.d.ts +0 -2
  536. package/lib/aws/arn.d.ts.map +0 -1
  537. package/lib/aws/arn.js +0 -1
  538. package/lib/aws/arn.js.map +0 -1
  539. package/lib/aws/assets.d.ts +0 -8
  540. package/lib/aws/assets.d.ts.map +0 -1
  541. package/lib/aws/assets.js +0 -4
  542. package/lib/aws/assets.js.map +0 -1
  543. package/lib/aws/bundle.d.ts +0 -4
  544. package/lib/aws/bundle.d.ts.map +0 -1
  545. package/lib/aws/bundle.js +0 -4
  546. package/lib/aws/bundle.js.map +0 -1
  547. package/lib/aws/client.d.ts +0 -8
  548. package/lib/aws/client.d.ts.map +0 -1
  549. package/lib/aws/client.js +0 -40
  550. package/lib/aws/client.js.map +0 -1
  551. package/lib/aws/config.d.ts +0 -15
  552. package/lib/aws/config.d.ts.map +0 -1
  553. package/lib/aws/config.js +0 -1
  554. package/lib/aws/config.js.map +0 -1
  555. package/lib/aws/credentials.d.ts +0 -156
  556. package/lib/aws/credentials.d.ts.map +0 -1
  557. package/lib/aws/credentials.js +0 -196
  558. package/lib/aws/credentials.js.map +0 -1
  559. package/lib/aws/dynamodb/attribute-value.d.ts +0 -20
  560. package/lib/aws/dynamodb/attribute-value.d.ts.map +0 -1
  561. package/lib/aws/dynamodb/attribute-value.js +0 -217
  562. package/lib/aws/dynamodb/attribute-value.js.map +0 -1
  563. package/lib/aws/dynamodb/client.d.ts +0 -12
  564. package/lib/aws/dynamodb/client.d.ts.map +0 -1
  565. package/lib/aws/dynamodb/client.js +0 -11
  566. package/lib/aws/dynamodb/client.js.map +0 -1
  567. package/lib/aws/dynamodb/expr.d.ts +0 -41
  568. package/lib/aws/dynamodb/expr.d.ts.map +0 -1
  569. package/lib/aws/dynamodb/expr.js +0 -1
  570. package/lib/aws/dynamodb/expr.js.map +0 -1
  571. package/lib/aws/dynamodb/index.d.ts +0 -10
  572. package/lib/aws/dynamodb/index.d.ts.map +0 -1
  573. package/lib/aws/dynamodb/index.js +0 -9
  574. package/lib/aws/dynamodb/index.js.map +0 -1
  575. package/lib/aws/dynamodb/projection.d.ts +0 -25
  576. package/lib/aws/dynamodb/projection.d.ts.map +0 -1
  577. package/lib/aws/dynamodb/projection.js +0 -1
  578. package/lib/aws/dynamodb/projection.js.map +0 -1
  579. package/lib/aws/dynamodb/secondary-index.d.ts +0 -26
  580. package/lib/aws/dynamodb/secondary-index.d.ts.map +0 -1
  581. package/lib/aws/dynamodb/secondary-index.js +0 -4
  582. package/lib/aws/dynamodb/secondary-index.js.map +0 -1
  583. package/lib/aws/dynamodb/table.d.ts +0 -59
  584. package/lib/aws/dynamodb/table.d.ts.map +0 -1
  585. package/lib/aws/dynamodb/table.get-item.d.ts +0 -57
  586. package/lib/aws/dynamodb/table.get-item.d.ts.map +0 -1
  587. package/lib/aws/dynamodb/table.get-item.js +0 -77
  588. package/lib/aws/dynamodb/table.get-item.js.map +0 -1
  589. package/lib/aws/dynamodb/table.js +0 -4
  590. package/lib/aws/dynamodb/table.js.map +0 -1
  591. package/lib/aws/dynamodb/table.provider.d.ts +0 -7
  592. package/lib/aws/dynamodb/table.provider.d.ts.map +0 -1
  593. package/lib/aws/dynamodb/table.provider.js +0 -196
  594. package/lib/aws/dynamodb/table.provider.js.map +0 -1
  595. package/lib/aws/ec2/client.d.ts +0 -12
  596. package/lib/aws/ec2/client.d.ts.map +0 -1
  597. package/lib/aws/ec2/client.js +0 -11
  598. package/lib/aws/ec2/client.js.map +0 -1
  599. package/lib/aws/ec2/egress-only-igw.d.ts +0 -55
  600. package/lib/aws/ec2/egress-only-igw.d.ts.map +0 -1
  601. package/lib/aws/ec2/egress-only-igw.js +0 -4
  602. package/lib/aws/ec2/egress-only-igw.js.map +0 -1
  603. package/lib/aws/ec2/egress-only-igw.provider.d.ts +0 -6
  604. package/lib/aws/ec2/egress-only-igw.provider.d.ts.map +0 -1
  605. package/lib/aws/ec2/egress-only-igw.provider.js +0 -114
  606. package/lib/aws/ec2/egress-only-igw.provider.js.map +0 -1
  607. package/lib/aws/ec2/eip.d.ts +0 -85
  608. package/lib/aws/ec2/eip.d.ts.map +0 -1
  609. package/lib/aws/ec2/eip.js +0 -4
  610. package/lib/aws/ec2/eip.js.map +0 -1
  611. package/lib/aws/ec2/eip.provider.d.ts +0 -6
  612. package/lib/aws/ec2/eip.provider.d.ts.map +0 -1
  613. package/lib/aws/ec2/eip.provider.js +0 -135
  614. package/lib/aws/ec2/eip.provider.js.map +0 -1
  615. package/lib/aws/ec2/index.d.ts +0 -33
  616. package/lib/aws/ec2/index.d.ts.map +0 -1
  617. package/lib/aws/ec2/index.js +0 -33
  618. package/lib/aws/ec2/index.js.map +0 -1
  619. package/lib/aws/ec2/internet-gateway.d.ts +0 -65
  620. package/lib/aws/ec2/internet-gateway.d.ts.map +0 -1
  621. package/lib/aws/ec2/internet-gateway.js +0 -4
  622. package/lib/aws/ec2/internet-gateway.js.map +0 -1
  623. package/lib/aws/ec2/internet-gateway.provider.d.ts +0 -6
  624. package/lib/aws/ec2/internet-gateway.provider.d.ts.map +0 -1
  625. package/lib/aws/ec2/internet-gateway.provider.js +0 -197
  626. package/lib/aws/ec2/internet-gateway.provider.js.map +0 -1
  627. package/lib/aws/ec2/nat-gateway.d.ts +0 -127
  628. package/lib/aws/ec2/nat-gateway.d.ts.map +0 -1
  629. package/lib/aws/ec2/nat-gateway.js +0 -4
  630. package/lib/aws/ec2/nat-gateway.js.map +0 -1
  631. package/lib/aws/ec2/nat-gateway.provider.d.ts +0 -6
  632. package/lib/aws/ec2/nat-gateway.provider.d.ts.map +0 -1
  633. package/lib/aws/ec2/nat-gateway.provider.js +0 -222
  634. package/lib/aws/ec2/nat-gateway.provider.js.map +0 -1
  635. package/lib/aws/ec2/network-acl-association.d.ts +0 -44
  636. package/lib/aws/ec2/network-acl-association.d.ts.map +0 -1
  637. package/lib/aws/ec2/network-acl-association.js +0 -4
  638. package/lib/aws/ec2/network-acl-association.js.map +0 -1
  639. package/lib/aws/ec2/network-acl-association.provider.d.ts +0 -4
  640. package/lib/aws/ec2/network-acl-association.provider.d.ts.map +0 -1
  641. package/lib/aws/ec2/network-acl-association.provider.js +0 -115
  642. package/lib/aws/ec2/network-acl-association.provider.js.map +0 -1
  643. package/lib/aws/ec2/network-acl-entry.d.ts +0 -118
  644. package/lib/aws/ec2/network-acl-entry.d.ts.map +0 -1
  645. package/lib/aws/ec2/network-acl-entry.js +0 -3
  646. package/lib/aws/ec2/network-acl-entry.js.map +0 -1
  647. package/lib/aws/ec2/network-acl-entry.provider.d.ts +0 -4
  648. package/lib/aws/ec2/network-acl-entry.provider.d.ts.map +0 -1
  649. package/lib/aws/ec2/network-acl-entry.provider.js +0 -129
  650. package/lib/aws/ec2/network-acl-entry.provider.js.map +0 -1
  651. package/lib/aws/ec2/network-acl.d.ts +0 -82
  652. package/lib/aws/ec2/network-acl.d.ts.map +0 -1
  653. package/lib/aws/ec2/network-acl.js +0 -4
  654. package/lib/aws/ec2/network-acl.js.map +0 -1
  655. package/lib/aws/ec2/network-acl.provider.d.ts +0 -6
  656. package/lib/aws/ec2/network-acl.provider.d.ts.map +0 -1
  657. package/lib/aws/ec2/network-acl.provider.js +0 -136
  658. package/lib/aws/ec2/network-acl.provider.js.map +0 -1
  659. package/lib/aws/ec2/route-table-association.d.ts +0 -63
  660. package/lib/aws/ec2/route-table-association.d.ts.map +0 -1
  661. package/lib/aws/ec2/route-table-association.js +0 -4
  662. package/lib/aws/ec2/route-table-association.js.map +0 -1
  663. package/lib/aws/ec2/route-table-association.provider.d.ts +0 -4
  664. package/lib/aws/ec2/route-table-association.provider.d.ts.map +0 -1
  665. package/lib/aws/ec2/route-table-association.provider.js +0 -121
  666. package/lib/aws/ec2/route-table-association.provider.js.map +0 -1
  667. package/lib/aws/ec2/route-table.d.ts +0 -159
  668. package/lib/aws/ec2/route-table.d.ts.map +0 -1
  669. package/lib/aws/ec2/route-table.js +0 -4
  670. package/lib/aws/ec2/route-table.js.map +0 -1
  671. package/lib/aws/ec2/route-table.provider.d.ts +0 -6
  672. package/lib/aws/ec2/route-table.provider.d.ts.map +0 -1
  673. package/lib/aws/ec2/route-table.provider.js +0 -213
  674. package/lib/aws/ec2/route-table.provider.js.map +0 -1
  675. package/lib/aws/ec2/route.d.ts +0 -155
  676. package/lib/aws/ec2/route.d.ts.map +0 -1
  677. package/lib/aws/ec2/route.js +0 -3
  678. package/lib/aws/ec2/route.js.map +0 -1
  679. package/lib/aws/ec2/route.provider.d.ts +0 -4
  680. package/lib/aws/ec2/route.provider.d.ts.map +0 -1
  681. package/lib/aws/ec2/route.provider.js +0 -166
  682. package/lib/aws/ec2/route.provider.js.map +0 -1
  683. package/lib/aws/ec2/security-group-rule.d.ts +0 -118
  684. package/lib/aws/ec2/security-group-rule.d.ts.map +0 -1
  685. package/lib/aws/ec2/security-group-rule.js +0 -4
  686. package/lib/aws/ec2/security-group-rule.js.map +0 -1
  687. package/lib/aws/ec2/security-group-rule.provider.d.ts +0 -4
  688. package/lib/aws/ec2/security-group-rule.provider.d.ts.map +0 -1
  689. package/lib/aws/ec2/security-group-rule.provider.js +0 -193
  690. package/lib/aws/ec2/security-group-rule.provider.js.map +0 -1
  691. package/lib/aws/ec2/security-group.d.ts +0 -147
  692. package/lib/aws/ec2/security-group.d.ts.map +0 -1
  693. package/lib/aws/ec2/security-group.js +0 -4
  694. package/lib/aws/ec2/security-group.js.map +0 -1
  695. package/lib/aws/ec2/security-group.provider.d.ts +0 -6
  696. package/lib/aws/ec2/security-group.provider.d.ts.map +0 -1
  697. package/lib/aws/ec2/security-group.provider.js +0 -291
  698. package/lib/aws/ec2/security-group.provider.js.map +0 -1
  699. package/lib/aws/ec2/subnet.d.ts +0 -175
  700. package/lib/aws/ec2/subnet.d.ts.map +0 -1
  701. package/lib/aws/ec2/subnet.js +0 -4
  702. package/lib/aws/ec2/subnet.js.map +0 -1
  703. package/lib/aws/ec2/subnet.provider.d.ts +0 -4
  704. package/lib/aws/ec2/subnet.provider.d.ts.map +0 -1
  705. package/lib/aws/ec2/subnet.provider.js +0 -253
  706. package/lib/aws/ec2/subnet.provider.js.map +0 -1
  707. package/lib/aws/ec2/vpc-endpoint.d.ts +0 -176
  708. package/lib/aws/ec2/vpc-endpoint.d.ts.map +0 -1
  709. package/lib/aws/ec2/vpc-endpoint.js +0 -4
  710. package/lib/aws/ec2/vpc-endpoint.js.map +0 -1
  711. package/lib/aws/ec2/vpc-endpoint.provider.d.ts +0 -6
  712. package/lib/aws/ec2/vpc-endpoint.provider.d.ts.map +0 -1
  713. package/lib/aws/ec2/vpc-endpoint.provider.js +0 -315
  714. package/lib/aws/ec2/vpc-endpoint.provider.js.map +0 -1
  715. package/lib/aws/ec2/vpc.d.ts +0 -136
  716. package/lib/aws/ec2/vpc.d.ts.map +0 -1
  717. package/lib/aws/ec2/vpc.js +0 -4
  718. package/lib/aws/ec2/vpc.js.map +0 -1
  719. package/lib/aws/ec2/vpc.provider.d.ts +0 -6
  720. package/lib/aws/ec2/vpc.provider.d.ts.map +0 -1
  721. package/lib/aws/ec2/vpc.provider.js +0 -212
  722. package/lib/aws/ec2/vpc.provider.js.map +0 -1
  723. package/lib/aws/iam.d.ts +0 -23
  724. package/lib/aws/iam.d.ts.map +0 -1
  725. package/lib/aws/iam.js +0 -7
  726. package/lib/aws/iam.js.map +0 -1
  727. package/lib/aws/index.d.ts +0 -28
  728. package/lib/aws/index.d.ts.map +0 -1
  729. package/lib/aws/index.js +0 -21
  730. package/lib/aws/index.js.map +0 -1
  731. package/lib/aws/lambda/client.d.ts +0 -8
  732. package/lib/aws/lambda/client.d.ts.map +0 -1
  733. package/lib/aws/lambda/client.js +0 -7
  734. package/lib/aws/lambda/client.js.map +0 -1
  735. package/lib/aws/lambda/consume.d.ts +0 -16
  736. package/lib/aws/lambda/consume.d.ts.map +0 -1
  737. package/lib/aws/lambda/consume.js +0 -30
  738. package/lib/aws/lambda/consume.js.map +0 -1
  739. package/lib/aws/lambda/function.d.ts +0 -41
  740. package/lib/aws/lambda/function.d.ts.map +0 -1
  741. package/lib/aws/lambda/function.handler.d.ts +0 -7
  742. package/lib/aws/lambda/function.handler.d.ts.map +0 -1
  743. package/lib/aws/lambda/function.handler.js +0 -8
  744. package/lib/aws/lambda/function.handler.js.map +0 -1
  745. package/lib/aws/lambda/function.invoke.d.ts +0 -12
  746. package/lib/aws/lambda/function.invoke.d.ts.map +0 -1
  747. package/lib/aws/lambda/function.invoke.js +0 -33
  748. package/lib/aws/lambda/function.invoke.js.map +0 -1
  749. package/lib/aws/lambda/function.js +0 -3
  750. package/lib/aws/lambda/function.js.map +0 -1
  751. package/lib/aws/lambda/function.provider.d.ts +0 -10
  752. package/lib/aws/lambda/function.provider.d.ts.map +0 -1
  753. package/lib/aws/lambda/function.provider.js +0 -464
  754. package/lib/aws/lambda/function.provider.js.map +0 -1
  755. package/lib/aws/lambda/index.d.ts +0 -9
  756. package/lib/aws/lambda/index.d.ts.map +0 -1
  757. package/lib/aws/lambda/index.js +0 -10
  758. package/lib/aws/lambda/index.js.map +0 -1
  759. package/lib/aws/lambda/serve.d.ts +0 -12
  760. package/lib/aws/lambda/serve.d.ts.map +0 -1
  761. package/lib/aws/lambda/serve.js +0 -7
  762. package/lib/aws/lambda/serve.js.map +0 -1
  763. package/lib/aws/parse-ini.d.ts +0 -4
  764. package/lib/aws/parse-ini.d.ts.map +0 -1
  765. package/lib/aws/parse-ini.js +0 -67
  766. package/lib/aws/parse-ini.js.map +0 -1
  767. package/lib/aws/profile.d.ts +0 -6
  768. package/lib/aws/profile.d.ts.map +0 -1
  769. package/lib/aws/profile.js +0 -4
  770. package/lib/aws/profile.js.map +0 -1
  771. package/lib/aws/region.d.ts +0 -31
  772. package/lib/aws/region.d.ts.map +0 -1
  773. package/lib/aws/region.js +0 -46
  774. package/lib/aws/region.js.map +0 -1
  775. package/lib/aws/s3.d.ts +0 -8
  776. package/lib/aws/s3.d.ts.map +0 -1
  777. package/lib/aws/s3.js +0 -7
  778. package/lib/aws/s3.js.map +0 -1
  779. package/lib/aws/sqs/client.d.ts +0 -12
  780. package/lib/aws/sqs/client.d.ts.map +0 -1
  781. package/lib/aws/sqs/client.js +0 -11
  782. package/lib/aws/sqs/client.js.map +0 -1
  783. package/lib/aws/sqs/index.d.ts +0 -8
  784. package/lib/aws/sqs/index.d.ts.map +0 -1
  785. package/lib/aws/sqs/index.js +0 -8
  786. package/lib/aws/sqs/index.js.map +0 -1
  787. package/lib/aws/sqs/queue.consume.d.ts +0 -12
  788. package/lib/aws/sqs/queue.consume.d.ts.map +0 -1
  789. package/lib/aws/sqs/queue.consume.js +0 -2
  790. package/lib/aws/sqs/queue.consume.js.map +0 -1
  791. package/lib/aws/sqs/queue.d.ts +0 -80
  792. package/lib/aws/sqs/queue.d.ts.map +0 -1
  793. package/lib/aws/sqs/queue.event-source.d.ts +0 -22
  794. package/lib/aws/sqs/queue.event-source.d.ts.map +0 -1
  795. package/lib/aws/sqs/queue.event-source.js +0 -130
  796. package/lib/aws/sqs/queue.event-source.js.map +0 -1
  797. package/lib/aws/sqs/queue.js +0 -3
  798. package/lib/aws/sqs/queue.js.map +0 -1
  799. package/lib/aws/sqs/queue.provider.d.ts +0 -6
  800. package/lib/aws/sqs/queue.provider.d.ts.map +0 -1
  801. package/lib/aws/sqs/queue.provider.js +0 -95
  802. package/lib/aws/sqs/queue.provider.js.map +0 -1
  803. package/lib/aws/sqs/queue.send-message.d.ts +0 -13
  804. package/lib/aws/sqs/queue.send-message.d.ts.map +0 -1
  805. package/lib/aws/sqs/queue.send-message.js +0 -34
  806. package/lib/aws/sqs/queue.send-message.js.map +0 -1
  807. package/lib/aws/sts.d.ts +0 -8
  808. package/lib/aws/sts.d.ts.map +0 -1
  809. package/lib/aws/sts.js +0 -7
  810. package/lib/aws/sts.js.map +0 -1
  811. package/lib/aws/zip.d.ts +0 -3
  812. package/lib/aws/zip.d.ts.map +0 -1
  813. package/lib/aws/zip.js +0 -12
  814. package/lib/aws/zip.js.map +0 -1
  815. package/lib/binding.d.ts +0 -106
  816. package/lib/binding.d.ts.map +0 -1
  817. package/lib/binding.js +0 -27
  818. package/lib/binding.js.map +0 -1
  819. package/lib/capability.d.ts +0 -49
  820. package/lib/capability.d.ts.map +0 -1
  821. package/lib/capability.js +0 -1
  822. package/lib/capability.js.map +0 -1
  823. package/lib/cli/components/ApprovePlan.d.ts +0 -8
  824. package/lib/cli/components/ApprovePlan.d.ts.map +0 -1
  825. package/lib/cli/components/ApprovePlan.js +0 -30
  826. package/lib/cli/components/ApprovePlan.js.map +0 -1
  827. package/lib/cli/components/Plan.d.ts +0 -7
  828. package/lib/cli/components/Plan.d.ts.map +0 -1
  829. package/lib/cli/components/Plan.js +0 -100
  830. package/lib/cli/components/Plan.js.map +0 -1
  831. package/lib/cli/components/PlanProgress.d.ts +0 -13
  832. package/lib/cli/components/PlanProgress.d.ts.map +0 -1
  833. package/lib/cli/components/PlanProgress.js +0 -176
  834. package/lib/cli/components/PlanProgress.js.map +0 -1
  835. package/lib/cli/ink-service.d.ts +0 -4
  836. package/lib/cli/ink-service.d.ts.map +0 -1
  837. package/lib/cli/ink-service.js +0 -43
  838. package/lib/cli/ink-service.js.map +0 -1
  839. package/lib/cli/service.d.ts +0 -21
  840. package/lib/cli/service.d.ts.map +0 -1
  841. package/lib/cli/service.js +0 -5
  842. package/lib/cli/service.js.map +0 -1
  843. package/lib/cloudflare/account.d.ts +0 -10
  844. package/lib/cloudflare/account.d.ts.map +0 -1
  845. package/lib/cloudflare/account.js +0 -24
  846. package/lib/cloudflare/account.js.map +0 -1
  847. package/lib/cloudflare/api.d.ts +0 -36
  848. package/lib/cloudflare/api.d.ts.map +0 -1
  849. package/lib/cloudflare/api.js +0 -100
  850. package/lib/cloudflare/api.js.map +0 -1
  851. package/lib/cloudflare/config.d.ts +0 -9
  852. package/lib/cloudflare/config.d.ts.map +0 -1
  853. package/lib/cloudflare/config.js +0 -1
  854. package/lib/cloudflare/config.js.map +0 -1
  855. package/lib/cloudflare/context.d.ts +0 -27
  856. package/lib/cloudflare/context.d.ts.map +0 -1
  857. package/lib/cloudflare/context.js +0 -24
  858. package/lib/cloudflare/context.js.map +0 -1
  859. package/lib/cloudflare/index.d.ts +0 -8
  860. package/lib/cloudflare/index.d.ts.map +0 -1
  861. package/lib/cloudflare/index.js +0 -8
  862. package/lib/cloudflare/index.js.map +0 -1
  863. package/lib/cloudflare/kv/index.d.ts +0 -4
  864. package/lib/cloudflare/kv/index.d.ts.map +0 -1
  865. package/lib/cloudflare/kv/index.js +0 -4
  866. package/lib/cloudflare/kv/index.js.map +0 -1
  867. package/lib/cloudflare/kv/namespace.binding.d.ts +0 -10
  868. package/lib/cloudflare/kv/namespace.binding.d.ts.map +0 -1
  869. package/lib/cloudflare/kv/namespace.binding.js +0 -15
  870. package/lib/cloudflare/kv/namespace.binding.js.map +0 -1
  871. package/lib/cloudflare/kv/namespace.client.d.ts +0 -11
  872. package/lib/cloudflare/kv/namespace.client.d.ts.map +0 -1
  873. package/lib/cloudflare/kv/namespace.client.js +0 -31
  874. package/lib/cloudflare/kv/namespace.client.js.map +0 -1
  875. package/lib/cloudflare/kv/namespace.d.ts +0 -24
  876. package/lib/cloudflare/kv/namespace.d.ts.map +0 -1
  877. package/lib/cloudflare/kv/namespace.js +0 -3
  878. package/lib/cloudflare/kv/namespace.js.map +0 -1
  879. package/lib/cloudflare/kv/namespace.provider.d.ts +0 -5
  880. package/lib/cloudflare/kv/namespace.provider.d.ts.map +0 -1
  881. package/lib/cloudflare/kv/namespace.provider.js +0 -85
  882. package/lib/cloudflare/kv/namespace.provider.js.map +0 -1
  883. package/lib/cloudflare/live.d.ts +0 -11
  884. package/lib/cloudflare/live.d.ts.map +0 -1
  885. package/lib/cloudflare/live.js +0 -15
  886. package/lib/cloudflare/live.js.map +0 -1
  887. package/lib/cloudflare/r2/bucket.binding.d.ts +0 -10
  888. package/lib/cloudflare/r2/bucket.binding.d.ts.map +0 -1
  889. package/lib/cloudflare/r2/bucket.binding.js +0 -18
  890. package/lib/cloudflare/r2/bucket.binding.js.map +0 -1
  891. package/lib/cloudflare/r2/bucket.client.d.ts +0 -8
  892. package/lib/cloudflare/r2/bucket.client.d.ts.map +0 -1
  893. package/lib/cloudflare/r2/bucket.client.js +0 -9
  894. package/lib/cloudflare/r2/bucket.client.js.map +0 -1
  895. package/lib/cloudflare/r2/bucket.d.ts +0 -33
  896. package/lib/cloudflare/r2/bucket.d.ts.map +0 -1
  897. package/lib/cloudflare/r2/bucket.del.d.ts +0 -4
  898. package/lib/cloudflare/r2/bucket.del.d.ts.map +0 -1
  899. package/lib/cloudflare/r2/bucket.del.js +0 -7
  900. package/lib/cloudflare/r2/bucket.del.js.map +0 -1
  901. package/lib/cloudflare/r2/bucket.get.d.ts +0 -5
  902. package/lib/cloudflare/r2/bucket.get.d.ts.map +0 -1
  903. package/lib/cloudflare/r2/bucket.get.js +0 -7
  904. package/lib/cloudflare/r2/bucket.get.js.map +0 -1
  905. package/lib/cloudflare/r2/bucket.head.d.ts +0 -4
  906. package/lib/cloudflare/r2/bucket.head.d.ts.map +0 -1
  907. package/lib/cloudflare/r2/bucket.head.js +0 -7
  908. package/lib/cloudflare/r2/bucket.head.js.map +0 -1
  909. package/lib/cloudflare/r2/bucket.js +0 -3
  910. package/lib/cloudflare/r2/bucket.js.map +0 -1
  911. package/lib/cloudflare/r2/bucket.list.d.ts +0 -5
  912. package/lib/cloudflare/r2/bucket.list.d.ts.map +0 -1
  913. package/lib/cloudflare/r2/bucket.list.js +0 -7
  914. package/lib/cloudflare/r2/bucket.list.js.map +0 -1
  915. package/lib/cloudflare/r2/bucket.multipart.d.ts +0 -19
  916. package/lib/cloudflare/r2/bucket.multipart.d.ts.map +0 -1
  917. package/lib/cloudflare/r2/bucket.multipart.js +0 -25
  918. package/lib/cloudflare/r2/bucket.multipart.js.map +0 -1
  919. package/lib/cloudflare/r2/bucket.provider.d.ts +0 -5
  920. package/lib/cloudflare/r2/bucket.provider.d.ts.map +0 -1
  921. package/lib/cloudflare/r2/bucket.provider.js +0 -78
  922. package/lib/cloudflare/r2/bucket.provider.js.map +0 -1
  923. package/lib/cloudflare/r2/bucket.put.d.ts +0 -6
  924. package/lib/cloudflare/r2/bucket.put.d.ts.map +0 -1
  925. package/lib/cloudflare/r2/bucket.put.js +0 -8
  926. package/lib/cloudflare/r2/bucket.put.js.map +0 -1
  927. package/lib/cloudflare/r2/index.d.ts +0 -10
  928. package/lib/cloudflare/r2/index.d.ts.map +0 -1
  929. package/lib/cloudflare/r2/index.js +0 -10
  930. package/lib/cloudflare/r2/index.js.map +0 -1
  931. package/lib/cloudflare/stream.d.ts +0 -10
  932. package/lib/cloudflare/stream.d.ts.map +0 -1
  933. package/lib/cloudflare/stream.js +0 -16
  934. package/lib/cloudflare/stream.js.map +0 -1
  935. package/lib/cloudflare/worker/assets.fetch.d.ts +0 -9
  936. package/lib/cloudflare/worker/assets.fetch.d.ts.map +0 -1
  937. package/lib/cloudflare/worker/assets.fetch.js +0 -12
  938. package/lib/cloudflare/worker/assets.fetch.js.map +0 -1
  939. package/lib/cloudflare/worker/assets.provider.d.ts +0 -66
  940. package/lib/cloudflare/worker/assets.provider.d.ts.map +0 -1
  941. package/lib/cloudflare/worker/assets.provider.js +0 -145
  942. package/lib/cloudflare/worker/assets.provider.js.map +0 -1
  943. package/lib/cloudflare/worker/index.d.ts +0 -5
  944. package/lib/cloudflare/worker/index.d.ts.map +0 -1
  945. package/lib/cloudflare/worker/index.js +0 -5
  946. package/lib/cloudflare/worker/index.js.map +0 -1
  947. package/lib/cloudflare/worker/worker.d.ts +0 -66
  948. package/lib/cloudflare/worker/worker.d.ts.map +0 -1
  949. package/lib/cloudflare/worker/worker.handler.d.ts +0 -11
  950. package/lib/cloudflare/worker/worker.handler.d.ts.map +0 -1
  951. package/lib/cloudflare/worker/worker.handler.js +0 -15
  952. package/lib/cloudflare/worker/worker.handler.js.map +0 -1
  953. package/lib/cloudflare/worker/worker.js +0 -4
  954. package/lib/cloudflare/worker/worker.js.map +0 -1
  955. package/lib/cloudflare/worker/worker.provider.d.ts +0 -10
  956. package/lib/cloudflare/worker/worker.provider.d.ts.map +0 -1
  957. package/lib/cloudflare/worker/worker.provider.js +0 -225
  958. package/lib/cloudflare/worker/worker.provider.js.map +0 -1
  959. package/lib/cloudflare/worker/worker.serve.d.ts +0 -39
  960. package/lib/cloudflare/worker/worker.serve.d.ts.map +0 -1
  961. package/lib/cloudflare/worker/worker.serve.js +0 -4
  962. package/lib/cloudflare/worker/worker.serve.js.map +0 -1
  963. package/lib/data.d.ts +0 -3
  964. package/lib/data.d.ts.map +0 -1
  965. package/lib/data.js +0 -8
  966. package/lib/data.js.map +0 -1
  967. package/lib/destroy.d.ts +0 -2
  968. package/lib/destroy.d.ts.map +0 -1
  969. package/lib/destroy.js +0 -3
  970. package/lib/destroy.js.map +0 -1
  971. package/lib/diff.d.ts +0 -18
  972. package/lib/diff.d.ts.map +0 -1
  973. package/lib/diff.js +0 -22
  974. package/lib/diff.js.map +0 -1
  975. package/lib/dot-alchemy.d.ts +0 -10
  976. package/lib/dot-alchemy.d.ts.map +0 -1
  977. package/lib/dot-alchemy.js +0 -15
  978. package/lib/dot-alchemy.js.map +0 -1
  979. package/lib/env.d.ts +0 -9
  980. package/lib/env.d.ts.map +0 -1
  981. package/lib/env.js +0 -19
  982. package/lib/env.js.map +0 -1
  983. package/lib/esbuild.d.ts +0 -28
  984. package/lib/esbuild.d.ts.map +0 -1
  985. package/lib/esbuild.js +0 -63
  986. package/lib/esbuild.js.map +0 -1
  987. package/lib/event.d.ts +0 -16
  988. package/lib/event.d.ts.map +0 -1
  989. package/lib/event.js +0 -1
  990. package/lib/event.js.map +0 -1
  991. package/lib/exports.d.ts +0 -9
  992. package/lib/exports.d.ts.map +0 -1
  993. package/lib/exports.js +0 -13
  994. package/lib/exports.js.map +0 -1
  995. package/lib/index.d.ts +0 -27
  996. package/lib/index.d.ts.map +0 -1
  997. package/lib/index.js +0 -27
  998. package/lib/index.js.map +0 -1
  999. package/lib/input.d.ts +0 -32
  1000. package/lib/input.d.ts.map +0 -1
  1001. package/lib/input.js +0 -1
  1002. package/lib/input.js.map +0 -1
  1003. package/lib/instance-id.d.ts +0 -12
  1004. package/lib/instance-id.d.ts.map +0 -1
  1005. package/lib/instance-id.js +0 -16
  1006. package/lib/instance-id.js.map +0 -1
  1007. package/lib/output.d.ts +0 -145
  1008. package/lib/output.d.ts.map +0 -1
  1009. package/lib/output.js +0 -283
  1010. package/lib/output.js.map +0 -1
  1011. package/lib/phase.d.ts +0 -2
  1012. package/lib/phase.d.ts.map +0 -1
  1013. package/lib/phase.js +0 -1
  1014. package/lib/phase.js.map +0 -1
  1015. package/lib/physical-name.d.ts +0 -28
  1016. package/lib/physical-name.d.ts.map +0 -1
  1017. package/lib/physical-name.js +0 -55
  1018. package/lib/physical-name.js.map +0 -1
  1019. package/lib/plan.d.ts +0 -135
  1020. package/lib/plan.d.ts.map +0 -1
  1021. package/lib/plan.js +0 -687
  1022. package/lib/plan.js.map +0 -1
  1023. package/lib/policy.d.ts +0 -54
  1024. package/lib/policy.d.ts.map +0 -1
  1025. package/lib/policy.js +0 -24
  1026. package/lib/policy.js.map +0 -1
  1027. package/lib/provider.d.ts +0 -71
  1028. package/lib/provider.d.ts.map +0 -1
  1029. package/lib/provider.js +0 -11
  1030. package/lib/provider.js.map +0 -1
  1031. package/lib/ref.d.ts +0 -14
  1032. package/lib/ref.d.ts.map +0 -1
  1033. package/lib/ref.js +0 -21
  1034. package/lib/ref.js.map +0 -1
  1035. package/lib/reporter.d.ts +0 -8
  1036. package/lib/reporter.d.ts.map +0 -1
  1037. package/lib/reporter.js +0 -4
  1038. package/lib/reporter.js.map +0 -1
  1039. package/lib/resource.d.ts +0 -36
  1040. package/lib/resource.d.ts.map +0 -1
  1041. package/lib/resource.js +0 -26
  1042. package/lib/resource.js.map +0 -1
  1043. package/lib/runtime.d.ts +0 -40
  1044. package/lib/runtime.d.ts.map +0 -1
  1045. package/lib/runtime.js +0 -54
  1046. package/lib/runtime.js.map +0 -1
  1047. package/lib/schema.d.ts +0 -37
  1048. package/lib/schema.d.ts.map +0 -1
  1049. package/lib/schema.js +0 -61
  1050. package/lib/schema.js.map +0 -1
  1051. package/lib/service.d.ts +0 -36
  1052. package/lib/service.d.ts.map +0 -1
  1053. package/lib/service.js +0 -4
  1054. package/lib/service.js.map +0 -1
  1055. package/lib/sha256.d.ts +0 -5
  1056. package/lib/sha256.d.ts.map +0 -1
  1057. package/lib/sha256.js +0 -16
  1058. package/lib/sha256.js.map +0 -1
  1059. package/lib/stack.d.ts +0 -60
  1060. package/lib/stack.d.ts.map +0 -1
  1061. package/lib/stack.js +0 -11
  1062. package/lib/stack.js.map +0 -1
  1063. package/lib/stage.d.ts +0 -39
  1064. package/lib/stage.d.ts.map +0 -1
  1065. package/lib/stage.js +0 -32
  1066. package/lib/stage.js.map +0 -1
  1067. package/lib/state.d.ts +0 -157
  1068. package/lib/state.d.ts.map +0 -1
  1069. package/lib/state.js +0 -71
  1070. package/lib/state.js.map +0 -1
  1071. package/lib/tags.d.ts +0 -44
  1072. package/lib/tags.d.ts.map +0 -1
  1073. package/lib/tags.js +0 -73
  1074. package/lib/tags.js.map +0 -1
  1075. package/lib/test.d.ts +0 -35
  1076. package/lib/test.d.ts.map +0 -1
  1077. package/lib/test.js +0 -68
  1078. package/lib/test.js.map +0 -1
  1079. package/lib/todo.d.ts +0 -3
  1080. package/lib/todo.d.ts.map +0 -1
  1081. package/lib/todo.js +0 -3
  1082. package/lib/todo.js.map +0 -1
  1083. package/lib/tsconfig.test.tsbuildinfo +0 -1
  1084. package/lib/type.d.ts +0 -6
  1085. package/lib/type.d.ts.map +0 -1
  1086. package/lib/type.js +0 -3
  1087. package/lib/type.js.map +0 -1
  1088. package/lib/unknown.d.ts +0 -4
  1089. package/lib/unknown.d.ts.map +0 -1
  1090. package/lib/unknown.js +0 -4
  1091. package/lib/unknown.js.map +0 -1
  1092. package/lib/user.d.ts +0 -3
  1093. package/lib/user.d.ts.map +0 -1
  1094. package/lib/user.js +0 -3
  1095. package/lib/user.js.map +0 -1
  1096. package/lib/util.d.ts +0 -6
  1097. package/lib/util.d.ts.map +0 -1
  1098. package/lib/util.js +0 -9
  1099. package/lib/util.js.map +0 -1
  1100. package/src/$.ts +0 -17
  1101. package/src/app.ts +0 -15
  1102. package/src/apply.ts +0 -867
  1103. package/src/aws/account.ts +0 -57
  1104. package/src/aws/assets.ts +0 -8
  1105. package/src/aws/bundle.ts +0 -5
  1106. package/src/aws/client.ts +0 -67
  1107. package/src/aws/config.ts +0 -16
  1108. package/src/aws/credentials.ts +0 -444
  1109. package/src/aws/dynamodb/attribute-value.ts +0 -240
  1110. package/src/aws/dynamodb/client.ts +0 -20
  1111. package/src/aws/dynamodb/index.ts +0 -12
  1112. package/src/aws/dynamodb/projection.ts +0 -159
  1113. package/src/aws/dynamodb/secondary-index.ts +0 -45
  1114. package/src/aws/dynamodb/table.get-item.ts +0 -173
  1115. package/src/aws/dynamodb/table.provider.ts +0 -288
  1116. package/src/aws/dynamodb/table.ts +0 -98
  1117. package/src/aws/ec2/client.ts +0 -20
  1118. package/src/aws/ec2/egress-only-igw.provider.ts +0 -181
  1119. package/src/aws/ec2/egress-only-igw.ts +0 -77
  1120. package/src/aws/ec2/eip.provider.ts +0 -191
  1121. package/src/aws/ec2/eip.ts +0 -106
  1122. package/src/aws/ec2/index.ts +0 -33
  1123. package/src/aws/ec2/internet-gateway.provider.ts +0 -325
  1124. package/src/aws/ec2/internet-gateway.ts +0 -79
  1125. package/src/aws/ec2/nat-gateway.provider.ts +0 -341
  1126. package/src/aws/ec2/nat-gateway.ts +0 -155
  1127. package/src/aws/ec2/network-acl-association.provider.ts +0 -181
  1128. package/src/aws/ec2/network-acl-association.ts +0 -60
  1129. package/src/aws/ec2/network-acl-entry.provider.ts +0 -218
  1130. package/src/aws/ec2/network-acl-entry.ts +0 -140
  1131. package/src/aws/ec2/network-acl.provider.ts +0 -195
  1132. package/src/aws/ec2/network-acl.ts +0 -102
  1133. package/src/aws/ec2/route-table-association.provider.ts +0 -213
  1134. package/src/aws/ec2/route-table-association.ts +0 -82
  1135. package/src/aws/ec2/route-table.provider.ts +0 -305
  1136. package/src/aws/ec2/route-table.ts +0 -175
  1137. package/src/aws/ec2/route.provider.ts +0 -212
  1138. package/src/aws/ec2/route.ts +0 -192
  1139. package/src/aws/ec2/security-group-rule.provider.ts +0 -264
  1140. package/src/aws/ec2/security-group-rule.ts +0 -151
  1141. package/src/aws/ec2/security-group.provider.ts +0 -392
  1142. package/src/aws/ec2/security-group.ts +0 -182
  1143. package/src/aws/ec2/subnet.provider.ts +0 -359
  1144. package/src/aws/ec2/subnet.ts +0 -213
  1145. package/src/aws/ec2/vpc-endpoint.provider.ts +0 -466
  1146. package/src/aws/ec2/vpc-endpoint.ts +0 -213
  1147. package/src/aws/ec2/vpc.provider.ts +0 -301
  1148. package/src/aws/ec2/vpc.ts +0 -165
  1149. package/src/aws/iam.ts +0 -30
  1150. package/src/aws/index.ts +0 -72
  1151. package/src/aws/lambda/client.ts +0 -14
  1152. package/src/aws/lambda/consume.ts +0 -64
  1153. package/src/aws/lambda/function.handler.ts +0 -30
  1154. package/src/aws/lambda/function.invoke.ts +0 -46
  1155. package/src/aws/lambda/function.provider.ts +0 -675
  1156. package/src/aws/lambda/function.ts +0 -50
  1157. package/src/aws/lambda/index.ts +0 -11
  1158. package/src/aws/lambda/serve.ts +0 -29
  1159. package/src/aws/parse-ini.ts +0 -80
  1160. package/src/aws/profile.ts +0 -3
  1161. package/src/aws/region.ts +0 -76
  1162. package/src/aws/s3.ts +0 -10
  1163. package/src/aws/sqs/client.ts +0 -20
  1164. package/src/aws/sqs/index.ts +0 -8
  1165. package/src/aws/sqs/queue.consume.ts +0 -13
  1166. package/src/aws/sqs/queue.event-source.ts +0 -225
  1167. package/src/aws/sqs/queue.provider.ts +0 -118
  1168. package/src/aws/sqs/queue.send-message.ts +0 -50
  1169. package/src/aws/sqs/queue.ts +0 -84
  1170. package/src/aws/sts.ts +0 -13
  1171. package/src/aws/zip.ts +0 -17
  1172. package/src/binding.ts +0 -240
  1173. package/src/capability.ts +0 -63
  1174. package/src/cli/components/ApprovePlan.tsx +0 -44
  1175. package/src/cli/components/Plan.tsx +0 -155
  1176. package/src/cli/components/PlanProgress.tsx +0 -225
  1177. package/src/cli/index.ts +0 -2
  1178. package/src/cli/ink-service.tsx +0 -61
  1179. package/src/cli/service.ts +0 -23
  1180. package/src/cloudflare/account.ts +0 -37
  1181. package/src/cloudflare/api.ts +0 -156
  1182. package/src/cloudflare/config.ts +0 -7
  1183. package/src/cloudflare/context.ts +0 -49
  1184. package/src/cloudflare/index.ts +0 -8
  1185. package/src/cloudflare/kv/index.ts +0 -3
  1186. package/src/cloudflare/kv/namespace.binding.ts +0 -29
  1187. package/src/cloudflare/kv/namespace.client.ts +0 -70
  1188. package/src/cloudflare/kv/namespace.provider.ts +0 -103
  1189. package/src/cloudflare/kv/namespace.ts +0 -30
  1190. package/src/cloudflare/live.ts +0 -32
  1191. package/src/cloudflare/r2/bucket.binding.ts +0 -31
  1192. package/src/cloudflare/r2/bucket.client.ts +0 -22
  1193. package/src/cloudflare/r2/bucket.del.ts +0 -11
  1194. package/src/cloudflare/r2/bucket.get.ts +0 -13
  1195. package/src/cloudflare/r2/bucket.head.ts +0 -11
  1196. package/src/cloudflare/r2/bucket.list.ts +0 -12
  1197. package/src/cloudflare/r2/bucket.multipart.ts +0 -55
  1198. package/src/cloudflare/r2/bucket.provider.ts +0 -94
  1199. package/src/cloudflare/r2/bucket.put.ts +0 -17
  1200. package/src/cloudflare/r2/bucket.ts +0 -44
  1201. package/src/cloudflare/r2/index.ts +0 -9
  1202. package/src/cloudflare/stream.ts +0 -21
  1203. package/src/cloudflare/worker/assets.fetch.ts +0 -29
  1204. package/src/cloudflare/worker/assets.provider.ts +0 -249
  1205. package/src/cloudflare/worker/index.ts +0 -4
  1206. package/src/cloudflare/worker/worker.handler.ts +0 -39
  1207. package/src/cloudflare/worker/worker.provider.ts +0 -279
  1208. package/src/cloudflare/worker/worker.serve.ts +0 -22
  1209. package/src/cloudflare/worker/worker.ts +0 -77
  1210. package/src/destroy.ts +0 -3
  1211. package/src/diff.ts +0 -48
  1212. package/src/dot-alchemy.ts +0 -18
  1213. package/src/env.ts +0 -39
  1214. package/src/esbuild.ts +0 -98
  1215. package/src/event.ts +0 -33
  1216. package/src/exports.ts +0 -21
  1217. package/src/input.ts +0 -81
  1218. package/src/instance-id.ts +0 -20
  1219. package/src/output.ts +0 -544
  1220. package/src/phase.ts +0 -1
  1221. package/src/physical-name.ts +0 -84
  1222. package/src/plan.ts +0 -1129
  1223. package/src/policy.ts +0 -128
  1224. package/src/provider.ts +0 -113
  1225. package/src/ref.ts +0 -48
  1226. package/src/reporter.ts +0 -8
  1227. package/src/resource.ts +0 -140
  1228. package/src/runtime.ts +0 -152
  1229. package/src/schema.ts +0 -102
  1230. package/src/service.ts +0 -59
  1231. package/src/sha256.ts +0 -23
  1232. package/src/stack.ts +0 -116
  1233. package/src/stage.ts +0 -85
  1234. package/src/state.ts +0 -390
  1235. package/src/tags.ts +0 -98
  1236. package/src/test.ts +0 -172
  1237. package/src/todo.ts +0 -4
  1238. package/src/unknown.ts +0 -6
  1239. package/src/user.ts +0 -4
  1240. package/src/util.ts +0 -21
  1241. /package/src/{aws/arn.ts → AWS/Arn.ts} +0 -0
  1242. /package/src/{aws/dynamodb/expr.ts → AWS/DynamoDB/Expr.ts} +0 -0
  1243. /package/src/{assert-never.ts → Util/assert-never.ts} +0 -0
  1244. /package/src/{data.ts → Util/data.ts} +0 -0
  1245. /package/src/{type.ts → Util/type.ts} +0 -0
package/src/plan.ts DELETED
@@ -1,1129 +0,0 @@
1
- import * as Context from "effect/Context";
2
- import * as Data from "effect/Data";
3
- import * as Effect from "effect/Effect";
4
- import * as Layer from "effect/Layer";
5
- import { omit } from "effect/Struct";
6
- import { App } from "./app.ts";
7
- import type {
8
- AnyBinding,
9
- BindingDiffProps,
10
- BindingService,
11
- } from "./binding.ts";
12
- import type { Capability } from "./capability.ts";
13
- import type { Diff, NoopDiff, UpdateDiff } from "./diff.ts";
14
- import { InstanceId } from "./instance-id.ts";
15
- import * as Output from "./output.ts";
16
- import type { Instance } from "./policy.ts";
17
- import type { Provider } from "./provider.ts";
18
- import { getProviderByType, type ProviderService } from "./provider.ts";
19
- import type { AnyResource, Resource, ResourceTags } from "./resource.ts";
20
- import { isService, type IService, type Service } from "./service.ts";
21
- import {
22
- State,
23
- StateStoreError,
24
- type CreatedResourceState,
25
- type CreatingResourceState,
26
- type ReplacedResourceState,
27
- type ReplacingResourceState,
28
- type ResourceState,
29
- type UpdatedResourceState,
30
- type UpdatingReourceState,
31
- } from "./state.ts";
32
- import { asEffect } from "./util.ts";
33
-
34
- export type PlanError = never;
35
-
36
- export const isBindNode = (node: any): node is BindNode => {
37
- return (
38
- node &&
39
- typeof node === "object" &&
40
- (node.action === "attach" ||
41
- node.action === "detach" ||
42
- node.action === "noop")
43
- );
44
- };
45
-
46
- /**
47
- * A node in the plan that represents a binding operation acting on a resource.
48
- */
49
- export type BindNode<B extends AnyBinding = AnyBinding> =
50
- | Attach<B>
51
- | Reattach<B>
52
- | Detach<B>
53
- | NoopBind<B>;
54
-
55
- export type Attach<B extends AnyBinding = AnyBinding> = {
56
- action: "attach";
57
- binding: B;
58
- olds: BindNode | undefined;
59
- attr: B["attr"] | undefined;
60
- };
61
-
62
- export type Reattach<B extends AnyBinding = AnyBinding> = {
63
- action: "reattach";
64
- binding: B;
65
- olds: BindNode;
66
- attr: B["attr"];
67
- };
68
-
69
- export type Detach<B extends AnyBinding = AnyBinding> = {
70
- action: "detach";
71
- binding: B;
72
- attr: B["attr"] | undefined;
73
- };
74
-
75
- export type NoopBind<B extends AnyBinding = AnyBinding> = {
76
- action: "noop";
77
- binding: B;
78
- attr: B["attr"];
79
- };
80
-
81
- export const isCRUD = (node: any): node is CRUD => {
82
- return (
83
- node &&
84
- typeof node === "object" &&
85
- (node.action === "create" ||
86
- node.action === "update" ||
87
- node.action === "replace" ||
88
- node.action === "noop")
89
- );
90
- };
91
-
92
- /**
93
- * A node in the plan that represents a resource CRUD operation.
94
- */
95
- export type CRUD<R extends Resource = AnyResource> =
96
- | Create<R>
97
- | Update<R>
98
- | Delete<R>
99
- | Replace<R>
100
- | NoopUpdate<R>;
101
-
102
- export type Apply<R extends Resource = AnyResource> =
103
- | Create<R>
104
- | Update<R>
105
- | Replace<R>
106
- | NoopUpdate<R>;
107
-
108
- export interface BaseNode<R extends Resource = AnyResource> {
109
- resource: R;
110
- provider: ProviderService<R>;
111
- bindings: BindNode[];
112
- downstream: string[];
113
- }
114
-
115
- export interface Create<R extends Resource = AnyResource> extends BaseNode<R> {
116
- action: "create";
117
- props: any;
118
- state: CreatingResourceState | undefined;
119
- }
120
-
121
- export interface Update<R extends Resource = AnyResource> extends BaseNode<R> {
122
- action: "update";
123
- props: any;
124
- state:
125
- | CreatedResourceState
126
- | UpdatedResourceState
127
- | UpdatingReourceState
128
- // the props can change after creating the replacement resource,
129
- // so Apply needs to handle updates and then continue with cleaning up the replaced graph
130
- | ReplacedResourceState;
131
- }
132
-
133
- export interface Delete<R extends Resource = AnyResource> extends BaseNode<R> {
134
- action: "delete";
135
- // a resource can be deleted no matter what state it's in
136
- state: ResourceState;
137
- }
138
-
139
- export interface NoopUpdate<
140
- R extends Resource = AnyResource,
141
- > extends BaseNode<R> {
142
- action: "noop";
143
- state: CreatedResourceState | UpdatedResourceState;
144
- }
145
-
146
- export interface Replace<R extends Resource = AnyResource> extends BaseNode<R> {
147
- action: "replace";
148
- props: any;
149
- deleteFirst: boolean;
150
- state:
151
- | CreatingResourceState
152
- | CreatedResourceState
153
- | UpdatingReourceState
154
- | UpdatedResourceState
155
- | ReplacingResourceState
156
- | ReplacedResourceState;
157
- }
158
-
159
- export type ResourceGraph<Resources extends Service | Resource> = ToGraph<
160
- TraverseResources<Resources>
161
- >;
162
-
163
- export type TraverseResources<Resources extends Service | Resource> =
164
- | Resources
165
- | BoundResources<Resources>
166
- | TransitiveResources<Resources>;
167
-
168
- type ToGraph<Resources extends Service | Resource> = {
169
- [ID in Resources["id"]]: Apply<Extract<Resources, { id: ID }>>;
170
- };
171
-
172
- export type BoundResources<Resources extends Service | Resource> = NeverUnknown<
173
- Extract<
174
- Resources,
175
- IService
176
- >["props"]["bindings"]["capabilities"][number]["resource"]
177
- >;
178
-
179
- // finds transitive dependencies at most two levels deep
180
- // TODO(sam): figure out an efficient way to do arbitrary depth
181
- export type TransitiveResources<
182
- Resources extends Service | Resource,
183
- Found extends Service | Resource = never,
184
- > = Extract<
185
- | Found
186
- | {
187
- [prop in keyof Resources["props"]]: IsAny<
188
- Resources["props"][prop]
189
- > extends true
190
- ? Found
191
- : Resources["props"][prop] extends { kind: "alchemy/Policy" }
192
- ? Found
193
- : Resources["props"][prop] extends Output.Output<any, infer Src, any>
194
- ? Src extends Found
195
- ? Found
196
- : TransitiveResources<Src, Src | Found>
197
- : {
198
- [p in keyof Resources["props"][prop]]: IsAny<
199
- Resources["props"][prop][p]
200
- > extends true
201
- ? Found
202
- : Resources["props"][prop][p] extends Output.Output<
203
- any,
204
- infer Src,
205
- any
206
- >
207
- ? Src extends Found
208
- ? Found
209
- : string extends Src["id"]
210
- ? Found
211
- : TransitiveResources<Src, Src | Found>
212
- : Found;
213
- }[keyof Resources["props"][prop]];
214
- }[keyof Resources["props"]],
215
- Service | Resource
216
- >;
217
-
218
- export type Providers<Resources extends Service | Resource> =
219
- | ResourceProviders<Resources>
220
- | BindingTags<Resources>;
221
-
222
- export type ResourceProviders<Res extends Service | Resource> = Res extends any
223
- ? Provider<Extract<Res["base"], Service | Resource>>
224
- : never;
225
-
226
- export type BindingTags<Resources extends Service | Resource> = NeverUnknown<
227
- Extract<Resources, Service>["props"]["bindings"]["tags"][number]
228
- >;
229
-
230
- type NeverUnknown<T> = unknown extends T ? never : T;
231
-
232
- type IsAny<T> = 0 extends 1 & T ? true : false;
233
-
234
- export type DerivePlan<Resources extends Service | Resource> = {
235
- resources: {
236
- [ID in keyof ResourceGraph<Resources>]: ResourceGraph<Resources>[ID];
237
- };
238
- deletions: {
239
- [ID in string]: Delete<AnyResource>;
240
- };
241
- };
242
-
243
- export type IPlan = {
244
- resources: {
245
- [id in string]: Apply<any>;
246
- };
247
- deletions: {
248
- [id in string]?: Delete<Resource>;
249
- };
250
- };
251
-
252
- export type Plan<Resources extends Service | Resource> = Effect.Effect<
253
- DerivePlan<Resources>,
254
- | CannotReplacePartiallyReplacedResource
255
- | DeleteResourceHasDownstreamDependencies,
256
- Providers<Resources> | State
257
- >;
258
-
259
- export const plan = <const Resources extends (Service | Resource)[]>(
260
- ..._resources: Resources
261
- ): Plan<Instance<Resources[number]>> =>
262
- Effect.gen(function* () {
263
- const state = yield* State;
264
-
265
- const findResources = (
266
- resource: Service | Resource,
267
- visited: Set<string>,
268
- ): (Service | Resource)[] => {
269
- if (visited.has(resource.id)) {
270
- return [];
271
- }
272
- visited.add(resource.id);
273
- const upstream = Object.values(Output.upstreamAny(resource.props)) as (
274
- | Service
275
- | Resource
276
- )[];
277
- return [
278
- resource,
279
- ...upstream,
280
- ...upstream.flatMap((r) => findResources(r, visited)),
281
- ];
282
- };
283
- const resources = _resources
284
- .flatMap((r) => findResources(r, new Set()))
285
- .filter((r, i, arr) => arr.findIndex((r2) => r2.id === r.id) === i);
286
-
287
- // TODO(sam): rename terminology to Stack
288
- const app = yield* App;
289
-
290
- const resourceIds = yield* state.list({
291
- stack: app.name,
292
- stage: app.stage,
293
- });
294
- const oldResources = yield* Effect.all(
295
- resourceIds.map((id) =>
296
- state.get({ stack: app.name, stage: app.stage, resourceId: id }),
297
- ),
298
- { concurrency: "unbounded" },
299
- );
300
-
301
- type ResolveEffect<T> = Effect.Effect<T, ResolveErr, ResolveReq>;
302
- type ResolveErr = StateStoreError;
303
- type ResolveReq =
304
- | Context.TagClass<
305
- Provider<Resource<string, string, any, any>>,
306
- string,
307
- ProviderService<Resource<string, string, any, any>>
308
- >
309
- | State;
310
-
311
- const resolvedResources: Record<
312
- string,
313
- ResolveEffect<
314
- | {
315
- [attr in string]: any;
316
- }
317
- | undefined
318
- >
319
- > = {};
320
-
321
- const resolveResource = (
322
- resourceExpr: Output.ResourceExpr<any, any, any>,
323
- ) =>
324
- Effect.gen(function* () {
325
- return yield* (resolvedResources[resourceExpr.src.id] ??=
326
- yield* Effect.cached(
327
- Effect.gen(function* () {
328
- const resource = resourceExpr.src as Resource & {
329
- provider: ResourceTags<Resource<string, string, any, any>>;
330
- };
331
- const provider = yield* resource.provider.tag;
332
- const props = yield* resolveInput(resource.props);
333
- const oldState = yield* state.get({
334
- stack: app.name,
335
- stage: app.stage,
336
- resourceId: resource.id,
337
- });
338
-
339
- if (!oldState || oldState.status === "creating") {
340
- return resourceExpr;
341
- }
342
-
343
- const oldProps =
344
- oldState.status === "created" ||
345
- oldState.status === "updated" ||
346
- oldState.status === "replaced"
347
- ? // if we're in a stable state, then just use the props
348
- oldState.props
349
- : // if we failed to update or replace, compare with the last known stable props
350
- oldState.status === "updating" ||
351
- oldState.status === "replacing"
352
- ? oldState.old.props
353
- : // TODO(sam): it kinda doesn't make sense to diff with a "deleting" state
354
- oldState.props;
355
-
356
- const diff = yield* provider.diff
357
- ? provider
358
- .diff({
359
- id: resource.id,
360
- olds: oldProps,
361
- instanceId: oldState.instanceId,
362
- news: props,
363
- output: oldState.attr,
364
- })
365
- .pipe(
366
- Effect.provide(
367
- Layer.succeed(InstanceId, oldState.instanceId),
368
- ),
369
- )
370
- : Effect.succeed(undefined);
371
-
372
- const stables: string[] = [
373
- ...(provider.stables ?? []),
374
- ...(diff?.stables ?? []),
375
- ];
376
-
377
- const withStables = (output: any) =>
378
- stables.length > 0
379
- ? new Output.ResourceExpr(
380
- resourceExpr.src,
381
- Object.fromEntries(
382
- stables.map((stable) => [stable, output?.[stable]]),
383
- ),
384
- )
385
- : // if there are no stable properties, treat every property as changed
386
- resourceExpr;
387
-
388
- if (diff == null) {
389
- if (arePropsChanged(oldProps, props)) {
390
- // the props have changed but the provider did not provide any hints as to what is stable
391
- // so we must assume everything has changed
392
- return withStables(oldState?.attr);
393
- }
394
- } else if (diff.action === "update") {
395
- return withStables(oldState?.attr);
396
- } else if (diff.action === "replace") {
397
- return resourceExpr;
398
- }
399
- if (
400
- oldState.status === "created" ||
401
- oldState.status === "updated" ||
402
- oldState.status === "replaced"
403
- ) {
404
- // we can safely return the attributes if we know they have stabilized
405
- return oldState?.attr;
406
- } else {
407
- // we must assume the resource doesn't exist if it hasn't stabilized
408
- return resourceExpr;
409
- }
410
- }),
411
- ));
412
- });
413
-
414
- const resolveInput = (input: any): ResolveEffect<any> =>
415
- Effect.gen(function* () {
416
- if (!input) {
417
- return input;
418
- } else if (Output.isExpr(input)) {
419
- return yield* resolveOutput(input);
420
- } else if (Array.isArray(input)) {
421
- return yield* Effect.all(input.map(resolveInput), {
422
- concurrency: "unbounded",
423
- });
424
- } else if (typeof input === "object") {
425
- return Object.fromEntries(
426
- yield* Effect.all(
427
- Object.entries(input).map(([key, value]) =>
428
- resolveInput(value).pipe(Effect.map((value) => [key, value])),
429
- ),
430
- { concurrency: "unbounded" },
431
- ),
432
- );
433
- }
434
- return input;
435
- });
436
-
437
- const resolveOutput = (expr: Output.Expr<any>): ResolveEffect<any> =>
438
- Effect.gen(function* () {
439
- if (Output.isResourceExpr(expr)) {
440
- return yield* resolveResource(expr);
441
- } else if (Output.isPropExpr(expr)) {
442
- const upstream = yield* resolveOutput(expr.expr);
443
- return upstream?.[expr.identifier];
444
- } else if (Output.isApplyExpr(expr)) {
445
- const upstream = yield* resolveOutput(expr.expr);
446
- return Output.hasOutputs(upstream) ? expr : expr.f(upstream);
447
- } else if (Output.isEffectExpr(expr)) {
448
- const upstream = yield* resolveOutput(expr.expr);
449
- return Output.hasOutputs(upstream) ? expr : yield* expr.f(upstream);
450
- } else if (Output.isAllExpr(expr)) {
451
- return yield* Effect.all(expr.outs.map(resolveOutput), {
452
- concurrency: "unbounded",
453
- });
454
- }
455
- return yield* Effect.die(new Error("Not implemented yet"));
456
- });
457
-
458
- // map of resource ID -> its downstream dependencies (resources that depend on it)
459
- const oldDownstreamDependencies: {
460
- [resourceId: string]: string[];
461
- } = Object.fromEntries(
462
- oldResources
463
- .filter((resource) => !!resource)
464
- .map((resource) => [resource.logicalId, resource.downstream]),
465
- );
466
-
467
- const newUpstreamDependencies: {
468
- [resourceId: string]: string[];
469
- } = Object.fromEntries(
470
- resources.map((resource) => [
471
- resource.id,
472
- [
473
- ...Object.values(Output.upstreamAny(resource.props)).map((r) => r.id),
474
- ...(isService(resource)
475
- ? resource.props.bindings.capabilities.map((cap) => cap.resource.id)
476
- : []),
477
- ],
478
- ]),
479
- );
480
-
481
- const newDownstreamDependencies: {
482
- [resourceId: string]: string[];
483
- } = Object.fromEntries(
484
- resources.map((resource) => [
485
- resource.id,
486
- Object.entries(newUpstreamDependencies)
487
- .filter(([_, downstream]) => downstream.includes(resource.id))
488
- .map(([id]) => id),
489
- ]),
490
- );
491
-
492
- const resourceGraph = Object.fromEntries(
493
- (yield* Effect.all(
494
- resources
495
- .flatMap((resource) => [
496
- ...(isService(resource)
497
- ? resource.props.bindings.capabilities.map(
498
- (cap: Capability) => cap.resource as Resource,
499
- )
500
- : []),
501
- ...Object.values(Output.upstreamAny(resource.props)),
502
- resource,
503
- ])
504
- .filter(
505
- (node, i, arr) => arr.findIndex((n) => n.id === node.id) === i,
506
- )
507
- .map(
508
- Effect.fn(function* (node) {
509
- const id = node.id;
510
- const resource = node as Resource & {
511
- provider: ResourceTags<Resource<string, string, any, any>>;
512
- };
513
- const news = yield* resolveInput(resource.props);
514
-
515
- const oldState = yield* state.get({
516
- stack: app.name,
517
- stage: app.stage,
518
- resourceId: id,
519
- });
520
- const provider = yield* resource.provider.tag;
521
-
522
- const downstream = newDownstreamDependencies[id] ?? [];
523
-
524
- const bindings = isService(node)
525
- ? yield* diffBindings({
526
- oldState,
527
- bindings: (
528
- node.props.bindings as unknown as {
529
- bindings: AnyBinding[];
530
- }
531
- ).bindings,
532
- target: {
533
- id: node.id,
534
- props: node.props,
535
- // TODO(sam): pick the right ones based on old status
536
- oldAttr: oldState?.attr,
537
- oldProps: oldState?.props,
538
- },
539
- })
540
- : []; // TODO(sam): return undefined instead of empty array
541
-
542
- const Node = <T extends Apply>(
543
- node: Omit<
544
- T,
545
- "provider" | "resource" | "bindings" | "downstream"
546
- >,
547
- ) =>
548
- ({
549
- ...node,
550
- provider,
551
- resource,
552
- bindings,
553
- downstream,
554
- }) as any as T;
555
-
556
- // handle empty and intermediate (non-final) states:
557
- if (oldState === undefined) {
558
- return Node<Create<Resource>>({
559
- action: "create",
560
- props: news,
561
- state: oldState,
562
- });
563
- } else if (
564
- oldState.status === "creating" &&
565
- oldState.attr === undefined
566
- ) {
567
- if (provider.read) {
568
- const attr = yield* provider.read({
569
- id,
570
- instanceId: oldState.instanceId,
571
- olds: oldState.props,
572
- output: oldState.attr,
573
- bindings,
574
- });
575
- if (attr) {
576
- return Node<Create<Resource>>({
577
- action: "create",
578
- props: news,
579
- state: { ...oldState, attr },
580
- });
581
- }
582
- }
583
- }
584
-
585
- // TODO(sam): is this correct for all possible states a resource can be in?
586
- const oldProps = oldState.props;
587
-
588
- const diff = yield* asEffect(
589
- provider.diff
590
- ? provider
591
- .diff({
592
- id,
593
- olds: oldProps,
594
- instanceId: oldState.instanceId,
595
- output: oldState.attr,
596
- news,
597
- })
598
- .pipe(
599
- Effect.provide(
600
- Layer.succeed(InstanceId, oldState.instanceId),
601
- ),
602
- )
603
- : undefined,
604
- ).pipe(
605
- Effect.map(
606
- (diff) =>
607
- diff ??
608
- ({
609
- action: arePropsChanged(oldProps, news)
610
- ? "update"
611
- : "noop",
612
- } as UpdateDiff | NoopDiff),
613
- ),
614
- );
615
-
616
- if (oldState.status === "creating") {
617
- if (diff.action === "noop") {
618
- // we're in the creating state and props are un-changed
619
- // let's just continue where we left off
620
- return Node<Create<Resource>>({
621
- action: "create",
622
- props: news,
623
- state: oldState,
624
- });
625
- } else if (diff.action === "update") {
626
- // props have changed in a way that is updatable
627
- // again, just continue with the create
628
- // TODO(sam): should we maybe try an update instead?
629
- return Node<Create<Resource>>({
630
- action: "create",
631
- props: news,
632
- state: oldState,
633
- });
634
- } else {
635
- // props have changed in an incompatible way
636
- // because it's possible that an un-updatable resource has already been created
637
- // we must use a replace step to create a new one and delete the potential old one
638
- return Node<Replace<Resource>>({
639
- action: "replace",
640
- props: news,
641
- deleteFirst: diff.deleteFirst ?? false,
642
- state: oldState,
643
- });
644
- }
645
- } else if (oldState.status === "updating") {
646
- // we started to update a resource but did not complete
647
- if (diff.action === "update" || diff.action === "noop") {
648
- return Node<Update<Resource>>({
649
- action: "update",
650
- props: news,
651
- state: oldState,
652
- });
653
- } else {
654
- // we started to update a resource but now believe we should replace it
655
- return Node<Replace<Resource>>({
656
- action: "replace",
657
- deleteFirst: diff.deleteFirst ?? false,
658
- props: news,
659
- // TODO(sam): can Apply handle replacements when the oldState is UpdatingResourceState?
660
- // -> or is there we do a provider.read to try and reconcile back to UpdatedResourceState?
661
- state: oldState,
662
- });
663
- }
664
- } else if (oldState.status === "replacing") {
665
- // resource replacement started, but the replacement may or may not have been created
666
- if (diff.action === "noop") {
667
- // this is the stable case - noop means just continue with the replacement
668
- return Node<Replace<Resource>>({
669
- action: "replace",
670
- deleteFirst: oldState.deleteFirst,
671
- props: news,
672
- state: oldState,
673
- });
674
- } else if (diff.action === "update") {
675
- // potential problem here - the props have changed since we tried to replace,
676
- // but not enough to trigger another replacement. the resource provider should
677
- // be designed as idempotent to converge to the right state when creating the new resource
678
- // the newly generated instanceId is intended to assist with this
679
- return Node<Replace<Resource>>({
680
- action: "replace",
681
- deleteFirst: oldState.deleteFirst,
682
- props: news,
683
- state: oldState,
684
- });
685
- } else {
686
- // ah shit, so we tried to replace the resource and then crashed
687
- // now the props have changed again in such a way that the (maybe, maybe not)
688
- // created resource should also be replaced
689
-
690
- // TODO(sam): what should we do?
691
- // 1. trigger a deletion of the potentially created resource
692
- // 2. expect the resource provider to handle it idempotently?
693
- // -> i don't think this case is fair to put on the resource provider
694
- // because if the resource was created, it's in a state that can't be updated
695
- return yield* Effect.fail(
696
- new CannotReplacePartiallyReplacedResource(id),
697
- );
698
- }
699
- } else if (oldState.status === "replaced") {
700
- // replacement has been created but we're not done cleaning up the old state
701
- if (diff.action === "noop") {
702
- // this is the stable case - noop means just continue cleaning up the replacement
703
- return Node<Replace<Resource>>({
704
- action: "replace",
705
- deleteFirst: oldState.deleteFirst,
706
- props: news,
707
- state: oldState,
708
- });
709
- } else if (diff.action === "update") {
710
- // the replacement has been created but now also needs to be updated
711
- // the resource provider should:
712
- // 1. Update the newly created replacement resource
713
- // 2. Then proceed as normal to delete the replaced resources (after all downstream references are updated)
714
- return Node<Update<Resource>>({
715
- action: "update",
716
- props: news,
717
- state: oldState,
718
- });
719
- } else {
720
- // the replacement has been created but now it needs to be replaced
721
- // this is the worst-case scenario because downstream resources
722
- // could have been been updated to point to the replaced resources
723
- return yield* Effect.fail(
724
- new CannotReplacePartiallyReplacedResource(id),
725
- );
726
- }
727
- } else if (oldState.status === "deleting") {
728
- if (diff.action === "noop" || diff.action === "update") {
729
- // we're in a partially deleted state, it is unclear whether it was or was not deleted
730
- // it should be safe to re-create it with the same instanceId?
731
- return Node<Create<Resource>>({
732
- action: "create",
733
- props: news,
734
- state: {
735
- ...oldState,
736
- status: "creating",
737
- props: news,
738
- },
739
- });
740
- } else {
741
- return yield* Effect.fail(
742
- new CannotReplacePartiallyReplacedResource(id),
743
- );
744
- }
745
- } else if (diff.action === "update") {
746
- return Node<Update<Resource>>({
747
- action: "update",
748
- props: news,
749
- state: oldState,
750
- });
751
- } else if (diff.action === "replace") {
752
- return Node<Replace<Resource>>({
753
- action: "replace",
754
- props: news,
755
- state: oldState,
756
- deleteFirst: diff?.deleteFirst ?? false,
757
- });
758
- } else {
759
- return Node<NoopUpdate<Resource>>({
760
- action: "noop",
761
- state: oldState,
762
- });
763
- }
764
- }),
765
- ),
766
- { concurrency: "unbounded" },
767
- )).map((update) => [update.resource.id, update]),
768
- ) as IPlan["resources"];
769
-
770
- const deletions = Object.fromEntries(
771
- (yield* Effect.all(
772
- (yield* state.list({ stack: app.name, stage: app.stage })).map(
773
- Effect.fn(function* (id) {
774
- if (id in resourceGraph) {
775
- return;
776
- }
777
- const oldState = yield* state.get({
778
- stack: app.name,
779
- stage: app.stage,
780
- resourceId: id,
781
- });
782
- let attr: any = oldState?.attr;
783
- if (oldState) {
784
- const provider = yield* getProviderByType(oldState.resourceType);
785
- if (oldState.attr === undefined) {
786
- if (provider.read) {
787
- attr = yield* provider
788
- .read({
789
- id,
790
- instanceId: oldState.instanceId,
791
- olds: oldState.props as never,
792
- output: oldState.attr as never,
793
- bindings: oldState.bindings ?? [],
794
- })
795
- .pipe(
796
- Effect.provide(
797
- Layer.succeed(InstanceId, oldState.instanceId),
798
- ),
799
- );
800
- }
801
- }
802
- return [
803
- id,
804
- {
805
- action: "delete",
806
- state: { ...oldState, attr },
807
- // // TODO(sam): Support Detach Bindings
808
- bindings: [],
809
- provider,
810
- resource: {
811
- id: id,
812
- type: oldState.resourceType,
813
- attr,
814
- props: oldState.props,
815
- } as Resource,
816
- // TODO(sam): is it enough to just pass through oldState?
817
- downstream: oldDownstreamDependencies[id] ?? [],
818
- } satisfies Delete<Resource>,
819
- ] as const;
820
- }
821
- }),
822
- ),
823
- { concurrency: "unbounded" },
824
- )).filter((v) => !!v),
825
- );
826
-
827
- for (const [resourceId, deletion] of Object.entries(deletions)) {
828
- const dependencies = deletion.state.downstream.filter(
829
- (d) => d in resourceGraph,
830
- );
831
- if (dependencies.length > 0) {
832
- return yield* Effect.fail(
833
- new DeleteResourceHasDownstreamDependencies({
834
- message: `Resource ${resourceId} has downstream dependencies`,
835
- resourceId,
836
- dependencies,
837
- }),
838
- );
839
- }
840
- }
841
-
842
- return {
843
- resources: resourceGraph,
844
- deletions,
845
- } satisfies IPlan as IPlan;
846
- }) as any;
847
-
848
- export class CannotReplacePartiallyReplacedResource extends Data.TaggedError(
849
- "CannotReplacePartiallyReplacedResource",
850
- )<{
851
- message: string;
852
- logicalId: string;
853
- }> {
854
- constructor(logicalId: string) {
855
- super({
856
- message:
857
- `Resource '${logicalId}' did not finish being replaced in a previous deployment ` +
858
- `and is expected to be replaced again in this deployment. ` +
859
- `You should revert its properties and try again after a successful deployment.`,
860
- logicalId,
861
- });
862
- }
863
- }
864
-
865
- export class DeleteResourceHasDownstreamDependencies extends Data.TaggedError(
866
- "DeleteResourceHasDownstreamDependencies",
867
- )<{
868
- message: string;
869
- resourceId: string;
870
- dependencies: string[];
871
- }> {}
872
-
873
- const arePropsChanged = <R extends Resource>(
874
- oldProps: R["props"] | undefined,
875
- newProps: R["props"],
876
- ) => {
877
- return (
878
- Output.hasOutputs(newProps) ||
879
- JSON.stringify(omit((oldProps ?? {}) as any, "bindings")) !==
880
- JSON.stringify(omit((newProps ?? {}) as any, "bindings"))
881
- );
882
- };
883
-
884
- const diffBindings = Effect.fn(function* ({
885
- oldState,
886
- bindings,
887
- target,
888
- }: {
889
- oldState: ResourceState | undefined;
890
- bindings: AnyBinding[];
891
- target: BindingDiffProps["target"];
892
- }) {
893
- // const actions: BindNode[] = [];
894
- const oldBindings = oldState?.bindings;
895
- // const oldSids = new Set(
896
- // oldBindings?.map(({ binding }) => binding.capability.sid),
897
- // );
898
-
899
- const diffBinding: (
900
- binding: AnyBinding,
901
- ) => Effect.Effect<BindNode, StateStoreError, State> = Effect.fn(
902
- function* (binding) {
903
- const cap = binding.capability;
904
- const sid = cap.sid ?? `${cap.action}:${cap.resource.ID}`;
905
- // Find potential oldBinding for this sid
906
- const oldBinding = oldBindings?.find(
907
- ({ binding }) => binding.capability.sid === sid,
908
- );
909
- if (!oldBinding) {
910
- return {
911
- action: "attach",
912
- binding,
913
- attr: undefined,
914
- olds: undefined,
915
- } satisfies Attach<AnyBinding>;
916
- }
917
-
918
- const diff = yield* isBindingDiff({
919
- target,
920
- oldBinding,
921
- newBinding: binding,
922
- });
923
- // if (diff === false) {
924
- // } else if (diff === true) {
925
- // return {
926
- // action: "attach",
927
- // binding,
928
- // olds: oldBinding,
929
- // } satisfies Attach<AnyBinding>;
930
- // }
931
- if (diff.action === "replace") {
932
- return yield* Effect.die(
933
- new Error("Replace binding not yet supported"),
934
- );
935
- // TODO(sam): implement support for replacing bindings
936
- // return {
937
- // action: "replace",
938
- // binding,
939
- // olds: oldBinding,
940
- // };
941
- } else if (diff?.action === "update") {
942
- return {
943
- action: "reattach",
944
- binding,
945
- olds: oldBinding,
946
- attr: oldBinding.attr,
947
- } satisfies Reattach<AnyBinding>;
948
- }
949
- return {
950
- action: "noop",
951
- binding,
952
- attr: oldBinding.attr,
953
- } satisfies NoopBind<AnyBinding>;
954
- },
955
- );
956
-
957
- return (yield* Effect.all(bindings.map(diffBinding), {
958
- concurrency: "unbounded",
959
- })).filter((action): action is BindNode => action !== null);
960
- });
961
-
962
- const isBindingDiff = Effect.fn(function* ({
963
- target,
964
- oldBinding: { binding: oldBinding },
965
- newBinding,
966
- }: {
967
- // TODO(sam): support binding to other Resources
968
- target: BindingDiffProps["target"];
969
- oldBinding: BindNode;
970
- newBinding: AnyBinding;
971
- }) {
972
- const oldCap = oldBinding.capability;
973
- const newCap = newBinding.capability;
974
- if (
975
- // if the binding provider has changed
976
- oldBinding.tag !== newBinding.tag ||
977
- // if it points to a totally different resource, we should replace
978
- oldCap?.resource?.id !== newCap?.resource?.id ||
979
- // if it is a different action
980
- oldCap.action !== newCap.action
981
- ) {
982
- // then we must replace (we need to detach and attach with different bindings or to different resources)
983
- return {
984
- action: "replace",
985
- } satisfies Diff;
986
- }
987
-
988
- const binding = newBinding as AnyBinding & {
989
- // smuggled property (because it interacts poorly with inference)
990
- Tag: Context.Tag<never, BindingService>;
991
- };
992
- const provider = yield* binding.Tag;
993
- if (provider.diff) {
994
- const state = yield* State;
995
- const oldState = yield* state.get(oldCap.resource.id);
996
- if (oldState) {
997
- const diff = yield* provider
998
- .diff({
999
- source: {
1000
- id: oldCap.resource.id,
1001
- props: newCap.resource.props,
1002
- oldProps: oldState?.props,
1003
- oldAttr: oldState?.attr,
1004
- },
1005
- props: newBinding.props,
1006
- attr: oldBinding.attr,
1007
- target,
1008
- })
1009
- .pipe(Effect.provide(Layer.succeed(InstanceId, oldState.instanceId)));
1010
-
1011
- if (diff?.action === "update" || diff?.action === "replace") {
1012
- return diff;
1013
- }
1014
- }
1015
- }
1016
- return {
1017
- action:
1018
- oldBinding.capability.action !== newBinding.capability.action ||
1019
- oldBinding.capability?.resource?.id !==
1020
- newBinding.capability?.resource?.id
1021
- ? "update"
1022
- : "noop",
1023
- } as const;
1024
- });
1025
- // TODO(sam): compare props
1026
- // oldBinding.props !== newBinding.props;
1027
-
1028
- /**
1029
- * Print a plan in a human-readable format that shows the graph topology.
1030
- */
1031
- export const printPlan = (plan: IPlan): string => {
1032
- const lines: string[] = [];
1033
- const allNodes = { ...plan.resources, ...plan.deletions };
1034
-
1035
- // Build reverse mapping: upstream -> downstream
1036
- const upstreamMap: Record<string, string[]> = {};
1037
- for (const [id] of Object.entries(allNodes)) {
1038
- upstreamMap[id] = [];
1039
- }
1040
- for (const [id, node] of Object.entries(allNodes)) {
1041
- if (!node) continue;
1042
- for (const downstreamId of node.state?.downstream ?? []) {
1043
- if (upstreamMap[downstreamId]) {
1044
- upstreamMap[downstreamId].push(id);
1045
- }
1046
- }
1047
- }
1048
-
1049
- // Action symbols
1050
- const actionSymbol = (action: string) => {
1051
- switch (action) {
1052
- case "create":
1053
- return "+";
1054
- case "update":
1055
- return "~";
1056
- case "delete":
1057
- return "-";
1058
- case "replace":
1059
- return "±";
1060
- case "noop":
1061
- return "=";
1062
- default:
1063
- return "?";
1064
- }
1065
- };
1066
-
1067
- // Print header
1068
- lines.push(
1069
- "╔════════════════════════════════════════════════════════════════╗",
1070
- );
1071
- lines.push(
1072
- "║ PLAN ║",
1073
- );
1074
- lines.push(
1075
- "╠════════════════════════════════════════════════════════════════╣",
1076
- );
1077
- lines.push(
1078
- "║ Legend: + create, ~ update, - delete, ± replace, = noop ║",
1079
- );
1080
- lines.push(
1081
- "╚════════════════════════════════════════════════════════════════╝",
1082
- );
1083
- lines.push("");
1084
-
1085
- // Print resources section
1086
- lines.push(
1087
- "┌─ Resources ────────────────────────────────────────────────────┐",
1088
- );
1089
- const resourceIds = Object.keys(plan.resources).sort();
1090
- for (const id of resourceIds) {
1091
- const node = plan.resources[id];
1092
- const symbol = actionSymbol(node.action);
1093
- const type = node.resource?.type ?? "unknown";
1094
- const downstream = node.state?.downstream?.length
1095
- ? ` → [${node.state?.downstream.join(", ")}]`
1096
- : "";
1097
- lines.push(`│ [${symbol}] ${id} (${type})${downstream}`);
1098
- }
1099
- if (resourceIds.length === 0) {
1100
- lines.push("│ (none)");
1101
- }
1102
- lines.push(
1103
- "└────────────────────────────────────────────────────────────────┘",
1104
- );
1105
- lines.push("");
1106
-
1107
- // Print deletions section
1108
- lines.push(
1109
- "┌─ Deletions ────────────────────────────────────────────────────┐",
1110
- );
1111
- const deletionIds = Object.keys(plan.deletions).sort();
1112
- for (const id of deletionIds) {
1113
- const node = plan.deletions[id]!;
1114
- const type = node.resource?.type ?? "unknown";
1115
- const downstream = node.state.downstream?.length
1116
- ? ` → [${node.state.downstream.join(", ")}]`
1117
- : "";
1118
- lines.push(`│ [-] ${id} (${type})${downstream}`);
1119
- }
1120
- if (deletionIds.length === 0) {
1121
- lines.push("│ (none)");
1122
- }
1123
- lines.push(
1124
- "└────────────────────────────────────────────────────────────────┘",
1125
- );
1126
- lines.push("");
1127
-
1128
- return lines.join("\n");
1129
- };