import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import type { Embedder } from "../../embeddings/embedder.js"; import type { SqliteDatabase } from "../sqlite/db.js"; export declare class RecordSyncManager { private readonly db; private readonly twiningDir; private readonly projectRoot; private readonly probeTtlMs; private embedder; private lastProbeAt; private lastHeadSha; /** Serializes reconcile passes — at most one in flight, one queued. */ private reconcileChain; private reconcileQueued; constructor(db: SqliteDatabase, twiningDir: string, projectRoot: string, probeTtlMs?: number); /** The reconciler needs the embedder, which is created after the stores. */ setEmbedder(embedder: Embedder): void; /** * TTL-gated staleness probe, called before tool dispatch. Synchronous on * purpose: ingest must complete before the tool reads, or an assemble * racing a branch switch would still see the old branch's records. */ maybeResync(): void; /** * Run an embedding reconcile asynchronously (fire-and-forget, serialized). * Also called once at startup: phase-1 ingest never embedded what it * inserted, so records that arrived while the server was down get their * vectors here. */ scheduleReconcile(): void; /** Await in-flight reconciles — test hook. */ settle(): Promise; private headSha; } /** * Patch registerTool so every tool call probes for git-driven staleness * first — the same invisible-to-tools patching instrumented-server uses. */ export declare function attachSyncProbe(server: McpServer, manager: RecordSyncManager): void; //# sourceMappingURL=sync-manager.d.ts.map