/** * [INPUT]: NanomemConfig, optional LlmFn * [OUTPUT]: NanoMemEngine — unified API for memory CRUD, injection, consolidation * [POS]: Facade layer — composes store, scoring, eviction, update, linking, privacy, extraction, consolidation * * Host products create an engine instance and call its methods. * No dependency on any specific AI framework — LLM is pluggable. */ import { type NanomemConfig } from "./config.js"; import type { Episode, ExtractedItem, FullInsightsReport, InsightsReport, LlmFn, MemoryEntry, MemoryScope, Meta, WorkEntry } from "./types.js"; export declare class NanoMemEngine { readonly cfg: NanomemConfig; private llmFn?; private knowledgePath; private lessonsPath; private preferencesPath; private facetsPath; private workPath; private metaPath; private episodesDir; constructor(overrides?: Partial, llmFn?: LlmFn); setLlmFn(fn: LlmFn): void; extractAndStore(conversation: string, project: string): Promise; extractAndStoreWork(conversation: string, project: string, sessionGoal?: string): Promise; saveEpisode(ep: Episode): Promise; consolidate(): Promise; getMemoryInjection(project: string, contextTags: string[], scope?: MemoryScope): Promise; getStats(): Promise<{ knowledge: number; lessons: number; preferences: number; facets: number; episodes: number; work: number; totalSessions: number; }>; getAllEntries(): Promise<{ knowledge: MemoryEntry[]; lessons: MemoryEntry[]; preferences: MemoryEntry[]; facets: MemoryEntry[]; }>; getAllWork(): Promise; getAllEpisodes(): Promise; searchEntries(query: string, scope?: MemoryScope): Promise; forgetEntry(id: string): Promise; exportAll(): Promise<{ knowledge: MemoryEntry[]; lessons: MemoryEntry[]; preferences: MemoryEntry[]; facets: MemoryEntry[]; work: WorkEntry[]; episodes: Episode[]; meta: Meta; }>; generateFullInsights(): Promise; generateInsights(): Promise; private generateRecommendations; private generateRulesBasedRecommendations; private filterAndCleanEntries; private filterAndCleanWork; private reinforceEntries; private reinforceWork; private reconsolidateIfNeeded; private buildInjectionText; }