/** * loadSnapshot — read-side stage for Causal memory. * * Embeds the user's current question, searches the store for the most * similar past run, projects the snapshot per `SnapshotProjection`, * and writes the formatted result to `scope.formatted` so the * downstream slot subflow injects it as a system message. * * Reads from scope: `identity`, `messages` (or `newMessages` fallback) * Writes to scope: `formatted` — array of `LLMMessage` to inject * * Strict-threshold semantics: * When `minScore` is set and no past snapshot meets it, returns an * empty `formatted`. NO fallback — garbage past context is worse than * no context. * * Empty-query handling: * No user message → no embedding → no search → empty result. */ import type { TypedScope } from 'footprintjs'; import type { MemoryStore } from '../store/index.js'; import type { Embedder } from '../embedding/index.js'; import type { MemoryState } from '../stages/index.js'; import { type SnapshotProjection } from '../define.types.js'; export interface LoadSnapshotConfig { /** Vector-capable store. Must implement `search()`. */ readonly store: MemoryStore; /** Embedder used to vectorize the current query. */ readonly embedder: Embedder; /** Stable id of the embedder — filters cross-model results out. */ readonly embedderId?: string; /** Top-k snapshots to retrieve. Default 1 (most-relevant past run). */ readonly topK?: number; /** * Minimum cosine score [-1, 1]. Strict — entries below this are * dropped. When no entry meets the threshold, the stage emits no * messages (no fallback). Default 0.7. */ readonly minScore?: number; /** * Slice of the snapshot to project. Default `'decisions'` — * decision evidence is the highest-signal field for "why" follow-ups. */ readonly projection?: SnapshotProjection; /** * Optional override for query extraction. Default: last user * message in `scope.messages` (current turn's question). */ readonly queryFrom?: (scope: TypedScope) => string; } export declare function loadSnapshot(config: LoadSnapshotConfig): (scope: TypedScope) => Promise; //# sourceMappingURL=loadSnapshot.d.ts.map