import { MemoryNode } from './helpers.ts'; import { LLMRequest, LLMMessage } from './llm.ts'; import { AiTool } from './tools.ts'; export type Memory = { name: string; description: string; content: string; embedding: number[]; titleEmbedding?: number[]; bodyEmbeddings?: number[][]; links: string[]; backlinks: string[]; }; type MemoryRef = { name: string; description: string; distance?: number; }; export declare function stripHeader(content: string): string; export declare class MemoryCache { private tree; private indexed; memories: Memory[]; nodes: MemoryNode[]; get length(): number; constructor(memories: Memory[]); private syncTree; search(query: number[], limit: number): MemoryRef[]; add(memory: Memory): void; update(memory: Memory): void; remove(name: string): void; rebuild(changed?: Memory[]): void; } export type MemoryOptions = { /** Memory object */ memory: Memory[] | MemoryCache; /** Inject N memories into the system prompt */ inject?: boolean; /** expose recall tool to LLM */ tool?: boolean; /** Update memory on compression */ update?: boolean; /** Max context size of memories to inject to each call (removed immediately after use) */ maxTokens?: number; }; export declare class MemoryManager { private llm; private mergeLock; private queues; private recentlyTouched; tools: { forget: (memories: Memory[] | MemoryCache) => AiTool; read: (memories: Memory[] | MemoryCache) => AiTool; search: (memories: Memory[] | MemoryCache) => AiTool; }; constructor(llm: any); static normalize(m?: Memory[] | MemoryCache | MemoryOptions): { /** Memory object */ memory: Memory[] | MemoryCache; inject: boolean; tool: boolean; update: boolean; /** Max context size of memories to inject to each call (removed immediately after use) */ maxTokens?: number; } | null; private stage; private resolveSubject; private factAgent; private getWeekStart; private journalDescription; private getIncompleteTodos; private listNodes; private mergeAgent; private reconcile; private docAgent; private parseFrontmatter; private touchHeader; private writeFrontmatter; decay(): void; touch(name: string, ttl?: number): void; forget(name: string, memories: Memory[] | MemoryCache): boolean; recollect(query: string, memories: Memory[] | MemoryCache, limit?: number, graphDepth?: number): Promise; memorize(history: LLMMessage[], memories: Memory[] | MemoryCache, options: LLMRequest): Promise; reconcileAll(memories: Memory[] | MemoryCache, options: LLMRequest, scope?: 'touched' | 'all'): Promise; } export {};