import type { MemoryStore } from '../store/index.js'; import type { MemoryPipeline } from './types.js'; import type { Embedder } from '../embedding/types.js'; export interface SemanticPipelineConfig { /** Vector-capable store. Must implement `search()`. */ readonly store: MemoryStore; /** Embedder used for both write-side indexing and read-side query. */ readonly embedder: Embedder; /** * Stable id for the embedder — attached to written entries and used * as a filter at read time so a later embedder swap doesn't produce * cross-model similarity pollution. Example: `"openai-text-embedding-3-small"`. */ readonly embedderId?: string; /** Top-k entries to consider per turn. Default 20; picker narrows further. */ readonly k?: number; /** Cosine threshold below which matches are dropped. Default none. */ readonly minScore?: number; /** Tier filter for retrieval. */ readonly tiers?: ReadonlyArray<'hot' | 'warm' | 'cold'>; /** Tier to tag writes with. */ readonly writeTier?: 'hot' | 'warm' | 'cold'; /** TTL for written entries (ms from write time). */ readonly writeTtlMs?: number; /** Forwarded to `pickByBudget`. */ readonly reserveTokens?: number; readonly minimumTokens?: number; readonly maxEntries?: number; /** Forwarded to `formatDefault`. */ readonly formatHeader?: string; readonly formatFooter?: string; } /** * Build the semantic read + write pipelines sharing a single store. * Returns `{ read, write }` ready to pass to `Agent.memory()` via the appropriate `defineMemory` config (or used directly via `mountMemoryRead`/`mountMemoryWrite`). */ export declare function semanticPipeline(config: SemanticPipelineConfig): MemoryPipeline;