dotdo 0.0.1 → 0.1.0
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/cli/README.md +238 -0
- package/cli/agent.ts +72 -0
- package/cli/bin.js +44 -0
- package/cli/bin.ts +38 -0
- package/cli/build.ts +157 -0
- package/cli/commands/auth/login.ts +14 -0
- package/cli/commands/auth/logout.ts +6 -0
- package/cli/commands/auth/whoami.ts +16 -0
- package/cli/commands/deploy-multi.ts +245 -0
- package/cli/commands/dev/deploy.ts +100 -0
- package/cli/commands/dev/dev.ts +95 -0
- package/cli/commands/dev/logs.ts +91 -0
- package/cli/commands/dev-local.ts +88 -0
- package/cli/commands/do-ops.ts +314 -0
- package/cli/commands/index.ts +100 -0
- package/cli/commands/init.ts +247 -0
- package/cli/commands/introspect/emitter.ts +315 -0
- package/cli/commands/introspect/index.ts +193 -0
- package/cli/commands/link.ts +598 -0
- package/cli/commands/snippets.ts +415 -0
- package/cli/commands/tunnel.ts +239 -0
- package/cli/device-auth.ts +289 -0
- package/cli/fallback.ts +12 -0
- package/cli/index.ts +121 -0
- package/cli/main.ts +246 -0
- package/cli/mcp-stdio.ts +790 -0
- package/cli/package.json +62 -0
- package/cli/runtime/do-registry.ts +193 -0
- package/cli/runtime/embedded-db.ts +344 -0
- package/cli/runtime/index.ts +9 -0
- package/cli/runtime/miniflare-adapter.ts +162 -0
- package/cli/sandbox.ts +82 -0
- package/cli/src/args.ts +174 -0
- package/cli/src/auth.ts +55 -0
- package/cli/src/commands/call.ts +84 -0
- package/cli/src/commands/charge.ts +96 -0
- package/cli/src/commands/config.ts +115 -0
- package/cli/src/commands/email.ts +112 -0
- package/cli/src/commands/llm.ts +115 -0
- package/cli/src/commands/queue.ts +134 -0
- package/cli/src/commands/text.ts +86 -0
- package/cli/src/config.ts +185 -0
- package/cli/src/output.ts +246 -0
- package/cli/src/rpc.ts +192 -0
- package/cli/utils/config.ts +282 -0
- package/cli/utils/detect.ts +73 -0
- package/cli/utils/index.ts +15 -0
- package/cli/utils/logger.ts +232 -0
- 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/middleware/auth-federation.js +573 -0
- package/dist/api/middleware/auth-federation.js.map +1 -0
- package/dist/api/middleware/auth.js +545 -0
- package/dist/api/middleware/auth.js.map +1 -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 +116 -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/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/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 +753 -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 +1006 -0
- package/dist/lib/mixins/git.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 +1190 -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/DOCache.js +153 -0
- package/dist/objects/DOCache.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 +650 -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 +691 -0
- package/dist/objects/transport/mcp-server.js.map +1 -0
- package/dist/objects/transport/rest-autowire.js +1508 -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 +1539 -0
- package/dist/objects/transport/rpc-server.js.map +1 -0
- package/dist/objects/transport/shared.js +576 -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/sandbox/index.js +258 -0
- package/dist/sandbox/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 +1149 -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 +146 -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 +294 -46
|
@@ -0,0 +1,648 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* withFs Mixin - Filesystem Capability
|
|
3
|
+
*
|
|
4
|
+
* Adds $.fs to the WorkflowContext with filesystem operations:
|
|
5
|
+
* - read, write, exists, delete
|
|
6
|
+
* - list, mkdir, stat
|
|
7
|
+
* - copy, move
|
|
8
|
+
*
|
|
9
|
+
* FsModule wraps fsx's FSx class to provide:
|
|
10
|
+
* - Lazy initialization (only creates FSx when first accessed)
|
|
11
|
+
* - Support for FileSystemDO stub or direct R2 binding
|
|
12
|
+
* - Consistent FsCapability interface
|
|
13
|
+
*
|
|
14
|
+
* Storage Layout:
|
|
15
|
+
* The virtual filesystem uses DurableObjectStorage (SQLite) with these key prefixes:
|
|
16
|
+
* - `fsx:file:/path` - File content (string)
|
|
17
|
+
* - `fsx:meta:/path` - File metadata (FileMetadata JSON)
|
|
18
|
+
* - `fsx:dir:/path` - Directory marker (boolean)
|
|
19
|
+
*
|
|
20
|
+
* @module lib/mixins/fs
|
|
21
|
+
*/
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// STORAGE KEY CONSTANTS
|
|
24
|
+
// ============================================================================
|
|
25
|
+
/**
|
|
26
|
+
* Storage key prefix for file content.
|
|
27
|
+
* Format: `fsx:file:/path/to/file` -> string content
|
|
28
|
+
*/
|
|
29
|
+
const FS_STORAGE_PREFIX_FILE = 'fsx:file:';
|
|
30
|
+
/**
|
|
31
|
+
* Storage key prefix for file metadata.
|
|
32
|
+
* Format: `fsx:meta:/path/to/file` -> FileMetadata JSON
|
|
33
|
+
*/
|
|
34
|
+
const FS_STORAGE_PREFIX_META = 'fsx:meta:';
|
|
35
|
+
/**
|
|
36
|
+
* Storage key prefix for directory markers.
|
|
37
|
+
* Format: `fsx:dir:/path/to/dir` -> true
|
|
38
|
+
*/
|
|
39
|
+
const FS_STORAGE_PREFIX_DIR = 'fsx:dir:';
|
|
40
|
+
/**
|
|
41
|
+
* Filesystem error with Node.js-compatible error codes.
|
|
42
|
+
*
|
|
43
|
+
* Provides a familiar error interface for developers used to Node.js fs errors.
|
|
44
|
+
* The `code` property can be used for programmatic error handling.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* try {
|
|
49
|
+
* await $.fs.read('/missing.txt')
|
|
50
|
+
* } catch (error) {
|
|
51
|
+
* if (error instanceof FsError && error.code === 'ENOENT') {
|
|
52
|
+
* console.log('File not found:', error.path)
|
|
53
|
+
* }
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export class FsError extends Error {
|
|
58
|
+
/** POSIX error code (e.g., 'ENOENT', 'EEXIST') */
|
|
59
|
+
code;
|
|
60
|
+
/** The filesystem path that caused the error */
|
|
61
|
+
path;
|
|
62
|
+
/** The system call that failed (e.g., 'read', 'write', 'stat') */
|
|
63
|
+
syscall;
|
|
64
|
+
constructor(code, path, syscall) {
|
|
65
|
+
const message = `${code}: ${FsError.getErrorMessage(code)}: ${path}`;
|
|
66
|
+
super(message);
|
|
67
|
+
this.name = 'FsError';
|
|
68
|
+
this.code = code;
|
|
69
|
+
this.path = path;
|
|
70
|
+
this.syscall = syscall;
|
|
71
|
+
// Maintain proper prototype chain
|
|
72
|
+
Object.setPrototypeOf(this, FsError.prototype);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get human-readable error message for error code.
|
|
76
|
+
*/
|
|
77
|
+
static getErrorMessage(code) {
|
|
78
|
+
switch (code) {
|
|
79
|
+
case 'ENOENT': return 'no such file or directory';
|
|
80
|
+
case 'EEXIST': return 'file already exists';
|
|
81
|
+
case 'EISDIR': return 'illegal operation on a directory';
|
|
82
|
+
case 'ENOTDIR': return 'not a directory';
|
|
83
|
+
case 'ENOTEMPTY': return 'directory not empty';
|
|
84
|
+
case 'EACCES': return 'permission denied';
|
|
85
|
+
case 'EINVAL': return 'invalid argument';
|
|
86
|
+
case 'ENOSPC': return 'no space left on device';
|
|
87
|
+
default: return 'unknown error';
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// ============================================================================
|
|
92
|
+
// FSMODULE CLASS
|
|
93
|
+
// ============================================================================
|
|
94
|
+
/**
|
|
95
|
+
* FsModule wraps fsx's FSx class to implement the FsCapability interface.
|
|
96
|
+
*
|
|
97
|
+
* Provides:
|
|
98
|
+
* - Lazy initialization (FSx is only created on first operation)
|
|
99
|
+
* - Support for FileSystemDO stub or direct R2 binding
|
|
100
|
+
* - Consistent FsCapability interface for dotdo workflows
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* // With FSx instance
|
|
105
|
+
* const fsModule = new FsModule({ fsx: new FSx(binding) })
|
|
106
|
+
*
|
|
107
|
+
* // With DurableObjectStub
|
|
108
|
+
* const fsModule = new FsModule({ stub: env.FSX.get(id) })
|
|
109
|
+
*
|
|
110
|
+
* // With namespace (creates stub on demand)
|
|
111
|
+
* const fsModule = new FsModule({ namespace: env.FSX })
|
|
112
|
+
*
|
|
113
|
+
* // With lazy factory
|
|
114
|
+
* const fsModule = new FsModule({
|
|
115
|
+
* factory: () => new FSx(binding)
|
|
116
|
+
* })
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export class FsModule {
|
|
120
|
+
_fsx = null;
|
|
121
|
+
_options;
|
|
122
|
+
constructor(options) {
|
|
123
|
+
this._options = options;
|
|
124
|
+
// If FSx instance is provided directly, use it immediately
|
|
125
|
+
if (options.fsx) {
|
|
126
|
+
this._fsx = options.fsx;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Get the FSx instance, creating it lazily if needed
|
|
131
|
+
*/
|
|
132
|
+
get fsx() {
|
|
133
|
+
if (!this._fsx) {
|
|
134
|
+
if (this._options.factory) {
|
|
135
|
+
this._fsx = this._options.factory();
|
|
136
|
+
}
|
|
137
|
+
else if (this._options.stub) {
|
|
138
|
+
// Create FSx from stub - this would normally use the FSx constructor
|
|
139
|
+
// For now, create a stub-based adapter
|
|
140
|
+
this._fsx = this.createStubAdapter(this._options.stub);
|
|
141
|
+
}
|
|
142
|
+
else if (this._options.namespace) {
|
|
143
|
+
// Get stub from namespace and create adapter
|
|
144
|
+
const id = this._options.namespace.idFromName('global');
|
|
145
|
+
const stub = this._options.namespace.get(id);
|
|
146
|
+
this._fsx = this.createStubAdapter(stub);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
throw new Error('FsModule: No FSx instance, stub, namespace, or factory provided');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return this._fsx;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Create an FSx-like adapter from a DurableObjectStub
|
|
156
|
+
* This makes RPC calls to the FileSystemDO
|
|
157
|
+
*/
|
|
158
|
+
createStubAdapter(stub) {
|
|
159
|
+
const request = async (method, params = {}) => {
|
|
160
|
+
const response = await stub.fetch('http://fsx.do/rpc', {
|
|
161
|
+
method: 'POST',
|
|
162
|
+
headers: { 'Content-Type': 'application/json' },
|
|
163
|
+
body: JSON.stringify({ method, params }),
|
|
164
|
+
});
|
|
165
|
+
if (!response.ok) {
|
|
166
|
+
const error = await response.json().catch(() => ({ code: 'UNKNOWN', message: response.statusText }));
|
|
167
|
+
throw new Error(error.message || 'Unknown error');
|
|
168
|
+
}
|
|
169
|
+
return response.json();
|
|
170
|
+
};
|
|
171
|
+
return {
|
|
172
|
+
async readFile(path, encoding) {
|
|
173
|
+
const result = await request('readFile', { path, encoding });
|
|
174
|
+
return result.data;
|
|
175
|
+
},
|
|
176
|
+
async writeFile(path, data, options) {
|
|
177
|
+
const encodedData = typeof data === 'string' ? data : btoa(String.fromCharCode(...data));
|
|
178
|
+
const encoding = typeof data === 'string' ? 'utf-8' : 'base64';
|
|
179
|
+
await request('writeFile', { path, data: encodedData, encoding, ...options });
|
|
180
|
+
},
|
|
181
|
+
async exists(path) {
|
|
182
|
+
try {
|
|
183
|
+
await request('access', { path });
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
async unlink(path) {
|
|
191
|
+
await request('unlink', { path });
|
|
192
|
+
},
|
|
193
|
+
async readdir(path, options) {
|
|
194
|
+
return request('readdir', { path, ...options });
|
|
195
|
+
},
|
|
196
|
+
async mkdir(path, options) {
|
|
197
|
+
await request('mkdir', { path, ...options });
|
|
198
|
+
},
|
|
199
|
+
async rmdir(path, options) {
|
|
200
|
+
await request('rmdir', { path, ...options });
|
|
201
|
+
},
|
|
202
|
+
async rm(path, options) {
|
|
203
|
+
await request('rm', { path, ...options });
|
|
204
|
+
},
|
|
205
|
+
async stat(path) {
|
|
206
|
+
const stats = await request('stat', { path });
|
|
207
|
+
return {
|
|
208
|
+
...stats,
|
|
209
|
+
mtime: new Date(stats.mtime),
|
|
210
|
+
ctime: new Date(stats.ctime),
|
|
211
|
+
birthtime: new Date(stats.birthtime),
|
|
212
|
+
isFile: () => true, // Would need mode parsing
|
|
213
|
+
isDirectory: () => false,
|
|
214
|
+
};
|
|
215
|
+
},
|
|
216
|
+
async copyFile(src, dest, flags) {
|
|
217
|
+
await request('copyFile', { src, dest, flags });
|
|
218
|
+
},
|
|
219
|
+
async rename(oldPath, newPath) {
|
|
220
|
+
await request('rename', { oldPath, newPath });
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
// ========================================================================
|
|
225
|
+
// FsCapability Implementation
|
|
226
|
+
// ========================================================================
|
|
227
|
+
async read(path, options) {
|
|
228
|
+
const result = await this.fsx.readFile(path, options?.encoding);
|
|
229
|
+
if (typeof result === 'string') {
|
|
230
|
+
return result;
|
|
231
|
+
}
|
|
232
|
+
// Convert Uint8Array to string
|
|
233
|
+
return new TextDecoder().decode(result);
|
|
234
|
+
}
|
|
235
|
+
async write(path, content, options) {
|
|
236
|
+
await this.fsx.writeFile(path, content);
|
|
237
|
+
}
|
|
238
|
+
async exists(path) {
|
|
239
|
+
return this.fsx.exists(path);
|
|
240
|
+
}
|
|
241
|
+
async delete(path) {
|
|
242
|
+
await this.fsx.unlink(path);
|
|
243
|
+
}
|
|
244
|
+
async list(path, options) {
|
|
245
|
+
const entries = await this.fsx.readdir(path, { withFileTypes: true });
|
|
246
|
+
// Handle both string[] and Dirent[] responses
|
|
247
|
+
const fsEntries = [];
|
|
248
|
+
for (const entry of entries) {
|
|
249
|
+
if (typeof entry === 'string') {
|
|
250
|
+
// If we got string names, we need to stat each to determine if it's a directory
|
|
251
|
+
const fullPath = path === '/' ? `/${entry}` : `${path}/${entry}`;
|
|
252
|
+
try {
|
|
253
|
+
const stat = await this.fsx.stat(fullPath);
|
|
254
|
+
fsEntries.push({
|
|
255
|
+
name: entry,
|
|
256
|
+
isDirectory: stat.isDirectory(),
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
catch {
|
|
260
|
+
// If stat fails, assume it's a file
|
|
261
|
+
fsEntries.push({
|
|
262
|
+
name: entry,
|
|
263
|
+
isDirectory: false,
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
// Dirent-like object
|
|
269
|
+
fsEntries.push({
|
|
270
|
+
name: entry.name,
|
|
271
|
+
isDirectory: entry.isDirectory(),
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// Apply filter if provided
|
|
276
|
+
if (options?.filter) {
|
|
277
|
+
return fsEntries.filter(options.filter);
|
|
278
|
+
}
|
|
279
|
+
return fsEntries;
|
|
280
|
+
}
|
|
281
|
+
async mkdir(path, options) {
|
|
282
|
+
await this.fsx.mkdir(path, { recursive: options?.recursive });
|
|
283
|
+
}
|
|
284
|
+
async stat(path) {
|
|
285
|
+
const stats = await this.fsx.stat(path);
|
|
286
|
+
return {
|
|
287
|
+
size: stats.size,
|
|
288
|
+
isFile: stats.isFile(),
|
|
289
|
+
isDirectory: stats.isDirectory(),
|
|
290
|
+
createdAt: stats.birthtime,
|
|
291
|
+
modifiedAt: stats.mtime,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
async copy(src, dest) {
|
|
295
|
+
await this.fsx.copyFile(src, dest);
|
|
296
|
+
}
|
|
297
|
+
async move(src, dest) {
|
|
298
|
+
await this.fsx.rename(src, dest);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// ============================================================================
|
|
302
|
+
// PATH UTILITIES
|
|
303
|
+
// ============================================================================
|
|
304
|
+
/**
|
|
305
|
+
* Normalize a filesystem path to ensure consistent key format.
|
|
306
|
+
*
|
|
307
|
+
* - Ensures path starts with `/`
|
|
308
|
+
* - Removes trailing slash (except for root `/`)
|
|
309
|
+
* - Collapses multiple consecutive slashes into single slash
|
|
310
|
+
*
|
|
311
|
+
* @param path - The path to normalize
|
|
312
|
+
* @returns Normalized path string
|
|
313
|
+
*
|
|
314
|
+
* @example
|
|
315
|
+
* ```typescript
|
|
316
|
+
* normalizePath('foo/bar') // '/foo/bar'
|
|
317
|
+
* normalizePath('/foo/bar/') // '/foo/bar'
|
|
318
|
+
* normalizePath('/') // '/'
|
|
319
|
+
* normalizePath('//foo//bar') // '/foo/bar'
|
|
320
|
+
* ```
|
|
321
|
+
*/
|
|
322
|
+
function normalizePath(path) {
|
|
323
|
+
// Ensure path starts with /
|
|
324
|
+
if (!path.startsWith('/')) {
|
|
325
|
+
path = '/' + path;
|
|
326
|
+
}
|
|
327
|
+
// Collapse multiple consecutive slashes into single slash
|
|
328
|
+
path = path.replace(/\/+/g, '/');
|
|
329
|
+
// Remove trailing slash except for root
|
|
330
|
+
if (path !== '/' && path.endsWith('/')) {
|
|
331
|
+
path = path.slice(0, -1);
|
|
332
|
+
}
|
|
333
|
+
return path;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Get the parent directory path from a file path.
|
|
337
|
+
*
|
|
338
|
+
* @param path - The file or directory path
|
|
339
|
+
* @returns Parent directory path (always at least '/')
|
|
340
|
+
*
|
|
341
|
+
* @example
|
|
342
|
+
* ```typescript
|
|
343
|
+
* getParentDir('/foo/bar/file.txt') // '/foo/bar'
|
|
344
|
+
* getParentDir('/foo') // '/'
|
|
345
|
+
* getParentDir('/') // '/'
|
|
346
|
+
* ```
|
|
347
|
+
*/
|
|
348
|
+
function getParentDir(path) {
|
|
349
|
+
const normalized = normalizePath(path);
|
|
350
|
+
const lastSlash = normalized.lastIndexOf('/');
|
|
351
|
+
if (lastSlash <= 0)
|
|
352
|
+
return '/';
|
|
353
|
+
return normalized.slice(0, lastSlash);
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Get the basename (file or directory name) from a path.
|
|
357
|
+
*
|
|
358
|
+
* @param path - The file or directory path
|
|
359
|
+
* @returns The last segment of the path
|
|
360
|
+
*
|
|
361
|
+
* @example
|
|
362
|
+
* ```typescript
|
|
363
|
+
* getBasename('/foo/bar/file.txt') // 'file.txt'
|
|
364
|
+
* getBasename('/foo/bar') // 'bar'
|
|
365
|
+
* getBasename('/') // ''
|
|
366
|
+
* ```
|
|
367
|
+
*/
|
|
368
|
+
function getBasename(path) {
|
|
369
|
+
const normalized = normalizePath(path);
|
|
370
|
+
const lastSlash = normalized.lastIndexOf('/');
|
|
371
|
+
return normalized.slice(lastSlash + 1);
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Creates an FsCapability instance backed by DurableObjectStorage (SQLite).
|
|
375
|
+
*
|
|
376
|
+
* This is the core filesystem implementation used by the withFs mixin.
|
|
377
|
+
* All operations are transactional via the underlying SQLite storage.
|
|
378
|
+
*
|
|
379
|
+
* Storage layout (uses constants defined at module top):
|
|
380
|
+
* - `fsx:file:/path` - File content (string)
|
|
381
|
+
* - `fsx:meta:/path` - FileMetadata JSON (size, timestamps, type)
|
|
382
|
+
* - `fsx:dir:/path` - Directory marker (boolean true)
|
|
383
|
+
*
|
|
384
|
+
* @param storage - DurableObjectStorage instance from the DO state
|
|
385
|
+
* @returns FsCapability implementation
|
|
386
|
+
*
|
|
387
|
+
* @internal
|
|
388
|
+
*/
|
|
389
|
+
function createFsCapability(storage) {
|
|
390
|
+
return {
|
|
391
|
+
async read(path, options) {
|
|
392
|
+
const normalizedPath = normalizePath(path);
|
|
393
|
+
const content = await storage.get(FS_STORAGE_PREFIX_FILE + normalizedPath);
|
|
394
|
+
if (content === undefined) {
|
|
395
|
+
throw new FsError('ENOENT', path, 'read');
|
|
396
|
+
}
|
|
397
|
+
return content;
|
|
398
|
+
},
|
|
399
|
+
async write(path, content, options) {
|
|
400
|
+
const normalizedPath = normalizePath(path);
|
|
401
|
+
const now = new Date().toISOString();
|
|
402
|
+
// Check if file already exists to preserve createdAt
|
|
403
|
+
const existingMeta = await storage.get(FS_STORAGE_PREFIX_META + normalizedPath);
|
|
404
|
+
const metadata = {
|
|
405
|
+
size: content.length,
|
|
406
|
+
isDirectory: false,
|
|
407
|
+
createdAt: existingMeta?.createdAt ?? now,
|
|
408
|
+
modifiedAt: now,
|
|
409
|
+
};
|
|
410
|
+
// Write file content and metadata atomically
|
|
411
|
+
await storage.put(FS_STORAGE_PREFIX_FILE + normalizedPath, content);
|
|
412
|
+
await storage.put(FS_STORAGE_PREFIX_META + normalizedPath, metadata);
|
|
413
|
+
},
|
|
414
|
+
async exists(path) {
|
|
415
|
+
const normalizedPath = normalizePath(path);
|
|
416
|
+
// Check for file
|
|
417
|
+
const fileContent = await storage.get(FS_STORAGE_PREFIX_FILE + normalizedPath);
|
|
418
|
+
if (fileContent !== undefined)
|
|
419
|
+
return true;
|
|
420
|
+
// Check for directory marker
|
|
421
|
+
const dirMarker = await storage.get(FS_STORAGE_PREFIX_DIR + normalizedPath);
|
|
422
|
+
if (dirMarker !== undefined)
|
|
423
|
+
return true;
|
|
424
|
+
return false;
|
|
425
|
+
},
|
|
426
|
+
async delete(path) {
|
|
427
|
+
const normalizedPath = normalizePath(path);
|
|
428
|
+
// Delete file content, metadata, and directory marker
|
|
429
|
+
await storage.delete(FS_STORAGE_PREFIX_FILE + normalizedPath);
|
|
430
|
+
await storage.delete(FS_STORAGE_PREFIX_META + normalizedPath);
|
|
431
|
+
await storage.delete(FS_STORAGE_PREFIX_DIR + normalizedPath);
|
|
432
|
+
},
|
|
433
|
+
async list(path, options) {
|
|
434
|
+
const normalizedPath = normalizePath(path);
|
|
435
|
+
const prefix = normalizedPath === '/' ? '/' : normalizedPath + '/';
|
|
436
|
+
const entries = [];
|
|
437
|
+
const seen = new Set();
|
|
438
|
+
// List all file keys
|
|
439
|
+
const fileKeys = await storage.list({ prefix: FS_STORAGE_PREFIX_FILE + prefix });
|
|
440
|
+
for (const [key] of fileKeys) {
|
|
441
|
+
// Extract the path after the prefix
|
|
442
|
+
const fullPath = key.slice(FS_STORAGE_PREFIX_FILE.length);
|
|
443
|
+
const relativePath = fullPath.slice(prefix.length);
|
|
444
|
+
// Get the first segment (immediate child)
|
|
445
|
+
const firstSlash = relativePath.indexOf('/');
|
|
446
|
+
const name = firstSlash === -1 ? relativePath : relativePath.slice(0, firstSlash);
|
|
447
|
+
if (name && !seen.has(name)) {
|
|
448
|
+
seen.add(name);
|
|
449
|
+
// If there's a slash, it's a directory containing this file
|
|
450
|
+
const isDirectory = firstSlash !== -1;
|
|
451
|
+
entries.push({ name, isDirectory });
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
// List all directory markers
|
|
455
|
+
const dirKeys = await storage.list({ prefix: FS_STORAGE_PREFIX_DIR + prefix });
|
|
456
|
+
for (const [key] of dirKeys) {
|
|
457
|
+
const fullPath = key.slice(FS_STORAGE_PREFIX_DIR.length);
|
|
458
|
+
const relativePath = fullPath.slice(prefix.length);
|
|
459
|
+
// Get the first segment
|
|
460
|
+
const firstSlash = relativePath.indexOf('/');
|
|
461
|
+
const name = firstSlash === -1 ? relativePath : relativePath.slice(0, firstSlash);
|
|
462
|
+
if (name && !seen.has(name)) {
|
|
463
|
+
seen.add(name);
|
|
464
|
+
entries.push({ name, isDirectory: true });
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
// Apply filter if provided
|
|
468
|
+
if (options?.filter) {
|
|
469
|
+
return entries.filter(options.filter);
|
|
470
|
+
}
|
|
471
|
+
return entries;
|
|
472
|
+
},
|
|
473
|
+
async mkdir(path, options) {
|
|
474
|
+
const normalizedPath = normalizePath(path);
|
|
475
|
+
if (options?.recursive) {
|
|
476
|
+
// Create all parent directories
|
|
477
|
+
const parts = normalizedPath.split('/').filter(Boolean);
|
|
478
|
+
let current = '';
|
|
479
|
+
for (const part of parts) {
|
|
480
|
+
current += '/' + part;
|
|
481
|
+
await storage.put(FS_STORAGE_PREFIX_DIR + current, true);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
await storage.put(FS_STORAGE_PREFIX_DIR + normalizedPath, true);
|
|
486
|
+
}
|
|
487
|
+
},
|
|
488
|
+
async stat(path) {
|
|
489
|
+
const normalizedPath = normalizePath(path);
|
|
490
|
+
// Check for file metadata
|
|
491
|
+
const meta = await storage.get(FS_STORAGE_PREFIX_META + normalizedPath);
|
|
492
|
+
if (meta) {
|
|
493
|
+
return {
|
|
494
|
+
size: meta.size,
|
|
495
|
+
isFile: !meta.isDirectory,
|
|
496
|
+
isDirectory: meta.isDirectory,
|
|
497
|
+
createdAt: new Date(meta.createdAt),
|
|
498
|
+
modifiedAt: new Date(meta.modifiedAt),
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
// Check for directory marker
|
|
502
|
+
const isDir = await storage.get(FS_STORAGE_PREFIX_DIR + normalizedPath);
|
|
503
|
+
if (isDir !== undefined) {
|
|
504
|
+
const now = new Date();
|
|
505
|
+
return {
|
|
506
|
+
size: 0,
|
|
507
|
+
isFile: false,
|
|
508
|
+
isDirectory: true,
|
|
509
|
+
createdAt: now,
|
|
510
|
+
modifiedAt: now,
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
throw new FsError('ENOENT', path, 'stat');
|
|
514
|
+
},
|
|
515
|
+
async copy(src, dest) {
|
|
516
|
+
const normalizedSrc = normalizePath(src);
|
|
517
|
+
const normalizedDest = normalizePath(dest);
|
|
518
|
+
const content = await storage.get(FS_STORAGE_PREFIX_FILE + normalizedSrc);
|
|
519
|
+
if (content === undefined) {
|
|
520
|
+
throw new FsError('ENOENT', src, 'copy');
|
|
521
|
+
}
|
|
522
|
+
const srcMeta = await storage.get(FS_STORAGE_PREFIX_META + normalizedSrc);
|
|
523
|
+
const now = new Date().toISOString();
|
|
524
|
+
// Write to destination with new timestamps
|
|
525
|
+
await storage.put(FS_STORAGE_PREFIX_FILE + normalizedDest, content);
|
|
526
|
+
await storage.put(FS_STORAGE_PREFIX_META + normalizedDest, {
|
|
527
|
+
size: content.length,
|
|
528
|
+
isDirectory: false,
|
|
529
|
+
createdAt: now,
|
|
530
|
+
modifiedAt: now,
|
|
531
|
+
});
|
|
532
|
+
},
|
|
533
|
+
async move(src, dest) {
|
|
534
|
+
const normalizedSrc = normalizePath(src);
|
|
535
|
+
const normalizedDest = normalizePath(dest);
|
|
536
|
+
const content = await storage.get(FS_STORAGE_PREFIX_FILE + normalizedSrc);
|
|
537
|
+
if (content === undefined) {
|
|
538
|
+
throw new FsError('ENOENT', src, 'move');
|
|
539
|
+
}
|
|
540
|
+
const srcMeta = await storage.get(FS_STORAGE_PREFIX_META + normalizedSrc);
|
|
541
|
+
const now = new Date().toISOString();
|
|
542
|
+
// Write to destination preserving original createdAt
|
|
543
|
+
await storage.put(FS_STORAGE_PREFIX_FILE + normalizedDest, content);
|
|
544
|
+
await storage.put(FS_STORAGE_PREFIX_META + normalizedDest, {
|
|
545
|
+
size: content.length,
|
|
546
|
+
isDirectory: false,
|
|
547
|
+
createdAt: srcMeta?.createdAt ?? now,
|
|
548
|
+
modifiedAt: now,
|
|
549
|
+
});
|
|
550
|
+
// Delete source
|
|
551
|
+
await storage.delete(FS_STORAGE_PREFIX_FILE + normalizedSrc);
|
|
552
|
+
await storage.delete(FS_STORAGE_PREFIX_META + normalizedSrc);
|
|
553
|
+
},
|
|
554
|
+
};
|
|
555
|
+
}
|
|
556
|
+
// ============================================================================
|
|
557
|
+
// MIXIN IMPLEMENTATION
|
|
558
|
+
// ============================================================================
|
|
559
|
+
// Symbol for caching the fs capability instance
|
|
560
|
+
const FS_CAPABILITY_CACHE = Symbol('fsCapabilityCache');
|
|
561
|
+
// Symbol for storing the storage reference
|
|
562
|
+
const FS_STORAGE_REF = Symbol('fsStorageRef');
|
|
563
|
+
/**
|
|
564
|
+
* Adds filesystem capability to a DO class
|
|
565
|
+
*
|
|
566
|
+
* @example
|
|
567
|
+
* ```typescript
|
|
568
|
+
* class MyDO extends withFs(DO) {
|
|
569
|
+
* async readConfig() {
|
|
570
|
+
* return this.$.fs.read('/config.json')
|
|
571
|
+
* }
|
|
572
|
+
* }
|
|
573
|
+
* ```
|
|
574
|
+
*/
|
|
575
|
+
export function withFs(Base) {
|
|
576
|
+
// @ts-expect-error - Mixin class augments $ type which TypeScript can't verify statically
|
|
577
|
+
return class WithFs extends Base {
|
|
578
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
579
|
+
static capabilities = [...(Base.capabilities || []), 'fs'];
|
|
580
|
+
/**
|
|
581
|
+
* Check if this DO class has a specific capability
|
|
582
|
+
*/
|
|
583
|
+
hasCapability(name) {
|
|
584
|
+
if (name === 'fs')
|
|
585
|
+
return true;
|
|
586
|
+
// Check if parent class has the hasCapability method (base DO class)
|
|
587
|
+
const baseProto = Base.prototype;
|
|
588
|
+
if (baseProto && typeof baseProto.hasCapability === 'function') {
|
|
589
|
+
return baseProto.hasCapability.call(this, name);
|
|
590
|
+
}
|
|
591
|
+
return false;
|
|
592
|
+
}
|
|
593
|
+
// Cache for the fs capability instance
|
|
594
|
+
[FS_CAPABILITY_CACHE];
|
|
595
|
+
// Storage reference from constructor
|
|
596
|
+
[FS_STORAGE_REF];
|
|
597
|
+
/**
|
|
598
|
+
* Lazy-loaded filesystem capability
|
|
599
|
+
*/
|
|
600
|
+
get fsCapability() {
|
|
601
|
+
if (!this[FS_CAPABILITY_CACHE]) {
|
|
602
|
+
const storage = this[FS_STORAGE_REF];
|
|
603
|
+
if (!storage) {
|
|
604
|
+
throw new Error('fsx: DurableObjectStorage not available - fs operations require DO storage');
|
|
605
|
+
}
|
|
606
|
+
this[FS_CAPABILITY_CACHE] = createFsCapability(storage);
|
|
607
|
+
}
|
|
608
|
+
return this[FS_CAPABILITY_CACHE];
|
|
609
|
+
}
|
|
610
|
+
// TypeScript requires any[] for mixin constructors (TS2545)
|
|
611
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
612
|
+
constructor(...args) {
|
|
613
|
+
super(...args);
|
|
614
|
+
// Extract storage from the DurableObjectState (first constructor arg)
|
|
615
|
+
// DO constructor signature: (state: DurableObjectState, env: Env)
|
|
616
|
+
const state = args[0];
|
|
617
|
+
if (state?.storage) {
|
|
618
|
+
this[FS_STORAGE_REF] = state.storage;
|
|
619
|
+
}
|
|
620
|
+
// Extend $ to include fs capability
|
|
621
|
+
const originalContext = this.$;
|
|
622
|
+
const self = this;
|
|
623
|
+
// Create a new proxy that extends the original $ with fs
|
|
624
|
+
this.$ = new Proxy(originalContext, {
|
|
625
|
+
get(target, prop) {
|
|
626
|
+
if (prop === 'fs') {
|
|
627
|
+
return self.fsCapability;
|
|
628
|
+
}
|
|
629
|
+
// Forward to original context
|
|
630
|
+
const value = target[prop];
|
|
631
|
+
if (typeof value === 'function') {
|
|
632
|
+
// Only bind if it has a bind method (not a Proxy or capability object)
|
|
633
|
+
if (typeof value.bind === 'function') {
|
|
634
|
+
// Don't bind capability functions that have custom properties
|
|
635
|
+
const customProps = Object.getOwnPropertyNames(value).filter((p) => p !== 'length' && p !== 'name' && p !== 'prototype');
|
|
636
|
+
if (customProps.length > 0) {
|
|
637
|
+
return value;
|
|
638
|
+
}
|
|
639
|
+
return value.bind(target);
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
return value;
|
|
643
|
+
},
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
};
|
|
647
|
+
}
|
|
648
|
+
//# sourceMappingURL=fs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../lib/mixins/fs.ts"],"names":[],"mappings":"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"}
|