15fe012006
M1:library_map template(migration 0003 seed+runtime ensure,D6 零建表零 ALTER); 核實 triplet 按庫定位=不足(prod triplet template 無 library slot、entries metadata.library 未標記)→ 走 SDD 預案:recompute 冪等補 optional library slot (改 template 不動表),slot 值由 ingest 端(M3)補寫,核實結果記入 design §1。 M2:kbdb base 三端點(design §2 歸屬裁定:聚合 SQL 只准住基本盤): - POST /map/recompute?library=X:degree top-N/predicate 分布/跨庫 bridges/ triplet_count 一段 SQL 聚合;narrative 本輪收 body 傳入(wiki 抽取屬 M3); 寫入順序安全(先建新 active map block 再標舊 superseded,讀端取最新 active 自癒); 過渡 source_prefix fallback 讓無 library 值的舊 triplet 靠 source_uri 前綴歸庫。 - GET /map:全館地圖每庫一行(library+narrative+top 3 entities+triplet_count), MCP instructions/GUI 共用(數百 token 內)。 - GET /map/:library:該庫詳圖(完整 slots+可嵌人話 content,design §5 M6 直用)。 測試:node:sqlite(零新依賴)當真 SQLite 實跑 migrations+聚合 SQL, Hono route 行為同款覆蓋;45/45 過、tsc --noEmit 乾淨。 關聯 #39 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JUmjwkHLVBHM3ydhT1WSW3
22 lines
1.0 KiB
TypeScript
22 lines
1.0 KiB
TypeScript
// 測試用 node 內建模組最小型別宣告。tsconfig types 只掛 @cloudflare/workers-types(worker 本體
|
||
// 不該看見 node API),但測試在 node 跑:library-map 測試用 node:sqlite 當真 SQLite 驗聚合 SQL
|
||
//(零新依賴;Node ≥22.5 內建)。這份 d.ts 只為 tsc --noEmit 過關,不影響 runtime。
|
||
declare module 'node:sqlite' {
|
||
export class DatabaseSync {
|
||
constructor(location: string);
|
||
exec(sql: string): void;
|
||
prepare(sql: string): {
|
||
all(...params: unknown[]): Record<string, unknown>[];
|
||
get(...params: unknown[]): Record<string, unknown> | undefined;
|
||
run(...params: unknown[]): { changes: number | bigint };
|
||
};
|
||
close(): void;
|
||
}
|
||
}
|
||
declare module 'node:fs' {
|
||
export function readFileSync(path: URL | string, encoding: string): string;
|
||
}
|
||
// workers-types 的 ImportMeta 沒宣告 url(worker bundle 不用);測試以 import.meta.url 定位
|
||
// migrations 原檔 → 全域補上(僅型別,node/vitest runtime 本來就有)。
|
||
interface ImportMeta { url: string }
|