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,439 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DO Auto-Wiring via Reflection
|
|
3
|
+
*
|
|
4
|
+
* Discovers public methods on DO subclasses and exposes them to
|
|
5
|
+
* SDK/RPC/MCP/REST/CLI transports. This enables a single class
|
|
6
|
+
* definition to automatically provide multiple API interfaces.
|
|
7
|
+
*
|
|
8
|
+
* Key concepts:
|
|
9
|
+
* - Public methods (no underscore prefix) are exposed
|
|
10
|
+
* - _prefixed methods remain private
|
|
11
|
+
* - __prefixed methods are protected-style
|
|
12
|
+
* - Reflection discovers methods on prototype chain
|
|
13
|
+
* - Method metadata (parameters, return types, descriptions) can be extracted
|
|
14
|
+
*/
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// CONSTANTS
|
|
17
|
+
// ============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Methods from Object.prototype that should never be exposed
|
|
20
|
+
*/
|
|
21
|
+
const OBJECT_PROTOTYPE_METHODS = new Set([
|
|
22
|
+
'constructor',
|
|
23
|
+
'toString',
|
|
24
|
+
'toLocaleString',
|
|
25
|
+
'valueOf',
|
|
26
|
+
'hasOwnProperty',
|
|
27
|
+
'isPrototypeOf',
|
|
28
|
+
'propertyIsEnumerable',
|
|
29
|
+
'__defineGetter__',
|
|
30
|
+
'__defineSetter__',
|
|
31
|
+
'__lookupGetter__',
|
|
32
|
+
'__lookupSetter__',
|
|
33
|
+
'__proto__',
|
|
34
|
+
]);
|
|
35
|
+
/**
|
|
36
|
+
* Methods from DurableObject/DO base class that should not be exposed
|
|
37
|
+
* These are framework methods, not business logic
|
|
38
|
+
*/
|
|
39
|
+
const DO_BASE_METHODS = new Set([
|
|
40
|
+
// Lifecycle
|
|
41
|
+
'initialize',
|
|
42
|
+
'fork',
|
|
43
|
+
'compact',
|
|
44
|
+
'moveTo',
|
|
45
|
+
// Branching
|
|
46
|
+
'branch',
|
|
47
|
+
'checkout',
|
|
48
|
+
'merge',
|
|
49
|
+
// Resolution
|
|
50
|
+
'resolve',
|
|
51
|
+
// HTTP handler from DurableObject
|
|
52
|
+
'fetch',
|
|
53
|
+
// Workflow context methods (protected, but accessible via $)
|
|
54
|
+
'send',
|
|
55
|
+
'try',
|
|
56
|
+
'do',
|
|
57
|
+
'emit',
|
|
58
|
+
'logAction',
|
|
59
|
+
'emitEvent',
|
|
60
|
+
'createWorkflowContext',
|
|
61
|
+
'createOnProxy',
|
|
62
|
+
'createScheduleBuilder',
|
|
63
|
+
'createDomainProxy',
|
|
64
|
+
// Internal helpers
|
|
65
|
+
'resolveLocal',
|
|
66
|
+
'resolveCrossDO',
|
|
67
|
+
'invokeDomainMethod',
|
|
68
|
+
'invokeCrossDOMethod',
|
|
69
|
+
'executeAction',
|
|
70
|
+
'completeAction',
|
|
71
|
+
'failAction',
|
|
72
|
+
'updateActionStatus',
|
|
73
|
+
'log',
|
|
74
|
+
'sleep',
|
|
75
|
+
'link',
|
|
76
|
+
'getLinkedObjects',
|
|
77
|
+
'createThing',
|
|
78
|
+
'createAction',
|
|
79
|
+
// Capability system
|
|
80
|
+
'hasCapability',
|
|
81
|
+
// Protected accessors (these become getters)
|
|
82
|
+
'collection',
|
|
83
|
+
'relationships',
|
|
84
|
+
// Private methods (no underscore prefix but marked private in TypeScript)
|
|
85
|
+
'getStoreContext',
|
|
86
|
+
'getOrCreateStub',
|
|
87
|
+
'recordFailure',
|
|
88
|
+
'clearCrossDoCache',
|
|
89
|
+
'createDefaultApp',
|
|
90
|
+
// Actor context methods
|
|
91
|
+
'setActor',
|
|
92
|
+
'clearActor',
|
|
93
|
+
'getCurrentActor',
|
|
94
|
+
// HTTP handling
|
|
95
|
+
'handleFetch',
|
|
96
|
+
]);
|
|
97
|
+
// ============================================================================
|
|
98
|
+
// CACHES
|
|
99
|
+
// ============================================================================
|
|
100
|
+
const exposedMethodsCache = new WeakMap();
|
|
101
|
+
const methodSignatureCache = new WeakMap();
|
|
102
|
+
const methodMetadataCache = new WeakMap();
|
|
103
|
+
// ============================================================================
|
|
104
|
+
// HELPER FUNCTIONS
|
|
105
|
+
// ============================================================================
|
|
106
|
+
/**
|
|
107
|
+
* Get the prototype chain for a class, stopping at Object.prototype
|
|
108
|
+
*/
|
|
109
|
+
function getPrototypeChain(cls) {
|
|
110
|
+
const chain = [];
|
|
111
|
+
let proto = cls.prototype;
|
|
112
|
+
while (proto && proto !== Object.prototype) {
|
|
113
|
+
chain.push(proto);
|
|
114
|
+
proto = Object.getPrototypeOf(proto);
|
|
115
|
+
}
|
|
116
|
+
return chain;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Check if a property is a getter/setter (not a regular method)
|
|
120
|
+
*/
|
|
121
|
+
function isGetterOrSetter(proto, name) {
|
|
122
|
+
const descriptor = Object.getOwnPropertyDescriptor(proto, name);
|
|
123
|
+
return descriptor !== undefined && (descriptor.get !== undefined || descriptor.set !== undefined);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Check if a method is an async function
|
|
127
|
+
*/
|
|
128
|
+
function isAsyncFunction(fn) {
|
|
129
|
+
return fn.constructor.name === 'AsyncFunction' ||
|
|
130
|
+
fn.toString().startsWith('async ');
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Parse function parameters from its source string
|
|
134
|
+
* Returns array of { name, optional } objects
|
|
135
|
+
*/
|
|
136
|
+
function parseParameters(fn) {
|
|
137
|
+
const fnStr = fn.toString();
|
|
138
|
+
// Match the parameters section
|
|
139
|
+
// Handle multiple formats:
|
|
140
|
+
// - function name(a, b) { }
|
|
141
|
+
// - (a, b) => { }
|
|
142
|
+
// - async (a, b) => { }
|
|
143
|
+
// - methodName(a, b) { } (class methods)
|
|
144
|
+
// - async methodName(a, b) { } (async class methods)
|
|
145
|
+
// - *methodName(a, b) { } (generator methods)
|
|
146
|
+
const paramMatch = fnStr.match(/^(?:async\s+)?(?:\*\s*)?(?:function\s*)?(?:\w+\s*)?\(([^)]*)\)|^(?:async\s+)?(\w+)\s*=>/);
|
|
147
|
+
if (!paramMatch) {
|
|
148
|
+
return [];
|
|
149
|
+
}
|
|
150
|
+
// If it's a single arrow function param without parens (x => ...)
|
|
151
|
+
if (paramMatch[2]) {
|
|
152
|
+
return [{ name: paramMatch[2], optional: false }];
|
|
153
|
+
}
|
|
154
|
+
const paramStr = paramMatch[1];
|
|
155
|
+
if (!paramStr || paramStr.trim() === '') {
|
|
156
|
+
return [];
|
|
157
|
+
}
|
|
158
|
+
// Split by comma, handling nested structures like { a, b } and array types
|
|
159
|
+
const params = [];
|
|
160
|
+
let depth = 0;
|
|
161
|
+
let current = '';
|
|
162
|
+
for (const char of paramStr) {
|
|
163
|
+
if (char === '(' || char === '{' || char === '[' || char === '<') {
|
|
164
|
+
depth++;
|
|
165
|
+
current += char;
|
|
166
|
+
}
|
|
167
|
+
else if (char === ')' || char === '}' || char === ']' || char === '>') {
|
|
168
|
+
depth--;
|
|
169
|
+
current += char;
|
|
170
|
+
}
|
|
171
|
+
else if (char === ',' && depth === 0) {
|
|
172
|
+
if (current.trim()) {
|
|
173
|
+
params.push(parseParameter(current.trim()));
|
|
174
|
+
}
|
|
175
|
+
current = '';
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
current += char;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
if (current.trim()) {
|
|
182
|
+
params.push(parseParameter(current.trim()));
|
|
183
|
+
}
|
|
184
|
+
return params;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Parse a single parameter string like "name: type" or "name?: type" or "name = default"
|
|
188
|
+
*/
|
|
189
|
+
function parseParameter(paramStr) {
|
|
190
|
+
// Handle rest parameters (...rest: type[])
|
|
191
|
+
const restMatch = paramStr.match(/^\.\.\.(\w+)/);
|
|
192
|
+
if (restMatch) {
|
|
193
|
+
return { name: restMatch[1], optional: true };
|
|
194
|
+
}
|
|
195
|
+
// Handle destructuring: { a, b }: Type or [a, b]: Type
|
|
196
|
+
if (paramStr.startsWith('{') || paramStr.startsWith('[')) {
|
|
197
|
+
// Extract name from after the closing brace/bracket
|
|
198
|
+
const colonIndex = paramStr.lastIndexOf(':');
|
|
199
|
+
if (colonIndex !== -1) {
|
|
200
|
+
// Try to get a meaningful name, or use 'data'
|
|
201
|
+
return { name: 'data', optional: paramStr.includes('?') };
|
|
202
|
+
}
|
|
203
|
+
return { name: 'data', optional: false };
|
|
204
|
+
}
|
|
205
|
+
// Handle regular parameters: name, name?, name: type, name?: type, name = default
|
|
206
|
+
const nameMatch = paramStr.match(/^(\w+)(\?)?(?:\s*[=:]|$)/);
|
|
207
|
+
if (nameMatch) {
|
|
208
|
+
const isOptional = nameMatch[2] === '?' || paramStr.includes('=');
|
|
209
|
+
return { name: nameMatch[1], optional: isOptional };
|
|
210
|
+
}
|
|
211
|
+
return { name: 'arg', optional: false };
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Check if a method name should be excluded from exposure
|
|
215
|
+
*/
|
|
216
|
+
function shouldExclude(name) {
|
|
217
|
+
// Exclude constructor
|
|
218
|
+
if (name === 'constructor')
|
|
219
|
+
return true;
|
|
220
|
+
// Exclude _prefixed and __prefixed methods
|
|
221
|
+
if (name.startsWith('_'))
|
|
222
|
+
return true;
|
|
223
|
+
// Exclude Object.prototype methods
|
|
224
|
+
if (OBJECT_PROTOTYPE_METHODS.has(name))
|
|
225
|
+
return true;
|
|
226
|
+
// Exclude DO base methods
|
|
227
|
+
if (DO_BASE_METHODS.has(name))
|
|
228
|
+
return true;
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Generate a human-readable description from a camelCase/PascalCase method name
|
|
233
|
+
* e.g., "createOrder" -> "Create order"
|
|
234
|
+
* "getCustomerById" -> "Get customer by id"
|
|
235
|
+
*/
|
|
236
|
+
function generateMethodDescription(methodName) {
|
|
237
|
+
// Split camelCase/PascalCase into words
|
|
238
|
+
const words = methodName
|
|
239
|
+
.replace(/([A-Z])/g, ' $1')
|
|
240
|
+
.replace(/^./, (str) => str.toUpperCase())
|
|
241
|
+
.trim()
|
|
242
|
+
.toLowerCase();
|
|
243
|
+
// Capitalize first letter
|
|
244
|
+
return words.charAt(0).toUpperCase() + words.slice(1);
|
|
245
|
+
}
|
|
246
|
+
// ============================================================================
|
|
247
|
+
// MAIN API
|
|
248
|
+
// ============================================================================
|
|
249
|
+
/**
|
|
250
|
+
* Get list of exposed (public) method names for a DO class
|
|
251
|
+
*
|
|
252
|
+
* @param DOClass - The DO class constructor to inspect
|
|
253
|
+
* @returns Array of public method names
|
|
254
|
+
*/
|
|
255
|
+
export function getExposedMethods(DOClass) {
|
|
256
|
+
// Check cache
|
|
257
|
+
const cached = exposedMethodsCache.get(DOClass);
|
|
258
|
+
if (cached) {
|
|
259
|
+
return cached;
|
|
260
|
+
}
|
|
261
|
+
const methods = new Set();
|
|
262
|
+
const chain = getPrototypeChain(DOClass);
|
|
263
|
+
for (const proto of chain) {
|
|
264
|
+
// Get all own property names (string keys only, not symbols)
|
|
265
|
+
const names = Object.getOwnPropertyNames(proto);
|
|
266
|
+
for (const name of names) {
|
|
267
|
+
// Skip if should be excluded
|
|
268
|
+
if (shouldExclude(name))
|
|
269
|
+
continue;
|
|
270
|
+
// Skip getters/setters
|
|
271
|
+
if (isGetterOrSetter(proto, name))
|
|
272
|
+
continue;
|
|
273
|
+
// Get the property descriptor
|
|
274
|
+
const descriptor = Object.getOwnPropertyDescriptor(proto, name);
|
|
275
|
+
if (!descriptor)
|
|
276
|
+
continue;
|
|
277
|
+
// Must be a function
|
|
278
|
+
const value = descriptor.value;
|
|
279
|
+
if (typeof value !== 'function')
|
|
280
|
+
continue;
|
|
281
|
+
methods.add(name);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
const result = Array.from(methods);
|
|
285
|
+
exposedMethodsCache.set(DOClass, result);
|
|
286
|
+
return result;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Check if a method is exposed (public) on a DO class
|
|
290
|
+
*
|
|
291
|
+
* @param DOClass - The DO class constructor to inspect
|
|
292
|
+
* @param methodName - The method name to check
|
|
293
|
+
* @returns true if the method is exposed, false otherwise
|
|
294
|
+
*/
|
|
295
|
+
export function isExposed(DOClass, methodName) {
|
|
296
|
+
// Quick exclusion checks
|
|
297
|
+
if (shouldExclude(methodName))
|
|
298
|
+
return false;
|
|
299
|
+
// Check if it's a symbol string representation
|
|
300
|
+
if (methodName.includes('Symbol'))
|
|
301
|
+
return false;
|
|
302
|
+
const chain = getPrototypeChain(DOClass);
|
|
303
|
+
for (const proto of chain) {
|
|
304
|
+
// Check if property exists
|
|
305
|
+
if (!Object.prototype.hasOwnProperty.call(proto, methodName))
|
|
306
|
+
continue;
|
|
307
|
+
// Skip getters/setters
|
|
308
|
+
if (isGetterOrSetter(proto, methodName))
|
|
309
|
+
return false;
|
|
310
|
+
const descriptor = Object.getOwnPropertyDescriptor(proto, methodName);
|
|
311
|
+
if (!descriptor)
|
|
312
|
+
continue;
|
|
313
|
+
// Must be a function
|
|
314
|
+
if (typeof descriptor.value === 'function') {
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return false;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Get the signature of a method on a DO class
|
|
322
|
+
*
|
|
323
|
+
* @param DOClass - The DO class constructor to inspect
|
|
324
|
+
* @param methodName - The method name to get signature for
|
|
325
|
+
* @returns MethodSignature if method is exposed, undefined otherwise
|
|
326
|
+
*/
|
|
327
|
+
export function getMethodSignature(DOClass, methodName) {
|
|
328
|
+
// Check cache
|
|
329
|
+
let classCache = methodSignatureCache.get(DOClass);
|
|
330
|
+
if (classCache?.has(methodName)) {
|
|
331
|
+
return classCache.get(methodName);
|
|
332
|
+
}
|
|
333
|
+
// Method must be exposed
|
|
334
|
+
if (!isExposed(DOClass, methodName)) {
|
|
335
|
+
if (!classCache) {
|
|
336
|
+
classCache = new Map();
|
|
337
|
+
methodSignatureCache.set(DOClass, classCache);
|
|
338
|
+
}
|
|
339
|
+
classCache.set(methodName, undefined);
|
|
340
|
+
return undefined;
|
|
341
|
+
}
|
|
342
|
+
// Find the method in prototype chain
|
|
343
|
+
const chain = getPrototypeChain(DOClass);
|
|
344
|
+
let fn;
|
|
345
|
+
for (const proto of chain) {
|
|
346
|
+
const descriptor = Object.getOwnPropertyDescriptor(proto, methodName);
|
|
347
|
+
if (descriptor && typeof descriptor.value === 'function') {
|
|
348
|
+
fn = descriptor.value;
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
if (!fn) {
|
|
353
|
+
return undefined;
|
|
354
|
+
}
|
|
355
|
+
const parameters = parseParameters(fn);
|
|
356
|
+
// Mark parameters beyond fn.length as optional
|
|
357
|
+
// fn.length counts only the parameters before the first one with a default value
|
|
358
|
+
// Parameters at or after fn.length are considered optional
|
|
359
|
+
const requiredParamCount = fn.length;
|
|
360
|
+
for (let i = requiredParamCount; i < parameters.length; i++) {
|
|
361
|
+
parameters[i].optional = true;
|
|
362
|
+
}
|
|
363
|
+
// Heuristic: Common optional parameter naming patterns
|
|
364
|
+
// In TypeScript/JavaScript, parameters with these names are often optional
|
|
365
|
+
const optionalPatterns = /^(options?|opts?|config|params?|settings|args|kwargs|extra|additional|metadata|context|props)$/i;
|
|
366
|
+
for (const param of parameters) {
|
|
367
|
+
if (optionalPatterns.test(param.name)) {
|
|
368
|
+
param.optional = true;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
const signature = {
|
|
372
|
+
name: methodName,
|
|
373
|
+
parameterCount: fn.length,
|
|
374
|
+
parameters,
|
|
375
|
+
async: isAsyncFunction(fn),
|
|
376
|
+
};
|
|
377
|
+
// Cache the result
|
|
378
|
+
if (!classCache) {
|
|
379
|
+
classCache = new Map();
|
|
380
|
+
methodSignatureCache.set(DOClass, classCache);
|
|
381
|
+
}
|
|
382
|
+
classCache.set(methodName, signature);
|
|
383
|
+
return signature;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Get metadata for a method on a DO class
|
|
387
|
+
*
|
|
388
|
+
* Note: Full JSDoc parsing requires additional tooling (e.g., TypeScript compiler API
|
|
389
|
+
* or a JSDoc parser). This implementation provides basic metadata and a structure
|
|
390
|
+
* that can be extended with decorator-based or external metadata sources.
|
|
391
|
+
*
|
|
392
|
+
* @param DOClass - The DO class constructor to inspect
|
|
393
|
+
* @param methodName - The method name to get metadata for
|
|
394
|
+
* @returns MethodMetadata if method is exposed, undefined otherwise
|
|
395
|
+
*/
|
|
396
|
+
export function getMethodMetadata(DOClass, methodName) {
|
|
397
|
+
// Check cache
|
|
398
|
+
let classCache = methodMetadataCache.get(DOClass);
|
|
399
|
+
if (classCache?.has(methodName)) {
|
|
400
|
+
return classCache.get(methodName);
|
|
401
|
+
}
|
|
402
|
+
// Method must be exposed
|
|
403
|
+
if (!isExposed(DOClass, methodName)) {
|
|
404
|
+
if (!classCache) {
|
|
405
|
+
classCache = new Map();
|
|
406
|
+
methodMetadataCache.set(DOClass, classCache);
|
|
407
|
+
}
|
|
408
|
+
classCache.set(methodName, undefined);
|
|
409
|
+
return undefined;
|
|
410
|
+
}
|
|
411
|
+
// Get signature for parameter info
|
|
412
|
+
const signature = getMethodSignature(DOClass, methodName);
|
|
413
|
+
if (!signature) {
|
|
414
|
+
return undefined;
|
|
415
|
+
}
|
|
416
|
+
// Build basic metadata
|
|
417
|
+
// In a full implementation, this could extract JSDoc from source or use decorators
|
|
418
|
+
// For now, we provide auto-generated descriptions based on method name
|
|
419
|
+
const generatedDescription = generateMethodDescription(methodName);
|
|
420
|
+
const metadata = {
|
|
421
|
+
name: methodName,
|
|
422
|
+
description: generatedDescription,
|
|
423
|
+
parameters: {},
|
|
424
|
+
returns: { description: `Return value of ${methodName}` },
|
|
425
|
+
throws: undefined,
|
|
426
|
+
};
|
|
427
|
+
// Populate parameter entries from signature
|
|
428
|
+
for (const param of signature.parameters) {
|
|
429
|
+
metadata.parameters[param.name] = { description: undefined };
|
|
430
|
+
}
|
|
431
|
+
// Cache the result
|
|
432
|
+
if (!classCache) {
|
|
433
|
+
classCache = new Map();
|
|
434
|
+
methodMetadataCache.set(DOClass, classCache);
|
|
435
|
+
}
|
|
436
|
+
classCache.set(methodName, metadata);
|
|
437
|
+
return metadata;
|
|
438
|
+
}
|
|
439
|
+
//# sourceMappingURL=auto-wiring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-wiring.js","sourceRoot":"","sources":["../../lib/auto-wiring.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browserbase Provider
|
|
3
|
+
*
|
|
4
|
+
* Implements the BrowseProvider interface using the Browserbase SDK
|
|
5
|
+
* for cloud browser automation with live view support.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Browserbase provider implementation
|
|
9
|
+
*/
|
|
10
|
+
export class BrowserbaseBrowseProvider {
|
|
11
|
+
async init(config) {
|
|
12
|
+
// Validate credentials
|
|
13
|
+
if (!config.env?.BROWSERBASE_API_KEY) {
|
|
14
|
+
throw new Error('Browserbase provider requires BROWSERBASE_API_KEY in env');
|
|
15
|
+
}
|
|
16
|
+
if (!config.env?.BROWSERBASE_PROJECT_ID) {
|
|
17
|
+
throw new Error('Browserbase provider requires BROWSERBASE_PROJECT_ID in env');
|
|
18
|
+
}
|
|
19
|
+
// Initialize Browserbase SDK
|
|
20
|
+
// @ts-ignore - Optional peer dependency
|
|
21
|
+
const { Browserbase } = await import('@browserbasehq/sdk').catch(() => {
|
|
22
|
+
throw new Error('Package @browserbasehq/sdk is required for Browserbase provider. Run: npm install @browserbasehq/sdk');
|
|
23
|
+
});
|
|
24
|
+
const browserbase = new Browserbase({
|
|
25
|
+
apiKey: config.env.BROWSERBASE_API_KEY,
|
|
26
|
+
});
|
|
27
|
+
// Create session with options
|
|
28
|
+
const sessionOptions = {
|
|
29
|
+
projectId: config.env.BROWSERBASE_PROJECT_ID,
|
|
30
|
+
};
|
|
31
|
+
if (config.liveView) {
|
|
32
|
+
sessionOptions.keepAlive = true;
|
|
33
|
+
}
|
|
34
|
+
const browserSession = await browserbase.sessions.create(sessionOptions);
|
|
35
|
+
// Connect via puppeteer-core
|
|
36
|
+
// @ts-ignore - Optional peer dependency
|
|
37
|
+
const puppeteer = await import('puppeteer-core').catch(() => {
|
|
38
|
+
throw new Error('Package puppeteer-core is required for Browserbase provider. Run: npm install puppeteer-core');
|
|
39
|
+
});
|
|
40
|
+
const browser = await puppeteer.default.connect({
|
|
41
|
+
browserWSEndpoint: browserSession.connectUrl,
|
|
42
|
+
});
|
|
43
|
+
const page = await browser.newPage();
|
|
44
|
+
// Apply viewport if specified
|
|
45
|
+
if (config.viewport) {
|
|
46
|
+
await page.setViewport(config.viewport);
|
|
47
|
+
}
|
|
48
|
+
// Initialize Stagehand for AI operations
|
|
49
|
+
// @ts-ignore - Optional peer dependency
|
|
50
|
+
const { Stagehand } = await import('@browserbasehq/stagehand').catch(() => {
|
|
51
|
+
throw new Error('Package @browserbasehq/stagehand is required for Browserbase provider. Run: npm install @browserbasehq/stagehand');
|
|
52
|
+
});
|
|
53
|
+
const stagehand = new Stagehand({
|
|
54
|
+
env: 'BROWSERBASE',
|
|
55
|
+
enableCaching: false,
|
|
56
|
+
browserbaseSessionID: browserSession.id,
|
|
57
|
+
});
|
|
58
|
+
await stagehand.init();
|
|
59
|
+
// Track if session is closed
|
|
60
|
+
let closed = false;
|
|
61
|
+
// Create session object
|
|
62
|
+
const session = {
|
|
63
|
+
// Live view URL (only available for browserbase with liveView enabled)
|
|
64
|
+
liveViewUrl: config.liveView ? browserSession.liveUrl : undefined,
|
|
65
|
+
async goto(url) {
|
|
66
|
+
if (closed) {
|
|
67
|
+
throw new Error('Session is closed');
|
|
68
|
+
}
|
|
69
|
+
// Validate URL
|
|
70
|
+
try {
|
|
71
|
+
new URL(url);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
throw new Error(`Invalid URL: ${url}`);
|
|
75
|
+
}
|
|
76
|
+
await stagehand.page.goto(url);
|
|
77
|
+
},
|
|
78
|
+
async act(instruction) {
|
|
79
|
+
if (closed) {
|
|
80
|
+
throw new Error('Session is closed');
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
const result = await stagehand.act(instruction);
|
|
84
|
+
return {
|
|
85
|
+
success: true,
|
|
86
|
+
action: result?.action ?? instruction,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
return {
|
|
91
|
+
success: false,
|
|
92
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
async extract(instruction, schema) {
|
|
97
|
+
if (closed) {
|
|
98
|
+
throw new Error('Session is closed');
|
|
99
|
+
}
|
|
100
|
+
const result = await stagehand.extract(instruction, { schema });
|
|
101
|
+
return result;
|
|
102
|
+
},
|
|
103
|
+
async observe(instruction) {
|
|
104
|
+
if (closed) {
|
|
105
|
+
throw new Error('Session is closed');
|
|
106
|
+
}
|
|
107
|
+
const result = await stagehand.observe(instruction);
|
|
108
|
+
return result.map((item) => ({
|
|
109
|
+
action: item.action ?? 'unknown',
|
|
110
|
+
selector: item.selector,
|
|
111
|
+
description: item.description ?? '',
|
|
112
|
+
}));
|
|
113
|
+
},
|
|
114
|
+
async screenshot(options) {
|
|
115
|
+
if (closed) {
|
|
116
|
+
throw new Error('Session is closed');
|
|
117
|
+
}
|
|
118
|
+
const screenshotOptions = {
|
|
119
|
+
encoding: 'base64',
|
|
120
|
+
};
|
|
121
|
+
if (options?.fullPage) {
|
|
122
|
+
screenshotOptions.fullPage = true;
|
|
123
|
+
}
|
|
124
|
+
if (options?.type) {
|
|
125
|
+
screenshotOptions.type = options.type;
|
|
126
|
+
}
|
|
127
|
+
if (options?.quality && options.type === 'jpeg') {
|
|
128
|
+
screenshotOptions.quality = options.quality;
|
|
129
|
+
}
|
|
130
|
+
// Handle selector option by finding element first
|
|
131
|
+
if (options?.selector) {
|
|
132
|
+
const element = await stagehand.page.$(options.selector);
|
|
133
|
+
if (element) {
|
|
134
|
+
const buffer = await element.screenshot(screenshotOptions);
|
|
135
|
+
return typeof buffer === 'string' ? buffer : buffer.toString('base64');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const buffer = await stagehand.page.screenshot(screenshotOptions);
|
|
139
|
+
return typeof buffer === 'string' ? buffer : buffer.toString('base64');
|
|
140
|
+
},
|
|
141
|
+
async close() {
|
|
142
|
+
if (closed) {
|
|
143
|
+
return; // Already closed, no-op
|
|
144
|
+
}
|
|
145
|
+
closed = true;
|
|
146
|
+
try {
|
|
147
|
+
await stagehand.close();
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// Ignore stagehand close errors
|
|
151
|
+
}
|
|
152
|
+
try {
|
|
153
|
+
await browser.close();
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// Ignore browser close errors
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
return session;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=browserbase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browserbase.js","sourceRoot":"","sources":["../../../lib/browse/browserbase.ts"],"names":[],"mappings":"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"}
|