{ "$schema": "node_modules/wrangler/config-schema.json", "name": "executor-cloud", "compatibility_date": "2025-04-01", "compatibility_flags": ["nodejs_compat"], "main": "src/server.ts", "routes": [ { "pattern": "executor.sh", "custom_domain": true, }, ], "limits": { "cpu_ms": 30000, }, "observability": { "enabled": true, }, "durable_objects": { "bindings": [ { "name": "MCP_SESSION", "class_name": "McpSessionDOSqlite", }, ], }, // The MCP session DO moved to the Cloudflare Agents (`McpAgent`) base, which // stores state in SQLite. The original `McpSessionDO` was created with the // key-value backend (`new_classes`), and Cloudflare cannot convert a live class // to SQLite in place, nor delete a class while a binding still references it. // Session state is ephemeral, so v2 repoints the `MCP_SESSION` binding to a new // SQLite-backed class (`McpSessionDOSqlite`) and deletes the old KV `McpSessionDO` // (now unreferenced). The worker exports `McpSessionDOSqlite`, not `McpSessionDO`. "migrations": [ { "tag": "v1", "new_classes": ["McpSessionDO"], }, { "tag": "v2", "deleted_classes": ["McpSessionDO"], "new_sqlite_classes": ["McpSessionDOSqlite"], }, ], "services": [ { "binding": "MARKETING", "service": "executor-marketing", }, ], "hyperdrive": [ { "binding": "HYPERDRIVE", "id": "ca5f68119e4e4277b2ad6298a9048875", "localConnectionString": "postgresql://postgres:postgres@127.0.0.1:5433/postgres", }, ], // Plugin blob seam backend (multi-MB resolved specs). Bucket must exist // before deploy: `wrangler r2 bucket create executor-cloud-blobs`. "r2_buckets": [ { "binding": "BLOBS", "bucket_name": "executor-cloud-blobs", }, ], "placement": { "region": "aws:us-east-1", }, "worker_loaders": [ { "binding": "LOADER", }, ], "vars": { "VITE_PUBLIC_SITE_URL": "https://executor.sh", "VITE_PUBLIC_POSTHOG_KEY": "phc_nNLrNMALpRsfrEkZovUkfMxYbcJvHnsJHeoSPavprgLL", // Browser OTLP spans → same-origin, forwarded to Axiom by the worker // (src/observability/browser-traces.ts). Relative on purpose: the // client resolves it against the page origin, so previews work too. "VITE_PUBLIC_OTLP_TRACES_URL": "/v1/traces", // Per-session sampling: 1 = every signed-in session exports. Dial down // (e.g. "0.1") if Axiom volume becomes a cost concern. "VITE_PUBLIC_OTLP_SAMPLE_RATIO": "1", }, }