UNPKG

@gguf/claw

Version:

Multi-channel AI gateway with extensible messaging integrations

104 lines (103 loc) 3.89 kB
import type { DatabaseSync } from "node:sqlite"; import { type FSWatcher } from "chokidar"; import type { ResolvedMemorySearchConfig } from "../agents/memory-search.js"; import type { OpenClawConfig } from "../config/config.js"; import { type EmbeddingProvider, type GeminiEmbeddingClient, type OpenAiEmbeddingClient, type VoyageEmbeddingClient } from "./embeddings.js"; import { MemoryManagerEmbeddingOps } from "./manager-embedding-ops.js"; import type { MemoryEmbeddingProbeResult, MemoryProviderStatus, MemorySearchManager, MemorySearchResult, MemorySource, MemorySyncProgressUpdate } from "./types.js"; export declare class MemoryIndexManager extends MemoryManagerEmbeddingOps implements MemorySearchManager { private readonly cacheKey; protected readonly cfg: OpenClawConfig; protected readonly agentId: string; protected readonly workspaceDir: string; protected readonly settings: ResolvedMemorySearchConfig; protected provider: EmbeddingProvider | null; private readonly requestedProvider; protected fallbackFrom?: "openai" | "local" | "gemini" | "voyage"; protected fallbackReason?: string; private readonly providerUnavailableReason?; protected openAi?: OpenAiEmbeddingClient; protected gemini?: GeminiEmbeddingClient; protected voyage?: VoyageEmbeddingClient; protected batch: { enabled: boolean; wait: boolean; concurrency: number; pollIntervalMs: number; timeoutMs: number; }; protected batchFailureCount: number; protected batchFailureLastError?: string; protected batchFailureLastProvider?: string; protected batchFailureLock: Promise<void>; protected db: DatabaseSync; protected readonly sources: Set<MemorySource>; protected providerKey: string; protected readonly cache: { enabled: boolean; maxEntries?: number; }; protected readonly vector: { enabled: boolean; available: boolean | null; extensionPath?: string; loadError?: string; dims?: number; }; protected readonly fts: { enabled: boolean; available: boolean; loadError?: string; }; protected vectorReady: Promise<boolean> | null; protected watcher: FSWatcher | null; protected watchTimer: NodeJS.Timeout | null; protected sessionWatchTimer: NodeJS.Timeout | null; protected sessionUnsubscribe: (() => void) | null; protected intervalTimer: NodeJS.Timeout | null; protected closed: boolean; protected dirty: boolean; protected sessionsDirty: boolean; protected sessionsDirtyFiles: Set<string>; protected sessionPendingFiles: Set<string>; protected sessionDeltas: Map<string, { lastSize: number; pendingBytes: number; pendingMessages: number; }>; private sessionWarm; private syncing; static get(params: { cfg: OpenClawConfig; agentId: string; purpose?: "default" | "status"; }): Promise<MemoryIndexManager | null>; private constructor(); warmSession(sessionKey?: string): Promise<void>; search(query: string, opts?: { maxResults?: number; minScore?: number; sessionKey?: string; }): Promise<MemorySearchResult[]>; private searchVector; private buildFtsQuery; private searchKeyword; private mergeHybridResults; sync(params?: { reason?: string; force?: boolean; progress?: (update: MemorySyncProgressUpdate) => void; }): Promise<void>; readFile(params: { relPath: string; from?: number; lines?: number; }): Promise<{ text: string; path: string; }>; status(): MemoryProviderStatus; probeVectorAvailability(): Promise<boolean>; probeEmbeddingAvailability(): Promise<MemoryEmbeddingProbeResult>; close(): Promise<void>; }