dotdo 0.0.1 → 0.0.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/LICENSE +1 -1
- package/README.md +446 -315
- package/dist/ai/index.js +19 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/template-literals.js +852 -0
- package/dist/ai/template-literals.js.map +1 -0
- package/dist/api/analytics/router.js +601 -0
- package/dist/api/analytics/router.js.map +1 -0
- package/dist/api/index.js +158 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/middleware/auth-federation.js +573 -0
- package/dist/api/middleware/auth-federation.js.map +1 -0
- package/dist/api/middleware/auth.js +544 -0
- package/dist/api/middleware/auth.js.map +1 -0
- package/dist/api/middleware/error-handling.js +176 -0
- package/dist/api/middleware/error-handling.js.map +1 -0
- package/dist/api/middleware/request-id.js +21 -0
- package/dist/api/middleware/request-id.js.map +1 -0
- package/dist/api/pages.js +1180 -0
- package/dist/api/pages.js.map +1 -0
- package/dist/api/routes/api.js +612 -0
- package/dist/api/routes/api.js.map +1 -0
- package/dist/api/routes/browsers.js +471 -0
- package/dist/api/routes/browsers.js.map +1 -0
- package/dist/api/routes/do.js +188 -0
- package/dist/api/routes/do.js.map +1 -0
- package/dist/api/routes/mcp.js +459 -0
- package/dist/api/routes/mcp.js.map +1 -0
- package/dist/api/routes/obs.js +445 -0
- package/dist/api/routes/obs.js.map +1 -0
- package/dist/api/routes/openapi.js +794 -0
- package/dist/api/routes/openapi.js.map +1 -0
- package/dist/api/routes/rpc.js +1103 -0
- package/dist/api/routes/rpc.js.map +1 -0
- package/dist/api/routes/sandboxes.js +389 -0
- package/dist/api/routes/sandboxes.js.map +1 -0
- package/dist/api/test-do.js +38 -0
- package/dist/api/test-do.js.map +1 -0
- package/dist/api/types.js +11 -0
- package/dist/api/types.js.map +1 -0
- package/dist/cli/bin.js +2 -0
- package/dist/cli/main.js +52342 -0
- package/dist/db/actions.js +212 -0
- package/dist/db/actions.js.map +1 -0
- package/dist/db/auth.js +506 -0
- package/dist/db/auth.js.map +1 -0
- package/dist/db/branches.js +65 -0
- package/dist/db/branches.js.map +1 -0
- package/dist/db/clickhouse.js +1074 -0
- package/dist/db/clickhouse.js.map +1 -0
- package/dist/db/dlq.js +39 -0
- package/dist/db/dlq.js.map +1 -0
- package/dist/db/events.js +28 -0
- package/dist/db/events.js.map +1 -0
- package/dist/db/exec.js +64 -0
- package/dist/db/exec.js.map +1 -0
- package/dist/db/files.js +85 -0
- package/dist/db/files.js.map +1 -0
- package/dist/db/flags.js +24 -0
- package/dist/db/flags.js.map +1 -0
- package/dist/db/git.js +116 -0
- package/dist/db/git.js.map +1 -0
- package/dist/db/iceberg/inverted-index.js +862 -0
- package/dist/db/iceberg/inverted-index.js.map +1 -0
- package/dist/db/iceberg/puffin.js +878 -0
- package/dist/db/iceberg/puffin.js.map +1 -0
- package/dist/db/iceberg/search-manifest.js +422 -0
- package/dist/db/iceberg/search-manifest.js.map +1 -0
- package/dist/db/iceberg/types.js +8 -0
- package/dist/db/iceberg/types.js.map +1 -0
- package/dist/db/index.js +121 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/integrations.js +368 -0
- package/dist/db/integrations.js.map +1 -0
- package/dist/db/json-indexes.js +332 -0
- package/dist/db/json-indexes.js.map +1 -0
- package/dist/db/linked-accounts.js +287 -0
- package/dist/db/linked-accounts.js.map +1 -0
- package/dist/db/nouns.js +183 -0
- package/dist/db/nouns.js.map +1 -0
- package/dist/db/objects.js +170 -0
- package/dist/db/objects.js.map +1 -0
- package/dist/db/primitives/dag-scheduler/index.js +869 -0
- package/dist/db/primitives/dag-scheduler/index.js.map +1 -0
- package/dist/db/primitives/exactly-once-context.js +237 -0
- package/dist/db/primitives/exactly-once-context.js.map +1 -0
- package/dist/db/primitives/index.js +62 -0
- package/dist/db/primitives/index.js.map +1 -0
- package/dist/db/primitives/keyed-router.js +145 -0
- package/dist/db/primitives/keyed-router.js.map +1 -0
- package/dist/db/primitives/observability.js +162 -0
- package/dist/db/primitives/observability.js.map +1 -0
- package/dist/db/primitives/schema-evolution.js +643 -0
- package/dist/db/primitives/schema-evolution.js.map +1 -0
- package/dist/db/primitives/stateful-operator/index.js +770 -0
- package/dist/db/primitives/stateful-operator/index.js.map +1 -0
- package/dist/db/primitives/temporal-store.js +306 -0
- package/dist/db/primitives/temporal-store.js.map +1 -0
- package/dist/db/primitives/typed-column-store.js +1229 -0
- package/dist/db/primitives/typed-column-store.js.map +1 -0
- package/dist/db/primitives/utils/duration.js +162 -0
- package/dist/db/primitives/utils/duration.js.map +1 -0
- package/dist/db/primitives/utils/murmur3.js +118 -0
- package/dist/db/primitives/utils/murmur3.js.map +1 -0
- package/dist/db/primitives/watermark-service.js +136 -0
- package/dist/db/primitives/watermark-service.js.map +1 -0
- package/dist/db/primitives/window-manager.js +764 -0
- package/dist/db/primitives/window-manager.js.map +1 -0
- package/dist/db/relationships.js +66 -0
- package/dist/db/relationships.js.map +1 -0
- package/dist/db/schema-minimal.js +61 -0
- package/dist/db/schema-minimal.js.map +1 -0
- package/dist/db/search.js +28 -0
- package/dist/db/search.js.map +1 -0
- package/dist/db/stores.js +1665 -0
- package/dist/db/stores.js.map +1 -0
- package/dist/db/things.js +297 -0
- package/dist/db/things.js.map +1 -0
- package/dist/db/vault.js +171 -0
- package/dist/db/vault.js.map +1 -0
- package/dist/db/verbs.js +102 -0
- package/dist/db/verbs.js.map +1 -0
- package/dist/do/base.js +48 -0
- package/dist/do/base.js.map +1 -0
- package/dist/do/bash.js +35 -0
- package/dist/do/bash.js.map +1 -0
- package/dist/do/fs.js +25 -0
- package/dist/do/fs.js.map +1 -0
- package/dist/do/full.js +61 -0
- package/dist/do/full.js.map +1 -0
- package/dist/do/git.js +28 -0
- package/dist/do/git.js.map +1 -0
- package/dist/do/index.js +52 -0
- package/dist/do/index.js.map +1 -0
- package/dist/do/tiny.js +31 -0
- package/dist/do/tiny.js.map +1 -0
- package/dist/lib/DOAuth.js +261 -0
- package/dist/lib/DOAuth.js.map +1 -0
- package/dist/lib/DODispatcher.js +72 -0
- package/dist/lib/DODispatcher.js.map +1 -0
- package/dist/lib/Modifier.js +189 -0
- package/dist/lib/Modifier.js.map +1 -0
- package/dist/lib/StateStorage.js +403 -0
- package/dist/lib/StateStorage.js.map +1 -0
- package/dist/lib/TypeRegistry.js +122 -0
- package/dist/lib/TypeRegistry.js.map +1 -0
- package/dist/lib/agent/tools/bash.js +336 -0
- package/dist/lib/agent/tools/bash.js.map +1 -0
- package/dist/lib/agent/tools/edit.js +157 -0
- package/dist/lib/agent/tools/edit.js.map +1 -0
- package/dist/lib/agent/tools/glob.js +137 -0
- package/dist/lib/agent/tools/glob.js.map +1 -0
- package/dist/lib/agent/tools/grep.js +315 -0
- package/dist/lib/agent/tools/grep.js.map +1 -0
- package/dist/lib/agent/tools/index.js +71 -0
- package/dist/lib/agent/tools/index.js.map +1 -0
- package/dist/lib/agent/tools/read.js +212 -0
- package/dist/lib/agent/tools/read.js.map +1 -0
- package/dist/lib/agent/tools/types.js +197 -0
- package/dist/lib/agent/tools/types.js.map +1 -0
- package/dist/lib/agent/tools/write.js +159 -0
- package/dist/lib/agent/tools/write.js.map +1 -0
- package/dist/lib/ai/gateway.js +247 -0
- package/dist/lib/ai/gateway.js.map +1 -0
- package/dist/lib/ai/tool-loop-agent.js +591 -0
- package/dist/lib/ai/tool-loop-agent.js.map +1 -0
- package/dist/lib/auto-wiring.js +439 -0
- package/dist/lib/auto-wiring.js.map +1 -0
- package/dist/lib/browse/browserbase.js +163 -0
- package/dist/lib/browse/browserbase.js.map +1 -0
- package/dist/lib/browse/cloudflare.js +144 -0
- package/dist/lib/browse/cloudflare.js.map +1 -0
- package/dist/lib/browse/index.js +62 -0
- package/dist/lib/browse/index.js.map +1 -0
- package/dist/lib/browse/types.js +13 -0
- package/dist/lib/browse/types.js.map +1 -0
- package/dist/lib/cache/index.js +37 -0
- package/dist/lib/cache/index.js.map +1 -0
- package/dist/lib/cache/visibility.js +638 -0
- package/dist/lib/cache/visibility.js.map +1 -0
- package/dist/lib/capabilities.js +268 -0
- package/dist/lib/capabilities.js.map +1 -0
- package/dist/lib/channels/base.js +106 -0
- package/dist/lib/channels/base.js.map +1 -0
- package/dist/lib/channels/discord.js +94 -0
- package/dist/lib/channels/discord.js.map +1 -0
- package/dist/lib/channels/email.js +204 -0
- package/dist/lib/channels/email.js.map +1 -0
- package/dist/lib/channels/index.js +90 -0
- package/dist/lib/channels/index.js.map +1 -0
- package/dist/lib/channels/mdxui-chat.js +95 -0
- package/dist/lib/channels/mdxui-chat.js.map +1 -0
- package/dist/lib/channels/slack-blockkit.js +121 -0
- package/dist/lib/channels/slack-blockkit.js.map +1 -0
- package/dist/lib/channels/types.js +7 -0
- package/dist/lib/channels/types.js.map +1 -0
- package/dist/lib/cloudflare/ai.js +654 -0
- package/dist/lib/cloudflare/ai.js.map +1 -0
- package/dist/lib/cloudflare/index.js +88 -0
- package/dist/lib/cloudflare/index.js.map +1 -0
- package/dist/lib/cloudflare/kv.js +342 -0
- package/dist/lib/cloudflare/kv.js.map +1 -0
- package/dist/lib/cloudflare/queues.js +434 -0
- package/dist/lib/cloudflare/queues.js.map +1 -0
- package/dist/lib/cloudflare/r2.js +604 -0
- package/dist/lib/cloudflare/r2.js.map +1 -0
- package/dist/lib/cloudflare/vectorize.js +494 -0
- package/dist/lib/cloudflare/vectorize.js.map +1 -0
- package/dist/lib/cloudflare/workflows.js +569 -0
- package/dist/lib/cloudflare/workflows.js.map +1 -0
- package/dist/lib/colo/caching.js +196 -0
- package/dist/lib/colo/caching.js.map +1 -0
- package/dist/lib/colo/detection.js +194 -0
- package/dist/lib/colo/detection.js.map +1 -0
- package/dist/lib/colo/external-data.js +219 -0
- package/dist/lib/colo/external-data.js.map +1 -0
- package/dist/lib/colo/globe-data.js +179 -0
- package/dist/lib/colo/globe-data.js.map +1 -0
- package/dist/lib/colo/index.js +16 -0
- package/dist/lib/colo/index.js.map +1 -0
- package/dist/lib/decorators.js +37 -0
- package/dist/lib/decorators.js.map +1 -0
- package/dist/lib/discovery.js +81 -0
- package/dist/lib/discovery.js.map +1 -0
- package/dist/lib/executors/AgenticFunctionExecutor.js +619 -0
- package/dist/lib/executors/AgenticFunctionExecutor.js.map +1 -0
- package/dist/lib/executors/BaseFunctionExecutor.js +328 -0
- package/dist/lib/executors/BaseFunctionExecutor.js.map +1 -0
- package/dist/lib/executors/CascadeExecutor.js +418 -0
- package/dist/lib/executors/CascadeExecutor.js.map +1 -0
- package/dist/lib/executors/CodeFunctionExecutor.js +904 -0
- package/dist/lib/executors/CodeFunctionExecutor.js.map +1 -0
- package/dist/lib/executors/GenerativeFunctionExecutor.js +904 -0
- package/dist/lib/executors/GenerativeFunctionExecutor.js.map +1 -0
- package/dist/lib/executors/HumanFunctionExecutor.js +884 -0
- package/dist/lib/executors/HumanFunctionExecutor.js.map +1 -0
- package/dist/lib/executors/ParallelStepExecutor.js +308 -0
- package/dist/lib/executors/ParallelStepExecutor.js.map +1 -0
- package/dist/lib/executors/types.js +12 -0
- package/dist/lib/executors/types.js.map +1 -0
- package/dist/lib/experiments.js +89 -0
- package/dist/lib/experiments.js.map +1 -0
- package/dist/lib/flags/store.js +262 -0
- package/dist/lib/flags/store.js.map +1 -0
- package/dist/lib/functions/FunctionComposition.js +467 -0
- package/dist/lib/functions/FunctionComposition.js.map +1 -0
- package/dist/lib/functions/FunctionMiddleware.js +457 -0
- package/dist/lib/functions/FunctionMiddleware.js.map +1 -0
- package/dist/lib/functions/FunctionRegistry.js +426 -0
- package/dist/lib/functions/FunctionRegistry.js.map +1 -0
- package/dist/lib/functions/createFunction.js +1048 -0
- package/dist/lib/functions/createFunction.js.map +1 -0
- package/dist/lib/humans/index.js +68 -0
- package/dist/lib/humans/index.js.map +1 -0
- package/dist/lib/humans/templates.js +117 -0
- package/dist/lib/humans/templates.js.map +1 -0
- package/dist/lib/identity.js +98 -0
- package/dist/lib/identity.js.map +1 -0
- package/dist/lib/index.js +9 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/logging/error-logger.js +163 -0
- package/dist/lib/logging/error-logger.js.map +1 -0
- package/dist/lib/logging/index.js +160 -0
- package/dist/lib/logging/index.js.map +1 -0
- package/dist/lib/mixins/bash.js +825 -0
- package/dist/lib/mixins/bash.js.map +1 -0
- package/dist/lib/mixins/fs.js +648 -0
- package/dist/lib/mixins/fs.js.map +1 -0
- package/dist/lib/mixins/git.js +1011 -0
- package/dist/lib/mixins/git.js.map +1 -0
- package/dist/lib/mixins/index.js +29 -0
- package/dist/lib/mixins/index.js.map +1 -0
- package/dist/lib/mixins/npm.js +662 -0
- package/dist/lib/mixins/npm.js.map +1 -0
- package/dist/lib/noun-id.js +278 -0
- package/dist/lib/noun-id.js.map +1 -0
- package/dist/lib/rate-limit/sliding-window.js +148 -0
- package/dist/lib/rate-limit/sliding-window.js.map +1 -0
- package/dist/lib/rate-limit.js +110 -0
- package/dist/lib/rate-limit.js.map +1 -0
- package/dist/lib/rpc/bindings.js +548 -0
- package/dist/lib/rpc/bindings.js.map +1 -0
- package/dist/lib/rpc/index.js +64 -0
- package/dist/lib/rpc/index.js.map +1 -0
- package/dist/lib/safe-stringify.js +223 -0
- package/dist/lib/safe-stringify.js.map +1 -0
- package/dist/lib/sandbox/miniflare-sandbox.js +1007 -0
- package/dist/lib/sandbox/miniflare-sandbox.js.map +1 -0
- package/dist/lib/sqids.js +110 -0
- package/dist/lib/sqids.js.map +1 -0
- package/dist/lib/sql/adapters/index.js +10 -0
- package/dist/lib/sql/adapters/index.js.map +1 -0
- package/dist/lib/sql/adapters/node-sql-parser.js +552 -0
- package/dist/lib/sql/adapters/node-sql-parser.js.map +1 -0
- package/dist/lib/sql/adapters/pgsql-parser.js +1189 -0
- package/dist/lib/sql/adapters/pgsql-parser.js.map +1 -0
- package/dist/lib/sql/index.js +277 -0
- package/dist/lib/sql/index.js.map +1 -0
- package/dist/lib/sql/types.js +56 -0
- package/dist/lib/sql/types.js.map +1 -0
- package/dist/lib/type-classifier.js +126 -0
- package/dist/lib/type-classifier.js.map +1 -0
- package/dist/lib/utils/html.js +47 -0
- package/dist/lib/utils/html.js.map +1 -0
- package/dist/lib/validation.js +48 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/lib/vault/store.js +411 -0
- package/dist/lib/vault/store.js.map +1 -0
- package/dist/metrics/hunch.js +739 -0
- package/dist/metrics/hunch.js.map +1 -0
- package/dist/objects/API.js +302 -0
- package/dist/objects/API.js.map +1 -0
- package/dist/objects/Agent.js +179 -0
- package/dist/objects/Agent.js.map +1 -0
- package/dist/objects/AgenticFunctionExecutor.js +8 -0
- package/dist/objects/AgenticFunctionExecutor.js.map +1 -0
- package/dist/objects/App.js +83 -0
- package/dist/objects/App.js.map +1 -0
- package/dist/objects/Browser.js +884 -0
- package/dist/objects/Browser.js.map +1 -0
- package/dist/objects/Business.js +107 -0
- package/dist/objects/Business.js.map +1 -0
- package/dist/objects/CLI.js +221 -0
- package/dist/objects/CLI.js.map +1 -0
- package/dist/objects/CodeFunctionExecutor.js +8 -0
- package/dist/objects/CodeFunctionExecutor.js.map +1 -0
- package/dist/objects/Collection.js +161 -0
- package/dist/objects/Collection.js.map +1 -0
- package/dist/objects/DO.js +41 -0
- package/dist/objects/DO.js.map +1 -0
- package/dist/objects/DOBase.js +2309 -0
- package/dist/objects/DOBase.js.map +1 -0
- package/dist/objects/DOFull.js +1676 -0
- package/dist/objects/DOFull.js.map +1 -0
- package/dist/objects/DOTiny.js +207 -0
- package/dist/objects/DOTiny.js.map +1 -0
- package/dist/objects/Directory.js +199 -0
- package/dist/objects/Directory.js.map +1 -0
- package/dist/objects/Entity.js +413 -0
- package/dist/objects/Entity.js.map +1 -0
- package/dist/objects/Function.js +116 -0
- package/dist/objects/Function.js.map +1 -0
- package/dist/objects/Human.js +231 -0
- package/dist/objects/Human.js.map +1 -0
- package/dist/objects/HumanFunctionExecutor.js +8 -0
- package/dist/objects/HumanFunctionExecutor.js.map +1 -0
- package/dist/objects/IcebergMetadataDO.js +938 -0
- package/dist/objects/IcebergMetadataDO.js.map +1 -0
- package/dist/objects/IntegrationsDO.js +1174 -0
- package/dist/objects/IntegrationsDO.js.map +1 -0
- package/dist/objects/ObservabilityBroadcaster.js +149 -0
- package/dist/objects/ObservabilityBroadcaster.js.map +1 -0
- package/dist/objects/Package.js +154 -0
- package/dist/objects/Package.js.map +1 -0
- package/dist/objects/Product.js +193 -0
- package/dist/objects/Product.js.map +1 -0
- package/dist/objects/SDK.js +152 -0
- package/dist/objects/SDK.js.map +1 -0
- package/dist/objects/SaaS.js +235 -0
- package/dist/objects/SaaS.js.map +1 -0
- package/dist/objects/SandboxDO.js +759 -0
- package/dist/objects/SandboxDO.js.map +1 -0
- package/dist/objects/Service.js +337 -0
- package/dist/objects/Service.js.map +1 -0
- package/dist/objects/Site.js +80 -0
- package/dist/objects/Site.js.map +1 -0
- package/dist/objects/Startup.js +479 -0
- package/dist/objects/Startup.js.map +1 -0
- package/dist/objects/ThingsDO.js +170 -0
- package/dist/objects/ThingsDO.js.map +1 -0
- package/dist/objects/VectorShardDO.js +648 -0
- package/dist/objects/VectorShardDO.js.map +1 -0
- package/dist/objects/Worker.js +144 -0
- package/dist/objects/Worker.js.map +1 -0
- package/dist/objects/Workflow.js +196 -0
- package/dist/objects/Workflow.js.map +1 -0
- package/dist/objects/WorkflowFactory.js +313 -0
- package/dist/objects/WorkflowFactory.js.map +1 -0
- package/dist/objects/WorkflowRuntime.js +863 -0
- package/dist/objects/WorkflowRuntime.js.map +1 -0
- package/dist/objects/circuit-breaker-bulkhead.js +178 -0
- package/dist/objects/circuit-breaker-bulkhead.js.map +1 -0
- package/dist/objects/createFunction.js +934 -0
- package/dist/objects/createFunction.js.map +1 -0
- package/dist/objects/index.js +80 -0
- package/dist/objects/index.js.map +1 -0
- package/dist/objects/lifecycle/Branch.js +275 -0
- package/dist/objects/lifecycle/Branch.js.map +1 -0
- package/dist/objects/lifecycle/Clone.js +1499 -0
- package/dist/objects/lifecycle/Clone.js.map +1 -0
- package/dist/objects/lifecycle/Compact.js +237 -0
- package/dist/objects/lifecycle/Compact.js.map +1 -0
- package/dist/objects/lifecycle/Promote.js +476 -0
- package/dist/objects/lifecycle/Promote.js.map +1 -0
- package/dist/objects/lifecycle/Shard.js +560 -0
- package/dist/objects/lifecycle/Shard.js.map +1 -0
- package/dist/objects/lifecycle/index.js +15 -0
- package/dist/objects/lifecycle/index.js.map +1 -0
- package/dist/objects/lifecycle/types.js +33 -0
- package/dist/objects/lifecycle/types.js.map +1 -0
- package/dist/objects/mixins/infrastructure.js +171 -0
- package/dist/objects/mixins/infrastructure.js.map +1 -0
- package/dist/objects/modules/StoresModule.js +153 -0
- package/dist/objects/modules/StoresModule.js.map +1 -0
- package/dist/objects/persistence/checkpoint-manager.js +606 -0
- package/dist/objects/persistence/checkpoint-manager.js.map +1 -0
- package/dist/objects/persistence/index.js +72 -0
- package/dist/objects/persistence/index.js.map +1 -0
- package/dist/objects/persistence/migration-runner.js +562 -0
- package/dist/objects/persistence/migration-runner.js.map +1 -0
- package/dist/objects/persistence/replication-manager.js +501 -0
- package/dist/objects/persistence/replication-manager.js.map +1 -0
- package/dist/objects/persistence/tiered-storage-manager.js +595 -0
- package/dist/objects/persistence/tiered-storage-manager.js.map +1 -0
- package/dist/objects/persistence/types.js +14 -0
- package/dist/objects/persistence/types.js.map +1 -0
- package/dist/objects/persistence/wal-manager.js +653 -0
- package/dist/objects/persistence/wal-manager.js.map +1 -0
- package/dist/objects/presets/index.js +20 -0
- package/dist/objects/presets/index.js.map +1 -0
- package/dist/objects/presets/primitives.js +188 -0
- package/dist/objects/presets/primitives.js.map +1 -0
- package/dist/objects/primitives/alarm-adapter.js +141 -0
- package/dist/objects/primitives/alarm-adapter.js.map +1 -0
- package/dist/objects/primitives/index.js +337 -0
- package/dist/objects/primitives/index.js.map +1 -0
- package/dist/objects/primitives/storage-adapter.js +182 -0
- package/dist/objects/primitives/storage-adapter.js.map +1 -0
- package/dist/objects/primitives/with-primitives.js +102 -0
- package/dist/objects/primitives/with-primitives.js.map +1 -0
- package/dist/objects/services/StoreManager.js +227 -0
- package/dist/objects/services/StoreManager.js.map +1 -0
- package/dist/objects/services/index.js +13 -0
- package/dist/objects/services/index.js.map +1 -0
- package/dist/objects/transport/auth-layer.js +1451 -0
- package/dist/objects/transport/auth-layer.js.map +1 -0
- package/dist/objects/transport/capnweb-target.js +355 -0
- package/dist/objects/transport/capnweb-target.js.map +1 -0
- package/dist/objects/transport/chain.js +441 -0
- package/dist/objects/transport/chain.js.map +1 -0
- package/dist/objects/transport/handler.js +58 -0
- package/dist/objects/transport/handler.js.map +1 -0
- package/dist/objects/transport/index.js +53 -0
- package/dist/objects/transport/index.js.map +1 -0
- package/dist/objects/transport/mcp-server.js +690 -0
- package/dist/objects/transport/mcp-server.js.map +1 -0
- package/dist/objects/transport/rest-autowire.js +1507 -0
- package/dist/objects/transport/rest-autowire.js.map +1 -0
- package/dist/objects/transport/rest-router.js +440 -0
- package/dist/objects/transport/rest-router.js.map +1 -0
- package/dist/objects/transport/rpc-server.js +1536 -0
- package/dist/objects/transport/rpc-server.js.map +1 -0
- package/dist/objects/transport/shared.js +575 -0
- package/dist/objects/transport/shared.js.map +1 -0
- package/dist/objects/transport/sync-engine.js +291 -0
- package/dist/objects/transport/sync-engine.js.map +1 -0
- package/dist/objects/transport/types.js +8 -0
- package/dist/objects/transport/types.js.map +1 -0
- package/dist/primitives/bashx/src/ast/analyze.js +1472 -0
- package/dist/primitives/bashx/src/ast/analyze.js.map +1 -0
- package/dist/primitives/bashx/src/ast/parser.js +1488 -0
- package/dist/primitives/bashx/src/ast/parser.js.map +1 -0
- package/dist/primitives/bashx/src/do/commands/crypto.js +1954 -0
- package/dist/primitives/bashx/src/do/commands/crypto.js.map +1 -0
- package/dist/primitives/bashx/src/do/commands/data-processing.js +1812 -0
- package/dist/primitives/bashx/src/do/commands/data-processing.js.map +1 -0
- package/dist/primitives/bashx/src/do/commands/extended-utils.js +804 -0
- package/dist/primitives/bashx/src/do/commands/extended-utils.js.map +1 -0
- package/dist/primitives/bashx/src/do/commands/math-control.js +1122 -0
- package/dist/primitives/bashx/src/do/commands/math-control.js.map +1 -0
- package/dist/primitives/bashx/src/do/commands/posix-utils.js +1015 -0
- package/dist/primitives/bashx/src/do/commands/posix-utils.js.map +1 -0
- package/dist/primitives/bashx/src/do/commands/system-utils.js +687 -0
- package/dist/primitives/bashx/src/do/commands/system-utils.js.map +1 -0
- package/dist/primitives/bashx/src/do/commands/test-command.js +523 -0
- package/dist/primitives/bashx/src/do/commands/test-command.js.map +1 -0
- package/dist/primitives/bashx/src/do/commands/text-processing.js +1550 -0
- package/dist/primitives/bashx/src/do/commands/text-processing.js.map +1 -0
- package/dist/primitives/bashx/src/do/container-executor.js +429 -0
- package/dist/primitives/bashx/src/do/container-executor.js.map +1 -0
- package/dist/primitives/bashx/src/do/index.js +668 -0
- package/dist/primitives/bashx/src/do/index.js.map +1 -0
- package/dist/primitives/bashx/src/do/tiered-executor.js +2647 -0
- package/dist/primitives/bashx/src/do/tiered-executor.js.map +1 -0
- package/dist/primitives/bashx/src/do/worker.js +352 -0
- package/dist/primitives/bashx/src/do/worker.js.map +1 -0
- package/dist/primitives/bashx/src/types.js +10 -0
- package/dist/primitives/bashx/src/types.js.map +1 -0
- package/dist/primitives/fsx/core/backend.js +480 -0
- package/dist/primitives/fsx/core/backend.js.map +1 -0
- package/dist/primitives/fsx/core/constants.js +140 -0
- package/dist/primitives/fsx/core/constants.js.map +1 -0
- package/dist/primitives/fsx/core/fsx.js +1184 -0
- package/dist/primitives/fsx/core/fsx.js.map +1 -0
- package/dist/primitives/fsx/core/glob/glob.js +438 -0
- package/dist/primitives/fsx/core/glob/glob.js.map +1 -0
- package/dist/primitives/fsx/core/glob/index.js +8 -0
- package/dist/primitives/fsx/core/glob/index.js.map +1 -0
- package/dist/primitives/fsx/core/glob/match.js +392 -0
- package/dist/primitives/fsx/core/glob/match.js.map +1 -0
- package/dist/primitives/fsx/core/types.js +307 -0
- package/dist/primitives/fsx/core/types.js.map +1 -0
- package/dist/sandbox/index.js +258 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sdk/capnweb-compat.js +42 -0
- package/dist/sdk/capnweb-compat.js.map +1 -0
- package/dist/sdk/client.js +20 -0
- package/dist/sdk/client.js.map +1 -0
- package/dist/sdk/index.js +17 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/snippets/artifacts-config.js +241 -0
- package/dist/snippets/artifacts-config.js.map +1 -0
- package/dist/snippets/artifacts-ingest.js +832 -0
- package/dist/snippets/artifacts-ingest.js.map +1 -0
- package/dist/snippets/artifacts-serve.js +1035 -0
- package/dist/snippets/artifacts-serve.js.map +1 -0
- package/dist/snippets/artifacts-types.js +161 -0
- package/dist/snippets/artifacts-types.js.map +1 -0
- package/dist/snippets/cache-probe.js +376 -0
- package/dist/snippets/cache-probe.js.map +1 -0
- package/dist/snippets/cache.js +10 -0
- package/dist/snippets/cache.js.map +1 -0
- package/dist/snippets/events.js +469 -0
- package/dist/snippets/events.js.map +1 -0
- package/dist/snippets/index.js +7 -0
- package/dist/snippets/index.js.map +1 -0
- package/dist/snippets/proxy.js +495 -0
- package/dist/snippets/proxy.js.map +1 -0
- package/dist/snippets/search.js +1759 -0
- package/dist/snippets/search.js.map +1 -0
- package/dist/streams/index.js +30 -0
- package/dist/streams/index.js.map +1 -0
- package/dist/streams/observability.js +68 -0
- package/dist/streams/observability.js.map +1 -0
- package/dist/types/AI.js +92 -0
- package/dist/types/AI.js.map +1 -0
- package/dist/types/AIFunction.js +171 -0
- package/dist/types/AIFunction.js.map +1 -0
- package/dist/types/BrowseVerb.js +89 -0
- package/dist/types/BrowseVerb.js.map +1 -0
- package/dist/types/Browser.js +31 -0
- package/dist/types/Browser.js.map +1 -0
- package/dist/types/Chaos.js +15 -0
- package/dist/types/Chaos.js.map +1 -0
- package/dist/types/CloudflareBindings.js +109 -0
- package/dist/types/CloudflareBindings.js.map +1 -0
- package/dist/types/Collection.js +50 -0
- package/dist/types/Collection.js.map +1 -0
- package/dist/types/DO.js +2 -0
- package/dist/types/DO.js.map +1 -0
- package/dist/types/DOLocation.js +63 -0
- package/dist/types/DOLocation.js.map +1 -0
- package/dist/types/EventHandler.js +57 -0
- package/dist/types/EventHandler.js.map +1 -0
- package/dist/types/Experiment.js +33 -0
- package/dist/types/Experiment.js.map +1 -0
- package/dist/types/Flag.js +57 -0
- package/dist/types/Flag.js.map +1 -0
- package/dist/types/Lifecycle.js +13 -0
- package/dist/types/Lifecycle.js.map +1 -0
- package/dist/types/Location.js +169 -0
- package/dist/types/Location.js.map +1 -0
- package/dist/types/Noun.js +66 -0
- package/dist/types/Noun.js.map +1 -0
- package/dist/types/SessionEvent.js +194 -0
- package/dist/types/SessionEvent.js.map +1 -0
- package/dist/types/Thing.js +55 -0
- package/dist/types/Thing.js.map +1 -0
- package/dist/types/ThingDO.js +153 -0
- package/dist/types/ThingDO.js.map +1 -0
- package/dist/types/Things.js +2 -0
- package/dist/types/Things.js.map +1 -0
- package/dist/types/Verb.js +119 -0
- package/dist/types/Verb.js.map +1 -0
- package/dist/types/WorkflowContext.js +70 -0
- package/dist/types/WorkflowContext.js.map +1 -0
- package/dist/types/analytics-api.js +13 -0
- package/dist/types/analytics-api.js.map +1 -0
- package/dist/types/capabilities.js +135 -0
- package/dist/types/capabilities.js.map +1 -0
- package/dist/types/drizzle.js +12 -0
- package/dist/types/drizzle.js.map +1 -0
- package/dist/types/event.js +201 -0
- package/dist/types/event.js.map +1 -0
- package/dist/types/fn.js +12 -0
- package/dist/types/fn.js.map +1 -0
- package/dist/types/iceberg.js +48 -0
- package/dist/types/iceberg.js.map +1 -0
- package/dist/types/ids.js +170 -0
- package/dist/types/ids.js.map +1 -0
- package/dist/types/index.js +41 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/introspect.js +54 -0
- package/dist/types/introspect.js.map +1 -0
- package/dist/types/observability.js +124 -0
- package/dist/types/observability.js.map +1 -0
- package/dist/types/sync-protocol.js +175 -0
- package/dist/types/sync-protocol.js.map +1 -0
- package/dist/types/vector.js +13 -0
- package/dist/types/vector.js.map +1 -0
- package/dist/workflows/ScheduleManager.js +473 -0
- package/dist/workflows/ScheduleManager.js.map +1 -0
- package/dist/workflows/StepDOBridge.js +149 -0
- package/dist/workflows/StepDOBridge.js.map +1 -0
- package/dist/workflows/StepResultStorage.js +232 -0
- package/dist/workflows/StepResultStorage.js.map +1 -0
- package/dist/workflows/WaitForEventManager.js +461 -0
- package/dist/workflows/WaitForEventManager.js.map +1 -0
- package/dist/workflows/analyzer.js +332 -0
- package/dist/workflows/analyzer.js.map +1 -0
- package/dist/workflows/compat/activity-router.js +484 -0
- package/dist/workflows/compat/activity-router.js.map +1 -0
- package/dist/workflows/compat/backends/cloudflare-workflows.js +431 -0
- package/dist/workflows/compat/backends/cloudflare-workflows.js.map +1 -0
- package/dist/workflows/compat/backends/index.js +14 -0
- package/dist/workflows/compat/backends/index.js.map +1 -0
- package/dist/workflows/compat/errors/index.js +375 -0
- package/dist/workflows/compat/errors/index.js.map +1 -0
- package/dist/workflows/compat/index.js +79 -0
- package/dist/workflows/compat/index.js.map +1 -0
- package/dist/workflows/compat/inngest/index.js +989 -0
- package/dist/workflows/compat/inngest/index.js.map +1 -0
- package/dist/workflows/compat/qstash/index.js +1263 -0
- package/dist/workflows/compat/qstash/index.js.map +1 -0
- package/dist/workflows/compat/temporal/activities.js +739 -0
- package/dist/workflows/compat/temporal/activities.js.map +1 -0
- package/dist/workflows/compat/temporal/child-workflows.js +154 -0
- package/dist/workflows/compat/temporal/child-workflows.js.map +1 -0
- package/dist/workflows/compat/temporal/client.js +381 -0
- package/dist/workflows/compat/temporal/client.js.map +1 -0
- package/dist/workflows/compat/temporal/context.js +309 -0
- package/dist/workflows/compat/temporal/context.js.map +1 -0
- package/dist/workflows/compat/temporal/determinism.js +216 -0
- package/dist/workflows/compat/temporal/determinism.js.map +1 -0
- package/dist/workflows/compat/temporal/errors.js +128 -0
- package/dist/workflows/compat/temporal/errors.js.map +1 -0
- package/dist/workflows/compat/temporal/index.js +2464 -0
- package/dist/workflows/compat/temporal/index.js.map +1 -0
- package/dist/workflows/compat/temporal/saga.js +504 -0
- package/dist/workflows/compat/temporal/saga.js.map +1 -0
- package/dist/workflows/compat/temporal/signals.js +364 -0
- package/dist/workflows/compat/temporal/signals.js.map +1 -0
- package/dist/workflows/compat/temporal/storage.js +271 -0
- package/dist/workflows/compat/temporal/storage.js.map +1 -0
- package/dist/workflows/compat/temporal/timers.js +347 -0
- package/dist/workflows/compat/temporal/timers.js.map +1 -0
- package/dist/workflows/compat/temporal/types.js +7 -0
- package/dist/workflows/compat/temporal/types.js.map +1 -0
- package/dist/workflows/compat/temporal/unified-primitives.js +339 -0
- package/dist/workflows/compat/temporal/unified-primitives.js.map +1 -0
- package/dist/workflows/compat/trigger/index.js +468 -0
- package/dist/workflows/compat/trigger/index.js.map +1 -0
- package/dist/workflows/compat/utils/index.js +69 -0
- package/dist/workflows/compat/utils/index.js.map +1 -0
- package/dist/workflows/context/correlation-capability.js +266 -0
- package/dist/workflows/context/correlation-capability.js.map +1 -0
- package/dist/workflows/context/correlation.js +484 -0
- package/dist/workflows/context/correlation.js.map +1 -0
- package/dist/workflows/context/experiment.js +289 -0
- package/dist/workflows/context/experiment.js.map +1 -0
- package/dist/workflows/context/flag.js +244 -0
- package/dist/workflows/context/flag.js.map +1 -0
- package/dist/workflows/context/foundation.js +648 -0
- package/dist/workflows/context/foundation.js.map +1 -0
- package/dist/workflows/context/human-base.js +106 -0
- package/dist/workflows/context/human-base.js.map +1 -0
- package/dist/workflows/context/human.js +368 -0
- package/dist/workflows/context/human.js.map +1 -0
- package/dist/workflows/context/measure.js +354 -0
- package/dist/workflows/context/measure.js.map +1 -0
- package/dist/workflows/context/rate-limit.js +358 -0
- package/dist/workflows/context/rate-limit.js.map +1 -0
- package/dist/workflows/context/user.js +117 -0
- package/dist/workflows/context/user.js.map +1 -0
- package/dist/workflows/context/vault.js +360 -0
- package/dist/workflows/context/vault.js.map +1 -0
- package/dist/workflows/data/entity-events/entity-events.js +489 -0
- package/dist/workflows/data/entity-events/entity-events.js.map +1 -0
- package/dist/workflows/data/experiment/index.js +599 -0
- package/dist/workflows/data/experiment/index.js.map +1 -0
- package/dist/workflows/data/goal/context.js +558 -0
- package/dist/workflows/data/goal/context.js.map +1 -0
- package/dist/workflows/data/goal/index.js +32 -0
- package/dist/workflows/data/goal/index.js.map +1 -0
- package/dist/workflows/data/measure/index.js +840 -0
- package/dist/workflows/data/measure/index.js.map +1 -0
- package/dist/workflows/data/stream/index.js +1215 -0
- package/dist/workflows/data/stream/index.js.map +1 -0
- package/dist/workflows/data/track/context.js +883 -0
- package/dist/workflows/data/track/context.js.map +1 -0
- package/dist/workflows/data/track/index.js +15 -0
- package/dist/workflows/data/track/index.js.map +1 -0
- package/dist/workflows/data/view/context.js +864 -0
- package/dist/workflows/data/view/context.js.map +1 -0
- package/dist/workflows/domain.js +93 -0
- package/dist/workflows/domain.js.map +1 -0
- package/dist/workflows/flag.js +176 -0
- package/dist/workflows/flag.js.map +1 -0
- package/dist/workflows/flags.js +217 -0
- package/dist/workflows/flags.js.map +1 -0
- package/dist/workflows/hash.js +209 -0
- package/dist/workflows/hash.js.map +1 -0
- package/dist/workflows/index.js +50 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/on.js +378 -0
- package/dist/workflows/on.js.map +1 -0
- package/dist/workflows/pipeline-promise.js +481 -0
- package/dist/workflows/pipeline-promise.js.map +1 -0
- package/dist/workflows/pipeline-types.js +20 -0
- package/dist/workflows/pipeline-types.js.map +1 -0
- package/dist/workflows/proxy.js +76 -0
- package/dist/workflows/proxy.js.map +1 -0
- package/dist/workflows/runtime.js +310 -0
- package/dist/workflows/runtime.js.map +1 -0
- package/dist/workflows/schedule-builder.js +327 -0
- package/dist/workflows/schedule-builder.js.map +1 -0
- package/dist/workflows/visibility/index.js +148 -0
- package/dist/workflows/visibility/index.js.map +1 -0
- package/dist/workflows/visibility/query-parser.js +150 -0
- package/dist/workflows/visibility/query-parser.js.map +1 -0
- package/dist/workflows/visibility/store.js +223 -0
- package/dist/workflows/visibility/store.js.map +1 -0
- package/dist/workflows/visibility/types.js +30 -0
- package/dist/workflows/visibility/types.js.map +1 -0
- package/dist/workflows/workflow.js +53 -0
- package/dist/workflows/workflow.js.map +1 -0
- package/package.json +279 -46
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bash Tool Adapter
|
|
3
|
+
*
|
|
4
|
+
* Maps Claude SDK Bash tool to bashx.do tiered execution.
|
|
5
|
+
* Includes AST-based safety analysis and tiered execution model.
|
|
6
|
+
*
|
|
7
|
+
* @module lib/agent/tools/bash
|
|
8
|
+
*/
|
|
9
|
+
import { TimeoutError } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Default timeout for bash commands (2 minutes)
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_TIMEOUT = 120000;
|
|
14
|
+
/**
|
|
15
|
+
* Maximum timeout (10 minutes)
|
|
16
|
+
*/
|
|
17
|
+
const MAX_TIMEOUT = 600000;
|
|
18
|
+
/**
|
|
19
|
+
* Dangerous commands that require confirmation
|
|
20
|
+
*/
|
|
21
|
+
const DANGEROUS_COMMANDS = new Set([
|
|
22
|
+
'rm',
|
|
23
|
+
'rmdir',
|
|
24
|
+
'mv',
|
|
25
|
+
'dd',
|
|
26
|
+
'mkfs',
|
|
27
|
+
'fdisk',
|
|
28
|
+
'parted',
|
|
29
|
+
'mount',
|
|
30
|
+
'umount',
|
|
31
|
+
'chmod',
|
|
32
|
+
'chown',
|
|
33
|
+
'sudo',
|
|
34
|
+
'su',
|
|
35
|
+
'kill',
|
|
36
|
+
'killall',
|
|
37
|
+
'pkill',
|
|
38
|
+
'shutdown',
|
|
39
|
+
'reboot',
|
|
40
|
+
'halt',
|
|
41
|
+
'poweroff',
|
|
42
|
+
'init',
|
|
43
|
+
]);
|
|
44
|
+
/**
|
|
45
|
+
* Dangerous patterns that should be blocked or require confirmation
|
|
46
|
+
*/
|
|
47
|
+
const DANGEROUS_PATTERNS = [
|
|
48
|
+
/rm\s+(-[a-zA-Z]*r[a-zA-Z]*\s+)?(-[a-zA-Z]*f[a-zA-Z]*\s+)?\//, // rm -rf /
|
|
49
|
+
/rm\s+(-[a-zA-Z]*f[a-zA-Z]*\s+)?(-[a-zA-Z]*r[a-zA-Z]*\s+)?\//, // rm -fr /
|
|
50
|
+
/>\s*\/dev\/sd[a-z]/, // write to disk device
|
|
51
|
+
/dd\s+.*of=\/dev\//, // dd to device
|
|
52
|
+
/mkfs/, // format filesystem
|
|
53
|
+
/:\(\)\{\s*:\|:&\s*\};:/, // fork bomb
|
|
54
|
+
/chmod\s+(-[a-zA-Z]*\s+)?777\s+\//, // chmod 777 /
|
|
55
|
+
/curl.*\|\s*(ba)?sh/, // curl | sh
|
|
56
|
+
/wget.*\|\s*(ba)?sh/, // wget | sh
|
|
57
|
+
];
|
|
58
|
+
/**
|
|
59
|
+
* Commands that map to Tier 1 (native fsx operations)
|
|
60
|
+
*/
|
|
61
|
+
const TIER1_COMMANDS = new Set([
|
|
62
|
+
'cat',
|
|
63
|
+
'ls',
|
|
64
|
+
'head',
|
|
65
|
+
'tail',
|
|
66
|
+
'echo',
|
|
67
|
+
'printf',
|
|
68
|
+
'pwd',
|
|
69
|
+
'wc',
|
|
70
|
+
'stat',
|
|
71
|
+
'file',
|
|
72
|
+
'basename',
|
|
73
|
+
'dirname',
|
|
74
|
+
'realpath',
|
|
75
|
+
'readlink',
|
|
76
|
+
'test',
|
|
77
|
+
'[',
|
|
78
|
+
'[[',
|
|
79
|
+
]);
|
|
80
|
+
/**
|
|
81
|
+
* Commands that map to Tier 2 (RPC services)
|
|
82
|
+
*/
|
|
83
|
+
const TIER2_COMMANDS = new Set([
|
|
84
|
+
'git',
|
|
85
|
+
'jq',
|
|
86
|
+
'yq',
|
|
87
|
+
'curl',
|
|
88
|
+
'wget',
|
|
89
|
+
]);
|
|
90
|
+
/**
|
|
91
|
+
* Commands that map to Tier 3 (dynamic npm loading)
|
|
92
|
+
*/
|
|
93
|
+
const TIER3_COMMANDS = new Set([
|
|
94
|
+
'npm',
|
|
95
|
+
'npx',
|
|
96
|
+
'pnpm',
|
|
97
|
+
'yarn',
|
|
98
|
+
'node',
|
|
99
|
+
'tsx',
|
|
100
|
+
'ts-node',
|
|
101
|
+
'esbuild',
|
|
102
|
+
'tsc',
|
|
103
|
+
]);
|
|
104
|
+
/**
|
|
105
|
+
* Simple command parser to extract command name
|
|
106
|
+
*/
|
|
107
|
+
function extractCommandName(command) {
|
|
108
|
+
// Remove leading whitespace and environment variables
|
|
109
|
+
const trimmed = command.trim();
|
|
110
|
+
// Handle environment variable assignments at the start
|
|
111
|
+
let cmd = trimmed;
|
|
112
|
+
while (/^[A-Za-z_][A-Za-z0-9_]*=\S*\s+/.test(cmd)) {
|
|
113
|
+
cmd = cmd.replace(/^[A-Za-z_][A-Za-z0-9_]*=\S*\s+/, '');
|
|
114
|
+
}
|
|
115
|
+
// Handle command substitution, subshells, etc.
|
|
116
|
+
if (cmd.startsWith('(') || cmd.startsWith('$(') || cmd.startsWith('`')) {
|
|
117
|
+
return null; // Complex command
|
|
118
|
+
}
|
|
119
|
+
// Extract the command name (first word)
|
|
120
|
+
const match = cmd.match(/^([a-zA-Z_][a-zA-Z0-9_\-.]*)/);
|
|
121
|
+
return match ? match[1] : null;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Check if command is dangerous
|
|
125
|
+
*/
|
|
126
|
+
function isDangerousCommand(command) {
|
|
127
|
+
const cmdName = extractCommandName(command);
|
|
128
|
+
// Check dangerous command names
|
|
129
|
+
if (cmdName && DANGEROUS_COMMANDS.has(cmdName)) {
|
|
130
|
+
return {
|
|
131
|
+
dangerous: true,
|
|
132
|
+
reason: `Command '${cmdName}' can modify system state and requires confirmation`,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
// Check dangerous patterns
|
|
136
|
+
for (const pattern of DANGEROUS_PATTERNS) {
|
|
137
|
+
if (pattern.test(command)) {
|
|
138
|
+
return {
|
|
139
|
+
dangerous: true,
|
|
140
|
+
reason: 'Command matches a dangerous pattern and requires confirmation',
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return { dangerous: false };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Determine execution tier for a command
|
|
148
|
+
*/
|
|
149
|
+
function determineExecutionTier(command) {
|
|
150
|
+
const cmdName = extractCommandName(command);
|
|
151
|
+
if (cmdName && TIER1_COMMANDS.has(cmdName)) {
|
|
152
|
+
return 1;
|
|
153
|
+
}
|
|
154
|
+
if (cmdName && TIER2_COMMANDS.has(cmdName)) {
|
|
155
|
+
return 2;
|
|
156
|
+
}
|
|
157
|
+
if (cmdName && TIER3_COMMANDS.has(cmdName)) {
|
|
158
|
+
return 3;
|
|
159
|
+
}
|
|
160
|
+
// Default to sandbox for unknown commands
|
|
161
|
+
return 4;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Execute a Tier 1 command using fsx
|
|
165
|
+
*/
|
|
166
|
+
async function executeTier1(command, context) {
|
|
167
|
+
const { fs, cwd } = context;
|
|
168
|
+
const cmdName = extractCommandName(command);
|
|
169
|
+
// Parse the command for basic shell operations
|
|
170
|
+
// This is a simplified implementation - full shell parsing would use bashx AST
|
|
171
|
+
try {
|
|
172
|
+
if (cmdName === 'cat') {
|
|
173
|
+
// Extract file path from command
|
|
174
|
+
const args = command.replace(/^cat\s+/, '').trim();
|
|
175
|
+
const filePath = args.startsWith('/') ? args : `${cwd}/${args}`;
|
|
176
|
+
const content = await fs.readFile(filePath);
|
|
177
|
+
return { stdout: content, stderr: '', exit_code: 0 };
|
|
178
|
+
}
|
|
179
|
+
if (cmdName === 'ls') {
|
|
180
|
+
const args = command.replace(/^ls\s*/, '').trim();
|
|
181
|
+
const targetPath = args || cwd;
|
|
182
|
+
const fullPath = targetPath.startsWith('/') ? targetPath : `${cwd}/${targetPath}`;
|
|
183
|
+
const entries = await fs.readdir(fullPath);
|
|
184
|
+
const entryNames = Array.isArray(entries)
|
|
185
|
+
? entries.map(e => typeof e === 'string' ? e : e.name)
|
|
186
|
+
: entries;
|
|
187
|
+
return { stdout: entryNames.join('\n'), stderr: '', exit_code: 0 };
|
|
188
|
+
}
|
|
189
|
+
if (cmdName === 'pwd') {
|
|
190
|
+
return { stdout: cwd, stderr: '', exit_code: 0 };
|
|
191
|
+
}
|
|
192
|
+
if (cmdName === 'echo') {
|
|
193
|
+
const args = command.replace(/^echo\s*/, '');
|
|
194
|
+
return { stdout: args, stderr: '', exit_code: 0 };
|
|
195
|
+
}
|
|
196
|
+
// For other Tier 1 commands, fall through to a not implemented error
|
|
197
|
+
throw new Error(`Tier 1 command '${cmdName}' not yet implemented`);
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
const err = error;
|
|
201
|
+
return {
|
|
202
|
+
stdout: '',
|
|
203
|
+
stderr: err.message,
|
|
204
|
+
exit_code: 1,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Execute a command using the tiered executor
|
|
210
|
+
*/
|
|
211
|
+
async function executeCommand(command, context, options) {
|
|
212
|
+
const startTime = Date.now();
|
|
213
|
+
// Check if command is dangerous
|
|
214
|
+
const danger = isDangerousCommand(command);
|
|
215
|
+
if (danger.dangerous && !options.confirm) {
|
|
216
|
+
return {
|
|
217
|
+
stdout: '',
|
|
218
|
+
stderr: '',
|
|
219
|
+
exit_code: 0,
|
|
220
|
+
blocked: true,
|
|
221
|
+
block_reason: danger.reason,
|
|
222
|
+
duration_ms: Date.now() - startTime,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
// Determine execution tier
|
|
226
|
+
const tier = determineExecutionTier(command);
|
|
227
|
+
// If we have a bash executor, use it
|
|
228
|
+
if (context.bash) {
|
|
229
|
+
try {
|
|
230
|
+
const result = await context.bash.exec(command, {
|
|
231
|
+
timeout: options.timeout,
|
|
232
|
+
cwd: options.cwd || context.cwd,
|
|
233
|
+
});
|
|
234
|
+
return {
|
|
235
|
+
stdout: result.stdout,
|
|
236
|
+
stderr: result.stderr,
|
|
237
|
+
exit_code: result.exitCode,
|
|
238
|
+
tier,
|
|
239
|
+
duration_ms: Date.now() - startTime,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
const err = error;
|
|
244
|
+
if (err.message.includes('timeout')) {
|
|
245
|
+
throw new TimeoutError(command, options.timeout);
|
|
246
|
+
}
|
|
247
|
+
throw error;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// Otherwise, try Tier 1 execution
|
|
251
|
+
if (tier === 1) {
|
|
252
|
+
try {
|
|
253
|
+
const result = await executeTier1(command, context);
|
|
254
|
+
return {
|
|
255
|
+
...result,
|
|
256
|
+
tier: 1,
|
|
257
|
+
duration_ms: Date.now() - startTime,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
// Fall through to error handling
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// No executor available
|
|
265
|
+
return {
|
|
266
|
+
stdout: '',
|
|
267
|
+
stderr: `No bash executor available for tier ${tier} command: ${command}`,
|
|
268
|
+
exit_code: 127,
|
|
269
|
+
tier,
|
|
270
|
+
duration_ms: Date.now() - startTime,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Bash Tool Adapter
|
|
275
|
+
*
|
|
276
|
+
* Executes bash commands with AST-based safety analysis and tiered execution.
|
|
277
|
+
* Tiers:
|
|
278
|
+
* - Tier 1: Native (cat/ls via fsx) - <1ms
|
|
279
|
+
* - Tier 2: RPC (git/jq) - <5ms
|
|
280
|
+
* - Tier 3: Loader (npm via esm.sh) - <10ms
|
|
281
|
+
* - Tier 4: Sandbox (fallback) - 2-3s cold
|
|
282
|
+
*/
|
|
283
|
+
export class BashToolAdapter {
|
|
284
|
+
name = 'Bash';
|
|
285
|
+
description = `Executes a given bash command in a persistent shell session with optional timeout.
|
|
286
|
+
|
|
287
|
+
IMPORTANT: This tool is for terminal operations like git, npm, docker, etc. DO NOT use it for file operations (reading, writing, editing, searching, finding files) - use the specialized tools for this instead.
|
|
288
|
+
|
|
289
|
+
Usage notes:
|
|
290
|
+
- The command argument is required.
|
|
291
|
+
- You can specify an optional timeout in milliseconds (up to 600000ms / 10 minutes). If not specified, commands will timeout after 120000ms (2 minutes).
|
|
292
|
+
- If the output exceeds 30000 characters, output will be truncated.`;
|
|
293
|
+
inputSchema = {
|
|
294
|
+
type: 'object',
|
|
295
|
+
properties: {
|
|
296
|
+
command: {
|
|
297
|
+
type: 'string',
|
|
298
|
+
description: 'The command to execute',
|
|
299
|
+
},
|
|
300
|
+
timeout: {
|
|
301
|
+
type: 'number',
|
|
302
|
+
description: 'Optional timeout in milliseconds (max 600000)',
|
|
303
|
+
},
|
|
304
|
+
cwd: {
|
|
305
|
+
type: 'string',
|
|
306
|
+
description: 'Working directory for the command',
|
|
307
|
+
},
|
|
308
|
+
confirm: {
|
|
309
|
+
type: 'boolean',
|
|
310
|
+
description: 'Confirm execution of dangerous commands',
|
|
311
|
+
},
|
|
312
|
+
run_in_background: {
|
|
313
|
+
type: 'boolean',
|
|
314
|
+
description: 'Run the command in the background',
|
|
315
|
+
},
|
|
316
|
+
description: {
|
|
317
|
+
type: 'string',
|
|
318
|
+
description: 'Clear, concise description of what this command does',
|
|
319
|
+
},
|
|
320
|
+
},
|
|
321
|
+
required: ['command'],
|
|
322
|
+
additionalProperties: false,
|
|
323
|
+
};
|
|
324
|
+
async execute(input, context) {
|
|
325
|
+
const { command, timeout = DEFAULT_TIMEOUT, cwd, confirm = false, } = input;
|
|
326
|
+
// Validate timeout
|
|
327
|
+
const effectiveTimeout = Math.min(Math.max(timeout, 0), MAX_TIMEOUT);
|
|
328
|
+
// Execute command
|
|
329
|
+
return executeCommand(command, context, {
|
|
330
|
+
timeout: effectiveTimeout,
|
|
331
|
+
cwd,
|
|
332
|
+
confirm,
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=bash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../../lib/agent/tools/bash.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edit Tool Adapter
|
|
3
|
+
*
|
|
4
|
+
* Maps Claude SDK Edit tool to fsx.do filesystem capabilities.
|
|
5
|
+
* Performs exact string replacements with uniqueness checks.
|
|
6
|
+
*
|
|
7
|
+
* @module lib/agent/tools/edit
|
|
8
|
+
*/
|
|
9
|
+
import { FileNotFoundError, IsDirectoryError, PathTraversalError, NotUniqueError, FileNotReadError, } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Validate and normalize a file path
|
|
12
|
+
*/
|
|
13
|
+
function validatePath(path) {
|
|
14
|
+
if (!path.startsWith('/')) {
|
|
15
|
+
throw new PathTraversalError(path);
|
|
16
|
+
}
|
|
17
|
+
const parts = path.split('/').filter(Boolean);
|
|
18
|
+
const resolved = [];
|
|
19
|
+
for (const part of parts) {
|
|
20
|
+
if (part === '.')
|
|
21
|
+
continue;
|
|
22
|
+
if (part === '..') {
|
|
23
|
+
if (resolved.length === 0) {
|
|
24
|
+
throw new PathTraversalError(path);
|
|
25
|
+
}
|
|
26
|
+
resolved.pop();
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
resolved.push(part);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return '/' + resolved.join('/');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Count occurrences of a substring in a string
|
|
36
|
+
*/
|
|
37
|
+
function countOccurrences(text, search) {
|
|
38
|
+
if (search === '')
|
|
39
|
+
return 0;
|
|
40
|
+
let count = 0;
|
|
41
|
+
let pos = 0;
|
|
42
|
+
while ((pos = text.indexOf(search, pos)) !== -1) {
|
|
43
|
+
count++;
|
|
44
|
+
pos += search.length;
|
|
45
|
+
}
|
|
46
|
+
return count;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Replace first occurrence of a string
|
|
50
|
+
*/
|
|
51
|
+
function replaceFirst(text, search, replacement) {
|
|
52
|
+
const index = text.indexOf(search);
|
|
53
|
+
if (index === -1)
|
|
54
|
+
return text;
|
|
55
|
+
return text.slice(0, index) + replacement + text.slice(index + search.length);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Edit Tool Adapter
|
|
59
|
+
*
|
|
60
|
+
* Performs exact string replacements in files.
|
|
61
|
+
* The old_string must be unique in the file unless replace_all is true.
|
|
62
|
+
*/
|
|
63
|
+
export class EditToolAdapter {
|
|
64
|
+
name = 'Edit';
|
|
65
|
+
description = `Performs exact string replacements in files.
|
|
66
|
+
|
|
67
|
+
Usage:
|
|
68
|
+
- You must use your Read tool at least once in the conversation before editing. This tool will error if you attempt an edit without reading the file.
|
|
69
|
+
- When editing text from Read tool output, ensure you preserve the exact indentation (tabs/spaces) as it appears AFTER the line number prefix.
|
|
70
|
+
- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.
|
|
71
|
+
- Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.
|
|
72
|
+
- The edit will FAIL if old_string is not unique in the file. Either provide a larger string with more surrounding context to make it unique or use replace_all to change every instance of old_string.
|
|
73
|
+
- Use replace_all for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.`;
|
|
74
|
+
inputSchema = {
|
|
75
|
+
type: 'object',
|
|
76
|
+
properties: {
|
|
77
|
+
file_path: {
|
|
78
|
+
type: 'string',
|
|
79
|
+
description: 'The absolute path to the file to modify',
|
|
80
|
+
},
|
|
81
|
+
old_string: {
|
|
82
|
+
type: 'string',
|
|
83
|
+
description: 'The text to replace',
|
|
84
|
+
},
|
|
85
|
+
new_string: {
|
|
86
|
+
type: 'string',
|
|
87
|
+
description: 'The text to replace it with (must be different from old_string)',
|
|
88
|
+
},
|
|
89
|
+
replace_all: {
|
|
90
|
+
type: 'boolean',
|
|
91
|
+
description: 'Replace all occurences of old_string (default false)',
|
|
92
|
+
default: false,
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
required: ['file_path', 'old_string', 'new_string'],
|
|
96
|
+
additionalProperties: false,
|
|
97
|
+
};
|
|
98
|
+
async execute(input, context) {
|
|
99
|
+
const { file_path, old_string, new_string, replace_all = false } = input;
|
|
100
|
+
const { fs, readFiles } = context;
|
|
101
|
+
// Validate path
|
|
102
|
+
const normalizedPath = validatePath(file_path);
|
|
103
|
+
// Check that the file was previously read
|
|
104
|
+
if (!readFiles.has(normalizedPath)) {
|
|
105
|
+
throw new FileNotReadError(normalizedPath);
|
|
106
|
+
}
|
|
107
|
+
// Check if file exists
|
|
108
|
+
const exists = await fs.exists(normalizedPath);
|
|
109
|
+
if (!exists) {
|
|
110
|
+
throw new FileNotFoundError(normalizedPath);
|
|
111
|
+
}
|
|
112
|
+
// Check if it's a directory
|
|
113
|
+
const stats = await fs.stat(normalizedPath);
|
|
114
|
+
if (stats.isDirectory()) {
|
|
115
|
+
throw new IsDirectoryError(normalizedPath);
|
|
116
|
+
}
|
|
117
|
+
// Read current content
|
|
118
|
+
const content = await fs.readFile(normalizedPath);
|
|
119
|
+
// Count occurrences
|
|
120
|
+
const occurrences = countOccurrences(content, old_string);
|
|
121
|
+
// If old_string not found, return failure
|
|
122
|
+
if (occurrences === 0) {
|
|
123
|
+
return {
|
|
124
|
+
success: false,
|
|
125
|
+
replacements_made: 0,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
// If not replace_all and string is not unique, throw error
|
|
129
|
+
if (!replace_all && occurrences > 1) {
|
|
130
|
+
throw new NotUniqueError(old_string, occurrences);
|
|
131
|
+
}
|
|
132
|
+
// Perform the replacement
|
|
133
|
+
let newContent;
|
|
134
|
+
let replacementsMade;
|
|
135
|
+
if (replace_all) {
|
|
136
|
+
// Replace all occurrences
|
|
137
|
+
newContent = content.split(old_string).join(new_string);
|
|
138
|
+
replacementsMade = occurrences;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
// Replace only first occurrence
|
|
142
|
+
newContent = replaceFirst(content, old_string, new_string);
|
|
143
|
+
replacementsMade = 1;
|
|
144
|
+
}
|
|
145
|
+
// Write back to file
|
|
146
|
+
await fs.writeFile(normalizedPath, newContent);
|
|
147
|
+
return {
|
|
148
|
+
success: true,
|
|
149
|
+
replacements_made: replacementsMade,
|
|
150
|
+
undo: {
|
|
151
|
+
old_string: new_string,
|
|
152
|
+
new_string: old_string,
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../../lib/agent/tools/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Glob Tool Adapter
|
|
3
|
+
*
|
|
4
|
+
* Maps Claude SDK Glob tool to fsx.do glob capabilities.
|
|
5
|
+
* Supports glob patterns like "**\/*.ts" with results sorted by mtime.
|
|
6
|
+
*
|
|
7
|
+
* @module lib/agent/tools/glob
|
|
8
|
+
*/
|
|
9
|
+
import { PathTraversalError, NotDirectoryError } from './types';
|
|
10
|
+
import { glob as fsxGlob } from '../../../primitives/fsx/core/glob';
|
|
11
|
+
/**
|
|
12
|
+
* Maximum number of results to return
|
|
13
|
+
*/
|
|
14
|
+
const MAX_RESULTS = 1000;
|
|
15
|
+
/**
|
|
16
|
+
* Validate and normalize a path
|
|
17
|
+
*/
|
|
18
|
+
function validatePath(path) {
|
|
19
|
+
if (!path.startsWith('/')) {
|
|
20
|
+
throw new PathTraversalError(path);
|
|
21
|
+
}
|
|
22
|
+
const parts = path.split('/').filter(Boolean);
|
|
23
|
+
const resolved = [];
|
|
24
|
+
for (const part of parts) {
|
|
25
|
+
if (part === '.')
|
|
26
|
+
continue;
|
|
27
|
+
if (part === '..') {
|
|
28
|
+
if (resolved.length === 0) {
|
|
29
|
+
throw new PathTraversalError(path);
|
|
30
|
+
}
|
|
31
|
+
resolved.pop();
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
resolved.push(part);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return '/' + resolved.join('/');
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get file modification times for sorting
|
|
41
|
+
*/
|
|
42
|
+
async function getFileMtimes(fs, files) {
|
|
43
|
+
const mtimes = new Map();
|
|
44
|
+
// Process in batches to avoid overwhelming the filesystem
|
|
45
|
+
const BATCH_SIZE = 50;
|
|
46
|
+
for (let i = 0; i < files.length; i += BATCH_SIZE) {
|
|
47
|
+
const batch = files.slice(i, i + BATCH_SIZE);
|
|
48
|
+
const promises = batch.map(async (file) => {
|
|
49
|
+
try {
|
|
50
|
+
const stats = await fs.stat(file);
|
|
51
|
+
mtimes.set(file, stats.mtime?.getTime?.() ?? stats.mtimeMs ?? 0);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// If we can't stat, use 0 for mtime
|
|
55
|
+
mtimes.set(file, 0);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
await Promise.all(promises);
|
|
59
|
+
}
|
|
60
|
+
return mtimes;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Glob Tool Adapter
|
|
64
|
+
*
|
|
65
|
+
* Fast file pattern matching tool that works with any codebase size.
|
|
66
|
+
* Returns matching file paths sorted by modification time (most recent first).
|
|
67
|
+
*/
|
|
68
|
+
export class GlobToolAdapter {
|
|
69
|
+
name = 'Glob';
|
|
70
|
+
description = `Fast file pattern matching tool that works with any codebase size.
|
|
71
|
+
- Supports glob patterns like "**/*.js" or "src/**/*.ts"
|
|
72
|
+
- Returns matching file paths sorted by modification time
|
|
73
|
+
- Use this tool when you need to find files by name patterns`;
|
|
74
|
+
inputSchema = {
|
|
75
|
+
type: 'object',
|
|
76
|
+
properties: {
|
|
77
|
+
pattern: {
|
|
78
|
+
type: 'string',
|
|
79
|
+
description: 'The glob pattern to match files against',
|
|
80
|
+
},
|
|
81
|
+
path: {
|
|
82
|
+
type: 'string',
|
|
83
|
+
description: 'The directory to search in. If not specified, the current working directory will be used.',
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
required: ['pattern'],
|
|
87
|
+
additionalProperties: false,
|
|
88
|
+
};
|
|
89
|
+
async execute(input, context) {
|
|
90
|
+
const { pattern, path } = input;
|
|
91
|
+
const { fs, cwd } = context;
|
|
92
|
+
// Determine the base path
|
|
93
|
+
const basePath = path ? validatePath(path) : cwd;
|
|
94
|
+
// Check if base path exists and is a directory
|
|
95
|
+
const exists = await fs.exists(basePath);
|
|
96
|
+
if (!exists) {
|
|
97
|
+
// Return empty results for non-existent paths
|
|
98
|
+
return { files: [], truncated: false };
|
|
99
|
+
}
|
|
100
|
+
const stats = await fs.stat(basePath);
|
|
101
|
+
if (!stats.isDirectory()) {
|
|
102
|
+
throw new NotDirectoryError(basePath);
|
|
103
|
+
}
|
|
104
|
+
// Use fsx glob function with backend from context
|
|
105
|
+
// Get the backend from FSx instance - it's a private property but we need it
|
|
106
|
+
// For now, we'll use a workaround by implementing glob directly
|
|
107
|
+
const results = await fsxGlob(pattern, {
|
|
108
|
+
cwd: basePath,
|
|
109
|
+
absolute: true,
|
|
110
|
+
onlyFiles: true,
|
|
111
|
+
// Pass the backend from the FSx instance
|
|
112
|
+
// Note: FSx stores backend as private, so we access it through the glob function's backend option
|
|
113
|
+
// The FSx class internally uses this backend, but we can also pass it to glob
|
|
114
|
+
// For simplicity, we use the glob function which can work with mock FS or backend
|
|
115
|
+
});
|
|
116
|
+
// If no results, return early
|
|
117
|
+
if (results.length === 0) {
|
|
118
|
+
return { files: [], truncated: false };
|
|
119
|
+
}
|
|
120
|
+
// Get modification times for sorting
|
|
121
|
+
const mtimes = await getFileMtimes(fs, results);
|
|
122
|
+
// Sort by mtime (most recent first)
|
|
123
|
+
const sorted = [...results].sort((a, b) => {
|
|
124
|
+
const mtimeA = mtimes.get(a) ?? 0;
|
|
125
|
+
const mtimeB = mtimes.get(b) ?? 0;
|
|
126
|
+
return mtimeB - mtimeA; // Descending (newest first)
|
|
127
|
+
});
|
|
128
|
+
// Truncate if too many results
|
|
129
|
+
const truncated = sorted.length > MAX_RESULTS;
|
|
130
|
+
const files = truncated ? sorted.slice(0, MAX_RESULTS) : sorted;
|
|
131
|
+
return {
|
|
132
|
+
files,
|
|
133
|
+
truncated,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=glob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../../lib/agent/tools/glob.ts"],"names":[],"mappings":"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"}
|