{ "$schema": "./node_modules/wrangler/config-schema.json", "name": "chickpea", "workers_dev": true, "preview_urls": false, "assets": { "binding": "ASSETS", "html_handling": "none", "not_found_handling": "none" }, "compatibility_date": "2026-08-20", "compatibility_flags": [ "nodejs_compat", "global_fetch_strictly_public" ], // Without this, a fresh install captures NO logs at all — the sanitized // Slack error is then the only trace of a provider failure (learned the // hard way: the raw error behind a keyless-anthropic 401 was unrecoverable). "observability": { "enabled": true, // Flue spans are registered explicitly in the Cloudflare-only entry with // `content: false`; platform tracing exports operational metadata only. "traces": { "enabled": true } }, "ai": { "binding": "AI" }, "version_metadata": { "binding": "CF_VERSION_METADATA" }, "triggers": { "crons": [ "* * * * *" ] }, // App-owned state Durable Object (src/cloudflare.ts): one singleton instance // hosts config agents/assignments, thread snapshots, claims, the thread // registry, and operator settings on the Cloudflare target. The optional // Sandbox binding/container is added only by the explicit Sandbox build // profile; its v3 migration remains here so the same Worker can add or // remove that deployment capability without changing Durable Object history. "durable_objects": { "bindings": [ { "name": "TAG_STATE", "class_name": "TagStateStore" }, { "name": "SLACK_GATEWAY_SESSION", "class_name": "SlackGatewaySession" }, { "name": "SLACK_THREAD_RUNNER", "class_name": "SlackThreadRunner" } ] }, "d1_databases": [ { "binding": "AUTH_DB", "database_name": "chickpea-auth-db", "database_id": "", "migrations_dir": "migrations/better-auth" } ], // v6 is the deliberate prelaunch Flue 2 reset. It permanently deletes only // the four beta Flue namespaces and creates fresh v2 agents. TagStateStore, // Sandbox, ContainerProxy, and all other app-owned state are preserved. "migrations": [ { "tag": "v1", "new_sqlite_classes": [ "FlueRegistry", "FlueSlackThreadAgent" ] }, { "tag": "v2", "new_sqlite_classes": [ "TagStateStore" ] }, { "tag": "v3", "new_sqlite_classes": [ "Sandbox" ] }, { "tag": "v4", "new_sqlite_classes": [ "FlueRoutineWorkflow" ] }, { "tag": "v5", "new_sqlite_classes": [ "FlueRoutineIntentAgent" ] }, { "tag": "v6", "new_sqlite_classes": [ "FlueChickpeaSlackV2Agent", "FlueChickpeaRoutineIntentV2Agent", "FlueChickpeaRoutineExecutionV2Agent" ], "deleted_classes": [ "FlueRegistry", "FlueSlackThreadAgent", "FlueRoutineIntentAgent", "FlueRoutineWorkflow" ] }, { // Immutable history for Workers that ran the retired password guard. "tag": "v7", "new_sqlite_classes": [ "AuthGuard" ] }, { // Slack-only Better Auth moved its authority to AUTH_DB; retire only // the obsolete password/throttle Durable Object state. "tag": "v8", "deleted_classes": [ "AuthGuard" ] }, { "tag": "v9", "new_sqlite_classes": [ "SlackGatewaySession" ] }, { // Coding workers (src/agents/coding-worker.ts): one instance per // coding workspace and binding, driven by `workspace_task`. "tag": "v10", "new_sqlite_classes": [ "FlueChickpeaCodingWorkerV1Agent" ] }, { // Per-thread Slack turn runners (src/slack/thread-runner.ts): one // instance per Slack thread key. Ships inactive; nothing addresses the // class until a later release moves turn execution onto it. Cloudflare // cannot roll a Worker back across this class lifecycle change. "tag": "v11", "new_sqlite_classes": [ "SlackThreadRunner" ] }, { // Test runs (src/agents/test-turn.ts): one instance per run, erased // when it settles. Chickpea Cloud splices its own cloud-v1 after // v11, so a hosted build applies this after cloud-v1. "tag": "v12", "new_sqlite_classes": [ "FlueChickpeaTestTurnV1Agent" ] } ] }