/** * Composite memory backend — the architectural seam for a future graph layer. * * Today, memory is pgvector only. Tomorrow, a Graphiti or Neo4j-agent-memory * adapter can implement the same {@link MemoryBackend} interface and be * composed with the vector store here — without touching the tool * definitions, prompts, or host wiring. * * Fan-out strategy (simple on purpose for Phase 1): * - `search`: query every backend in parallel, merge, dedupe by id, sort by * score, cap at maxResults. Graph hits and vector hits are interleaved by * score — the LLM sees one ranked list. * - `get`: the vector store owns file paths; graph stores don't. First * backend that returns a non-null result wins. In practice this will almost * always be the vector store, since append paths live there. * - `append`: fan out to every backend. Vector store persists the note, * graph backend runs its own extraction pipeline. An append failure in any * single backend is surfaced — we fail loud rather than silently dropping * writes. */ import type { MemoryAppendInput, MemoryBackend, MemoryEntry, MemoryGetOptions, MemoryHealth, MemoryReadResult, MemoryScope, MemorySearchOptions } from './types'; export declare class CompositeMemoryBackend implements MemoryBackend { readonly kind: "composite"; private readonly backends; constructor(backends: MemoryBackend[]); search(scope: MemoryScope, query: string, opts?: MemorySearchOptions): Promise; get(scope: MemoryScope, opts: MemoryGetOptions): Promise; append(scope: MemoryScope, input: MemoryAppendInput): Promise; health(): Promise; }