import type { MemoryStore } from '../store/index.js'; import type { MemoryPipeline } from './types.js'; export interface DefaultPipelineConfig { /** The store both subflows share. */ readonly store: MemoryStore; /** How many recent entries to load per turn. Default 20 (see loadRecent). */ readonly loadCount?: number; /** * Token reserve for prompt headers / new user message / safety margin. * Default 256. */ readonly reserveTokens?: number; /** Minimum memory-token budget before the picker skips injection. Default 100. */ readonly minimumTokens?: number; /** * Hard cap on entries selected per turn, independent of tokens. Helps * with "lost-in-the-middle" degradation. Default: no cap. */ readonly maxEntries?: number; /** * Optional tier constraint — e.g. `['hot']` to read only entries * marked `hot` by the write side. Combines with `loadCount` (cap * AFTER filter). */ readonly tiers?: ReadonlyArray<'hot' | 'warm' | 'cold'>; /** * Optional tier written entries are tagged with. Matches the `tiers` * read filter when both sides want to coordinate tier policy. */ readonly writeTier?: 'hot' | 'warm' | 'cold'; /** * Optional write-side TTL in milliseconds from `now`. Every written * entry expires this long after storage. Useful for compliance * retention windows. */ readonly writeTtlMs?: number; /** * Override for the formatter's header text. Omit to use the default * "Relevant context from prior conversations..." phrasing. */ readonly formatHeader?: string; /** Override for the formatter's footer text. Default: empty. */ readonly formatFooter?: string; } /** * Build the default read + write pipelines sharing a single store. * Returns two FlowChart subflows ready to be mounted by the wire layer. */ export declare function defaultPipeline(config: DefaultPipelineConfig): MemoryPipeline;