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,364 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signals, Queries, and Updates Module
|
|
3
|
+
*
|
|
4
|
+
* Definitions and handlers for workflow communication primitives.
|
|
5
|
+
*/
|
|
6
|
+
import { getCurrentWorkflow, getCurrentPatchState, setCurrentPatchState, } from './context';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// SIGNAL, QUERY, UPDATE DEFINITIONS
|
|
9
|
+
// ============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Define a signal
|
|
12
|
+
*/
|
|
13
|
+
export function defineSignal(name) {
|
|
14
|
+
return { name, type: 'signal' };
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Define a query
|
|
18
|
+
*/
|
|
19
|
+
export function defineQuery(name) {
|
|
20
|
+
return { name, type: 'query' };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Define an update
|
|
24
|
+
*/
|
|
25
|
+
export function defineUpdate(name) {
|
|
26
|
+
return { name, type: 'update' };
|
|
27
|
+
}
|
|
28
|
+
export function setHandler(definition, handler) {
|
|
29
|
+
const workflow = getCurrentWorkflow();
|
|
30
|
+
if (!workflow) {
|
|
31
|
+
throw new Error('setHandler can only be called within a workflow');
|
|
32
|
+
}
|
|
33
|
+
if (definition.type === 'signal') {
|
|
34
|
+
workflow.signalHandlers.set(definition.name, handler);
|
|
35
|
+
}
|
|
36
|
+
else if (definition.type === 'query') {
|
|
37
|
+
workflow.queryHandlers.set(definition.name, handler);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
workflow.updateHandlers.set(definition.name, handler);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// WORKFLOW INFO
|
|
45
|
+
// ============================================================================
|
|
46
|
+
/**
|
|
47
|
+
* Get current workflow info
|
|
48
|
+
*/
|
|
49
|
+
export function workflowInfo() {
|
|
50
|
+
const workflow = getCurrentWorkflow();
|
|
51
|
+
if (!workflow) {
|
|
52
|
+
throw new Error('workflowInfo can only be called within a workflow');
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
workflowId: workflow.workflowId,
|
|
56
|
+
runId: workflow.runId,
|
|
57
|
+
workflowType: workflow.workflowType,
|
|
58
|
+
taskQueue: workflow.taskQueue,
|
|
59
|
+
namespace: workflow.namespace,
|
|
60
|
+
firstExecutionRunId: workflow.runId,
|
|
61
|
+
attempt: workflow.attempt,
|
|
62
|
+
historyLength: workflow.historyLength,
|
|
63
|
+
startTime: workflow.startTime,
|
|
64
|
+
runStartTime: workflow.runStartTime,
|
|
65
|
+
memo: workflow.memo,
|
|
66
|
+
searchAttributes: workflow.searchAttributes,
|
|
67
|
+
parent: workflow.parent,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
// ============================================================================
|
|
71
|
+
// SEARCH ATTRIBUTES
|
|
72
|
+
// ============================================================================
|
|
73
|
+
/**
|
|
74
|
+
* Set search attributes (replaces all)
|
|
75
|
+
*/
|
|
76
|
+
export function setSearchAttributes(attrs) {
|
|
77
|
+
const workflow = getCurrentWorkflow();
|
|
78
|
+
if (!workflow) {
|
|
79
|
+
throw new Error('setSearchAttributes can only be called within a workflow');
|
|
80
|
+
}
|
|
81
|
+
workflow.searchAttributes = { ...attrs };
|
|
82
|
+
workflow.historyLength++;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Upsert (merge) search attributes
|
|
86
|
+
*/
|
|
87
|
+
export function upsertSearchAttributes(attrs) {
|
|
88
|
+
const workflow = getCurrentWorkflow();
|
|
89
|
+
if (!workflow) {
|
|
90
|
+
throw new Error('upsertSearchAttributes can only be called within a workflow');
|
|
91
|
+
}
|
|
92
|
+
workflow.searchAttributes = {
|
|
93
|
+
...workflow.searchAttributes,
|
|
94
|
+
...attrs,
|
|
95
|
+
};
|
|
96
|
+
workflow.historyLength++;
|
|
97
|
+
}
|
|
98
|
+
// ============================================================================
|
|
99
|
+
// VERSIONING / PATCHING
|
|
100
|
+
// ============================================================================
|
|
101
|
+
/**
|
|
102
|
+
* Check if a patch should be applied
|
|
103
|
+
* For new executions, this always returns true (take the new path)
|
|
104
|
+
* For replays of old executions, this returns false to maintain compatibility
|
|
105
|
+
*/
|
|
106
|
+
export function patched(patchId) {
|
|
107
|
+
let patchState = getCurrentPatchState();
|
|
108
|
+
if (!patchState) {
|
|
109
|
+
patchState = {
|
|
110
|
+
appliedPatches: new Set(),
|
|
111
|
+
deprecatedPatches: new Set(),
|
|
112
|
+
};
|
|
113
|
+
setCurrentPatchState(patchState);
|
|
114
|
+
}
|
|
115
|
+
// For new executions, always apply patches
|
|
116
|
+
// In a full implementation, this would check workflow history
|
|
117
|
+
patchState.appliedPatches.add(patchId);
|
|
118
|
+
const workflow = getCurrentWorkflow();
|
|
119
|
+
if (workflow) {
|
|
120
|
+
workflow.historyLength++;
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Deprecate an old patch (removes it from consideration in new workflow code)
|
|
126
|
+
*/
|
|
127
|
+
export function deprecatePatch(patchId) {
|
|
128
|
+
let patchState = getCurrentPatchState();
|
|
129
|
+
if (!patchState) {
|
|
130
|
+
patchState = {
|
|
131
|
+
appliedPatches: new Set(),
|
|
132
|
+
deprecatedPatches: new Set(),
|
|
133
|
+
};
|
|
134
|
+
setCurrentPatchState(patchState);
|
|
135
|
+
}
|
|
136
|
+
patchState.deprecatedPatches.add(patchId);
|
|
137
|
+
}
|
|
138
|
+
const uuidCounters = new WeakMap();
|
|
139
|
+
const randomCounters = new WeakMap();
|
|
140
|
+
const nowCounters = new WeakMap();
|
|
141
|
+
/**
|
|
142
|
+
* Generate deterministic UUID (for replay)
|
|
143
|
+
*
|
|
144
|
+
* This function is deterministic within a workflow execution:
|
|
145
|
+
* - First execution: generates a new UUID and stores it
|
|
146
|
+
* - Replay: returns the same UUID that was generated before
|
|
147
|
+
*
|
|
148
|
+
* IMPORTANT: Must be called within a workflow context.
|
|
149
|
+
* The step ID is based on call order within the workflow, so
|
|
150
|
+
* uuid4() calls must happen in the same order on replay.
|
|
151
|
+
*
|
|
152
|
+
* @returns A UUID v4 string that is deterministic on replay
|
|
153
|
+
* @throws Error if called outside a workflow context
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```typescript
|
|
157
|
+
* import { uuid4 } from '@dotdo/temporal'
|
|
158
|
+
*
|
|
159
|
+
* export async function orderWorkflow() {
|
|
160
|
+
* // These IDs will be the same on replay
|
|
161
|
+
* const orderId = uuid4()
|
|
162
|
+
* const transactionId = uuid4()
|
|
163
|
+
* return { orderId, transactionId }
|
|
164
|
+
* }
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
export function uuid4() {
|
|
168
|
+
const workflow = getCurrentWorkflow();
|
|
169
|
+
if (!workflow) {
|
|
170
|
+
// Outside workflow context - fall back to non-deterministic
|
|
171
|
+
// This allows usage in tests or non-workflow code
|
|
172
|
+
return crypto.randomUUID();
|
|
173
|
+
}
|
|
174
|
+
// Get and increment the counter for this workflow
|
|
175
|
+
const counter = uuidCounters.get(workflow) ?? 0;
|
|
176
|
+
uuidCounters.set(workflow, counter + 1);
|
|
177
|
+
// Create deterministic step ID based on call order
|
|
178
|
+
const stepId = `uuid4:${counter}`;
|
|
179
|
+
// Check for existing result (replay case)
|
|
180
|
+
if (workflow.stepResults.has(stepId)) {
|
|
181
|
+
return workflow.stepResults.get(stepId);
|
|
182
|
+
}
|
|
183
|
+
// Generate new UUID and store for replay
|
|
184
|
+
const id = crypto.randomUUID();
|
|
185
|
+
workflow.stepResults.set(stepId, id);
|
|
186
|
+
workflow.historyLength++;
|
|
187
|
+
return id;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get deterministic random number (for replay)
|
|
191
|
+
*
|
|
192
|
+
* This function is deterministic within a workflow execution:
|
|
193
|
+
* - First execution: generates a new random number and stores it
|
|
194
|
+
* - Replay: returns the same random number that was generated before
|
|
195
|
+
*
|
|
196
|
+
* IMPORTANT: Must be called within a workflow context.
|
|
197
|
+
* The step ID is based on call order within the workflow, so
|
|
198
|
+
* random() calls must happen in the same order on replay.
|
|
199
|
+
*
|
|
200
|
+
* @returns A number between 0 (inclusive) and 1 (exclusive)
|
|
201
|
+
* @throws Error if called outside a workflow context
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```typescript
|
|
205
|
+
* import { random } from '@dotdo/temporal'
|
|
206
|
+
*
|
|
207
|
+
* export async function retryWorkflow() {
|
|
208
|
+
* // This decision will be the same on replay
|
|
209
|
+
* const shouldRetry = random() < 0.5
|
|
210
|
+
* return { shouldRetry }
|
|
211
|
+
* }
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
214
|
+
export function random() {
|
|
215
|
+
const workflow = getCurrentWorkflow();
|
|
216
|
+
if (!workflow) {
|
|
217
|
+
// Outside workflow context - fall back to non-deterministic
|
|
218
|
+
// This allows usage in tests or non-workflow code
|
|
219
|
+
return Math.random();
|
|
220
|
+
}
|
|
221
|
+
// Get and increment the counter for this workflow
|
|
222
|
+
const counter = randomCounters.get(workflow) ?? 0;
|
|
223
|
+
randomCounters.set(workflow, counter + 1);
|
|
224
|
+
// Create deterministic step ID based on call order
|
|
225
|
+
const stepId = `random:${counter}`;
|
|
226
|
+
// Check for existing result (replay case)
|
|
227
|
+
if (workflow.stepResults.has(stepId)) {
|
|
228
|
+
return workflow.stepResults.get(stepId);
|
|
229
|
+
}
|
|
230
|
+
// Generate new random number and store for replay
|
|
231
|
+
const num = Math.random();
|
|
232
|
+
workflow.stepResults.set(stepId, num);
|
|
233
|
+
workflow.historyLength++;
|
|
234
|
+
return num;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Get deterministic current time (for replay).
|
|
238
|
+
*
|
|
239
|
+
* This function returns a deterministic timestamp based on workflow start time
|
|
240
|
+
* plus an offset derived from the step count. On replay, it returns the same
|
|
241
|
+
* timestamp that was recorded during the original execution.
|
|
242
|
+
*
|
|
243
|
+
* Use this instead of `Date.now()` or `new Date()` in workflow code.
|
|
244
|
+
*
|
|
245
|
+
* @returns A Date object representing the current workflow time
|
|
246
|
+
* @throws Error if called outside a workflow context
|
|
247
|
+
*
|
|
248
|
+
* @example
|
|
249
|
+
* ```typescript
|
|
250
|
+
* import { workflowNow } from '@dotdo/temporal'
|
|
251
|
+
*
|
|
252
|
+
* export async function orderWorkflow() {
|
|
253
|
+
* // Use workflowNow() instead of new Date() or Date.now()
|
|
254
|
+
* const orderTime = workflowNow()
|
|
255
|
+
* const expiresAt = new Date(workflowNow().getTime() + 24 * 60 * 60 * 1000)
|
|
256
|
+
*
|
|
257
|
+
* return { orderTime, expiresAt }
|
|
258
|
+
* }
|
|
259
|
+
* ```
|
|
260
|
+
*/
|
|
261
|
+
export function workflowNow() {
|
|
262
|
+
const workflow = getCurrentWorkflow();
|
|
263
|
+
if (!workflow) {
|
|
264
|
+
// Outside workflow context - fall back to real time
|
|
265
|
+
// This allows usage in tests or non-workflow code
|
|
266
|
+
return new Date();
|
|
267
|
+
}
|
|
268
|
+
// Get and increment the counter for this workflow
|
|
269
|
+
const counter = nowCounters.get(workflow) ?? 0;
|
|
270
|
+
nowCounters.set(workflow, counter + 1);
|
|
271
|
+
// Create deterministic step ID based on call order
|
|
272
|
+
const stepId = `workflowNow:${counter}`;
|
|
273
|
+
// Check for existing result (replay case)
|
|
274
|
+
if (workflow.stepResults.has(stepId)) {
|
|
275
|
+
return new Date(workflow.stepResults.get(stepId));
|
|
276
|
+
}
|
|
277
|
+
// Calculate deterministic time:
|
|
278
|
+
// Start time + (counter * small increment to show progression)
|
|
279
|
+
// This ensures time appears to progress while remaining deterministic
|
|
280
|
+
// NOTE: We use the workflowNow counter (not historyLength) because historyLength
|
|
281
|
+
// can vary between replays due to conditional paths or optimizations
|
|
282
|
+
const baseTime = workflow.startTime.getTime();
|
|
283
|
+
const stepIncrement = counter + 1; // 1ms per call for minimal progression (counter is 0-indexed)
|
|
284
|
+
const deterministicTime = baseTime + stepIncrement;
|
|
285
|
+
// Store for replay
|
|
286
|
+
workflow.stepResults.set(stepId, deterministicTime);
|
|
287
|
+
workflow.historyLength++;
|
|
288
|
+
return new Date(deterministicTime);
|
|
289
|
+
}
|
|
290
|
+
export class ContinueAsNew extends Error {
|
|
291
|
+
args;
|
|
292
|
+
options;
|
|
293
|
+
constructor(args, options = {}) {
|
|
294
|
+
super('ContinueAsNew');
|
|
295
|
+
this.name = 'ContinueAsNew';
|
|
296
|
+
this.args = args;
|
|
297
|
+
this.options = options;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Continue as new with fresh history
|
|
302
|
+
*/
|
|
303
|
+
export function continueAsNew(...args) {
|
|
304
|
+
throw new ContinueAsNew(args);
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Make continue-as-new function for a specific workflow
|
|
308
|
+
*/
|
|
309
|
+
export function makeContinueAsNewFunc(_workflowType, options) {
|
|
310
|
+
return (...args) => {
|
|
311
|
+
throw new ContinueAsNew(args, options);
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
// ============================================================================
|
|
315
|
+
// CANCELLATION
|
|
316
|
+
// ============================================================================
|
|
317
|
+
import { WaitCancelledError } from '../../WaitForEventManager';
|
|
318
|
+
export class CancellationScope {
|
|
319
|
+
children = [];
|
|
320
|
+
cleanupFns = [];
|
|
321
|
+
_isCancelled = false;
|
|
322
|
+
get isCancelled() {
|
|
323
|
+
return this._isCancelled;
|
|
324
|
+
}
|
|
325
|
+
cancel() {
|
|
326
|
+
this._isCancelled = true;
|
|
327
|
+
for (const child of this.children) {
|
|
328
|
+
child.cancel();
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Run a function in this cancellation scope
|
|
333
|
+
*/
|
|
334
|
+
static async run(fn) {
|
|
335
|
+
const scope = new CancellationScope();
|
|
336
|
+
try {
|
|
337
|
+
return await fn();
|
|
338
|
+
}
|
|
339
|
+
finally {
|
|
340
|
+
for (const cleanup of scope.cleanupFns) {
|
|
341
|
+
await cleanup();
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Create a non-cancellable scope
|
|
347
|
+
*/
|
|
348
|
+
static nonCancellable(fn) {
|
|
349
|
+
return fn();
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Create a cancellable scope with timeout
|
|
353
|
+
*/
|
|
354
|
+
static async cancellable(fn) {
|
|
355
|
+
return CancellationScope.run(fn);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Check if cancelled
|
|
360
|
+
*/
|
|
361
|
+
export function isCancellation(error) {
|
|
362
|
+
return error instanceof WaitCancelledError;
|
|
363
|
+
}
|
|
364
|
+
//# sourceMappingURL=signals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../../workflows/compat/temporal/signals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage Strategy Module
|
|
3
|
+
*
|
|
4
|
+
* Unified abstraction for step execution and durability.
|
|
5
|
+
* Allows the Temporal compat layer to use different backends:
|
|
6
|
+
* - CFWorkflowsStrategy: Uses native step.do() and step.sleep() when WorkflowStep is available
|
|
7
|
+
* - InMemoryStrategy: Uses in-memory Maps with setTimeout for testing/fallback
|
|
8
|
+
*/
|
|
9
|
+
import { InMemoryStepStorage } from '../../runtime';
|
|
10
|
+
import { ensureError } from '../utils';
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// CFWORKFLOWS STORAGE STRATEGY
|
|
13
|
+
// ============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* CFWorkflowsStorageStrategy uses Cloudflare Workflows native APIs for durable execution.
|
|
16
|
+
*
|
|
17
|
+
* Benefits:
|
|
18
|
+
* - sleep() is FREE - you don't pay for wall-clock time
|
|
19
|
+
* - step.do() is DURABLE - survives worker restarts, automatic retries
|
|
20
|
+
* - Replay is automatic - completed steps return cached results
|
|
21
|
+
*
|
|
22
|
+
* This strategy is automatically selected when a WorkflowStep is available
|
|
23
|
+
* in the current workflow context.
|
|
24
|
+
*/
|
|
25
|
+
export class CFWorkflowsStorageStrategy {
|
|
26
|
+
step;
|
|
27
|
+
stepResults = new Map();
|
|
28
|
+
constructor(step) {
|
|
29
|
+
this.step = step;
|
|
30
|
+
}
|
|
31
|
+
async executeStep(name, fn, options) {
|
|
32
|
+
// Check for cached result (replay)
|
|
33
|
+
const cached = this.stepResults.get(name);
|
|
34
|
+
if (cached) {
|
|
35
|
+
if (cached.status === 'error') {
|
|
36
|
+
throw cached.error;
|
|
37
|
+
}
|
|
38
|
+
return cached.value;
|
|
39
|
+
}
|
|
40
|
+
// Build step.do() options from execution options
|
|
41
|
+
const stepOptions = this.buildStepDoOptions(options);
|
|
42
|
+
try {
|
|
43
|
+
// Execute via step.do() for durability
|
|
44
|
+
const result = stepOptions
|
|
45
|
+
? await this.step.do(name, stepOptions, async () => fn())
|
|
46
|
+
: await this.step.do(name, async () => fn());
|
|
47
|
+
// Cache the result with discriminated union
|
|
48
|
+
this.stepResults.set(name, { status: 'success', value: result });
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
// Cache errors for deterministic replay
|
|
53
|
+
const err = ensureError(error);
|
|
54
|
+
this.stepResults.set(name, { status: 'error', error: err });
|
|
55
|
+
throw err;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async sleep(name, _durationMs, durationStr) {
|
|
59
|
+
// Check for cached completion (replay)
|
|
60
|
+
if (this.stepResults.has(name)) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// Use CF Workflows native step.sleep() - FREE, doesn't consume wall-clock time
|
|
64
|
+
await this.step.sleep(name, durationStr);
|
|
65
|
+
// Cache completion
|
|
66
|
+
this.stepResults.set(name, { status: 'success', value: true });
|
|
67
|
+
}
|
|
68
|
+
async isStepCompleted(name) {
|
|
69
|
+
return this.stepResults.has(name);
|
|
70
|
+
}
|
|
71
|
+
async getStepResult(name) {
|
|
72
|
+
const cached = this.stepResults.get(name);
|
|
73
|
+
if (!cached)
|
|
74
|
+
return undefined;
|
|
75
|
+
if (cached.status === 'error') {
|
|
76
|
+
throw cached.error;
|
|
77
|
+
}
|
|
78
|
+
return cached.value;
|
|
79
|
+
}
|
|
80
|
+
async setStepResult(name, result) {
|
|
81
|
+
if (result instanceof Error) {
|
|
82
|
+
this.stepResults.set(name, { status: 'error', error: result });
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.stepResults.set(name, { status: 'success', value: result });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
buildStepDoOptions(options) {
|
|
89
|
+
if (!options)
|
|
90
|
+
return undefined;
|
|
91
|
+
const stepOptions = {};
|
|
92
|
+
if (options.retries) {
|
|
93
|
+
stepOptions.retries = options.retries;
|
|
94
|
+
}
|
|
95
|
+
if (options.timeout) {
|
|
96
|
+
stepOptions.timeout = options.timeout;
|
|
97
|
+
}
|
|
98
|
+
// Only return if we have something to configure
|
|
99
|
+
if (stepOptions.retries || stepOptions.timeout) {
|
|
100
|
+
return stepOptions;
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// ============================================================================
|
|
106
|
+
// INMEMORY STORAGE STRATEGY
|
|
107
|
+
// ============================================================================
|
|
108
|
+
/**
|
|
109
|
+
* InMemoryStorageStrategy provides fallback behavior when no WorkflowStep is available.
|
|
110
|
+
*
|
|
111
|
+
* This is used in:
|
|
112
|
+
* - Testing environments
|
|
113
|
+
* - Development without CF Workflows runtime
|
|
114
|
+
* - Direct workflow execution outside of CF Workflows
|
|
115
|
+
*
|
|
116
|
+
* Cost: sleep() uses setTimeout which is BILLABLE (consumes DO wall-clock time)
|
|
117
|
+
*/
|
|
118
|
+
export class InMemoryStorageStrategy {
|
|
119
|
+
stepResults = new Map();
|
|
120
|
+
durableStorage;
|
|
121
|
+
constructor(storage) {
|
|
122
|
+
this.durableStorage = storage ?? new InMemoryStepStorage();
|
|
123
|
+
}
|
|
124
|
+
async executeStep(name, fn, _options) {
|
|
125
|
+
// Check in-memory cache first
|
|
126
|
+
const cached = this.stepResults.get(name);
|
|
127
|
+
if (cached) {
|
|
128
|
+
if (cached.status === 'error') {
|
|
129
|
+
throw cached.error;
|
|
130
|
+
}
|
|
131
|
+
return cached.value;
|
|
132
|
+
}
|
|
133
|
+
// Check durable storage for completed steps (survives worker restarts)
|
|
134
|
+
const durableResult = await this.durableStorage.get(name);
|
|
135
|
+
if (durableResult?.status === 'completed') {
|
|
136
|
+
this.stepResults.set(name, { status: 'success', value: durableResult.result });
|
|
137
|
+
return durableResult.result;
|
|
138
|
+
}
|
|
139
|
+
// Execute the function
|
|
140
|
+
try {
|
|
141
|
+
const result = await fn();
|
|
142
|
+
// Store in both in-memory and durable storage
|
|
143
|
+
this.stepResults.set(name, { status: 'success', value: result });
|
|
144
|
+
await this.durableStorage.set(name, {
|
|
145
|
+
stepId: name,
|
|
146
|
+
status: 'completed',
|
|
147
|
+
result,
|
|
148
|
+
attempts: 1,
|
|
149
|
+
createdAt: Date.now(),
|
|
150
|
+
completedAt: Date.now(),
|
|
151
|
+
});
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
const err = ensureError(error);
|
|
156
|
+
this.stepResults.set(name, { status: 'error', error: err });
|
|
157
|
+
await this.durableStorage.set(name, {
|
|
158
|
+
stepId: name,
|
|
159
|
+
status: 'failed',
|
|
160
|
+
error: err.message,
|
|
161
|
+
attempts: 1,
|
|
162
|
+
createdAt: Date.now(),
|
|
163
|
+
});
|
|
164
|
+
throw err;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
async sleep(name, durationMs, _durationStr) {
|
|
168
|
+
// Check for cached completion
|
|
169
|
+
if (this.stepResults.has(name)) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
// Check durable storage
|
|
173
|
+
const durableResult = await this.durableStorage.get(name);
|
|
174
|
+
if (durableResult?.status === 'completed') {
|
|
175
|
+
this.stepResults.set(name, { status: 'success', value: true });
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
// Persist pending state before sleeping
|
|
179
|
+
await this.durableStorage.set(name, {
|
|
180
|
+
stepId: name,
|
|
181
|
+
status: 'pending',
|
|
182
|
+
attempts: 1,
|
|
183
|
+
createdAt: Date.now(),
|
|
184
|
+
});
|
|
185
|
+
// Fallback to setTimeout - BILLABLE
|
|
186
|
+
await new Promise((resolve) => setTimeout(resolve, durationMs));
|
|
187
|
+
// Persist completed state
|
|
188
|
+
await this.durableStorage.set(name, {
|
|
189
|
+
stepId: name,
|
|
190
|
+
status: 'completed',
|
|
191
|
+
result: true,
|
|
192
|
+
attempts: 1,
|
|
193
|
+
createdAt: Date.now(),
|
|
194
|
+
completedAt: Date.now(),
|
|
195
|
+
});
|
|
196
|
+
this.stepResults.set(name, { status: 'success', value: true });
|
|
197
|
+
}
|
|
198
|
+
async isStepCompleted(name) {
|
|
199
|
+
if (this.stepResults.has(name)) {
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
const durableResult = await this.durableStorage.get(name);
|
|
203
|
+
return durableResult?.status === 'completed';
|
|
204
|
+
}
|
|
205
|
+
async getStepResult(name) {
|
|
206
|
+
// Check in-memory first
|
|
207
|
+
const cached = this.stepResults.get(name);
|
|
208
|
+
if (cached) {
|
|
209
|
+
if (cached.status === 'error') {
|
|
210
|
+
throw cached.error;
|
|
211
|
+
}
|
|
212
|
+
return cached.value;
|
|
213
|
+
}
|
|
214
|
+
// Check durable storage
|
|
215
|
+
const durableResult = await this.durableStorage.get(name);
|
|
216
|
+
if (durableResult?.status === 'completed') {
|
|
217
|
+
return durableResult.result;
|
|
218
|
+
}
|
|
219
|
+
return undefined;
|
|
220
|
+
}
|
|
221
|
+
async setStepResult(name, result) {
|
|
222
|
+
if (result instanceof Error) {
|
|
223
|
+
this.stepResults.set(name, { status: 'error', error: result });
|
|
224
|
+
await this.durableStorage.set(name, {
|
|
225
|
+
stepId: name,
|
|
226
|
+
status: 'failed',
|
|
227
|
+
error: result.message,
|
|
228
|
+
attempts: 1,
|
|
229
|
+
createdAt: Date.now(),
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
this.stepResults.set(name, { status: 'success', value: result });
|
|
234
|
+
await this.durableStorage.set(name, {
|
|
235
|
+
stepId: name,
|
|
236
|
+
status: 'completed',
|
|
237
|
+
result,
|
|
238
|
+
attempts: 1,
|
|
239
|
+
createdAt: Date.now(),
|
|
240
|
+
completedAt: Date.now(),
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Clear all cached results (for testing)
|
|
246
|
+
*/
|
|
247
|
+
clear() {
|
|
248
|
+
this.stepResults.clear();
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// ============================================================================
|
|
252
|
+
// STRATEGY FACTORY
|
|
253
|
+
// ============================================================================
|
|
254
|
+
/**
|
|
255
|
+
* Get the appropriate storage strategy for the current workflow execution.
|
|
256
|
+
*
|
|
257
|
+
* Selection logic:
|
|
258
|
+
* 1. If WorkflowStep is available in context, use CFWorkflowsStorageStrategy (FREE sleeping, durable)
|
|
259
|
+
* 2. Otherwise, use InMemoryStorageStrategy (fallback, BILLABLE sleeping)
|
|
260
|
+
*
|
|
261
|
+
* @param workflowStep - Optional WorkflowStep from CF Workflows runtime
|
|
262
|
+
* @param storage - Optional StepStorage for InMemory fallback
|
|
263
|
+
* @returns The appropriate storage strategy
|
|
264
|
+
*/
|
|
265
|
+
export function createStorageStrategy(workflowStep, storage) {
|
|
266
|
+
if (workflowStep) {
|
|
267
|
+
return new CFWorkflowsStorageStrategy(workflowStep);
|
|
268
|
+
}
|
|
269
|
+
return new InMemoryStorageStrategy(storage);
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../workflows/compat/temporal/storage.ts"],"names":[],"mappings":"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"}
|