/** * loadFacts — read-side stage that loads stored `Fact` entries into * `scope.loadedFacts`. * * Reads from scope: `identity` * Writes to scope: `loadedFacts` (appends — does not replace) * * Unlike `loadRecent` (which returns ALL entries and lets downstream * stages filter), `loadFacts` queries the store and keeps only entries * whose id matches the `fact:` prefix. Facts are typically few dozen * at most per identity — a linear scan after a bounded `list` call is * cheap. * * Why append, not replace? * Same contract as `loadRecent` — pipelines may combine multiple * load stages (e.g. facts + recent messages + beats). Appending lets * each contribute without coordination. * * Note: this stage writes `loadedFacts` (a separate field from * `loaded`) because fact entries have a different payload type * (`MemoryEntry`) than message entries (`MemoryEntry`). * Keeping them separate prevents format stages from misrouting entries. */ import type { TypedScope } from 'footprintjs'; import type { MemoryStore } from '../store/index.js'; import type { FactPipelineState } from './extractFacts.js'; export interface LoadFactsConfig { /** The store to read from. */ readonly store: MemoryStore; /** * Upper bound on the `list` call's page size. Adapters may cap this * lower. Defaults to 100 — enough for typical identity/preference * inventories. Fact pipelines that accumulate task statuses or * commitments should raise this. */ readonly limit?: number; /** * Optional tier filter. When set, only loads facts tagged with one * of these tiers. Matches the `loadRecent` / `loadRelevant` API. */ readonly tiers?: ReadonlyArray<'hot' | 'warm' | 'cold'>; } export declare function loadFacts(config: LoadFactsConfig): (scope: TypedScope) => Promise; //# sourceMappingURL=loadFacts.d.ts.map