Graphorin API reference v0.12.1
Graphorin API reference / @graphorin/memory / / ConsolidatorConfig
Interface: ConsolidatorConfig
Defined in: packages/memory/src/consolidator/types.ts:148
Locked-down configuration accepted by createConsolidator(...).
Stable
Properties
| Property | Modifier | Type | Description | Defined in |
|---|---|---|---|---|
autoPromoteExtraction | readonly | boolean | Auto-promotion policy (MCON-2). When true, the standard phase admits an injection-clean extraction fact as active instead of quarantined, so routine distillation surfaces in default recall without a manual memory review --promote. Injection-flagged facts always stay quarantined - the security gate is preserved - and episodes / insights / induced procedures are unaffected (they remain quarantined-until-validated). Defaults off at every tier: it trades the fail-safe default for convenience and is an explicit operator opt-in. | packages/memory/src/consolidator/types.ts:238 |
budgetResetSemantics | readonly | "utc" | "local" | "sliding-24h" | - | packages/memory/src/consolidator/types.ts:167 |
ceilings | readonly | ConsolidatorCeilings | - | packages/memory/src/consolidator/types.ts:152 |
cheapModel | readonly | string | null | Advisory label for the standard phase's model - recorded on spans / run telemetry only (MCON-7). Routing happens via CreateConsolidatorOptions.cheapProvider; this string disables nothing. | packages/memory/src/consolidator/types.ts:160 |
contextualRetrieval | readonly | ContextualRetrievalMode | Contextual retrieval for facts written by the standard phase (P1-3). 'late-chunk' (default at every tier) relies on the offline situating-context prefix the shared SemanticMemory computes for every write - no extra LLM call. 'llm' is the opt-in enrichment: the standard phase spends one budgeted cheap-model call per additive write to author a 1-2 sentence situating prefix, then passes it as the write's index text. 'off' indexes the bare text. The 'llm' mode is consolidator-only by construction - the hot write path never has a provider for contextualization. | packages/memory/src/consolidator/types.ts:277 |
curatedBlocks | readonly | readonly ResolvedCuratedBlock[] | Curated working blocks the deep phase maintains (wave-D D3) - the generalisation of the learned-context pass to a registered list. Resolved: the learnedContext: true sugar contributes a learned_context entry; labels are unique and never profile. Empty ⇒ no curated-block rewrites run. | packages/memory/src/consolidator/types.ts:296 |
decayArchiveThreshold | readonly | number | - | packages/memory/src/consolidator/types.ts:176 |
decayCapacity | readonly | number | null | Capacity-bounded eviction target for the light phase (X-1). When set, each light pass archives the lowest-salience live facts in the LRU decay window down to this many - cost / staleness control, not an accuracy lever. null (the default at every tier) leaves storage unbounded, so behaviour is identical to pre-X-1. Archiving is a soft, recoverable move; nothing is hard-deleted. | packages/memory/src/consolidator/types.ts:185 |
decayTauDays | readonly | number | - | packages/memory/src/consolidator/types.ts:175 |
deepModel | readonly | string | null | Advisory label for the deep phase's model - telemetry only (MCON-7). Routing happens via CreateConsolidatorOptions.deepProvider. | packages/memory/src/consolidator/types.ts:166 |
dlqBaseBackoffMs | readonly | number | - | packages/memory/src/consolidator/types.ts:210 |
dlqMaxBackoffMs | readonly | number | - | packages/memory/src/consolidator/types.ts:211 |
dlqMaxRetries | readonly | number | - | packages/memory/src/consolidator/types.ts:209 |
formEpisodes | readonly | boolean | Auto-form a quarantined episode from each processed standard-phase slice (P1-2). Defaults on at the standard+ tiers, off at free / cheap / custom. The episode summary is one budgeted LLM call; when the budget is exhausted (or no episodic tier is wired) the phase degrades to fact-only behaviour. | packages/memory/src/consolidator/types.ts:219 |
importanceScoring | readonly | boolean | Ask the episode-summarization call for an LLM importance score (1-10, normalized to [0, 1]) so episodic triple-signal retrieval (recency × relevance × importance) runs on all three signals (P1-2). Importance is always a soft signal - it never gates retention. Defaults track formEpisodes. | packages/memory/src/consolidator/types.ts:227 |
importanceThreshold | readonly | number | Sum of recent episode importance (each in [0, 1]) at or above which reflection fires. Below it the pass makes no LLM call. Defaults to 3. | packages/memory/src/consolidator/types.ts:255 |
ingestGate | readonly | | MemoryIngestGate | null | B3 (item 15): deterministic pre-extraction admission gate. null (default) admits everything. See MemoryIngestGate. | packages/memory/src/consolidator/types.ts:173 |
learnedContext | readonly | boolean | Maintain the learned-context digest block (D3): after the deep phase, one budgeted LLM call rewrites the reserved learned_context working block from the previous digest + recent episodes / active insights / active procedures, so the system prompt carries a compact standing summary. Defaults off at every tier (Wave-D trial) - a no-op without a working tier handle. | packages/memory/src/consolidator/types.ts:286 |
learnedContextMaxChars | readonly | number | Character bound enforced on the learned-context digest. Default 1200. | packages/memory/src/consolidator/types.ts:288 |
lockWaitMs | readonly | number | - | packages/memory/src/consolidator/types.ts:174 |
maxDeepConflictsPerRun | readonly | number | - | packages/memory/src/consolidator/types.ts:208 |
maxStandardBatchSize | readonly | number | - | packages/memory/src/consolidator/types.ts:193 |
maxTranscriptChars | readonly | number | Input-side transcript budget for the standard phase, in characters (W-081; chars/4 is the package's deterministic token proxy, so the 60k default approximates 15k tokens). maxStandardBatchSize bounds only the MESSAGE COUNT of a slice; without a size budget a batch of near-cap messages can render to hundreds of kilobytes, overflow a cheap-tier model context on every retry and wedge the cursor permanently. A transcript over this budget is half-split BEFORE the provider call (same convergent recursion as the finishReason: 'length' output handling); a single message that alone exceeds the budget is tail-truncated and recorded on the phase span. Conservative for CJK scripts by design. | packages/memory/src/consolidator/types.ts:207 |
noiseFilters | readonly | readonly ("default" | "minimal" | "none")[] | - | packages/memory/src/consolidator/types.ts:168 |
onExceed | readonly | OnBudgetExceed | - | packages/memory/src/consolidator/types.ts:153 |
phases | readonly | readonly ConsolidatorPhase[] | - | packages/memory/src/consolidator/types.ts:151 |
profileProjection | readonly | ResolvedProfileProjectionConfig | null | Profile-projection pass configuration (wave-D D2): after the curated-block passes, one budgeted LLM call projects ACTIVE facts into the reserved read-only profile working block (topic / sub-topic / content slots with fact-id provenance). null (the default at every tier) disables the pass. Configured through createMemory({ profile }), not per-tier. | packages/memory/src/consolidator/types.ts:305 |
promotion | readonly | ResolvedPromotionPolicy | null | Deterministic quarantine-exit policy (wave-D D4, D-7): the deep phase promotes quarantined facts whose recall evidence clears every threshold, through the audited SemanticMemory.validate path. null (default at every tier) disables the step. Enabling it REQUIRES the B3 ingest gate (fail-closed config check in createMemory). | packages/memory/src/consolidator/types.ts:314 |
reflection | readonly | boolean | Run the deep-phase reflection pass (P1-1): when accumulated episode importance crosses importanceThreshold, synthesize higher-order, cited insights over recent memories (Generative Agents). Insights land quarantined + provenance: 'reflection' and are ranked below the facts they cite. Defaults on at the full tier only (off at free / cheap / standard / custom) - it is the most LLM-intensive phase. A no-op without an episodic tier or an insight-capable storage adapter. | packages/memory/src/consolidator/types.ts:249 |
reflectionMaxQuarantinedInsights | readonly | number | W-082: cap on the unreviewed (quarantined) insight queue. Quarantined insights are exempt from reflection pass-decay - their decay clock starts at validation - and this bound keeps the review queue from growing without limit: beyond it the oldest quarantined insights are pruned. Defaults to 100. | packages/memory/src/consolidator/types.ts:265 |
reflectionMaxQuestions | readonly | number | Upper bound on salient questions reflection asks per pass. Defaults to 3. | packages/memory/src/consolidator/types.ts:257 |
salienceWeights | readonly | SalienceWeights | Weights for the multi-signal salience score (X-1) that orders both threshold archiving and capacity eviction. Defaults to DEFAULT_SALIENCE_WEIGHTS; with neutral importance, active status, and first-party provenance salience equals plain retention. | packages/memory/src/consolidator/types.ts:192 |
tier | readonly | ConsolidatorTier | - | packages/memory/src/consolidator/types.ts:150 |
triggers | readonly | readonly ConsolidatorTriggerSpec[] | - | packages/memory/src/consolidator/types.ts:149 |