/** * Anchored-memory (notes) store — CRUD for .openlore/memory/notes.json. * (change: add-code-anchored-memory-staleness) * * Deliberately separate from the decision store and commit gate: a `remember` * note is a durable, code-anchored fact, not an architectural decision, and must * never touch the consolidation/sync pipeline. Shared by the remember/recall * handlers and the memory-staleness drift detector. */ import type { MemoryStore, StructuralAnchor } from '../../types/index.js'; export declare function memoryDir(rootPath: string): string; /** * Load the memory store. A torn or malformed store is quarantined and read as empty. * With `readOnly`, a gate that must not change the working tree, and must not read * a broken store as "no memories", gets an error instead (add-memory-anchor-verdicts). */ export declare function loadMemoryStore(rootPath: string, opts?: { readOnly?: boolean; }): Promise; export declare function saveMemoryStore(rootPath: string, store: MemoryStore): Promise; /** * Concurrency-safe read-modify-write of the memory store. Loads, applies * `mutate` (a pure id-keyed merge), and commits under compare-and-swap so that * two concurrent `remember` calls never lose a write — on a conflict the mutate * is re-applied to the newer store. (harden-memory-integrity-invariant) */ export declare function updateMemoryStore(rootPath: string, mutate: (store: MemoryStore) => MemoryStore): Promise; /** * Stable 8-char id derived from content + resolved anchors * (add-bitemporal-typed-memory-operations). Re-recording the same fact about the same * code yields the same id (updates in place); the same content on a different anchor is * a distinct record. Keying on anchors, not the record timestamp, is what makes dedup * exact and deterministic. */ export declare function makeMemoryId(content: string, anchors: readonly StructuralAnchor[]): string; //# sourceMappingURL=memory-store.d.ts.map