Commit Graph

7 Commits

Author SHA1 Message Date
kbdb-cc c6bd0d7899 fix(drainer): 同帳號 worker-to-worker 改走 Service Bindings(修 CF 1042)
Production bug(本地 miniflare 未抓到、真端點才爆):部署後 drainer 對同帳號
arcrun-code/arcrun-kbdb/kbdb-graph-plugin 做 fetch("https://*.leo21c.workers.dev")
→ CF 1042(同帳號 worker 互打限制),被 error handler 包成 "not valid JSON"。

修法=比照 cypher-executor(wrangler.toml [[services]] 綁零件):
- wrangler.toml 加 [[services]] SVC_CODE→arcrun-code / SVC_KBDB→arcrun-kbdb /
  SVC_GRAPH→kbdb-graph-plugin;移除 CODE_WORKER_URL/KBDB_URL/GRAPH_URL vars。
- index.ts:所有 code/kbdb/graph 呼叫改 env.SVC_X.fetch()(svc() 輔助);Gitea
  (git.uncle6.me,非 CF)維持 plain fetch。

驗收(強制對部署後真端點、禁 miniflare):POST /drain?batch=2 回真 JSON、notes 3 卡
冪等全 skip、無 1042;游標前進+回捲;加測試卡→真端點 /webhook 只寫該 delta(entry
create 進 live KBDB)→三模式 curl 命中(含 Arcrun#11 修後語意 owner+type 過濾生效)→
測試卡清除。deploy version 95562b3e。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJiLCRUU2o3aSpPEzVCt2o
2026-07-06 10:51:42 +00:00
kbdb-cc 88b7fbf409 feat(km-wiki-ingest): 新增無人值守 drainer runtime(cursor + cron + Gitea webhook)
Phase b:把 ingest 從手動直驅升級成真無人值守。drainer/ 是 workflow
km_wiki_ingest_drain 的可部署執行體(Cloudflare Worker),復用已 live 的
arcrun-code/kbdb/graph、不改 cypher-executor。

- 兩觸發共用 processCard 核心:(A) cron drain(Gitea tree 列卡→游標後取一小批→
  逐卡處理→進游標→到底回捲;撐 5,083 檔);(B) Gitea push webhook→只處理 delta。
- 游標存 KBDB 一個 ingest_cursor entry(走 API、零建表)。冪等:未改卡 entry
  (page_name+content_hash)/triplet(uri+hash) 皆 skip,只有新/改卡真寫。
- src/usercode.ts 由 workflow.yaml parse_card.code 抽出(單一真相源 card-to-envelope.mjs)。
- 維持非-auto:wrangler.toml 的 cron trigger 預設註解(不自走),drain 走 POST /drain。
  scheduled handler 已在 code,leo 過閘後取消註解即開自走。README 記部署/secret/webhook 設定。

已部署 leo21c:arcrun-km-wiki-drainer.leo21c.workers.dev。以 wrangler dev(本地 miniflare
+ .dev.vars token,非 secret 寫入)對 live 服務驗證:cron drain 冪等全 skip、游標前進+回捲、
webhook delta 只寫變更卡、三模式命中新卡。GITEA_TOKEN secret 需 leo 於互動模式設(auto 擋 secret 寫入)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJiLCRUU2o3aSpPEzVCt2o
2026-07-06 09:13:03 +00:00
Leo b87c18df60 fix(km-wiki-ingest): code 節點 post 前剝除 envelope 的 _estSubrequests(graph strict schema)
leo21c 實 ingest 發現:graph /triplets/ingest 為 strict schema,會以 422
unrecognized_keys 拒絕 planEnvelopes 掛在 envelope 上的診斷鍵 _estSubrequests。
修:parse_card 內聯碼在 return 前把每個 envelope 的所有 _-前綴鍵剝除,使
post_one_envelope 的 body_json={{envelope}} 為 ingest-candidate 契約乾淨 payload
(source/extractor/nodes/triplets)。已驗:剝除後 entry/nodes/triplets 與原
planCard 逐欄一致。實 ingest(直接驅動同資料流)已用此剝除成功寫入 15 triplets。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJiLCRUU2o3aSpPEzVCt2o
2026-07-06 05:38:10 +00:00
Leo d93dc4e350 feat(km-wiki-ingest): parse_card 改用通用 code 零件;刪 domain 零件 km_wiki_card_parse
Arcrun#10 裁定:一次性解析走通用逃生口,不再鑄 domain 零件。

- workflow.yaml:parse_card 由 component:km_wiki_card_parse -> component:code,
  config.code 內聯 card-to-envelope 的 planCard 邏輯(去 import/export、raw NUL
  分隔符改 u0000 escape、改用 code 沙箱注入的 sha256);下游 refs 改 parse_card.data.*;
  加 limits(timeout_ms/max_output_bytes)。已端到端驗證(YAML 解析->JS eval)與原
  planCard 輸出逐欄全等(含 content_hash)。
- 刪 registry/examples/km-wiki-ingest/component-contract.yaml(km_wiki_card_parse 契約)。
- lib/card-to-envelope.mjs:header 改述為「code 節點內聯 JS 的權威來源 + 參考實作」,
  邏輯不變(續為 inline JS 之單一真相源)。
- lib/dry-run.mjs / description.md:框架改述為 code-節點形態;部署清單更新為「部署通用
  code 零件」。dry-run-evidence.json(3 entries/15 triplets/16 nodes)不變——解析輸出等價。

不部署、不寫 live。留分支可部署狀態。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJiLCRUU2o3aSpPEzVCt2o
2026-07-06 04:50:08 +00:00
Arcrun CC cc494a250e feat(ingest): 機械式 wiki 卡片→KBDB ingest(Arcrun#8 Phase A,dry-run 驗證)
新 ingest 模型(無 LLM,取代舊 raw→Haiku 路):
- 來源 = system-dev/wiki/cards/**/*.md(精耕卡)+ ## 實體/## 關聯 typed-edge + [[wikilink]]
- 卡片→base entry(metadata.embed=true);typed-edge/wikilink→graph triplet
- 純機械決定性,零 token

形式 = Arcrun workflow(cron drain + Gitea webhook delta)+ 新自訂零件 km_wiki_card_parse

不撞頂設計:一卡一 tick + 超大卡以 source_uri anchor 自動分段;
graph fan-out 精確 = 7+4N+M+D,dry-run 對 notes 三卡上限 33 subrequest(<50)。

Phase A:不部署、不寫 live。含純核心 + dry-run 證據(3 entries/15 triplets/16 nodes)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJiLCRUU2o3aSpPEzVCt2o
2026-07-06 03:52:50 +00:00
uncle6me-web a234201235 修正示例 yaml:telegram 改用 recipe canonical_id;gmail 讀取留 TODO(issue #13 步驟1)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 15:45:50 +08:00
uncle6me-web 922a57fe34 arcrun — AI workflow execution engine (clean history)
Self-hosted 開源:WASM 零件 + recipe + cypher-executor,跑在你自己的 Cloudflare。

此為重建的乾淨歷史起點(移除曾誤 commit 的 GCP SA 金鑰,舊歷史保留在
richblack/arcrun 與本地 backup 分支)。含:
- acr init --self-hosted installer(建 KV/R2 + codeload 拉預編譯 wasm + wrangler deploy + seed recipe)
- recipe push 把關(資料外流提醒 + 打通檢查)
- 19 個正當零件預編譯 wasm(claude_api/km_writer/kbdb_upsert_block 排除:違反 DECISIONS §1)
- CLI / cypher-executor / registry / 完整 SDD

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 15:52:38 +08:00