alchemy-effect 0.5.0 → 0.6.2
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.
- package/bin/alchemy-effect.js +7155 -17689
- package/bin/alchemy-effect.js.map +1 -1
- package/bin/alchemy-effect.sh +14 -0
- package/bin/alchemy-effect.ts +644 -130
- package/bin/process-manager.ts +10 -0
- package/lib/cli/index.d.ts +207 -378
- package/lib/cli/index.d.ts.map +1 -1
- package/lib/cli/index.js +4134 -985
- package/lib/cli/index.js.map +1 -1
- package/package.json +165 -103
- package/src/AWS/ACM/Certificate.ts +502 -0
- package/src/AWS/ACM/index.ts +1 -0
- package/src/AWS/AGENTS.md +505 -0
- package/src/AWS/Account.ts +56 -0
- package/src/AWS/Assets.ts +182 -0
- package/src/AWS/AutoScaling/AutoScalingGroup.ts +440 -0
- package/src/AWS/AutoScaling/LaunchTemplate.ts +535 -0
- package/src/AWS/AutoScaling/ScalingPolicy.ts +232 -0
- package/src/AWS/AutoScaling/index.ts +3 -0
- package/src/AWS/Bootstrap.ts +281 -0
- package/src/AWS/CloudFront/Distribution.ts +952 -0
- package/src/AWS/CloudFront/Function.ts +374 -0
- package/src/AWS/CloudFront/Invalidation.ts +202 -0
- package/src/AWS/CloudFront/KeyValueStore.ts +216 -0
- package/src/AWS/CloudFront/KvEntries.ts +250 -0
- package/src/AWS/CloudFront/KvRoutesUpdate.ts +301 -0
- package/src/AWS/CloudFront/ManagedPolicies.ts +20 -0
- package/src/AWS/CloudFront/OriginAccessControl.ts +266 -0
- package/src/AWS/CloudFront/common.ts +55 -0
- package/src/AWS/CloudFront/index.ts +15 -0
- package/src/AWS/CloudWatch/Alarm.ts +198 -0
- package/src/AWS/CloudWatch/AlarmMuteRule.ts +183 -0
- package/src/AWS/CloudWatch/AnomalyDetector.ts +242 -0
- package/src/AWS/CloudWatch/CompositeAlarm.ts +198 -0
- package/src/AWS/CloudWatch/Dashboard.ts +262 -0
- package/src/AWS/CloudWatch/DescribeAlarmContributors.ts +79 -0
- package/src/AWS/CloudWatch/DescribeAlarmHistory.ts +66 -0
- package/src/AWS/CloudWatch/DescribeAlarms.ts +94 -0
- package/src/AWS/CloudWatch/DescribeAlarmsForMetric.ts +66 -0
- package/src/AWS/CloudWatch/DescribeAnomalyDetectors.ts +68 -0
- package/src/AWS/CloudWatch/DescribeInsightRules.ts +66 -0
- package/src/AWS/CloudWatch/DisableAlarmActions.ts +74 -0
- package/src/AWS/CloudWatch/DisableInsightRules.ts +74 -0
- package/src/AWS/CloudWatch/EnableAlarmActions.ts +74 -0
- package/src/AWS/CloudWatch/GetAlarmMuteRule.ts +75 -0
- package/src/AWS/CloudWatch/GetDashboard.ts +75 -0
- package/src/AWS/CloudWatch/GetInsightRuleReport.ts +76 -0
- package/src/AWS/CloudWatch/GetMetricData.ts +62 -0
- package/src/AWS/CloudWatch/GetMetricStatistics.ts +64 -0
- package/src/AWS/CloudWatch/GetMetricStream.ts +75 -0
- package/src/AWS/CloudWatch/GetMetricWidgetImage.ts +66 -0
- package/src/AWS/CloudWatch/InsightRule.ts +277 -0
- package/src/AWS/CloudWatch/ListAlarmMuteRules.ts +64 -0
- package/src/AWS/CloudWatch/ListDashboards.ts +62 -0
- package/src/AWS/CloudWatch/ListManagedInsightRules.ts +68 -0
- package/src/AWS/CloudWatch/ListMetricStreams.ts +64 -0
- package/src/AWS/CloudWatch/ListMetrics.ts +62 -0
- package/src/AWS/CloudWatch/ListTagsForResource.ts +79 -0
- package/src/AWS/CloudWatch/MetricStream.ts +262 -0
- package/src/AWS/CloudWatch/PutMetricData.ts +62 -0
- package/src/AWS/CloudWatch/SetAlarmState.ts +73 -0
- package/src/AWS/CloudWatch/alarmStateChanges.ts +24 -0
- package/src/AWS/CloudWatch/binding-common.ts +42 -0
- package/src/AWS/CloudWatch/common.ts +168 -0
- package/src/AWS/CloudWatch/index.ts +32 -0
- package/src/AWS/Context.ts +30 -0
- package/src/AWS/Credentials.ts +52 -0
- package/src/AWS/DynamoDB/AttributeValue.ts +250 -0
- package/src/AWS/DynamoDB/BatchExecuteStatement.ts +113 -0
- package/src/AWS/DynamoDB/BatchGetItem.ts +138 -0
- package/src/AWS/DynamoDB/BatchWriteItem.ts +144 -0
- package/src/AWS/DynamoDB/DeleteItem.ts +67 -0
- package/src/AWS/DynamoDB/DescribeTable.ts +69 -0
- package/src/AWS/DynamoDB/DescribeTimeToLive.ts +72 -0
- package/src/AWS/DynamoDB/ExecuteStatement.ts +91 -0
- package/src/AWS/DynamoDB/ExecuteTransaction.ts +77 -0
- package/src/AWS/DynamoDB/GetItem.ts +85 -0
- package/src/AWS/DynamoDB/ListTables.ts +56 -0
- package/src/AWS/DynamoDB/ListTagsOfResource.ts +72 -0
- package/src/AWS/DynamoDB/ProjectionExpression.ts +159 -0
- package/src/AWS/DynamoDB/PutItem.ts +67 -0
- package/src/AWS/DynamoDB/Query.ts +68 -0
- package/src/AWS/DynamoDB/RestoreTableToPointInTime.ts +94 -0
- package/src/AWS/DynamoDB/Scan.ts +68 -0
- package/src/AWS/DynamoDB/Stream.ts +94 -0
- package/src/AWS/DynamoDB/Table.ts +1175 -0
- package/src/AWS/DynamoDB/TransactGetItems.ts +154 -0
- package/src/AWS/DynamoDB/TransactWriteItems.ts +216 -0
- package/src/AWS/DynamoDB/UpdateItem.ts +67 -0
- package/src/AWS/DynamoDB/UpdateTimeToLive.ts +71 -0
- package/src/AWS/DynamoDB/index.ts +24 -0
- package/src/AWS/EC2/EIP.ts +285 -0
- package/src/AWS/EC2/EgressOnlyInternetGateway.ts +248 -0
- package/src/AWS/EC2/Image.ts +108 -0
- package/src/AWS/EC2/Instance.ts +877 -0
- package/src/AWS/EC2/InternetGateway.ts +382 -0
- package/src/AWS/EC2/NatGateway.ts +474 -0
- package/src/AWS/EC2/Network.ts +459 -0
- package/src/AWS/EC2/NetworkAcl.ts +247 -0
- package/src/AWS/EC2/NetworkAclAssociation.ts +206 -0
- package/src/AWS/EC2/NetworkAclEntry.ts +300 -0
- package/src/AWS/EC2/Route.ts +323 -0
- package/src/AWS/EC2/RouteTable.ts +448 -0
- package/src/AWS/EC2/RouteTableAssociation.ts +274 -0
- package/src/AWS/EC2/SecurityGroup.ts +552 -0
- package/src/AWS/EC2/SecurityGroupRule.ts +395 -0
- package/src/AWS/EC2/Subnet.ts +583 -0
- package/src/AWS/EC2/Vpc.ts +455 -0
- package/src/AWS/EC2/VpcEndpoint.ts +657 -0
- package/src/AWS/EC2/hosted.ts +891 -0
- package/src/AWS/EC2/index.ts +18 -0
- package/src/AWS/ECR/Repository.ts +254 -0
- package/src/AWS/ECR/index.ts +1 -0
- package/src/AWS/ECS/Cluster.ts +257 -0
- package/src/AWS/ECS/DescribeTasks.ts +67 -0
- package/src/AWS/ECS/ListTasks.ts +67 -0
- package/src/AWS/ECS/RunTask.ts +82 -0
- package/src/AWS/ECS/Schedule.ts +115 -0
- package/src/AWS/ECS/Service.ts +572 -0
- package/src/AWS/ECS/StopTask.ts +64 -0
- package/src/AWS/ECS/Task.ts +981 -0
- package/src/AWS/ECS/index.ts +28 -0
- package/src/AWS/EKS/AccessEntry.ts +382 -0
- package/src/AWS/EKS/Addon.ts +385 -0
- package/src/AWS/EKS/AutoCluster.ts +288 -0
- package/src/AWS/EKS/Cluster.ts +655 -0
- package/src/AWS/EKS/LoadBalancedWorkload.ts +76 -0
- package/src/AWS/EKS/PodIdentityAssociation.ts +354 -0
- package/src/AWS/EKS/PodIdentityServiceAccount.ts +156 -0
- package/src/AWS/EKS/PodIdentityWorkload.ts +185 -0
- package/src/AWS/EKS/Workload.ts +145 -0
- package/src/AWS/EKS/index.ts +9 -0
- package/src/AWS/ELBv2/Listener.ts +139 -0
- package/src/AWS/ELBv2/LoadBalancer.ts +227 -0
- package/src/AWS/ELBv2/TargetGroup.ts +209 -0
- package/src/AWS/ELBv2/index.ts +3 -0
- package/src/AWS/Endpoint.ts +16 -0
- package/src/AWS/EventBridge/DescribeEventBus.ts +71 -0
- package/src/AWS/EventBridge/DescribeRule.ts +73 -0
- package/src/AWS/EventBridge/EventBus.ts +273 -0
- package/src/AWS/EventBridge/EventSource.ts +146 -0
- package/src/AWS/EventBridge/ListEventBuses.ts +60 -0
- package/src/AWS/EventBridge/ListRules.ts +87 -0
- package/src/AWS/EventBridge/ListTargetsByRule.ts +76 -0
- package/src/AWS/EventBridge/Permission.ts +151 -0
- package/src/AWS/EventBridge/PutEvents.ts +91 -0
- package/src/AWS/EventBridge/Rule.ts +620 -0
- package/src/AWS/EventBridge/TestEventPattern.ts +60 -0
- package/src/AWS/EventBridge/ToEcsTask.ts +118 -0
- package/src/AWS/EventBridge/ToLambda.ts +87 -0
- package/src/AWS/EventBridge/ToQueue.ts +97 -0
- package/src/AWS/EventBridge/index.ts +14 -0
- package/src/AWS/IAM/AccessKey.ts +142 -0
- package/src/AWS/IAM/AccountAlias.ts +96 -0
- package/src/AWS/IAM/AccountPasswordPolicy.ts +64 -0
- package/src/AWS/IAM/Group.ts +357 -0
- package/src/AWS/IAM/GroupMembership.ts +142 -0
- package/src/AWS/IAM/InstanceProfile.ts +285 -0
- package/src/AWS/IAM/LoginProfile.ts +137 -0
- package/src/AWS/IAM/OpenIDConnectProvider.ts +192 -0
- package/src/AWS/IAM/Policy.ts +387 -0
- package/src/AWS/IAM/Role.ts +500 -0
- package/src/AWS/IAM/SAMLProvider.ts +165 -0
- package/src/AWS/IAM/SSHPublicKey.ts +148 -0
- package/src/AWS/IAM/ServerCertificate.ts +261 -0
- package/src/AWS/IAM/ServiceSpecificCredential.ts +172 -0
- package/src/AWS/IAM/SigningCertificate.ts +137 -0
- package/src/AWS/IAM/User.ts +436 -0
- package/src/AWS/IAM/VirtualMFADevice.ts +259 -0
- package/src/AWS/IAM/common.ts +89 -0
- package/src/AWS/IAM/index.ts +40 -0
- package/src/AWS/IdentityCenter/AccountAssignment.ts +290 -0
- package/src/AWS/IdentityCenter/Group.ts +211 -0
- package/src/AWS/IdentityCenter/Instance.ts +190 -0
- package/src/AWS/IdentityCenter/PermissionSet.ts +235 -0
- package/src/AWS/IdentityCenter/common.ts +117 -0
- package/src/AWS/IdentityCenter/index.ts +4 -0
- package/src/AWS/Kinesis/DescribeAccountSettings.ts +63 -0
- package/src/AWS/Kinesis/DescribeLimits.ts +59 -0
- package/src/AWS/Kinesis/DescribeStream.ts +69 -0
- package/src/AWS/Kinesis/DescribeStreamConsumer.ts +72 -0
- package/src/AWS/Kinesis/DescribeStreamSummary.ts +72 -0
- package/src/AWS/Kinesis/GetRecords.ts +59 -0
- package/src/AWS/Kinesis/GetResourcePolicy.ts +72 -0
- package/src/AWS/Kinesis/GetShardIterator.ts +71 -0
- package/src/AWS/Kinesis/ListShards.ts +66 -0
- package/src/AWS/Kinesis/ListStreamConsumers.ts +72 -0
- package/src/AWS/Kinesis/ListStreams.ts +56 -0
- package/src/AWS/Kinesis/ListTagsForResource.ts +78 -0
- package/src/AWS/Kinesis/PutRecord.ts +67 -0
- package/src/AWS/Kinesis/PutRecords.ts +67 -0
- package/src/AWS/Kinesis/Stream.ts +731 -0
- package/src/AWS/Kinesis/StreamConsumer.ts +325 -0
- package/src/AWS/Kinesis/StreamEventSource.ts +106 -0
- package/src/AWS/Kinesis/StreamSink.ts +68 -0
- package/src/AWS/Kinesis/SubscribeToShard.ts +71 -0
- package/src/AWS/Kinesis/index.ts +19 -0
- package/src/AWS/Lambda/BucketEventSource.ts +146 -0
- package/src/AWS/Lambda/EventBridgeEventSource.ts +183 -0
- package/src/AWS/Lambda/EventSourceMapping.ts +438 -0
- package/src/AWS/Lambda/Function.ts +1185 -0
- package/src/AWS/Lambda/HttpServer.ts +125 -0
- package/src/AWS/Lambda/InvokeFunction.ts +67 -0
- package/src/AWS/Lambda/Permission.ts +217 -0
- package/src/AWS/Lambda/QueueEventSource.ts +96 -0
- package/src/AWS/Lambda/StreamEventSource.ts +123 -0
- package/src/AWS/Lambda/TableEventSource.ts +156 -0
- package/src/AWS/Lambda/TopicEventSource.ts +105 -0
- package/src/AWS/Lambda/index.ts +13 -0
- package/src/AWS/Logs/LogGroup.ts +209 -0
- package/src/AWS/Logs/index.ts +1 -0
- package/src/AWS/Organizations/Account.ts +328 -0
- package/src/AWS/Organizations/DelegatedAdministrator.ts +158 -0
- package/src/AWS/Organizations/Organization.ts +179 -0
- package/src/AWS/Organizations/OrganizationResourcePolicy.ts +108 -0
- package/src/AWS/Organizations/OrganizationalUnit.ts +268 -0
- package/src/AWS/Organizations/Policy.ts +241 -0
- package/src/AWS/Organizations/PolicyAttachment.ts +130 -0
- package/src/AWS/Organizations/Root.ts +151 -0
- package/src/AWS/Organizations/RootPolicyType.ts +130 -0
- package/src/AWS/Organizations/TenantRoot.ts +506 -0
- package/src/AWS/Organizations/TrustedServiceAccess.ts +107 -0
- package/src/AWS/Organizations/common.ts +130 -0
- package/src/AWS/Organizations/index.ts +11 -0
- package/src/AWS/Profile.ts +5 -0
- package/src/AWS/Providers.ts +324 -0
- package/src/AWS/RDS/Aurora.ts +499 -0
- package/src/AWS/RDS/Connect.ts +127 -0
- package/src/AWS/RDS/DBCluster.ts +361 -0
- package/src/AWS/RDS/DBClusterEndpoint.ts +226 -0
- package/src/AWS/RDS/DBClusterParameterGroup.ts +195 -0
- package/src/AWS/RDS/DBInstance.ts +274 -0
- package/src/AWS/RDS/DBParameterGroup.ts +190 -0
- package/src/AWS/RDS/DBProxy.ts +257 -0
- package/src/AWS/RDS/DBProxyEndpoint.ts +255 -0
- package/src/AWS/RDS/DBProxyTargetGroup.ts +243 -0
- package/src/AWS/RDS/DBSubnetGroup.ts +208 -0
- package/src/AWS/RDS/index.ts +11 -0
- package/src/AWS/RDSData/BatchExecuteStatement.ts +103 -0
- package/src/AWS/RDSData/BeginTransaction.ts +97 -0
- package/src/AWS/RDSData/CommitTransaction.ts +102 -0
- package/src/AWS/RDSData/ExecuteSql.ts +98 -0
- package/src/AWS/RDSData/ExecuteStatement.ts +99 -0
- package/src/AWS/RDSData/RollbackTransaction.ts +105 -0
- package/src/AWS/RDSData/index.ts +6 -0
- package/src/AWS/Region.ts +77 -0
- package/src/AWS/Route53/Record.ts +342 -0
- package/src/AWS/Route53/index.ts +1 -0
- package/src/AWS/S3/AbortMultipartUpload.ts +73 -0
- package/src/AWS/S3/Bucket.ts +550 -0
- package/src/AWS/S3/BucketEventSource.ts +26 -0
- package/src/AWS/S3/BucketNotifications.ts +77 -0
- package/src/AWS/S3/CompleteMultipartUpload.ts +73 -0
- package/src/AWS/S3/CopyObject.ts +68 -0
- package/src/AWS/S3/CreateMultipartUpload.ts +73 -0
- package/src/AWS/S3/DeleteObject.ts +67 -0
- package/src/AWS/S3/GetObject.ts +74 -0
- package/src/AWS/S3/HeadObject.ts +67 -0
- package/src/AWS/S3/ListObjectsV2.ts +67 -0
- package/src/AWS/S3/PutObject.ts +83 -0
- package/src/AWS/S3/S3Event.ts +43 -0
- package/src/AWS/S3/UploadPart.ts +67 -0
- package/src/AWS/S3/index.ts +14 -0
- package/src/AWS/SNS/AddPermission.ts +66 -0
- package/src/AWS/SNS/ConfirmSubscription.ts +72 -0
- package/src/AWS/SNS/GetDataProtectionPolicy.ts +72 -0
- package/src/AWS/SNS/GetSubscriptionAttributes.ts +72 -0
- package/src/AWS/SNS/GetTopicAttributes.ts +70 -0
- package/src/AWS/SNS/ListSubscriptions.ts +60 -0
- package/src/AWS/SNS/ListSubscriptionsByTopic.ts +72 -0
- package/src/AWS/SNS/ListTagsForResource.ts +72 -0
- package/src/AWS/SNS/ListTopics.ts +56 -0
- package/src/AWS/SNS/Publish.ts +66 -0
- package/src/AWS/SNS/PublishBatch.ts +66 -0
- package/src/AWS/SNS/PutDataProtectionPolicy.ts +72 -0
- package/src/AWS/SNS/RemovePermission.ts +66 -0
- package/src/AWS/SNS/SetSubscriptionAttributes.ts +72 -0
- package/src/AWS/SNS/SetTopicAttributes.ts +70 -0
- package/src/AWS/SNS/Subscription.ts +305 -0
- package/src/AWS/SNS/TagResource.ts +66 -0
- package/src/AWS/SNS/Topic.ts +363 -0
- package/src/AWS/SNS/TopicEventSource.ts +42 -0
- package/src/AWS/SNS/TopicSink.ts +61 -0
- package/src/AWS/SNS/UntagResource.ts +66 -0
- package/src/AWS/SNS/index.ts +21 -0
- package/src/AWS/SQS/DeleteMessage.ts +67 -0
- package/src/AWS/SQS/DeleteMessageBatch.ts +72 -0
- package/src/AWS/SQS/Queue.ts +210 -0
- package/src/AWS/SQS/QueueEventSource.ts +57 -0
- package/src/AWS/SQS/QueueSink.ts +62 -0
- package/src/AWS/SQS/ReceiveMessage.ts +68 -0
- package/src/AWS/SQS/SendMessage.ts +69 -0
- package/src/AWS/SQS/SendMessageBatch.ts +67 -0
- package/src/AWS/SQS/index.ts +8 -0
- package/src/AWS/Scheduler/Schedule.ts +296 -0
- package/src/AWS/Scheduler/ScheduleGroup.ts +186 -0
- package/src/AWS/Scheduler/builders.ts +229 -0
- package/src/AWS/Scheduler/index.ts +3 -0
- package/src/AWS/SecretsManager/DescribeSecret.ts +66 -0
- package/src/AWS/SecretsManager/GetRandomPassword.ts +65 -0
- package/src/AWS/SecretsManager/GetSecretValue.ts +78 -0
- package/src/AWS/SecretsManager/ListSecrets.ts +62 -0
- package/src/AWS/SecretsManager/PutSecretValue.ts +78 -0
- package/src/AWS/SecretsManager/Secret.ts +318 -0
- package/src/AWS/SecretsManager/index.ts +6 -0
- package/src/AWS/StageConfig.ts +44 -0
- package/src/AWS/Website/AssetDeployment.ts +348 -0
- package/src/AWS/Website/Router.ts +384 -0
- package/src/AWS/Website/SsrSite.ts +393 -0
- package/src/AWS/Website/StaticSite.ts +611 -0
- package/src/AWS/Website/cfcode.ts +180 -0
- package/src/AWS/Website/index.ts +5 -0
- package/src/AWS/Website/shared.ts +223 -0
- package/src/AWS/index.ts +37 -0
- package/src/AdoptPolicy.ts +25 -0
- package/src/Agent/Agent.ts +26 -0
- package/src/Agent/Aspect.ts +173 -0
- package/src/Agent/AspectGraph.ts +98 -0
- package/src/Agent/ContextPlugin.ts +18 -0
- package/src/Agent/Plugin.ts +29 -0
- package/src/Agent/chat/channel.ts +26 -0
- package/src/Agent/chat/event.ts +43 -0
- package/src/Agent/chat/message.ts +35 -0
- package/src/Agent/chat/service.ts +133 -0
- package/src/Agent/chat/thread.ts +17 -0
- package/src/Agent/coding/bash.ts +198 -0
- package/src/Agent/coding/edit.ts +152 -0
- package/src/Agent/coding/glob.ts +97 -0
- package/src/Agent/coding/grep.ts +144 -0
- package/src/Agent/coding/index.ts +7 -0
- package/src/Agent/coding/read.ts +119 -0
- package/src/Agent/coding/readlints.ts +78 -0
- package/src/Agent/coding/write.ts +79 -0
- package/src/Agent/fs/file.ts +22 -0
- package/src/Agent/fs/folder.ts +16 -0
- package/src/Agent/index.ts +9 -0
- package/src/Agent/llm/error.ts +330 -0
- package/src/Agent/llm/index.ts +4 -0
- package/src/Agent/llm/llm.ts +131 -0
- package/src/Agent/llm/stream-collectors.ts +58 -0
- package/src/Agent/llm/stream-text-part.ts +7 -0
- package/src/Agent/lsp/client.ts +293 -0
- package/src/Agent/lsp/diagnostics.ts +64 -0
- package/src/Agent/lsp/jsonrpc.ts +317 -0
- package/src/Agent/lsp/manager.ts +213 -0
- package/src/Agent/lsp/servers.ts +37 -0
- package/src/Agent/process/driver.ts +168 -0
- package/src/Agent/process/issue-service.ts +48 -0
- package/src/Agent/process/issue-tools.ts +33 -0
- package/src/Agent/process/issue.ts +22 -0
- package/src/Agent/process/organization.ts +16 -0
- package/src/Agent/process/process.ts +16 -0
- package/src/Agent/process/reply.ts +21 -0
- package/src/Agent/process/task.ts +34 -0
- package/src/Agent/tool/index.ts +3 -0
- package/src/Agent/tool/parameter.ts +35 -0
- package/src/Agent/tool/result.ts +51 -0
- package/src/Agent/tool/tool.ts +74 -0
- package/src/Agent/util/command-validator.ts +98 -0
- package/src/Agent/util/exec.ts +18 -0
- package/src/Agent/util/parser.ts +39 -0
- package/src/Agent/util/replace.ts +559 -0
- package/src/Agent/util/ripgrep.ts +256 -0
- package/src/Apply.ts +1074 -0
- package/src/Binding.ts +193 -0
- package/src/Build/Command.ts +322 -0
- package/src/Build/index.ts +1 -0
- package/src/Bundle/Bundle.ts +215 -0
- package/src/Bundle/Docker.ts +213 -0
- package/src/Bundle/TempRoot.ts +104 -0
- package/src/Bundle/index.ts +3 -0
- package/src/Cli/Cli.ts +23 -0
- package/src/Cli/Event.ts +32 -0
- package/src/Cli/InkCLI.tsx +60 -0
- package/src/Cli/NamespaceTree.ts +199 -0
- package/src/Cli/Reporter.ts +8 -0
- package/src/Cli/components/ApprovePlan.tsx +44 -0
- package/src/Cli/components/Plan.tsx +148 -0
- package/src/Cli/components/PlanProgress.tsx +325 -0
- package/src/Cli/index.ts +2 -0
- package/src/Cloudflare/Account.ts +38 -0
- package/src/Cloudflare/Container.ts +1345 -0
- package/src/Cloudflare/KV/Delete.ts +38 -0
- package/src/Cloudflare/KV/Get.ts +40 -0
- package/src/Cloudflare/KV/GetWithMetadata.ts +54 -0
- package/src/Cloudflare/KV/List.ts +45 -0
- package/src/Cloudflare/KV/Namespace.ts +150 -0
- package/src/Cloudflare/KV/NamespaceBinding.ts +25 -0
- package/src/Cloudflare/KV/Put.ts +59 -0
- package/src/Cloudflare/KV/index.ts +6 -0
- package/src/Cloudflare/Logs.ts +139 -0
- package/src/Cloudflare/Providers.ts +75 -0
- package/src/Cloudflare/R2/Bucket.ts +173 -0
- package/src/Cloudflare/R2/BucketBinding.ts +31 -0
- package/src/Cloudflare/R2/CreateMultipartUpload.ts +59 -0
- package/src/Cloudflare/R2/DeleteObject.ts +41 -0
- package/src/Cloudflare/R2/GetObject.ts +47 -0
- package/src/Cloudflare/R2/HeadObject.ts +41 -0
- package/src/Cloudflare/R2/ListObjects.ts +45 -0
- package/src/Cloudflare/R2/MultipartUploadClient.ts +40 -0
- package/src/Cloudflare/R2/PutObject.ts +55 -0
- package/src/Cloudflare/R2/ResumeMultipartUpload.ts +48 -0
- package/src/Cloudflare/R2/UploadValue.ts +10 -0
- package/src/Cloudflare/R2/index.ts +9 -0
- package/src/Cloudflare/StageConfig.ts +8 -0
- package/src/Cloudflare/Website/StaticSite.ts +35 -0
- package/src/Cloudflare/Website/TanstackStart.ts +14 -0
- package/src/Cloudflare/Website/index.ts +2 -0
- package/src/Cloudflare/Workers/Assets.ts +286 -0
- package/src/Cloudflare/Workers/ConfigProvider.ts +9 -0
- package/src/Cloudflare/Workers/DurableObject.ts +558 -0
- package/src/Cloudflare/Workers/DynamicWorker.ts +144 -0
- package/src/Cloudflare/Workers/Fetch.ts +142 -0
- package/src/Cloudflare/Workers/Fetcher.ts +280 -0
- package/src/Cloudflare/Workers/HttpServer.ts +159 -0
- package/src/Cloudflare/Workers/Rpc.ts +472 -0
- package/src/Cloudflare/Workers/WebSocket.ts +44 -0
- package/src/Cloudflare/Workers/Worker.ts +1222 -0
- package/src/Cloudflare/Workers/Workflow.ts +400 -0
- package/src/Cloudflare/Workers/cloudflare_workers.ts +25 -0
- package/src/Cloudflare/Workers/index.ts +10 -0
- package/src/Cloudflare/index.ts +7 -0
- package/src/Cloudflare/stream.ts +20 -0
- package/src/Config.ts +31 -0
- package/src/Construct.ts +75 -0
- package/src/Daemon/Client.ts +112 -0
- package/src/Daemon/Config.ts +28 -0
- package/src/Daemon/Errors.ts +32 -0
- package/src/Daemon/Lock.ts +162 -0
- package/src/Daemon/ProcessRegistry.ts +284 -0
- package/src/Daemon/RpcSchema.ts +43 -0
- package/src/Daemon/RpcServer.ts +231 -0
- package/src/Daemon/index.ts +25 -0
- package/src/Destroy.ts +15 -0
- package/src/Diff.ts +142 -0
- package/src/ExecutionContext.ts +30 -0
- package/src/FQN.ts +94 -0
- package/src/Http.ts +105 -0
- package/src/Input.ts +91 -0
- package/src/InstanceId.ts +19 -0
- package/src/Kubernetes/ConfigMap.ts +59 -0
- package/src/Kubernetes/Deployment.ts +123 -0
- package/src/Kubernetes/Job.ts +82 -0
- package/src/Kubernetes/Namespace.ts +49 -0
- package/src/Kubernetes/Object.ts +99 -0
- package/src/Kubernetes/Service.ts +78 -0
- package/src/Kubernetes/ServiceAccount.ts +49 -0
- package/src/Kubernetes/client.ts +298 -0
- package/src/Kubernetes/common.ts +23 -0
- package/src/Kubernetes/index.ts +11 -0
- package/src/Kubernetes/types.ts +177 -0
- package/src/Namespace.ts +64 -0
- package/src/Observability.ts +0 -0
- package/src/Output.ts +584 -0
- package/src/Phase.ts +5 -0
- package/src/PhysicalName.ts +62 -0
- package/src/Plan.ts +899 -0
- package/src/Platform.ts +398 -0
- package/src/Provider.ts +156 -0
- package/src/Ref.ts +46 -0
- package/src/RemovalPolicy.ts +51 -0
- package/src/Resource.ts +387 -0
- package/src/SQLite/BunSQLite.ts +132 -0
- package/src/SQLite/SQLite.ts +19 -0
- package/src/SQLite/SQLiteConnection.ts +55 -0
- package/src/SQLite/SQLiteError.ts +904 -0
- package/src/SQLite/SQLiteStatement.ts +24 -0
- package/src/SQLite/index.ts +6 -0
- package/src/SQLite/libSQL.ts +194 -0
- package/src/Schema.ts +333 -0
- package/src/Self.ts +10 -0
- package/src/Server/Process.ts +30 -0
- package/src/Server/S3BucketEventSource.ts +100 -0
- package/src/Server/SQSQueueEventSource.ts +77 -0
- package/src/Server/index.ts +3 -0
- package/src/Serverless/Function.ts +18 -0
- package/src/Serverless/index.ts +1 -0
- package/src/Spawn.ts +23 -0
- package/src/Stack.ts +84 -0
- package/src/Stage.ts +3 -0
- package/src/State/InMemoryState.ts +86 -0
- package/src/State/LocalState.ts +120 -0
- package/src/State/ResourceState.ts +121 -0
- package/src/State/State.ts +72 -0
- package/src/State/index.ts +4 -0
- package/src/Tags.ts +104 -0
- package/src/Test/TestCli.ts +21 -0
- package/src/Test/TestState.ts +37 -0
- package/src/Test/Vitest.ts +503 -0
- package/src/Test/index.ts +3 -0
- package/src/Trait.ts +105 -0
- package/src/Util/base32.ts +44 -0
- package/src/Util/camel.ts +23 -0
- package/src/Util/class.ts +7 -0
- package/src/Util/effect.ts +57 -0
- package/src/Util/index.ts +15 -0
- package/src/Util/instance.ts +9 -0
- package/src/Util/pointer.ts +5 -0
- package/src/Util/schema-to-type.ts +456 -0
- package/src/Util/service.ts +16 -0
- package/src/Util/sha256.ts +27 -0
- package/src/Util/stable.ts +41 -0
- package/src/Util/todo.ts +4 -0
- package/src/Util/types.ts +25 -0
- package/src/Util/unknown.ts +19 -0
- package/src/Util/zip.ts +27 -0
- package/src/index.ts +29 -26
- package/README.md +0 -179
- package/lib/$.d.ts +0 -5
- package/lib/$.d.ts.map +0 -1
- package/lib/$.js +0 -9
- package/lib/$.js.map +0 -1
- package/lib/app.d.ts +0 -15
- package/lib/app.d.ts.map +0 -1
- package/lib/app.js +0 -7
- package/lib/app.js.map +0 -1
- package/lib/apply.d.ts +0 -18
- package/lib/apply.d.ts.map +0 -1
- package/lib/apply.js +0 -567
- package/lib/apply.js.map +0 -1
- package/lib/assert-never.d.ts +0 -12
- package/lib/assert-never.d.ts.map +0 -1
- package/lib/assert-never.js +0 -11
- package/lib/assert-never.js.map +0 -1
- package/lib/aws/account.d.ts +0 -27
- package/lib/aws/account.d.ts.map +0 -1
- package/lib/aws/account.js +0 -33
- package/lib/aws/account.js.map +0 -1
- package/lib/aws/arn.d.ts +0 -2
- package/lib/aws/arn.d.ts.map +0 -1
- package/lib/aws/arn.js +0 -1
- package/lib/aws/arn.js.map +0 -1
- package/lib/aws/assets.d.ts +0 -8
- package/lib/aws/assets.d.ts.map +0 -1
- package/lib/aws/assets.js +0 -4
- package/lib/aws/assets.js.map +0 -1
- package/lib/aws/bundle.d.ts +0 -4
- package/lib/aws/bundle.d.ts.map +0 -1
- package/lib/aws/bundle.js +0 -4
- package/lib/aws/bundle.js.map +0 -1
- package/lib/aws/client.d.ts +0 -8
- package/lib/aws/client.d.ts.map +0 -1
- package/lib/aws/client.js +0 -27
- package/lib/aws/client.js.map +0 -1
- package/lib/aws/config.d.ts +0 -15
- package/lib/aws/config.d.ts.map +0 -1
- package/lib/aws/config.js +0 -1
- package/lib/aws/config.js.map +0 -1
- package/lib/aws/credentials.d.ts +0 -156
- package/lib/aws/credentials.d.ts.map +0 -1
- package/lib/aws/credentials.js +0 -196
- package/lib/aws/credentials.js.map +0 -1
- package/lib/aws/dynamodb/attribute-value.d.ts +0 -20
- package/lib/aws/dynamodb/attribute-value.d.ts.map +0 -1
- package/lib/aws/dynamodb/attribute-value.js +0 -217
- package/lib/aws/dynamodb/attribute-value.js.map +0 -1
- package/lib/aws/dynamodb/client.d.ts +0 -12
- package/lib/aws/dynamodb/client.d.ts.map +0 -1
- package/lib/aws/dynamodb/client.js +0 -11
- package/lib/aws/dynamodb/client.js.map +0 -1
- package/lib/aws/dynamodb/expr.d.ts +0 -41
- package/lib/aws/dynamodb/expr.d.ts.map +0 -1
- package/lib/aws/dynamodb/expr.js +0 -1
- package/lib/aws/dynamodb/expr.js.map +0 -1
- package/lib/aws/dynamodb/index.d.ts +0 -10
- package/lib/aws/dynamodb/index.d.ts.map +0 -1
- package/lib/aws/dynamodb/index.js +0 -9
- package/lib/aws/dynamodb/index.js.map +0 -1
- package/lib/aws/dynamodb/projection.d.ts +0 -25
- package/lib/aws/dynamodb/projection.d.ts.map +0 -1
- package/lib/aws/dynamodb/projection.js +0 -1
- package/lib/aws/dynamodb/projection.js.map +0 -1
- package/lib/aws/dynamodb/secondary-index.d.ts +0 -26
- package/lib/aws/dynamodb/secondary-index.d.ts.map +0 -1
- package/lib/aws/dynamodb/secondary-index.js +0 -4
- package/lib/aws/dynamodb/secondary-index.js.map +0 -1
- package/lib/aws/dynamodb/table.d.ts +0 -59
- package/lib/aws/dynamodb/table.d.ts.map +0 -1
- package/lib/aws/dynamodb/table.get-item.d.ts +0 -57
- package/lib/aws/dynamodb/table.get-item.d.ts.map +0 -1
- package/lib/aws/dynamodb/table.get-item.js +0 -77
- package/lib/aws/dynamodb/table.get-item.js.map +0 -1
- package/lib/aws/dynamodb/table.js +0 -4
- package/lib/aws/dynamodb/table.js.map +0 -1
- package/lib/aws/dynamodb/table.provider.d.ts +0 -7
- package/lib/aws/dynamodb/table.provider.d.ts.map +0 -1
- package/lib/aws/dynamodb/table.provider.js +0 -196
- package/lib/aws/dynamodb/table.provider.js.map +0 -1
- package/lib/aws/ec2/client.d.ts +0 -12
- package/lib/aws/ec2/client.d.ts.map +0 -1
- package/lib/aws/ec2/client.js +0 -11
- package/lib/aws/ec2/client.js.map +0 -1
- package/lib/aws/ec2/index.d.ts +0 -15
- package/lib/aws/ec2/index.d.ts.map +0 -1
- package/lib/aws/ec2/index.js +0 -15
- package/lib/aws/ec2/index.js.map +0 -1
- package/lib/aws/ec2/internet-gateway.d.ts +0 -65
- package/lib/aws/ec2/internet-gateway.d.ts.map +0 -1
- package/lib/aws/ec2/internet-gateway.js +0 -4
- package/lib/aws/ec2/internet-gateway.js.map +0 -1
- package/lib/aws/ec2/internet-gateway.provider.d.ts +0 -6
- package/lib/aws/ec2/internet-gateway.provider.d.ts.map +0 -1
- package/lib/aws/ec2/internet-gateway.provider.js +0 -193
- package/lib/aws/ec2/internet-gateway.provider.js.map +0 -1
- package/lib/aws/ec2/route-table-association.d.ts +0 -63
- package/lib/aws/ec2/route-table-association.d.ts.map +0 -1
- package/lib/aws/ec2/route-table-association.js +0 -4
- package/lib/aws/ec2/route-table-association.js.map +0 -1
- package/lib/aws/ec2/route-table-association.provider.d.ts +0 -4
- package/lib/aws/ec2/route-table-association.provider.d.ts.map +0 -1
- package/lib/aws/ec2/route-table-association.provider.js +0 -121
- package/lib/aws/ec2/route-table-association.provider.js.map +0 -1
- package/lib/aws/ec2/route-table.d.ts +0 -159
- package/lib/aws/ec2/route-table.d.ts.map +0 -1
- package/lib/aws/ec2/route-table.js +0 -4
- package/lib/aws/ec2/route-table.js.map +0 -1
- package/lib/aws/ec2/route-table.provider.d.ts +0 -6
- package/lib/aws/ec2/route-table.provider.d.ts.map +0 -1
- package/lib/aws/ec2/route-table.provider.js +0 -213
- package/lib/aws/ec2/route-table.provider.js.map +0 -1
- package/lib/aws/ec2/route.d.ts +0 -155
- package/lib/aws/ec2/route.d.ts.map +0 -1
- package/lib/aws/ec2/route.js +0 -3
- package/lib/aws/ec2/route.js.map +0 -1
- package/lib/aws/ec2/route.provider.d.ts +0 -4
- package/lib/aws/ec2/route.provider.d.ts.map +0 -1
- package/lib/aws/ec2/route.provider.js +0 -166
- package/lib/aws/ec2/route.provider.js.map +0 -1
- package/lib/aws/ec2/subnet.d.ts +0 -175
- package/lib/aws/ec2/subnet.d.ts.map +0 -1
- package/lib/aws/ec2/subnet.js +0 -4
- package/lib/aws/ec2/subnet.js.map +0 -1
- package/lib/aws/ec2/subnet.provider.d.ts +0 -4
- package/lib/aws/ec2/subnet.provider.d.ts.map +0 -1
- package/lib/aws/ec2/subnet.provider.js +0 -250
- package/lib/aws/ec2/subnet.provider.js.map +0 -1
- package/lib/aws/ec2/vpc.d.ts +0 -136
- package/lib/aws/ec2/vpc.d.ts.map +0 -1
- package/lib/aws/ec2/vpc.js +0 -4
- package/lib/aws/ec2/vpc.js.map +0 -1
- package/lib/aws/ec2/vpc.provider.d.ts +0 -6
- package/lib/aws/ec2/vpc.provider.d.ts.map +0 -1
- package/lib/aws/ec2/vpc.provider.js +0 -205
- package/lib/aws/ec2/vpc.provider.js.map +0 -1
- package/lib/aws/iam.d.ts +0 -23
- package/lib/aws/iam.d.ts.map +0 -1
- package/lib/aws/iam.js +0 -7
- package/lib/aws/iam.js.map +0 -1
- package/lib/aws/index.d.ts +0 -28
- package/lib/aws/index.d.ts.map +0 -1
- package/lib/aws/index.js +0 -21
- package/lib/aws/index.js.map +0 -1
- package/lib/aws/lambda/client.d.ts +0 -8
- package/lib/aws/lambda/client.d.ts.map +0 -1
- package/lib/aws/lambda/client.js +0 -7
- package/lib/aws/lambda/client.js.map +0 -1
- package/lib/aws/lambda/consume.d.ts +0 -16
- package/lib/aws/lambda/consume.d.ts.map +0 -1
- package/lib/aws/lambda/consume.js +0 -30
- package/lib/aws/lambda/consume.js.map +0 -1
- package/lib/aws/lambda/function.d.ts +0 -41
- package/lib/aws/lambda/function.d.ts.map +0 -1
- package/lib/aws/lambda/function.handler.d.ts +0 -7
- package/lib/aws/lambda/function.handler.d.ts.map +0 -1
- package/lib/aws/lambda/function.handler.js +0 -8
- package/lib/aws/lambda/function.handler.js.map +0 -1
- package/lib/aws/lambda/function.invoke.d.ts +0 -12
- package/lib/aws/lambda/function.invoke.d.ts.map +0 -1
- package/lib/aws/lambda/function.invoke.js +0 -33
- package/lib/aws/lambda/function.invoke.js.map +0 -1
- package/lib/aws/lambda/function.js +0 -3
- package/lib/aws/lambda/function.js.map +0 -1
- package/lib/aws/lambda/function.provider.d.ts +0 -10
- package/lib/aws/lambda/function.provider.d.ts.map +0 -1
- package/lib/aws/lambda/function.provider.js +0 -464
- package/lib/aws/lambda/function.provider.js.map +0 -1
- package/lib/aws/lambda/index.d.ts +0 -9
- package/lib/aws/lambda/index.d.ts.map +0 -1
- package/lib/aws/lambda/index.js +0 -10
- package/lib/aws/lambda/index.js.map +0 -1
- package/lib/aws/lambda/serve.d.ts +0 -12
- package/lib/aws/lambda/serve.d.ts.map +0 -1
- package/lib/aws/lambda/serve.js +0 -7
- package/lib/aws/lambda/serve.js.map +0 -1
- package/lib/aws/parse-ini.d.ts +0 -4
- package/lib/aws/parse-ini.d.ts.map +0 -1
- package/lib/aws/parse-ini.js +0 -67
- package/lib/aws/parse-ini.js.map +0 -1
- package/lib/aws/profile.d.ts +0 -6
- package/lib/aws/profile.d.ts.map +0 -1
- package/lib/aws/profile.js +0 -4
- package/lib/aws/profile.js.map +0 -1
- package/lib/aws/region.d.ts +0 -31
- package/lib/aws/region.d.ts.map +0 -1
- package/lib/aws/region.js +0 -46
- package/lib/aws/region.js.map +0 -1
- package/lib/aws/s3.d.ts +0 -8
- package/lib/aws/s3.d.ts.map +0 -1
- package/lib/aws/s3.js +0 -7
- package/lib/aws/s3.js.map +0 -1
- package/lib/aws/sqs/client.d.ts +0 -12
- package/lib/aws/sqs/client.d.ts.map +0 -1
- package/lib/aws/sqs/client.js +0 -11
- package/lib/aws/sqs/client.js.map +0 -1
- package/lib/aws/sqs/index.d.ts +0 -8
- package/lib/aws/sqs/index.d.ts.map +0 -1
- package/lib/aws/sqs/index.js +0 -8
- package/lib/aws/sqs/index.js.map +0 -1
- package/lib/aws/sqs/queue.consume.d.ts +0 -12
- package/lib/aws/sqs/queue.consume.d.ts.map +0 -1
- package/lib/aws/sqs/queue.consume.js +0 -2
- package/lib/aws/sqs/queue.consume.js.map +0 -1
- package/lib/aws/sqs/queue.d.ts +0 -81
- package/lib/aws/sqs/queue.d.ts.map +0 -1
- package/lib/aws/sqs/queue.event-source.d.ts +0 -22
- package/lib/aws/sqs/queue.event-source.d.ts.map +0 -1
- package/lib/aws/sqs/queue.event-source.js +0 -130
- package/lib/aws/sqs/queue.event-source.js.map +0 -1
- package/lib/aws/sqs/queue.js +0 -3
- package/lib/aws/sqs/queue.js.map +0 -1
- package/lib/aws/sqs/queue.provider.d.ts +0 -6
- package/lib/aws/sqs/queue.provider.d.ts.map +0 -1
- package/lib/aws/sqs/queue.provider.js +0 -87
- package/lib/aws/sqs/queue.provider.js.map +0 -1
- package/lib/aws/sqs/queue.send-message.d.ts +0 -13
- package/lib/aws/sqs/queue.send-message.d.ts.map +0 -1
- package/lib/aws/sqs/queue.send-message.js +0 -34
- package/lib/aws/sqs/queue.send-message.js.map +0 -1
- package/lib/aws/sts.d.ts +0 -8
- package/lib/aws/sts.d.ts.map +0 -1
- package/lib/aws/sts.js +0 -7
- package/lib/aws/sts.js.map +0 -1
- package/lib/aws/zip.d.ts +0 -3
- package/lib/aws/zip.d.ts.map +0 -1
- package/lib/aws/zip.js +0 -12
- package/lib/aws/zip.js.map +0 -1
- package/lib/binding.d.ts +0 -106
- package/lib/binding.d.ts.map +0 -1
- package/lib/binding.js +0 -27
- package/lib/binding.js.map +0 -1
- package/lib/capability.d.ts +0 -49
- package/lib/capability.d.ts.map +0 -1
- package/lib/capability.js +0 -1
- package/lib/capability.js.map +0 -1
- package/lib/cli/components/ApprovePlan.d.ts +0 -8
- package/lib/cli/components/ApprovePlan.d.ts.map +0 -1
- package/lib/cli/components/ApprovePlan.js +0 -30
- package/lib/cli/components/ApprovePlan.js.map +0 -1
- package/lib/cli/components/Plan.d.ts +0 -7
- package/lib/cli/components/Plan.d.ts.map +0 -1
- package/lib/cli/components/Plan.js +0 -100
- package/lib/cli/components/Plan.js.map +0 -1
- package/lib/cli/components/PlanProgress.d.ts +0 -13
- package/lib/cli/components/PlanProgress.d.ts.map +0 -1
- package/lib/cli/components/PlanProgress.js +0 -176
- package/lib/cli/components/PlanProgress.js.map +0 -1
- package/lib/cli/ink-service.d.ts +0 -4
- package/lib/cli/ink-service.d.ts.map +0 -1
- package/lib/cli/ink-service.js +0 -43
- package/lib/cli/ink-service.js.map +0 -1
- package/lib/cli/service.d.ts +0 -21
- package/lib/cli/service.d.ts.map +0 -1
- package/lib/cli/service.js +0 -5
- package/lib/cli/service.js.map +0 -1
- package/lib/cloudflare/account.d.ts +0 -10
- package/lib/cloudflare/account.d.ts.map +0 -1
- package/lib/cloudflare/account.js +0 -24
- package/lib/cloudflare/account.js.map +0 -1
- package/lib/cloudflare/api.d.ts +0 -36
- package/lib/cloudflare/api.d.ts.map +0 -1
- package/lib/cloudflare/api.js +0 -100
- package/lib/cloudflare/api.js.map +0 -1
- package/lib/cloudflare/config.d.ts +0 -9
- package/lib/cloudflare/config.d.ts.map +0 -1
- package/lib/cloudflare/config.js +0 -1
- package/lib/cloudflare/config.js.map +0 -1
- package/lib/cloudflare/context.d.ts +0 -27
- package/lib/cloudflare/context.d.ts.map +0 -1
- package/lib/cloudflare/context.js +0 -24
- package/lib/cloudflare/context.js.map +0 -1
- package/lib/cloudflare/index.d.ts +0 -8
- package/lib/cloudflare/index.d.ts.map +0 -1
- package/lib/cloudflare/index.js +0 -8
- package/lib/cloudflare/index.js.map +0 -1
- package/lib/cloudflare/kv/index.d.ts +0 -4
- package/lib/cloudflare/kv/index.d.ts.map +0 -1
- package/lib/cloudflare/kv/index.js +0 -4
- package/lib/cloudflare/kv/index.js.map +0 -1
- package/lib/cloudflare/kv/namespace.binding.d.ts +0 -10
- package/lib/cloudflare/kv/namespace.binding.d.ts.map +0 -1
- package/lib/cloudflare/kv/namespace.binding.js +0 -15
- package/lib/cloudflare/kv/namespace.binding.js.map +0 -1
- package/lib/cloudflare/kv/namespace.client.d.ts +0 -11
- package/lib/cloudflare/kv/namespace.client.d.ts.map +0 -1
- package/lib/cloudflare/kv/namespace.client.js +0 -31
- package/lib/cloudflare/kv/namespace.client.js.map +0 -1
- package/lib/cloudflare/kv/namespace.d.ts +0 -24
- package/lib/cloudflare/kv/namespace.d.ts.map +0 -1
- package/lib/cloudflare/kv/namespace.js +0 -3
- package/lib/cloudflare/kv/namespace.js.map +0 -1
- package/lib/cloudflare/kv/namespace.provider.d.ts +0 -6
- package/lib/cloudflare/kv/namespace.provider.d.ts.map +0 -1
- package/lib/cloudflare/kv/namespace.provider.js +0 -87
- package/lib/cloudflare/kv/namespace.provider.js.map +0 -1
- package/lib/cloudflare/live.d.ts +0 -11
- package/lib/cloudflare/live.d.ts.map +0 -1
- package/lib/cloudflare/live.js +0 -15
- package/lib/cloudflare/live.js.map +0 -1
- package/lib/cloudflare/r2/bucket.binding.d.ts +0 -10
- package/lib/cloudflare/r2/bucket.binding.d.ts.map +0 -1
- package/lib/cloudflare/r2/bucket.binding.js +0 -18
- package/lib/cloudflare/r2/bucket.binding.js.map +0 -1
- package/lib/cloudflare/r2/bucket.client.d.ts +0 -8
- package/lib/cloudflare/r2/bucket.client.d.ts.map +0 -1
- package/lib/cloudflare/r2/bucket.client.js +0 -9
- package/lib/cloudflare/r2/bucket.client.js.map +0 -1
- package/lib/cloudflare/r2/bucket.d.ts +0 -33
- package/lib/cloudflare/r2/bucket.d.ts.map +0 -1
- package/lib/cloudflare/r2/bucket.del.d.ts +0 -4
- package/lib/cloudflare/r2/bucket.del.d.ts.map +0 -1
- package/lib/cloudflare/r2/bucket.del.js +0 -7
- package/lib/cloudflare/r2/bucket.del.js.map +0 -1
- package/lib/cloudflare/r2/bucket.get.d.ts +0 -5
- package/lib/cloudflare/r2/bucket.get.d.ts.map +0 -1
- package/lib/cloudflare/r2/bucket.get.js +0 -7
- package/lib/cloudflare/r2/bucket.get.js.map +0 -1
- package/lib/cloudflare/r2/bucket.head.d.ts +0 -4
- package/lib/cloudflare/r2/bucket.head.d.ts.map +0 -1
- package/lib/cloudflare/r2/bucket.head.js +0 -7
- package/lib/cloudflare/r2/bucket.head.js.map +0 -1
- package/lib/cloudflare/r2/bucket.js +0 -3
- package/lib/cloudflare/r2/bucket.js.map +0 -1
- package/lib/cloudflare/r2/bucket.list.d.ts +0 -5
- package/lib/cloudflare/r2/bucket.list.d.ts.map +0 -1
- package/lib/cloudflare/r2/bucket.list.js +0 -7
- package/lib/cloudflare/r2/bucket.list.js.map +0 -1
- package/lib/cloudflare/r2/bucket.multipart.d.ts +0 -19
- package/lib/cloudflare/r2/bucket.multipart.d.ts.map +0 -1
- package/lib/cloudflare/r2/bucket.multipart.js +0 -25
- package/lib/cloudflare/r2/bucket.multipart.js.map +0 -1
- package/lib/cloudflare/r2/bucket.provider.d.ts +0 -5
- package/lib/cloudflare/r2/bucket.provider.d.ts.map +0 -1
- package/lib/cloudflare/r2/bucket.provider.js +0 -78
- package/lib/cloudflare/r2/bucket.provider.js.map +0 -1
- package/lib/cloudflare/r2/bucket.put.d.ts +0 -6
- package/lib/cloudflare/r2/bucket.put.d.ts.map +0 -1
- package/lib/cloudflare/r2/bucket.put.js +0 -8
- package/lib/cloudflare/r2/bucket.put.js.map +0 -1
- package/lib/cloudflare/r2/index.d.ts +0 -10
- package/lib/cloudflare/r2/index.d.ts.map +0 -1
- package/lib/cloudflare/r2/index.js +0 -10
- package/lib/cloudflare/r2/index.js.map +0 -1
- package/lib/cloudflare/stream.d.ts +0 -10
- package/lib/cloudflare/stream.d.ts.map +0 -1
- package/lib/cloudflare/stream.js +0 -16
- package/lib/cloudflare/stream.js.map +0 -1
- package/lib/cloudflare/worker/assets.fetch.d.ts +0 -9
- package/lib/cloudflare/worker/assets.fetch.d.ts.map +0 -1
- package/lib/cloudflare/worker/assets.fetch.js +0 -12
- package/lib/cloudflare/worker/assets.fetch.js.map +0 -1
- package/lib/cloudflare/worker/assets.provider.d.ts +0 -66
- package/lib/cloudflare/worker/assets.provider.d.ts.map +0 -1
- package/lib/cloudflare/worker/assets.provider.js +0 -145
- package/lib/cloudflare/worker/assets.provider.js.map +0 -1
- package/lib/cloudflare/worker/index.d.ts +0 -5
- package/lib/cloudflare/worker/index.d.ts.map +0 -1
- package/lib/cloudflare/worker/index.js +0 -5
- package/lib/cloudflare/worker/index.js.map +0 -1
- package/lib/cloudflare/worker/worker.d.ts +0 -66
- package/lib/cloudflare/worker/worker.d.ts.map +0 -1
- package/lib/cloudflare/worker/worker.handler.d.ts +0 -11
- package/lib/cloudflare/worker/worker.handler.d.ts.map +0 -1
- package/lib/cloudflare/worker/worker.handler.js +0 -15
- package/lib/cloudflare/worker/worker.handler.js.map +0 -1
- package/lib/cloudflare/worker/worker.js +0 -4
- package/lib/cloudflare/worker/worker.js.map +0 -1
- package/lib/cloudflare/worker/worker.provider.d.ts +0 -10
- package/lib/cloudflare/worker/worker.provider.d.ts.map +0 -1
- package/lib/cloudflare/worker/worker.provider.js +0 -225
- package/lib/cloudflare/worker/worker.provider.js.map +0 -1
- package/lib/cloudflare/worker/worker.serve.d.ts +0 -39
- package/lib/cloudflare/worker/worker.serve.d.ts.map +0 -1
- package/lib/cloudflare/worker/worker.serve.js +0 -4
- package/lib/cloudflare/worker/worker.serve.js.map +0 -1
- package/lib/data.d.ts +0 -3
- package/lib/data.d.ts.map +0 -1
- package/lib/data.js +0 -8
- package/lib/data.js.map +0 -1
- package/lib/destroy.d.ts +0 -2
- package/lib/destroy.d.ts.map +0 -1
- package/lib/destroy.js +0 -3
- package/lib/destroy.js.map +0 -1
- package/lib/diff.d.ts +0 -18
- package/lib/diff.d.ts.map +0 -1
- package/lib/diff.js +0 -22
- package/lib/diff.js.map +0 -1
- package/lib/dot-alchemy.d.ts +0 -10
- package/lib/dot-alchemy.d.ts.map +0 -1
- package/lib/dot-alchemy.js +0 -15
- package/lib/dot-alchemy.js.map +0 -1
- package/lib/env.d.ts +0 -9
- package/lib/env.d.ts.map +0 -1
- package/lib/env.js +0 -19
- package/lib/env.js.map +0 -1
- package/lib/esbuild.d.ts +0 -28
- package/lib/esbuild.d.ts.map +0 -1
- package/lib/esbuild.js +0 -63
- package/lib/esbuild.js.map +0 -1
- package/lib/event.d.ts +0 -16
- package/lib/event.d.ts.map +0 -1
- package/lib/event.js +0 -1
- package/lib/event.js.map +0 -1
- package/lib/exports.d.ts +0 -9
- package/lib/exports.d.ts.map +0 -1
- package/lib/exports.js +0 -13
- package/lib/exports.js.map +0 -1
- package/lib/index.d.ts +0 -27
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -27
- package/lib/index.js.map +0 -1
- package/lib/input.d.ts +0 -32
- package/lib/input.d.ts.map +0 -1
- package/lib/input.js +0 -1
- package/lib/input.js.map +0 -1
- package/lib/instance-id.d.ts +0 -12
- package/lib/instance-id.d.ts.map +0 -1
- package/lib/instance-id.js +0 -16
- package/lib/instance-id.js.map +0 -1
- package/lib/output.d.ts +0 -145
- package/lib/output.d.ts.map +0 -1
- package/lib/output.js +0 -283
- package/lib/output.js.map +0 -1
- package/lib/phase.d.ts +0 -2
- package/lib/phase.d.ts.map +0 -1
- package/lib/phase.js +0 -1
- package/lib/phase.js.map +0 -1
- package/lib/physical-name.d.ts +0 -28
- package/lib/physical-name.d.ts.map +0 -1
- package/lib/physical-name.js +0 -55
- package/lib/physical-name.js.map +0 -1
- package/lib/plan.d.ts +0 -135
- package/lib/plan.d.ts.map +0 -1
- package/lib/plan.js +0 -686
- package/lib/plan.js.map +0 -1
- package/lib/policy.d.ts +0 -54
- package/lib/policy.d.ts.map +0 -1
- package/lib/policy.js +0 -24
- package/lib/policy.js.map +0 -1
- package/lib/provider.d.ts +0 -71
- package/lib/provider.d.ts.map +0 -1
- package/lib/provider.js +0 -11
- package/lib/provider.js.map +0 -1
- package/lib/ref.d.ts +0 -14
- package/lib/ref.d.ts.map +0 -1
- package/lib/ref.js +0 -21
- package/lib/ref.js.map +0 -1
- package/lib/reporter.d.ts +0 -8
- package/lib/reporter.d.ts.map +0 -1
- package/lib/reporter.js +0 -4
- package/lib/reporter.js.map +0 -1
- package/lib/resource.d.ts +0 -36
- package/lib/resource.d.ts.map +0 -1
- package/lib/resource.js +0 -26
- package/lib/resource.js.map +0 -1
- package/lib/runtime.d.ts +0 -40
- package/lib/runtime.d.ts.map +0 -1
- package/lib/runtime.js +0 -54
- package/lib/runtime.js.map +0 -1
- package/lib/schema.d.ts +0 -37
- package/lib/schema.d.ts.map +0 -1
- package/lib/schema.js +0 -61
- package/lib/schema.js.map +0 -1
- package/lib/service.d.ts +0 -36
- package/lib/service.d.ts.map +0 -1
- package/lib/service.js +0 -4
- package/lib/service.js.map +0 -1
- package/lib/sha256.d.ts +0 -5
- package/lib/sha256.d.ts.map +0 -1
- package/lib/sha256.js +0 -16
- package/lib/sha256.js.map +0 -1
- package/lib/stack.d.ts +0 -60
- package/lib/stack.d.ts.map +0 -1
- package/lib/stack.js +0 -11
- package/lib/stack.js.map +0 -1
- package/lib/stage.d.ts +0 -39
- package/lib/stage.d.ts.map +0 -1
- package/lib/stage.js +0 -32
- package/lib/stage.js.map +0 -1
- package/lib/state.d.ts +0 -157
- package/lib/state.d.ts.map +0 -1
- package/lib/state.js +0 -71
- package/lib/state.js.map +0 -1
- package/lib/tags.d.ts +0 -32
- package/lib/tags.d.ts.map +0 -1
- package/lib/tags.js +0 -49
- package/lib/tags.js.map +0 -1
- package/lib/test.d.ts +0 -35
- package/lib/test.d.ts.map +0 -1
- package/lib/test.js +0 -68
- package/lib/test.js.map +0 -1
- package/lib/todo.d.ts +0 -3
- package/lib/todo.d.ts.map +0 -1
- package/lib/todo.js +0 -3
- package/lib/todo.js.map +0 -1
- package/lib/tsconfig.test.tsbuildinfo +0 -1
- package/lib/type.d.ts +0 -6
- package/lib/type.d.ts.map +0 -1
- package/lib/type.js +0 -3
- package/lib/type.js.map +0 -1
- package/lib/unknown.d.ts +0 -4
- package/lib/unknown.d.ts.map +0 -1
- package/lib/unknown.js +0 -4
- package/lib/unknown.js.map +0 -1
- package/lib/user.d.ts +0 -3
- package/lib/user.d.ts.map +0 -1
- package/lib/user.js +0 -3
- package/lib/user.js.map +0 -1
- package/lib/util.d.ts +0 -6
- package/lib/util.d.ts.map +0 -1
- package/lib/util.js +0 -9
- package/lib/util.js.map +0 -1
- package/src/$.ts +0 -17
- package/src/app.ts +0 -15
- package/src/apply.ts +0 -858
- package/src/aws/account.ts +0 -57
- package/src/aws/assets.ts +0 -8
- package/src/aws/bundle.ts +0 -5
- package/src/aws/client.ts +0 -46
- package/src/aws/config.ts +0 -16
- package/src/aws/credentials.ts +0 -444
- package/src/aws/dynamodb/attribute-value.ts +0 -240
- package/src/aws/dynamodb/client.ts +0 -20
- package/src/aws/dynamodb/index.ts +0 -12
- package/src/aws/dynamodb/projection.ts +0 -159
- package/src/aws/dynamodb/secondary-index.ts +0 -45
- package/src/aws/dynamodb/table.get-item.ts +0 -173
- package/src/aws/dynamodb/table.provider.ts +0 -288
- package/src/aws/dynamodb/table.ts +0 -101
- package/src/aws/ec2/client.ts +0 -20
- package/src/aws/ec2/index.ts +0 -15
- package/src/aws/ec2/internet-gateway.provider.ts +0 -316
- package/src/aws/ec2/internet-gateway.ts +0 -79
- package/src/aws/ec2/route-table-association.provider.ts +0 -214
- package/src/aws/ec2/route-table-association.ts +0 -82
- package/src/aws/ec2/route-table.provider.ts +0 -306
- package/src/aws/ec2/route-table.ts +0 -175
- package/src/aws/ec2/route.provider.ts +0 -213
- package/src/aws/ec2/route.ts +0 -192
- package/src/aws/ec2/subnet.provider.ts +0 -358
- package/src/aws/ec2/subnet.ts +0 -213
- package/src/aws/ec2/vpc.provider.ts +0 -294
- package/src/aws/ec2/vpc.ts +0 -165
- package/src/aws/iam.ts +0 -30
- package/src/aws/index.ts +0 -63
- package/src/aws/lambda/client.ts +0 -14
- package/src/aws/lambda/consume.ts +0 -64
- package/src/aws/lambda/function.handler.ts +0 -30
- package/src/aws/lambda/function.invoke.ts +0 -44
- package/src/aws/lambda/function.provider.ts +0 -675
- package/src/aws/lambda/function.ts +0 -48
- package/src/aws/lambda/index.ts +0 -11
- package/src/aws/lambda/serve.ts +0 -29
- package/src/aws/parse-ini.ts +0 -80
- package/src/aws/profile.ts +0 -3
- package/src/aws/region.ts +0 -76
- package/src/aws/s3.ts +0 -10
- package/src/aws/sqs/client.ts +0 -20
- package/src/aws/sqs/index.ts +0 -8
- package/src/aws/sqs/queue.consume.ts +0 -13
- package/src/aws/sqs/queue.event-source.ts +0 -227
- package/src/aws/sqs/queue.provider.ts +0 -108
- package/src/aws/sqs/queue.send-message.ts +0 -48
- package/src/aws/sqs/queue.ts +0 -91
- package/src/aws/sts.ts +0 -13
- package/src/aws/zip.ts +0 -17
- package/src/binding.ts +0 -240
- package/src/capability.ts +0 -63
- package/src/cli/components/ApprovePlan.tsx +0 -44
- package/src/cli/components/Plan.tsx +0 -155
- package/src/cli/components/PlanProgress.tsx +0 -224
- package/src/cli/index.ts +0 -2
- package/src/cli/ink-service.tsx +0 -61
- package/src/cli/service.ts +0 -23
- package/src/cloudflare/account.ts +0 -37
- package/src/cloudflare/api.ts +0 -156
- package/src/cloudflare/config.ts +0 -7
- package/src/cloudflare/context.ts +0 -49
- package/src/cloudflare/index.ts +0 -8
- package/src/cloudflare/kv/index.ts +0 -3
- package/src/cloudflare/kv/namespace.binding.ts +0 -27
- package/src/cloudflare/kv/namespace.client.ts +0 -70
- package/src/cloudflare/kv/namespace.provider.ts +0 -105
- package/src/cloudflare/kv/namespace.ts +0 -30
- package/src/cloudflare/live.ts +0 -32
- package/src/cloudflare/r2/bucket.binding.ts +0 -29
- package/src/cloudflare/r2/bucket.client.ts +0 -22
- package/src/cloudflare/r2/bucket.del.ts +0 -11
- package/src/cloudflare/r2/bucket.get.ts +0 -13
- package/src/cloudflare/r2/bucket.head.ts +0 -11
- package/src/cloudflare/r2/bucket.list.ts +0 -12
- package/src/cloudflare/r2/bucket.multipart.ts +0 -55
- package/src/cloudflare/r2/bucket.provider.ts +0 -94
- package/src/cloudflare/r2/bucket.put.ts +0 -17
- package/src/cloudflare/r2/bucket.ts +0 -44
- package/src/cloudflare/r2/index.ts +0 -9
- package/src/cloudflare/stream.ts +0 -21
- package/src/cloudflare/worker/assets.fetch.ts +0 -29
- package/src/cloudflare/worker/assets.provider.ts +0 -249
- package/src/cloudflare/worker/index.ts +0 -4
- package/src/cloudflare/worker/worker.handler.ts +0 -39
- package/src/cloudflare/worker/worker.provider.ts +0 -279
- package/src/cloudflare/worker/worker.serve.ts +0 -22
- package/src/cloudflare/worker/worker.ts +0 -77
- package/src/destroy.ts +0 -3
- package/src/diff.ts +0 -48
- package/src/dot-alchemy.ts +0 -18
- package/src/env.ts +0 -39
- package/src/esbuild.ts +0 -98
- package/src/event.ts +0 -33
- package/src/exports.ts +0 -21
- package/src/input.ts +0 -81
- package/src/instance-id.ts +0 -20
- package/src/output.ts +0 -542
- package/src/phase.ts +0 -1
- package/src/physical-name.ts +0 -84
- package/src/plan.ts +0 -1123
- package/src/policy.ts +0 -128
- package/src/provider.ts +0 -112
- package/src/ref.ts +0 -48
- package/src/reporter.ts +0 -8
- package/src/resource.ts +0 -140
- package/src/runtime.ts +0 -152
- package/src/schema.ts +0 -102
- package/src/service.ts +0 -59
- package/src/sha256.ts +0 -23
- package/src/stack.ts +0 -116
- package/src/stage.ts +0 -85
- package/src/state.ts +0 -390
- package/src/tags.ts +0 -69
- package/src/test.ts +0 -172
- package/src/todo.ts +0 -4
- package/src/unknown.ts +0 -6
- package/src/user.ts +0 -4
- package/src/util.ts +0 -21
- /package/src/{aws/arn.ts → AWS/Arn.ts} +0 -0
- /package/src/{aws/dynamodb/expr.ts → AWS/DynamoDB/Expr.ts} +0 -0
- /package/src/{assert-never.ts → Util/assert-never.ts} +0 -0
- /package/src/{data.ts → Util/data.ts} +0 -0
- /package/src/{type.ts → Util/type.ts} +0 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as FileSystem from "effect/FileSystem";
|
|
3
|
+
import * as Option from "effect/Option";
|
|
4
|
+
import * as Path from "effect/Path";
|
|
5
|
+
import * as S from "effect/Schema";
|
|
6
|
+
import { AspectConfig } from "../Aspect.ts";
|
|
7
|
+
import {
|
|
8
|
+
formatDiagnostics,
|
|
9
|
+
getDiagnosticsIfAvailable,
|
|
10
|
+
} from "../lsp/diagnostics.ts";
|
|
11
|
+
import { Tool } from "../tool/tool.ts";
|
|
12
|
+
import { replace } from "../util/replace.ts";
|
|
13
|
+
|
|
14
|
+
export class filePath extends Tool.input(
|
|
15
|
+
"filePath",
|
|
16
|
+
)`The absolute path to the file to modify` {}
|
|
17
|
+
|
|
18
|
+
export class oldString extends Tool.input(
|
|
19
|
+
"oldString",
|
|
20
|
+
)`The text to replace. Use an empty string "" to create a new file.` {}
|
|
21
|
+
|
|
22
|
+
export class newString extends Tool.input(
|
|
23
|
+
"newString",
|
|
24
|
+
)`The text to replace it with (must be different from oldString)` {}
|
|
25
|
+
|
|
26
|
+
export class replaceAll extends Tool.input(
|
|
27
|
+
"replaceAll",
|
|
28
|
+
S.Boolean,
|
|
29
|
+
)`Replace all occurrences of oldString (default false). Use this when renaming variables or updating repeated patterns.` {}
|
|
30
|
+
|
|
31
|
+
export class output extends Tool.output(
|
|
32
|
+
"result",
|
|
33
|
+
)`The result of the edit operation, including any diagnostics from LSP.` {}
|
|
34
|
+
|
|
35
|
+
export class edit extends Tool(
|
|
36
|
+
"edit",
|
|
37
|
+
)`Performs exact string replacements in files.
|
|
38
|
+
Returns the ${output} of the operation.
|
|
39
|
+
|
|
40
|
+
Given a ${filePath}, ${oldString}, and ${newString}:
|
|
41
|
+
- Replaces the first occurrence of ${oldString} with ${newString}
|
|
42
|
+
- Use ${replaceAll} to replace all occurrences (defaults to false)
|
|
43
|
+
- Use empty ${oldString} ("") to create a new file with ${newString} as content
|
|
44
|
+
`(function* ({
|
|
45
|
+
filePath: _filePath,
|
|
46
|
+
oldString,
|
|
47
|
+
newString,
|
|
48
|
+
replaceAll: doReplaceAll,
|
|
49
|
+
}) {
|
|
50
|
+
const config = yield* Effect.serviceOption(AspectConfig).pipe(
|
|
51
|
+
Effect.map(Option.getOrElse(() => ({ cwd: process.cwd() }))),
|
|
52
|
+
);
|
|
53
|
+
const pathService = yield* Path.Path;
|
|
54
|
+
const fs = yield* FileSystem.FileSystem;
|
|
55
|
+
|
|
56
|
+
const filePath = pathService.isAbsolute(_filePath)
|
|
57
|
+
? _filePath
|
|
58
|
+
: pathService.join(config.cwd, _filePath);
|
|
59
|
+
|
|
60
|
+
// Determine new content and whether this is a create operation
|
|
61
|
+
let newContent: string;
|
|
62
|
+
|
|
63
|
+
if (oldString === "") {
|
|
64
|
+
// Create new file
|
|
65
|
+
newContent = newString;
|
|
66
|
+
} else {
|
|
67
|
+
// Edit existing file - validate it exists
|
|
68
|
+
const stat = yield* fs
|
|
69
|
+
.stat(filePath)
|
|
70
|
+
.pipe(Effect.catch(() => Effect.succeed(null)));
|
|
71
|
+
|
|
72
|
+
if (!stat) {
|
|
73
|
+
return { result: `File not found: ${filePath}` };
|
|
74
|
+
}
|
|
75
|
+
if (stat.type === "Directory") {
|
|
76
|
+
return { result: `Path is a directory, not a file: ${filePath}` };
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Read existing content
|
|
80
|
+
const oldContent = yield* fs
|
|
81
|
+
.readFileString(filePath)
|
|
82
|
+
.pipe(Effect.catch((e) => Effect.succeed(`Failed to read file: ${e}`)));
|
|
83
|
+
if (oldContent.startsWith("Failed to read")) {
|
|
84
|
+
return { result: oldContent };
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Perform replacement
|
|
88
|
+
const replaceResult = yield* replace(
|
|
89
|
+
oldContent,
|
|
90
|
+
oldString,
|
|
91
|
+
newString,
|
|
92
|
+
doReplaceAll ?? false,
|
|
93
|
+
).pipe(
|
|
94
|
+
Effect.catchTag("ReplaceSameStringError", () =>
|
|
95
|
+
Effect.succeed("oldString and newString must be different"),
|
|
96
|
+
),
|
|
97
|
+
Effect.catchTag("ReplaceNotFoundError", (e) =>
|
|
98
|
+
Effect.succeed(
|
|
99
|
+
`Could not find oldString in file. The text "${e.oldString.slice(0, 100)}${e.oldString.length > 100 ? "..." : ""}" was not found in ${filePath}.`,
|
|
100
|
+
),
|
|
101
|
+
),
|
|
102
|
+
Effect.catchTag("ReplaceMultipleMatchesError", (e) =>
|
|
103
|
+
Effect.succeed(
|
|
104
|
+
`Found multiple matches for oldString "${e.oldString.slice(0, 50)}${e.oldString.length > 50 ? "..." : ""}". Provide more surrounding context to identify the correct match, or use replaceAll=true to replace all occurrences.`,
|
|
105
|
+
),
|
|
106
|
+
),
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
// Check for replace errors
|
|
110
|
+
if (
|
|
111
|
+
replaceResult.startsWith("Could not find") ||
|
|
112
|
+
replaceResult.startsWith("Found multiple") ||
|
|
113
|
+
replaceResult.startsWith("oldString and newString")
|
|
114
|
+
) {
|
|
115
|
+
yield* Effect.logDebug(`[edit] ${replaceResult}`);
|
|
116
|
+
return { result: replaceResult };
|
|
117
|
+
}
|
|
118
|
+
newContent = replaceResult;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const isCreate = oldString === "";
|
|
122
|
+
|
|
123
|
+
// Write file
|
|
124
|
+
const writeResult = yield* fs
|
|
125
|
+
.writeFileString(filePath, newContent)
|
|
126
|
+
.pipe(
|
|
127
|
+
Effect.catch((e) =>
|
|
128
|
+
Effect.succeed(
|
|
129
|
+
`Failed to ${isCreate ? "create" : "write"} file: ${e.message}`,
|
|
130
|
+
),
|
|
131
|
+
),
|
|
132
|
+
);
|
|
133
|
+
if (typeof writeResult === "string") {
|
|
134
|
+
yield* Effect.logDebug(`[edit] ${writeResult}`);
|
|
135
|
+
return { result: writeResult };
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Get diagnostics from LSP servers
|
|
139
|
+
const diagnostics = yield* getDiagnosticsIfAvailable(filePath, newContent);
|
|
140
|
+
const formatted = formatDiagnostics(diagnostics);
|
|
141
|
+
|
|
142
|
+
yield* Effect.logDebug(
|
|
143
|
+
`[edit] diagnostics for ${filePath}: ${formatted || "(none)"}`,
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
const action = isCreate ? "Created" : "Edited";
|
|
147
|
+
return {
|
|
148
|
+
result: formatted
|
|
149
|
+
? `${action} file: ${filePath}\n\n${formatted}`
|
|
150
|
+
: `${action} file: ${filePath}`,
|
|
151
|
+
};
|
|
152
|
+
}) {}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as FileSystem from "effect/FileSystem";
|
|
3
|
+
import * as Option from "effect/Option";
|
|
4
|
+
import * as Path from "effect/Path";
|
|
5
|
+
import * as S from "effect/Schema";
|
|
6
|
+
import { cwd } from "../../Config.ts";
|
|
7
|
+
import { AspectConfig } from "../Aspect.ts";
|
|
8
|
+
import { Tool } from "../tool/tool.ts";
|
|
9
|
+
import * as Ripgrep from "../util/ripgrep.ts";
|
|
10
|
+
|
|
11
|
+
export class pattern extends Tool.input(
|
|
12
|
+
"pattern",
|
|
13
|
+
)`The glob pattern to match files against.
|
|
14
|
+
Patterns not starting with "**/" are automatically prepended with "**/" to enable recursive searching.
|
|
15
|
+
|
|
16
|
+
Examples:
|
|
17
|
+
- "*.js" (becomes "**/*.js") - find all .js files
|
|
18
|
+
- "**/node_modules/**" - find all node_modules directories
|
|
19
|
+
- "**/test/**/test_*.ts" - find all test_*.ts files in any test directory` {}
|
|
20
|
+
|
|
21
|
+
export class path extends Tool.input(
|
|
22
|
+
"path",
|
|
23
|
+
S.optional(S.String),
|
|
24
|
+
)`The directory to search in. Defaults to ${cwd} if not specified.` {}
|
|
25
|
+
|
|
26
|
+
export class files extends Tool.output(
|
|
27
|
+
"files",
|
|
28
|
+
)`The list of matching file paths, sorted by modification time (most recent first). Returns a message if no files are found.` {}
|
|
29
|
+
|
|
30
|
+
export class glob extends Tool(
|
|
31
|
+
"glob",
|
|
32
|
+
)`Fast file pattern matching tool that works with any codebase size.
|
|
33
|
+
Returns matching ${files} sorted by modification time.
|
|
34
|
+
|
|
35
|
+
Given a ${pattern} and optional ${path}:
|
|
36
|
+
- Supports glob patterns like "**/*.js" or "src/**/*.ts"
|
|
37
|
+
- Returns matching file paths sorted by modification time
|
|
38
|
+
- Use this tool when you need to find files by name patterns
|
|
39
|
+
- When you are doing an open-ended search that may require multiple rounds of globbing and grepping, use the Task tool instead
|
|
40
|
+
- You have the capability to call multiple tools in a single response. It is always better to speculatively perform multiple searches as a batch that are potentially useful.
|
|
41
|
+
`(function* ({ pattern, path: searchDir }) {
|
|
42
|
+
yield* Effect.logDebug(`[glob] pattern=${pattern} path=${searchDir}`);
|
|
43
|
+
|
|
44
|
+
const config = yield* Effect.serviceOption(AspectConfig).pipe(
|
|
45
|
+
Effect.map(Option.getOrElse(() => ({ cwd: process.cwd() }))),
|
|
46
|
+
);
|
|
47
|
+
const pathService = yield* Path.Path;
|
|
48
|
+
const fs = yield* FileSystem.FileSystem;
|
|
49
|
+
|
|
50
|
+
let searchPath = searchDir || config.cwd;
|
|
51
|
+
searchPath = pathService.isAbsolute(searchPath)
|
|
52
|
+
? searchPath
|
|
53
|
+
: pathService.resolve(config.cwd, searchPath);
|
|
54
|
+
|
|
55
|
+
const fileList: { path: string; mtime: number }[] = [];
|
|
56
|
+
const limit = 100;
|
|
57
|
+
let truncated = false;
|
|
58
|
+
|
|
59
|
+
const foundFiles = yield* Ripgrep.findFiles({
|
|
60
|
+
cwd: searchPath,
|
|
61
|
+
glob: [pattern],
|
|
62
|
+
}).pipe(Effect.catch(() => Effect.succeed([] as string[])));
|
|
63
|
+
|
|
64
|
+
for (const filePath of foundFiles) {
|
|
65
|
+
if (fileList.length >= limit) {
|
|
66
|
+
truncated = true;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
const stats = yield* fs
|
|
70
|
+
.stat(filePath)
|
|
71
|
+
.pipe(Effect.catch(() => Effect.succeed(null)));
|
|
72
|
+
if (!stats) continue;
|
|
73
|
+
fileList.push({
|
|
74
|
+
path: filePath,
|
|
75
|
+
mtime: stats.mtime.pipe(Option.getOrElse(() => new Date(0))).getTime(),
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
fileList.sort((a, b) => b.mtime - a.mtime);
|
|
80
|
+
const output = fileList.map((f) => f.path);
|
|
81
|
+
|
|
82
|
+
if (output.length === 0) {
|
|
83
|
+
return {
|
|
84
|
+
files: `No files found matching pattern "${pattern}" in ${searchPath}`,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (truncated) {
|
|
89
|
+
return {
|
|
90
|
+
files: `${output.join("\n")}\n\n(${output.length} files found. Results are truncated, consider using a more specific pattern.)`,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return {
|
|
95
|
+
files: output.join("\n"),
|
|
96
|
+
};
|
|
97
|
+
}) {}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as FileSystem from "effect/FileSystem";
|
|
3
|
+
import * as Option from "effect/Option";
|
|
4
|
+
import * as S from "effect/Schema";
|
|
5
|
+
import { ChildProcess } from "effect/unstable/process";
|
|
6
|
+
import { cwd } from "../../Config.ts";
|
|
7
|
+
import { AspectConfig } from "../Aspect.ts";
|
|
8
|
+
import { Tool } from "../tool/tool.ts";
|
|
9
|
+
import { exec } from "../util/exec.ts";
|
|
10
|
+
|
|
11
|
+
const MAX_LINE_LENGTH = 2000;
|
|
12
|
+
|
|
13
|
+
class pattern extends Tool.input(
|
|
14
|
+
"pattern",
|
|
15
|
+
)`The regex pattern to search for in file contents.
|
|
16
|
+
Supports full regex syntax (e.g., "log.*Error", "function\\s+\\w+", etc.)` {}
|
|
17
|
+
|
|
18
|
+
class path extends Tool.input(
|
|
19
|
+
"path",
|
|
20
|
+
S.optional(S.String),
|
|
21
|
+
)`The directory to search in. Defaults to ${cwd} if not specified.` {}
|
|
22
|
+
|
|
23
|
+
class include extends Tool.input(
|
|
24
|
+
"include",
|
|
25
|
+
S.optional(S.String),
|
|
26
|
+
)`File pattern to include in the search (e.g., "*.js", "*.{ts,tsx}")` {}
|
|
27
|
+
|
|
28
|
+
class matches extends Tool.output(
|
|
29
|
+
"matches",
|
|
30
|
+
)`The search results showing file paths and matching lines, sorted by modification time.` {}
|
|
31
|
+
|
|
32
|
+
export class grep extends Tool(
|
|
33
|
+
"grep",
|
|
34
|
+
)`Fast content search tool that works with any codebase size.
|
|
35
|
+
Returns ${matches} with file paths and line numbers.
|
|
36
|
+
|
|
37
|
+
Given a ${pattern} and optional ${path} and ${include}:
|
|
38
|
+
- Searches file contents using regular expressions
|
|
39
|
+
- Supports full regex syntax (e.g., "log.*Error", "function\\s+\\w+", etc.)
|
|
40
|
+
- Filter files by pattern with the include parameter (e.g., "*.js", "*.{ts,tsx}")
|
|
41
|
+
- Returns file paths and line numbers with at least one match sorted by modification time
|
|
42
|
+
- Use this tool when you need to find files containing specific patterns
|
|
43
|
+
- If you need to identify/count the number of matches within files, use the Bash tool with \`rg\` (ripgrep) directly. Do NOT use \`grep\`.
|
|
44
|
+
- When you are doing an open-ended search that may require multiple rounds of globbing and grepping, use the Task tool instead
|
|
45
|
+
`(function* ({ pattern, path: searchDir, include }) {
|
|
46
|
+
yield* Effect.logDebug(`[grep] pattern=${pattern} path=${searchDir}`);
|
|
47
|
+
|
|
48
|
+
const config = yield* Effect.serviceOption(AspectConfig).pipe(
|
|
49
|
+
Effect.map(Option.getOrElse(() => ({ cwd: process.cwd() }))),
|
|
50
|
+
);
|
|
51
|
+
const fs = yield* FileSystem.FileSystem;
|
|
52
|
+
const searchPath = searchDir || config.cwd;
|
|
53
|
+
|
|
54
|
+
const rgArgs = ["-nH", "--field-match-separator=|", "--regexp", pattern];
|
|
55
|
+
if (include) {
|
|
56
|
+
rgArgs.push("--glob", include);
|
|
57
|
+
}
|
|
58
|
+
rgArgs.push(searchPath);
|
|
59
|
+
|
|
60
|
+
const { stdout, stderr, exitCode } = yield* exec(
|
|
61
|
+
ChildProcess.make("rg", rgArgs),
|
|
62
|
+
).pipe(
|
|
63
|
+
Effect.catch(() => Effect.succeed({ stdout: "", stderr: "", exitCode: 1 })),
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
if (exitCode === 1) {
|
|
67
|
+
return {
|
|
68
|
+
matches: `No matches found for pattern "${pattern}" in ${searchPath}`,
|
|
69
|
+
};
|
|
70
|
+
} else if (exitCode !== 0) {
|
|
71
|
+
return { matches: `ripgrep failed with exit code ${exitCode}: ${stderr}` };
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const lines = stdout.split(/\r?\n/);
|
|
75
|
+
const matchList: {
|
|
76
|
+
path: string;
|
|
77
|
+
modTime: number;
|
|
78
|
+
lineNum: number;
|
|
79
|
+
lineText: string;
|
|
80
|
+
}[] = [];
|
|
81
|
+
|
|
82
|
+
for (const line of lines) {
|
|
83
|
+
if (!line) continue;
|
|
84
|
+
|
|
85
|
+
const [filePath, lineNumStr, ...lineTextParts] = line.split("|");
|
|
86
|
+
if (!filePath || !lineNumStr || lineTextParts.length === 0) continue;
|
|
87
|
+
|
|
88
|
+
const lineNum = parseInt(lineNumStr, 10);
|
|
89
|
+
const lineText = lineTextParts.join("|");
|
|
90
|
+
|
|
91
|
+
const stats = yield* fs
|
|
92
|
+
.stat(filePath)
|
|
93
|
+
.pipe(Effect.catch(() => Effect.succeed(null)));
|
|
94
|
+
if (!stats) continue;
|
|
95
|
+
|
|
96
|
+
const modTime = stats.mtime;
|
|
97
|
+
if (!modTime) continue;
|
|
98
|
+
matchList.push({
|
|
99
|
+
path: filePath,
|
|
100
|
+
modTime: modTime.pipe(Option.getOrElse(() => new Date(0))).getTime(),
|
|
101
|
+
lineNum,
|
|
102
|
+
lineText,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
matchList.sort((a, b) => b.modTime - a.modTime);
|
|
107
|
+
|
|
108
|
+
const limit = 100;
|
|
109
|
+
const truncated = matchList.length > limit;
|
|
110
|
+
const finalMatches = truncated ? matchList.slice(0, limit) : matchList;
|
|
111
|
+
|
|
112
|
+
if (finalMatches.length === 0) {
|
|
113
|
+
return {
|
|
114
|
+
matches: `No matches found for pattern "${pattern}" in ${searchPath}`,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const outputLines = [`Found ${finalMatches.length} matches`];
|
|
119
|
+
|
|
120
|
+
let currentFile = "";
|
|
121
|
+
for (const match of finalMatches) {
|
|
122
|
+
if (currentFile !== match.path) {
|
|
123
|
+
if (currentFile !== "") {
|
|
124
|
+
outputLines.push("");
|
|
125
|
+
}
|
|
126
|
+
currentFile = match.path;
|
|
127
|
+
outputLines.push(`${match.path}:`);
|
|
128
|
+
}
|
|
129
|
+
const truncatedLineText =
|
|
130
|
+
match.lineText.length > MAX_LINE_LENGTH
|
|
131
|
+
? match.lineText.substring(0, MAX_LINE_LENGTH) + "..."
|
|
132
|
+
: match.lineText;
|
|
133
|
+
outputLines.push(` Line ${match.lineNum}: ${truncatedLineText}`);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (truncated) {
|
|
137
|
+
outputLines.push("");
|
|
138
|
+
outputLines.push(
|
|
139
|
+
"(Results are truncated. Consider using a more specific path or pattern.)",
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return { matches: outputLines.join("\n") };
|
|
144
|
+
}) {}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as FileSystem from "effect/FileSystem";
|
|
3
|
+
import * as Option from "effect/Option";
|
|
4
|
+
import * as Path from "effect/Path";
|
|
5
|
+
import * as S from "effect/Schema";
|
|
6
|
+
import { AspectConfig } from "../Aspect.ts";
|
|
7
|
+
import { Tool } from "../tool/tool.ts";
|
|
8
|
+
|
|
9
|
+
class filePath extends Tool.input(
|
|
10
|
+
"filePath",
|
|
11
|
+
)`The path to the file to read. Use relative paths from the current working directory (e.g., "src/index.ts", "test/fixtures/math.ts"). Do NOT use paths starting with "/" - use relative paths instead.` {}
|
|
12
|
+
|
|
13
|
+
class offset extends Tool.input(
|
|
14
|
+
"offset",
|
|
15
|
+
S.optional(S.Number),
|
|
16
|
+
)`The line number to start reading from (0-based). Defaults to 0.` {}
|
|
17
|
+
|
|
18
|
+
class limit extends Tool.input(
|
|
19
|
+
"limit",
|
|
20
|
+
S.optional(S.Number),
|
|
21
|
+
)`The number of lines to read. Defaults to 2000.` {}
|
|
22
|
+
|
|
23
|
+
class content extends Tool.output(
|
|
24
|
+
"content",
|
|
25
|
+
)`The file content, or an error message if the file cannot be read.` {}
|
|
26
|
+
|
|
27
|
+
export class read extends Tool("read")`Reads a file from the local filesystem.
|
|
28
|
+
Returns the ${content} of the file.
|
|
29
|
+
|
|
30
|
+
Given a ${filePath} and optional ${offset} and ${limit}:
|
|
31
|
+
- Use relative paths from the current working directory (e.g., "src/index.ts", "test/fixtures/math.ts")
|
|
32
|
+
- Do NOT use paths starting with "/" - use relative paths instead
|
|
33
|
+
- By default, it reads up to 2000 lines starting from the beginning of the file
|
|
34
|
+
- You can optionally specify a line offset and limit for long files
|
|
35
|
+
`(function* ({ filePath: _filePath, offset: _offset, limit: _limit }) {
|
|
36
|
+
yield* Effect.logDebug(`[read] filePath=${_filePath}`);
|
|
37
|
+
|
|
38
|
+
const config = yield* Effect.serviceOption(AspectConfig).pipe(
|
|
39
|
+
Effect.map(Option.getOrElse(() => ({ cwd: process.cwd() }))),
|
|
40
|
+
);
|
|
41
|
+
const fs = yield* FileSystem.FileSystem;
|
|
42
|
+
const path = yield* Path.Path;
|
|
43
|
+
|
|
44
|
+
const offset = _offset ?? 0;
|
|
45
|
+
const limit = _limit ?? 2000;
|
|
46
|
+
|
|
47
|
+
if (_filePath.includes(".env")) {
|
|
48
|
+
return {
|
|
49
|
+
content: "Environment files (.env) are not readable for security reasons",
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const filePath = path.isAbsolute(_filePath)
|
|
54
|
+
? _filePath
|
|
55
|
+
: path.join(config.cwd, _filePath);
|
|
56
|
+
|
|
57
|
+
const exists = yield* fs
|
|
58
|
+
.exists(filePath)
|
|
59
|
+
.pipe(Effect.catch(() => Effect.succeed(false)));
|
|
60
|
+
|
|
61
|
+
if (!exists) {
|
|
62
|
+
// Try to get suggestions from parent directory
|
|
63
|
+
const dir = path.dirname(filePath);
|
|
64
|
+
const base = path.basename(filePath);
|
|
65
|
+
const dirExists = yield* fs
|
|
66
|
+
.exists(dir)
|
|
67
|
+
.pipe(Effect.catch(() => Effect.succeed(false)));
|
|
68
|
+
|
|
69
|
+
if (dirExists) {
|
|
70
|
+
const files = yield* fs
|
|
71
|
+
.readDirectory(dir)
|
|
72
|
+
.pipe(Effect.catch(() => Effect.succeed([] as string[])));
|
|
73
|
+
const suggestions = files
|
|
74
|
+
.filter(
|
|
75
|
+
(entry) =>
|
|
76
|
+
entry.toLowerCase().includes(base.toLowerCase()) ||
|
|
77
|
+
base.toLowerCase().includes(entry.toLowerCase()),
|
|
78
|
+
)
|
|
79
|
+
.map((entry) => path.join(dir, entry))
|
|
80
|
+
.slice(0, 3);
|
|
81
|
+
|
|
82
|
+
if (suggestions.length > 0) {
|
|
83
|
+
return {
|
|
84
|
+
content: `File not found: ${filePath}. Did you mean one of these?\n${suggestions.join("\n")}`,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return { content: `File not found: ${filePath}` };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Check if it's a directory
|
|
92
|
+
const stat = yield* fs
|
|
93
|
+
.stat(filePath)
|
|
94
|
+
.pipe(Effect.catch(() => Effect.succeed(null)));
|
|
95
|
+
|
|
96
|
+
if (stat?.type === "Directory") {
|
|
97
|
+
const entries = yield* fs
|
|
98
|
+
.readDirectory(filePath)
|
|
99
|
+
.pipe(Effect.catch(() => Effect.succeed([] as string[])));
|
|
100
|
+
return {
|
|
101
|
+
content: `Cannot read directory as a file: ${filePath}\nThis is a directory. Contents:\n${entries.slice(0, 10).join("\n")}${entries.length > 10 ? "\n..." : ""}`,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const fileContent = yield* fs
|
|
106
|
+
.readFileString(filePath)
|
|
107
|
+
.pipe(
|
|
108
|
+
Effect.catch((e) =>
|
|
109
|
+
Effect.succeed(`Failed to read file ${filePath}: ${e}`),
|
|
110
|
+
),
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
return {
|
|
114
|
+
content: fileContent
|
|
115
|
+
.split("\n")
|
|
116
|
+
.slice(offset, offset + limit)
|
|
117
|
+
.join("\n"),
|
|
118
|
+
};
|
|
119
|
+
}) {}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Option from "effect/Option";
|
|
3
|
+
import * as Path from "effect/Path";
|
|
4
|
+
import * as S from "effect/Schema";
|
|
5
|
+
import { AspectConfig } from "../Aspect.ts";
|
|
6
|
+
import { formatDiagnostic } from "../lsp/diagnostics.ts";
|
|
7
|
+
import { LSPManager } from "../lsp/manager.ts";
|
|
8
|
+
import { Tool } from "../tool/tool.ts";
|
|
9
|
+
|
|
10
|
+
export class paths extends Tool.input(
|
|
11
|
+
"paths",
|
|
12
|
+
S.optional(S.Array(S.String)),
|
|
13
|
+
)`Optional array of paths to files or directories to read linter errors for. If not provided, returns diagnostics for all files in the workspace.` {}
|
|
14
|
+
|
|
15
|
+
export class diagnostics extends Tool.output(
|
|
16
|
+
"diagnostics",
|
|
17
|
+
)`The linter errors and diagnostics for the specified paths.` {}
|
|
18
|
+
|
|
19
|
+
export class readlints extends Tool(
|
|
20
|
+
"readlints",
|
|
21
|
+
)`Read and display linter errors from the workspace.
|
|
22
|
+
Returns ${diagnostics} for the specified files.
|
|
23
|
+
|
|
24
|
+
Given optional ${paths}:
|
|
25
|
+
- If a file path is provided, returns diagnostics for that file only
|
|
26
|
+
- If a directory path is provided, returns diagnostics for all files within that directory
|
|
27
|
+
- If no paths are provided, returns diagnostics for all files in the workspace
|
|
28
|
+
- This tool can return linter errors that were already present before your edits, so avoid calling it with a very wide scope of files
|
|
29
|
+
- NEVER call this tool on a file unless you've edited it or are about to edit it
|
|
30
|
+
`(function* ({ paths: inputPaths }) {
|
|
31
|
+
yield* Effect.logDebug(`[readlints] paths=${JSON.stringify(inputPaths)}`);
|
|
32
|
+
|
|
33
|
+
const config = yield* Effect.serviceOption(AspectConfig).pipe(
|
|
34
|
+
Effect.map(Option.getOrElse(() => ({ cwd: process.cwd() }))),
|
|
35
|
+
);
|
|
36
|
+
const pathService = yield* Path.Path;
|
|
37
|
+
const lspManager = yield* LSPManager;
|
|
38
|
+
|
|
39
|
+
const resolvedPaths = (inputPaths ?? []).map((p) =>
|
|
40
|
+
pathService.isAbsolute(p) ? p : pathService.join(config.cwd, p),
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
// Get diagnostics for each path
|
|
44
|
+
const allDiagnostics = yield* Effect.forEach(
|
|
45
|
+
resolvedPaths,
|
|
46
|
+
(filePath) =>
|
|
47
|
+
lspManager
|
|
48
|
+
.getDiagnostics(filePath)
|
|
49
|
+
.pipe(Effect.map((diags) => ({ filePath, diags }))),
|
|
50
|
+
{ concurrency: "unbounded" },
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
// Format output grouped by file
|
|
54
|
+
const results: string[] = [];
|
|
55
|
+
for (const { filePath, diags } of allDiagnostics) {
|
|
56
|
+
if (diags.length > 0) {
|
|
57
|
+
results.push(`${filePath}:`);
|
|
58
|
+
for (const d of diags) {
|
|
59
|
+
results.push(` ${formatDiagnostic(d)}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
yield* Effect.logDebug(
|
|
65
|
+
`[readlints] found ${results.length} files with diagnostics`,
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
if (results.length === 0) {
|
|
69
|
+
return {
|
|
70
|
+
diagnostics:
|
|
71
|
+
resolvedPaths.length > 0
|
|
72
|
+
? `No linter errors found in specified paths`
|
|
73
|
+
: `No linter errors found`,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return { diagnostics: results.join("\n") };
|
|
78
|
+
}) {}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as FileSystem from "effect/FileSystem";
|
|
3
|
+
import * as Option from "effect/Option";
|
|
4
|
+
import * as Path from "effect/Path";
|
|
5
|
+
import { AspectConfig } from "../Aspect.ts";
|
|
6
|
+
import {
|
|
7
|
+
formatDiagnostics,
|
|
8
|
+
getDiagnosticsIfAvailable,
|
|
9
|
+
} from "../lsp/diagnostics.ts";
|
|
10
|
+
import { Tool } from "../tool/tool.ts";
|
|
11
|
+
|
|
12
|
+
class filePath extends Tool.input(
|
|
13
|
+
"filePath",
|
|
14
|
+
)`The path to the file to write. Use relative paths from the current working directory (e.g., "src/index.ts", "test/fixtures/math.test.ts"). Do NOT use paths starting with "/" - use relative paths instead.` {}
|
|
15
|
+
|
|
16
|
+
class content extends Tool.input(
|
|
17
|
+
"content",
|
|
18
|
+
)`The content to write to the file.` {}
|
|
19
|
+
|
|
20
|
+
class output extends Tool.output(
|
|
21
|
+
"result",
|
|
22
|
+
)`The result of the write operation, including any diagnostics from LSP.` {}
|
|
23
|
+
|
|
24
|
+
export class write extends Tool("write")`Writes a file to the local filesystem.
|
|
25
|
+
Returns the ${output} of the operation.
|
|
26
|
+
|
|
27
|
+
Given a ${filePath} and ${content}:
|
|
28
|
+
- Use relative paths from the current working directory (e.g., "src/index.ts", "test/fixtures/math.test.ts")
|
|
29
|
+
- Do NOT use paths starting with "/" - use relative paths instead
|
|
30
|
+
- This tool will overwrite the existing file if there is one at the provided path.
|
|
31
|
+
- Parent directories are created automatically if they don't exist.
|
|
32
|
+
`(function* ({ filePath: _filePath, content }) {
|
|
33
|
+
yield* Effect.logDebug(
|
|
34
|
+
`[write] filePath=${_filePath} content.length=${content.length}`,
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
const config = yield* Effect.serviceOption(AspectConfig).pipe(
|
|
38
|
+
Effect.map(Option.getOrElse(() => ({ cwd: process.cwd() }))),
|
|
39
|
+
);
|
|
40
|
+
const path = yield* Path.Path;
|
|
41
|
+
const fs = yield* FileSystem.FileSystem;
|
|
42
|
+
|
|
43
|
+
const filePath = path.isAbsolute(_filePath)
|
|
44
|
+
? _filePath
|
|
45
|
+
: path.join(config.cwd, _filePath);
|
|
46
|
+
|
|
47
|
+
// Ensure parent directory exists
|
|
48
|
+
const dir = path.dirname(filePath);
|
|
49
|
+
yield* fs
|
|
50
|
+
.makeDirectory(dir, { recursive: true })
|
|
51
|
+
.pipe(Effect.catch(() => Effect.void));
|
|
52
|
+
|
|
53
|
+
const writeResult = yield* fs
|
|
54
|
+
.writeFileString(filePath, content)
|
|
55
|
+
.pipe(
|
|
56
|
+
Effect.catch((e) =>
|
|
57
|
+
Effect.succeed(`Failed to write file ${filePath}: ${e}`),
|
|
58
|
+
),
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
if (typeof writeResult === "string") {
|
|
62
|
+
yield* Effect.logDebug(`[write] ${writeResult}`);
|
|
63
|
+
return { result: writeResult };
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Get diagnostics from LSP servers
|
|
67
|
+
const diagnostics = yield* getDiagnosticsIfAvailable(filePath, content);
|
|
68
|
+
const formatted = formatDiagnostics(diagnostics);
|
|
69
|
+
|
|
70
|
+
yield* Effect.logDebug(
|
|
71
|
+
`[write] diagnostics for ${filePath}: ${formatted || "(none)"}`,
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
result: formatted
|
|
76
|
+
? `Wrote file: ${filePath}\n\n${formatted}`
|
|
77
|
+
: `Wrote file: ${filePath}`,
|
|
78
|
+
};
|
|
79
|
+
}) {}
|