/** * File-based Memory Storage * Persistent memory using JSONL files with lockfile support for concurrent access */ import { MemoryEntry, MemoryConfig, SearchResult } from './memory'; export interface FileMemoryConfig extends MemoryConfig { filePath: string; compactionThreshold?: number; autoCompact?: boolean; } export interface FileMemoryEntry extends MemoryEntry { deleted?: boolean; } /** * FileMemory - Append-only JSONL storage with compaction */ export declare class FileMemory { private filePath; private entries; private maxEntries; private embeddingProvider?; private compactionThreshold; private autoCompact; private initialized; private writeQueue; constructor(config: FileMemoryConfig); /** * Initialize and load existing entries */ initialize(): Promise; /** * Add a memory entry */ add(content: string, role: 'user' | 'assistant' | 'system', metadata?: Record): Promise; /** * Get a memory entry by ID */ get(id: string): Promise; /** * Get all entries */ getAll(): Promise; /** * Get recent entries */ getRecent(count: number): Promise; /** * Search memory by text similarity */ search(query: string, limit?: number): Promise; /** * Delete a memory entry (soft delete) */ delete(id: string): Promise; /** * Clear all memory */ clear(): Promise; /** * Compact the file by removing deleted entries */ compact(): Promise; /** * Get memory size */ get size(): number; /** * Export memory to JSON */ toJSON(): Promise; /** * Import memory from JSON */ fromJSON(entries: MemoryEntry[]): Promise; /** * Build context string from recent memory */ buildContext(count?: number): Promise; private appendEntry; private textSearch; private cosineSimilarity; private generateId; private enforceLimit; private versions; /** * Get version history for an entry */ getVersions(id: string): Promise; /** * Update entry with versioning */ update(id: string, content: string, metadata?: Record): Promise; /** * Restore to a specific version */ restore(id: string, versionIndex: number): Promise; /** * Query with filters */ query(options: { role?: 'user' | 'assistant' | 'system'; since?: number; until?: number; metadata?: Record; limit?: number; }): Promise; /** * Full-text search with ranking */ searchText(query: string, options?: { limit?: number; fuzzy?: boolean; }): Promise; private index; /** * Build search index */ buildIndex(): Promise; /** * Index single entry */ private indexEntry; /** * Search using index */ indexSearch(query: string, limit?: number): Promise; /** * Get stats */ getStats(): { entryCount: number; deletedCount: number; indexSize: number; versionedEntries: number; }; } /** * Create a file-based memory instance */ export declare function createFileMemory(config: FileMemoryConfig): FileMemory;