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,668 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bashx Durable Object Integration Module
|
|
3
|
+
*
|
|
4
|
+
* Provides the BashModule class for integrating bashx capabilities into
|
|
5
|
+
* dotdo Durable Objects via the WorkflowContext ($) proxy.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { BashModule } from 'bashx/do'
|
|
10
|
+
*
|
|
11
|
+
* // In a DO class
|
|
12
|
+
* class MyDO extends DO {
|
|
13
|
+
* async run() {
|
|
14
|
+
* const bash = new BashModule(this.executor)
|
|
15
|
+
* const result = await bash.exec('ls -la')
|
|
16
|
+
* console.log(result.stdout)
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @module bashx/do
|
|
22
|
+
*/
|
|
23
|
+
import { parse } from '../ast/parser.js';
|
|
24
|
+
import { analyze, isDangerous } from '../ast/analyze.js';
|
|
25
|
+
/**
|
|
26
|
+
* Commands that can be executed natively via FsCapability.
|
|
27
|
+
* Maps command names to their native implementation handler.
|
|
28
|
+
*/
|
|
29
|
+
const NATIVE_FS_COMMANDS = new Set(['cat', 'head', 'tail', 'ls', 'test']);
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// BASH MODULE CLASS
|
|
32
|
+
// ============================================================================
|
|
33
|
+
/**
|
|
34
|
+
* BashModule - Capability module for bash execution in Durable Objects.
|
|
35
|
+
*
|
|
36
|
+
* Implements the BashCapability interface from dotdo, providing AST-based
|
|
37
|
+
* safety analysis and command execution through an external executor.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* import { BashModule } from 'bashx/do'
|
|
42
|
+
*
|
|
43
|
+
* // Create with a custom executor
|
|
44
|
+
* const bash = new BashModule({
|
|
45
|
+
* execute: async (cmd, opts) => {
|
|
46
|
+
* // Execute via Cloudflare Containers, RPC, etc.
|
|
47
|
+
* return await containerExecutor.run(cmd, opts)
|
|
48
|
+
* }
|
|
49
|
+
* })
|
|
50
|
+
*
|
|
51
|
+
* // Execute commands
|
|
52
|
+
* const result = await bash.exec('npm', ['install'])
|
|
53
|
+
* if (result.exitCode === 0) {
|
|
54
|
+
* console.log('Dependencies installed')
|
|
55
|
+
* }
|
|
56
|
+
*
|
|
57
|
+
* // Run scripts
|
|
58
|
+
* await bash.run(`
|
|
59
|
+
* set -e
|
|
60
|
+
* npm run build
|
|
61
|
+
* npm run test
|
|
62
|
+
* `)
|
|
63
|
+
*
|
|
64
|
+
* // Check safety
|
|
65
|
+
* const check = bash.isDangerous('rm -rf /')
|
|
66
|
+
* if (check.dangerous) {
|
|
67
|
+
* console.warn(check.reason)
|
|
68
|
+
* }
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export class BashModule {
|
|
72
|
+
/**
|
|
73
|
+
* Capability module name identifier.
|
|
74
|
+
*/
|
|
75
|
+
name = 'bash';
|
|
76
|
+
/**
|
|
77
|
+
* The executor used for running commands.
|
|
78
|
+
*/
|
|
79
|
+
executor;
|
|
80
|
+
/**
|
|
81
|
+
* Optional FsCapability for native file operations.
|
|
82
|
+
*/
|
|
83
|
+
fs;
|
|
84
|
+
/**
|
|
85
|
+
* Whether to use native operations when available.
|
|
86
|
+
*/
|
|
87
|
+
useNativeOps;
|
|
88
|
+
/**
|
|
89
|
+
* Whether the module has been initialized.
|
|
90
|
+
*/
|
|
91
|
+
initialized = false;
|
|
92
|
+
/**
|
|
93
|
+
* Create a new BashModule instance.
|
|
94
|
+
*
|
|
95
|
+
* @param executor - The executor to use for running commands
|
|
96
|
+
* @param options - Optional configuration including FsCapability integration
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* // Basic usage
|
|
101
|
+
* const bash = new BashModule(executor)
|
|
102
|
+
*
|
|
103
|
+
* // With FsCapability for native file operations
|
|
104
|
+
* const bash = new BashModule(executor, { fs: fsCapability })
|
|
105
|
+
*
|
|
106
|
+
* // Disable native ops (always use executor)
|
|
107
|
+
* const bash = new BashModule(executor, { fs: fsCapability, useNativeOps: false })
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
constructor(executor, options) {
|
|
111
|
+
this.executor = executor;
|
|
112
|
+
this.fs = options?.fs;
|
|
113
|
+
this.useNativeOps = options?.useNativeOps ?? true;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Check if FsCapability is available and native ops are enabled.
|
|
117
|
+
*/
|
|
118
|
+
get hasFsCapability() {
|
|
119
|
+
return this.useNativeOps && this.fs !== undefined;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Initialize the module.
|
|
123
|
+
* Called when the capability is first accessed.
|
|
124
|
+
*/
|
|
125
|
+
async initialize() {
|
|
126
|
+
if (this.initialized)
|
|
127
|
+
return;
|
|
128
|
+
// Future: initialize tree-sitter WASM, etc.
|
|
129
|
+
this.initialized = true;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Clean up resources.
|
|
133
|
+
* Called when the capability is unloaded.
|
|
134
|
+
*/
|
|
135
|
+
async dispose() {
|
|
136
|
+
// Future: cleanup resources
|
|
137
|
+
this.initialized = false;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Execute a command and wait for completion.
|
|
141
|
+
*
|
|
142
|
+
* This method performs AST-based safety analysis before execution:
|
|
143
|
+
* 1. Parses the command into an AST
|
|
144
|
+
* 2. Analyzes the AST for safety classification
|
|
145
|
+
* 3. Blocks critical/high impact commands unless confirm: true is passed
|
|
146
|
+
* 4. Executes the command if it passes the safety gate
|
|
147
|
+
*
|
|
148
|
+
* When FsCapability is available and the command is a native file operation
|
|
149
|
+
* (cat, head, tail, ls, test), it will be executed natively without spawning
|
|
150
|
+
* a subprocess. This is faster and works in pure Workers environments.
|
|
151
|
+
*
|
|
152
|
+
* @param command - The command to execute (e.g., 'git', 'npm', 'ls')
|
|
153
|
+
* @param args - Optional array of command arguments
|
|
154
|
+
* @param options - Optional execution options
|
|
155
|
+
* @returns Promise resolving to the execution result
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```typescript
|
|
159
|
+
* // Simple command
|
|
160
|
+
* const result = await bash.exec('ls')
|
|
161
|
+
*
|
|
162
|
+
* // With arguments
|
|
163
|
+
* const result = await bash.exec('git', ['status', '--short'])
|
|
164
|
+
*
|
|
165
|
+
* // With options
|
|
166
|
+
* const result = await bash.exec('npm', ['install'], {
|
|
167
|
+
* cwd: '/app',
|
|
168
|
+
* timeout: 60000
|
|
169
|
+
* })
|
|
170
|
+
*
|
|
171
|
+
* // Dangerous commands are blocked by default
|
|
172
|
+
* const result = await bash.exec('rm', ['-rf', '/'])
|
|
173
|
+
* // result.blocked === true, result.requiresConfirm === true
|
|
174
|
+
*
|
|
175
|
+
* // Use confirm: true to execute dangerous commands
|
|
176
|
+
* const result = await bash.exec('rm', ['-rf', 'temp/'], { confirm: true })
|
|
177
|
+
*
|
|
178
|
+
* // With FsCapability, this uses $.fs.read() instead of spawning cat
|
|
179
|
+
* const result = await bash.exec('cat', ['file.txt'])
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
async exec(command, args, options) {
|
|
183
|
+
const fullCommand = args && args.length > 0 ? `${command} ${args.join(' ')}` : command;
|
|
184
|
+
// Perform AST-based safety analysis
|
|
185
|
+
const safetyResult = this.performSafetyAnalysis(fullCommand, options);
|
|
186
|
+
if (safetyResult) {
|
|
187
|
+
return safetyResult;
|
|
188
|
+
}
|
|
189
|
+
// Try native operation if FsCapability is available
|
|
190
|
+
if (this.hasFsCapability && NATIVE_FS_COMMANDS.has(command)) {
|
|
191
|
+
const nativeResult = await this.tryNativeExec(command, args || [], options);
|
|
192
|
+
if (nativeResult) {
|
|
193
|
+
return nativeResult;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// Execute via executor
|
|
197
|
+
return this.executor.execute(fullCommand, options);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Perform AST-based safety analysis on a command.
|
|
201
|
+
* Returns a blocked result if the command should not be executed,
|
|
202
|
+
* or null if execution should proceed.
|
|
203
|
+
*/
|
|
204
|
+
performSafetyAnalysis(command, options) {
|
|
205
|
+
try {
|
|
206
|
+
// Parse and analyze the command
|
|
207
|
+
const ast = parse(command);
|
|
208
|
+
const { classification, intent } = analyze(ast);
|
|
209
|
+
const dangerCheck = isDangerous(ast);
|
|
210
|
+
// Check if command requires confirmation
|
|
211
|
+
const requiresConfirm = classification.impact === 'critical' || classification.impact === 'high';
|
|
212
|
+
// If dangerous and not confirmed, block execution
|
|
213
|
+
if (requiresConfirm && !options?.confirm) {
|
|
214
|
+
return this.createBlockedResult(command, classification, intent, dangerCheck.reason);
|
|
215
|
+
}
|
|
216
|
+
// Command is safe or confirmed - allow execution
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
// If AST analysis fails (e.g., parse error), allow executor to handle
|
|
221
|
+
// This ensures backward compatibility and allows the executor to
|
|
222
|
+
// provide its own error handling
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Create a blocked result for dangerous commands.
|
|
228
|
+
*/
|
|
229
|
+
createBlockedResult(command, classification, intent, reason) {
|
|
230
|
+
const blockReason = reason || classification.reason || 'Command blocked due to safety concerns';
|
|
231
|
+
return {
|
|
232
|
+
input: command,
|
|
233
|
+
command,
|
|
234
|
+
valid: true,
|
|
235
|
+
generated: false,
|
|
236
|
+
stdout: '',
|
|
237
|
+
stderr: '',
|
|
238
|
+
exitCode: 0,
|
|
239
|
+
intent,
|
|
240
|
+
classification,
|
|
241
|
+
blocked: true,
|
|
242
|
+
requiresConfirm: true,
|
|
243
|
+
blockReason,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Try to execute a command natively using FsCapability.
|
|
248
|
+
* Returns null if the command cannot be executed natively.
|
|
249
|
+
*/
|
|
250
|
+
async tryNativeExec(command, args, options) {
|
|
251
|
+
if (!this.fs)
|
|
252
|
+
return null;
|
|
253
|
+
try {
|
|
254
|
+
switch (command) {
|
|
255
|
+
case 'cat':
|
|
256
|
+
return await this.nativeCat(args, options);
|
|
257
|
+
case 'ls':
|
|
258
|
+
return await this.nativeLs(args, options);
|
|
259
|
+
case 'test':
|
|
260
|
+
return await this.nativeTest(args, options);
|
|
261
|
+
case 'head':
|
|
262
|
+
return await this.nativeHead(args, options);
|
|
263
|
+
case 'tail':
|
|
264
|
+
return await this.nativeTail(args, options);
|
|
265
|
+
default:
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
catch (error) {
|
|
270
|
+
// If native execution fails, return null to fall back to executor
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Native implementation of 'cat' using FsCapability (from fsx.do).
|
|
276
|
+
*/
|
|
277
|
+
async nativeCat(args, _options) {
|
|
278
|
+
if (!this.fs || args.length === 0)
|
|
279
|
+
return null;
|
|
280
|
+
// Simple cat: cat file1 [file2 ...]
|
|
281
|
+
const files = args.filter((arg) => !arg.startsWith('-'));
|
|
282
|
+
if (files.length === 0)
|
|
283
|
+
return null;
|
|
284
|
+
try {
|
|
285
|
+
// Use encoding: 'utf-8' to ensure we get strings back from fsx.do
|
|
286
|
+
const contents = await Promise.all(files.map((file) => this.fs.read(file, { encoding: 'utf-8' })));
|
|
287
|
+
const stdout = contents.join('');
|
|
288
|
+
return this.createNativeResult(`cat ${args.join(' ')}`, stdout);
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
const stderr = error instanceof Error ? error.message : String(error);
|
|
292
|
+
return this.createNativeResult(`cat ${args.join(' ')}`, '', stderr, 1);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Native implementation of 'ls' using FsCapability (from fsx.do).
|
|
297
|
+
*/
|
|
298
|
+
async nativeLs(args, _options) {
|
|
299
|
+
if (!this.fs)
|
|
300
|
+
return null;
|
|
301
|
+
// Simple ls: ls [path]
|
|
302
|
+
const paths = args.filter((arg) => !arg.startsWith('-'));
|
|
303
|
+
const path = paths[0] || '.';
|
|
304
|
+
try {
|
|
305
|
+
// Use withFileTypes: true to get Dirent objects from fsx.do
|
|
306
|
+
const entries = await this.fs.list(path, { withFileTypes: true });
|
|
307
|
+
// fsx.do Dirent has isDirectory() as a method
|
|
308
|
+
const stdout = entries
|
|
309
|
+
.map((e) => (e.isDirectory() ? `${e.name}/` : e.name))
|
|
310
|
+
.join('\n') + '\n';
|
|
311
|
+
return this.createNativeResult(`ls ${args.join(' ')}`, stdout);
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
const stderr = error instanceof Error ? error.message : String(error);
|
|
315
|
+
return this.createNativeResult(`ls ${args.join(' ')}`, '', stderr, 1);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Native implementation of 'test' using FsCapability (from fsx.do).
|
|
320
|
+
*/
|
|
321
|
+
async nativeTest(args, _options) {
|
|
322
|
+
if (!this.fs)
|
|
323
|
+
return null;
|
|
324
|
+
// Support: test -e file, test -f file, test -d file
|
|
325
|
+
if (args.length < 2)
|
|
326
|
+
return null;
|
|
327
|
+
const flag = args[0];
|
|
328
|
+
const path = args[1];
|
|
329
|
+
try {
|
|
330
|
+
switch (flag) {
|
|
331
|
+
case '-e': {
|
|
332
|
+
// File exists
|
|
333
|
+
const exists = await this.fs.exists(path);
|
|
334
|
+
return this.createNativeResult(`test ${args.join(' ')}`, '', '', exists ? 0 : 1);
|
|
335
|
+
}
|
|
336
|
+
case '-f': {
|
|
337
|
+
// Is regular file
|
|
338
|
+
const exists = await this.fs.exists(path);
|
|
339
|
+
if (!exists)
|
|
340
|
+
return this.createNativeResult(`test ${args.join(' ')}`, '', '', 1);
|
|
341
|
+
const stat = await this.fs.stat(path);
|
|
342
|
+
// fsx.do Stats class has isFile() as a method, not a property
|
|
343
|
+
return this.createNativeResult(`test ${args.join(' ')}`, '', '', stat.isFile() ? 0 : 1);
|
|
344
|
+
}
|
|
345
|
+
case '-d': {
|
|
346
|
+
// Is directory
|
|
347
|
+
const exists = await this.fs.exists(path);
|
|
348
|
+
if (!exists)
|
|
349
|
+
return this.createNativeResult(`test ${args.join(' ')}`, '', '', 1);
|
|
350
|
+
const stat = await this.fs.stat(path);
|
|
351
|
+
// fsx.do Stats class has isDirectory() as a method, not a property
|
|
352
|
+
return this.createNativeResult(`test ${args.join(' ')}`, '', '', stat.isDirectory() ? 0 : 1);
|
|
353
|
+
}
|
|
354
|
+
default:
|
|
355
|
+
return null; // Unknown flag, fall back to executor
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
return this.createNativeResult(`test ${args.join(' ')}`, '', '', 1);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Native implementation of 'head' using FsCapability (from fsx.do).
|
|
364
|
+
*/
|
|
365
|
+
async nativeHead(args, _options) {
|
|
366
|
+
if (!this.fs)
|
|
367
|
+
return null;
|
|
368
|
+
// Parse arguments: head [-n lines] file
|
|
369
|
+
let lines = 10; // default
|
|
370
|
+
let file;
|
|
371
|
+
for (let i = 0; i < args.length; i++) {
|
|
372
|
+
if (args[i] === '-n' && args[i + 1]) {
|
|
373
|
+
lines = parseInt(args[i + 1], 10);
|
|
374
|
+
i++;
|
|
375
|
+
}
|
|
376
|
+
else if (!args[i].startsWith('-')) {
|
|
377
|
+
file = args[i];
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
if (!file)
|
|
381
|
+
return null;
|
|
382
|
+
try {
|
|
383
|
+
// Use encoding: 'utf-8' to ensure we get a string back from fsx.do
|
|
384
|
+
const content = await this.fs.read(file, { encoding: 'utf-8' });
|
|
385
|
+
const allLines = content.split('\n');
|
|
386
|
+
const stdout = allLines.slice(0, lines).join('\n') + (allLines.length > lines ? '\n' : '');
|
|
387
|
+
return this.createNativeResult(`head ${args.join(' ')}`, stdout);
|
|
388
|
+
}
|
|
389
|
+
catch (error) {
|
|
390
|
+
const stderr = error instanceof Error ? error.message : String(error);
|
|
391
|
+
return this.createNativeResult(`head ${args.join(' ')}`, '', stderr, 1);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Native implementation of 'tail' using FsCapability (from fsx.do).
|
|
396
|
+
*/
|
|
397
|
+
async nativeTail(args, _options) {
|
|
398
|
+
if (!this.fs)
|
|
399
|
+
return null;
|
|
400
|
+
// Parse arguments: tail [-n lines] file
|
|
401
|
+
let lines = 10; // default
|
|
402
|
+
let file;
|
|
403
|
+
for (let i = 0; i < args.length; i++) {
|
|
404
|
+
if (args[i] === '-n' && args[i + 1]) {
|
|
405
|
+
lines = parseInt(args[i + 1], 10);
|
|
406
|
+
i++;
|
|
407
|
+
}
|
|
408
|
+
else if (!args[i].startsWith('-')) {
|
|
409
|
+
file = args[i];
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
if (!file)
|
|
413
|
+
return null;
|
|
414
|
+
try {
|
|
415
|
+
// Use encoding: 'utf-8' to ensure we get a string back from fsx.do
|
|
416
|
+
const content = await this.fs.read(file, { encoding: 'utf-8' });
|
|
417
|
+
const allLines = content.split('\n');
|
|
418
|
+
// Handle trailing newline - if last element is empty, don't count it
|
|
419
|
+
const effectiveLines = allLines[allLines.length - 1] === '' ? allLines.slice(0, -1) : allLines;
|
|
420
|
+
const stdout = effectiveLines.slice(-lines).join('\n') + '\n';
|
|
421
|
+
return this.createNativeResult(`tail ${args.join(' ')}`, stdout);
|
|
422
|
+
}
|
|
423
|
+
catch (error) {
|
|
424
|
+
const stderr = error instanceof Error ? error.message : String(error);
|
|
425
|
+
return this.createNativeResult(`tail ${args.join(' ')}`, '', stderr, 1);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Create a BashResult for native operations.
|
|
430
|
+
*/
|
|
431
|
+
createNativeResult(command, stdout, stderr = '', exitCode = 0) {
|
|
432
|
+
return {
|
|
433
|
+
input: command,
|
|
434
|
+
command,
|
|
435
|
+
valid: true,
|
|
436
|
+
generated: false,
|
|
437
|
+
stdout,
|
|
438
|
+
stderr,
|
|
439
|
+
exitCode,
|
|
440
|
+
intent: {
|
|
441
|
+
commands: [command.split(' ')[0]],
|
|
442
|
+
reads: [],
|
|
443
|
+
writes: [],
|
|
444
|
+
deletes: [],
|
|
445
|
+
network: false,
|
|
446
|
+
elevated: false,
|
|
447
|
+
},
|
|
448
|
+
classification: {
|
|
449
|
+
type: 'read',
|
|
450
|
+
impact: 'none',
|
|
451
|
+
reversible: true,
|
|
452
|
+
reason: 'Native filesystem operation',
|
|
453
|
+
},
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Spawn a command for streaming execution.
|
|
458
|
+
* Returns a handle that can be used to interact with the running process.
|
|
459
|
+
*
|
|
460
|
+
* @param command - The command to spawn
|
|
461
|
+
* @param args - Optional array of command arguments
|
|
462
|
+
* @param options - Optional spawn options including stream callbacks
|
|
463
|
+
* @returns Promise resolving to a spawn handle
|
|
464
|
+
*
|
|
465
|
+
* @example
|
|
466
|
+
* ```typescript
|
|
467
|
+
* // Stream output from a long-running process
|
|
468
|
+
* const handle = await bash.spawn('tail', ['-f', '/var/log/app.log'], {
|
|
469
|
+
* onStdout: (chunk) => console.log(chunk),
|
|
470
|
+
* onStderr: (chunk) => console.error(chunk)
|
|
471
|
+
* })
|
|
472
|
+
*
|
|
473
|
+
* // Later, stop the process
|
|
474
|
+
* handle.kill()
|
|
475
|
+
*
|
|
476
|
+
* // Wait for it to finish
|
|
477
|
+
* const result = await handle.done
|
|
478
|
+
* ```
|
|
479
|
+
*/
|
|
480
|
+
async spawn(command, args, options) {
|
|
481
|
+
if (!this.executor.spawn) {
|
|
482
|
+
throw new Error('Spawn not supported by this executor');
|
|
483
|
+
}
|
|
484
|
+
return this.executor.spawn(command, args, options);
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Run a shell script.
|
|
488
|
+
* Executes a multi-line bash script with full shell features.
|
|
489
|
+
*
|
|
490
|
+
* This method performs AST-based safety analysis before execution,
|
|
491
|
+
* blocking dangerous scripts unless confirm: true is passed.
|
|
492
|
+
*
|
|
493
|
+
* @param script - The bash script to execute
|
|
494
|
+
* @param options - Optional execution options
|
|
495
|
+
* @returns Promise resolving to the execution result
|
|
496
|
+
*
|
|
497
|
+
* @example
|
|
498
|
+
* ```typescript
|
|
499
|
+
* const result = await bash.run(`
|
|
500
|
+
* set -e
|
|
501
|
+
* cd /app
|
|
502
|
+
* npm install
|
|
503
|
+
* npm run build
|
|
504
|
+
* npm run test
|
|
505
|
+
* `)
|
|
506
|
+
*
|
|
507
|
+
* if (result.exitCode !== 0) {
|
|
508
|
+
* throw new Error('Build failed: ' + result.stderr)
|
|
509
|
+
* }
|
|
510
|
+
* ```
|
|
511
|
+
*/
|
|
512
|
+
async run(script, options) {
|
|
513
|
+
// Perform AST-based safety analysis
|
|
514
|
+
const safetyResult = this.performSafetyAnalysis(script, options);
|
|
515
|
+
if (safetyResult) {
|
|
516
|
+
return safetyResult;
|
|
517
|
+
}
|
|
518
|
+
// Execute script via executor
|
|
519
|
+
return this.executor.execute(script, options);
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Parse a command without executing it.
|
|
523
|
+
* Useful for validation and analysis.
|
|
524
|
+
*
|
|
525
|
+
* @param input - The command or script to parse
|
|
526
|
+
* @returns The parsed AST program
|
|
527
|
+
*/
|
|
528
|
+
parse(input) {
|
|
529
|
+
return parse(input);
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Analyze a command for safety classification.
|
|
533
|
+
* Returns the safety classification and intent without executing.
|
|
534
|
+
*
|
|
535
|
+
* @param input - The command or script to analyze
|
|
536
|
+
* @returns Analysis result with classification and intent
|
|
537
|
+
*/
|
|
538
|
+
analyze(input) {
|
|
539
|
+
const ast = parse(input);
|
|
540
|
+
return analyze(ast);
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Check if a command is dangerous.
|
|
544
|
+
* Quick safety check without full analysis.
|
|
545
|
+
*
|
|
546
|
+
* @param input - The command to check
|
|
547
|
+
* @returns Object indicating if dangerous and why
|
|
548
|
+
*/
|
|
549
|
+
isDangerous(input) {
|
|
550
|
+
const ast = parse(input);
|
|
551
|
+
return isDangerous(ast);
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Mixin function to add bash capability to a Durable Object class.
|
|
556
|
+
*
|
|
557
|
+
* This mixin provides lazy initialization of the BashModule, meaning
|
|
558
|
+
* the executor is only created when the `bash` property is first accessed.
|
|
559
|
+
* The BashModule instance is then cached for subsequent accesses.
|
|
560
|
+
*
|
|
561
|
+
* @param Base - The base DO class to extend
|
|
562
|
+
* @param config - Configuration object or factory function for creating the executor.
|
|
563
|
+
* When a function is provided, it works as a simple executor factory.
|
|
564
|
+
* When an object is provided, it can include FsCapability integration.
|
|
565
|
+
* @returns Extended class with bash capability
|
|
566
|
+
*
|
|
567
|
+
* @example Basic usage with executor function
|
|
568
|
+
* ```typescript
|
|
569
|
+
* import { withBash } from 'bashx/do'
|
|
570
|
+
* import { DO } from 'dotdo'
|
|
571
|
+
*
|
|
572
|
+
* class MyDO extends withBash(DO, (instance) => ({
|
|
573
|
+
* execute: async (cmd, opts) => {
|
|
574
|
+
* // Use instance.env.CONTAINER_SERVICE or similar
|
|
575
|
+
* return await containerService.run(cmd, opts)
|
|
576
|
+
* }
|
|
577
|
+
* })) {
|
|
578
|
+
* async deploy() {
|
|
579
|
+
* const result = await this.bash.exec('npm', ['run', 'build'])
|
|
580
|
+
* return result.exitCode === 0
|
|
581
|
+
* }
|
|
582
|
+
* }
|
|
583
|
+
* ```
|
|
584
|
+
*
|
|
585
|
+
* @example With FsCapability integration
|
|
586
|
+
* ```typescript
|
|
587
|
+
* import { withBash } from 'bashx/do'
|
|
588
|
+
* import { withFs } from 'dotdo/fs'
|
|
589
|
+
* import { DO } from 'dotdo'
|
|
590
|
+
*
|
|
591
|
+
* // First add fs capability, then bash with fs integration
|
|
592
|
+
* class MyDO extends withBash(withFs(DO), {
|
|
593
|
+
* executor: (instance) => containerExecutor,
|
|
594
|
+
* fs: (instance) => instance.$.fs // Native file ops use $.fs
|
|
595
|
+
* }) {
|
|
596
|
+
* async readConfig() {
|
|
597
|
+
* // 'cat config.json' uses $.fs.read() natively (Tier 1, fast!)
|
|
598
|
+
* const result = await this.bash.exec('cat', ['config.json'])
|
|
599
|
+
* return result.stdout
|
|
600
|
+
* }
|
|
601
|
+
* }
|
|
602
|
+
* ```
|
|
603
|
+
*
|
|
604
|
+
* @example With environment bindings
|
|
605
|
+
* ```typescript
|
|
606
|
+
* import { withBash } from 'bashx/do'
|
|
607
|
+
* import { DO } from 'dotdo'
|
|
608
|
+
*
|
|
609
|
+
* interface Env {
|
|
610
|
+
* CONTAINER_SERVICE: Fetcher
|
|
611
|
+
* }
|
|
612
|
+
*
|
|
613
|
+
* class MyDO extends withBash(DO<Env>, (instance) => ({
|
|
614
|
+
* execute: async (cmd, opts) => {
|
|
615
|
+
* const response = await instance.env.CONTAINER_SERVICE.fetch(
|
|
616
|
+
* 'https://container/exec',
|
|
617
|
+
* { method: 'POST', body: JSON.stringify({ cmd, opts }) }
|
|
618
|
+
* )
|
|
619
|
+
* return response.json()
|
|
620
|
+
* }
|
|
621
|
+
* })) {
|
|
622
|
+
* // this.bash is now available with type safety
|
|
623
|
+
* }
|
|
624
|
+
* ```
|
|
625
|
+
*
|
|
626
|
+
* @example Chaining with other mixins
|
|
627
|
+
* ```typescript
|
|
628
|
+
* import { withBash } from 'bashx/do'
|
|
629
|
+
* import { withFs } from 'fsx/do'
|
|
630
|
+
* import { DO } from 'dotdo'
|
|
631
|
+
*
|
|
632
|
+
* // Compose multiple capabilities
|
|
633
|
+
* const BaseDO = withBash(withFs(DO, fsExecutor), bashExecutor)
|
|
634
|
+
*
|
|
635
|
+
* class MyDO extends BaseDO {
|
|
636
|
+
* async build() {
|
|
637
|
+
* // Access both capabilities
|
|
638
|
+
* await this.fs.write('config.json', JSON.stringify(config))
|
|
639
|
+
* await this.bash.exec('npm', ['run', 'build'])
|
|
640
|
+
* }
|
|
641
|
+
* }
|
|
642
|
+
* ```
|
|
643
|
+
*/
|
|
644
|
+
export function withBash(Base, config) {
|
|
645
|
+
// Normalize config to object form
|
|
646
|
+
const normalizedConfig = typeof config === 'function' ? { executor: config } : config;
|
|
647
|
+
// Use abstract class to properly type the mixin
|
|
648
|
+
class BashMixin extends Base {
|
|
649
|
+
_bashModule;
|
|
650
|
+
get bash() {
|
|
651
|
+
if (!this._bashModule) {
|
|
652
|
+
const executor = normalizedConfig.executor(this);
|
|
653
|
+
const fs = normalizedConfig.fs?.(this);
|
|
654
|
+
const useNativeOps = normalizedConfig.useNativeOps ?? true;
|
|
655
|
+
this._bashModule = new BashModule(executor, { fs, useNativeOps });
|
|
656
|
+
}
|
|
657
|
+
return this._bashModule;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
return BashMixin;
|
|
661
|
+
}
|
|
662
|
+
// Re-export container executor for convenience
|
|
663
|
+
export { CloudflareContainerExecutor, createContainerExecutor, createSessionContainerExecutor, } from './container-executor.js';
|
|
664
|
+
// Re-export tiered executor
|
|
665
|
+
export { TieredExecutor, createTieredExecutor, } from './tiered-executor.js';
|
|
666
|
+
// Re-export ShellDO for wrangler worker entry
|
|
667
|
+
export { ShellDO } from './worker.js';
|
|
668
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../primitives/bashx/src/do/index.ts"],"names":[],"mappings":"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"}
|