forked from every-app/open-seo
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwrangler.jsonc
More file actions
113 lines (113 loc) · 3.69 KB
/
Copy pathwrangler.jsonc
File metadata and controls
113 lines (113 loc) · 3.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "open-seo",
"main": "src/server.ts",
"compatibility_date": "2025-09-02",
"compatibility_flags": ["nodejs_compat", "global_fetch_strictly_public"],
"observability": {
"enabled": true,
// Spans are billed as observability events (free tier 200k/day); add a
// traces head_sampling_rate below 1 if span volume becomes a cost concern.
"traces": {
"enabled": true,
},
},
// Smart Placement relocates only the `fetch` handler (cron + Workflow runs
// stay at the edge) toward external subrequests — Postgres via Hyperdrive,
// SEO APIs — not D1/KV/R2 bindings, so it's a DB no-op on the D1 default.
// Must live here: a dashboard-only toggle is wiped by `wrangler deploy`.
"placement": {
"mode": "smart",
},
"workflows": [
{
"name": "site-audit-workflow",
"binding": "SITE_AUDIT_WORKFLOW",
"class_name": "SiteAuditWorkflow",
},
{
"name": "rank-check-workflow",
"binding": "RANK_CHECK_WORKFLOW",
"class_name": "RankCheckWorkflow",
},
],
// Durable Object backing the onboarding strategy chat (Agents SDK
// AIChatAgent). One instance per project; messages persist in the DO's
// SQLite. SQLite-backed classes must be declared in `migrations` below.
"durable_objects": {
"bindings": [
{
"name": "ONBOARDING_CHAT",
"class_name": "OnboardingChatAgent",
},
// SAM in-app agent. One instance per chat session; messages persist in the
// DO's SQLite. SQLite-backed classes must be declared in `migrations`.
{
"name": "SAM_CHAT",
"class_name": "SamChatAgent",
},
],
},
"migrations": [
{
"tag": "v1",
"new_sqlite_classes": ["OnboardingChatAgent"],
},
{
"tag": "v2",
"new_sqlite_classes": ["SamChatAgent"],
},
],
"triggers": {
"crons": ["*/15 * * * *"],
},
// This config serves local dev and Docker self-host only. All Cloudflare
// deployments — previews, prod, self-host — go through Alchemy
// (alchemy.run.ts), which provisions real resources per stage and never
// reads these ids.
//
// The ids below are NOT dead config: miniflare derives its on-disk storage
// filenames (.wrangler/state, a persistent volume in Docker self-hosts)
// from an HMAC of `id`/`database_id`. Changing them orphans every existing
// local and self-hosted database. Leave them as-is.
"kv_namespaces": [
{
"binding": "KV",
"id": "27a30f80d9de4de5899f2f3f0c60bc65",
},
{
"binding": "OAUTH_KV",
"id": "b53f11c8ea664d959d5f0a936b902474",
},
],
"d1_databases": [
{
"binding": "DB",
"database_name": "open-seo",
"database_id": "0726a931-c511-4c03-a591-fc4771d457cf",
"migrations_dir": "drizzle",
},
],
// Postgres scale path (opt-in; D1 is the default). Hyperdrive is the ONLY way
// the app connects to Postgres — there is no direct-connection fallback. For
// local dev, `localConnectionString` is the throwaway Docker Postgres from
// docs/LOCAL_POSTGRES.md, and nothing connects to it unless
// DATABASE_PROVIDER=postgres is set in .env.local.
//
// Running raw `wrangler deploy` against another account? DELETE this block —
// the id lives in OpenSEO's account and the deploy fails without access to
// it. (Alchemy deploys and the Docker image never read it.)
//"hyperdrive": [
// {
// "binding": "HYPERDRIVE",
// "id": "9d64ccfb559f44449ce52a143912f898",
// "localConnectionString": "postgres://openseo:openseo@localhost:5433/openseo",
// },
//],
"r2_buckets": [
{
"bucket_name": "open-seo",
"binding": "R2",
},
],
}