name = "kbdb-graph-plugin" main = "src/index.ts" compatibility_date = "2025-02-19" compatibility_flags = ["nodejs_compat"] workers_dev = true # KBDB-graph 插件 = triplet 採集 + graph 查詢,掛在基本盤 arcrun/kbdb 之上。 # 鐵律:插件不碰表、零 SQL、零 migration。讀寫全走基本盤 API(API-as-Wall)。 # 因此這裡【無】D1 / Vectorize 綁定 — 那些屬基本盤,插件不直連。 [vars] ENVIRONMENT = "development" # 基本盤 arcrun/kbdb API 網址:務必只透過 `wrangler secret put KBDB_BASE_URL` 設定。 # 2026-07-03 補跑實測發現的坑:若這裡也宣告 KBDB_BASE_URL(哪怕留空字串), # `wrangler deploy` 會用這個 [vars] 值覆蓋掉已存在的 remote secret(vars 優先權 > secret), # 導致部署後 KBDB_BASE_URL 被打回空字串、插件連不到基本盤。故此鍵不可出現在 [vars]。 [alias] "zod/v3" = "zod" "zod/v4" = "zod" "zod/v4-mini" = "zod" # 2026-07-03 補跑實測發現的坑:workers.dev 是共享 zone,Worker 直接 fetch() # 另一個 *.workers.dev Worker 會被 CF 擋(error code 1042,loop-prevention)。 # self-hosted 帳號通常沒自訂域名可繞,正規解法 = Service Binding:CF 內部直連, # 不經公開網路、不受 1042 影響。KBDB_BASE_URL secret 仍保留(可讀性/未來自訂域名時 fallback), # 但實際讀寫走這個 binding(見 src/lib/kbdb-client.ts / makeKbdbClient)。 [[services]] binding = "KBDB_BASE_SVC" service = "arcrun-kbdb" # 2026-07-03 補跑實測:custom_domain "kbdb-graph.finally.click" 這個 zone # 不在 leo21c 帳號下(CF API GET /zones?name=finally.click 回空), # self-hosted 到 leo21c 時此路由會部署失敗(但不影響 workers.dev route 的部署本身)。 # 註解掉以让 self-hosted 用戶乾淨部署到預設 workers.dev;有自訂域名需求者自行改回。 # [[routes]] # pattern = "kbdb-graph.finally.click" # custom_domain = true