export type MemorySource = "memory" | "sessions"; export type MemorySearchResult = { path: string; startLine: number; endLine: number; score: number; snippet: string; source: MemorySource; citation?: string; }; export type MemoryEmbeddingProbeResult = { ok: boolean; error?: string; }; export type MemorySyncProgressUpdate = { completed: number; total: number; label?: string; }; export type MemoryProviderStatus = { backend: "builtin" | "qmd"; provider: string; model?: string; requestedProvider?: string; files?: number; chunks?: number; dirty?: boolean; workspaceDir?: string; dbPath?: string; extraPaths?: string[]; sources?: MemorySource[]; sourceCounts?: Array<{ source: MemorySource; files: number; chunks: number; }>; cache?: { enabled: boolean; entries?: number; maxEntries?: number; }; fts?: { enabled: boolean; available: boolean; error?: string; }; fallback?: { from: string; reason?: string; }; vector?: { enabled: boolean; available?: boolean; extensionPath?: string; loadError?: string; dims?: number; }; batch?: { enabled: boolean; failures: number; limit: number; wait: boolean; concurrency: number; pollIntervalMs: number; timeoutMs: number; lastError?: string; lastProvider?: string; }; custom?: Record; }; export interface MemorySearchManager { search(query: string, opts?: { maxResults?: number; minScore?: number; sessionKey?: string; }): Promise; readFile(params: { relPath: string; from?: number; lines?: number; }): Promise<{ text: string; path: string; }>; status(): MemoryProviderStatus; sync?(params?: { reason?: string; force?: boolean; progress?: (update: MemorySyncProgressUpdate) => void; }): Promise; probeEmbeddingAvailability(): Promise; probeVectorAvailability(): Promise; close?(): Promise; }