-- credential-primitives-wasm — credential-store-migration T2(D19:D1 只存目錄,不存密文) -- SDD: system-dev/docs/3-specs/arcrun/credential-primitives-wasm/credential-store-migration.md §2.2 -- -- ⚠️ 已退役(D38 圍牆修復,2026-08-07):本檔在 KBDB 裡多開了一張獨立表,違反「KBDB 只有 -- 三張核心表」的鐵律(見 kbdb-usage skill「反例」)。deploy.ts 已不再套用本檔——新裝置改跑 -- 0005_credential_template.sql(template 定義)+ 0006_drop_credentials_table.sql(把舊資料 -- 搬進 entries 後拆表)。本檔保留純供歷史對照(欄位定義與 0005 的 slots_json 一字對應), -- 不要再照抄這個形狀;新資料類型請照 0003/0004/0005 的手法(template + entries)。 -- -- 密文本體不在這裡:值住在 CF Workers per-script Secrets(掛在 cypher worker 上,管理 API 唯寫)。 -- 這張表只存「目錄」:租戶(api_key) / 名字 / 服務 / 敏感度 / 指向 Workers Secrets 的 env var 名(secret_ref)。 -- 冪等(IF NOT EXISTS),與 0001_base.sql 同模式,套用機制走 cli/src/lib/deploy.ts applyD1Migration。 -- 同一顆 D1(與 KBDB base 共用 arcrun-kbdb),不新建第二顆。 CREATE TABLE IF NOT EXISTS credentials ( -- kbdb-sql-ok: 已退役的歷史存底,deploy.ts 不再套用本檔(改跑 0005+0006),保留純供欄位對照 api_key TEXT NOT NULL, -- 租戶 name TEXT NOT NULL, -- credential 名(= auth-recipe required_secrets[].key,如 telegram_bot_token) service TEXT, -- 對應 service(telegram / notion …),可空 sensitivity TEXT NOT NULL DEFAULT 'standard', -- 'standard' | 'high'(high = SA JSON/private key) secret_ref TEXT NOT NULL, -- 指向 Workers Secrets 的 env var 名(如 CRED_TELEGRAM_BOT_TOKEN_XXXXXXXX;不是密文本體) created_at INTEGER NOT NULL, last_used_at INTEGER, -- 執行注入時更新(治理面 last_used 顯示用) PRIMARY KEY (api_key, name) ); CREATE INDEX IF NOT EXISTS idx_cred_apikey ON credentials(api_key);