Class MemoryConsolidationPipeline
This pipeline can be triggered:
- Manually via
consolidate() - Automatically at configurable intervals via
startAutoConsolidation(Duration) - On lifecycle events via
onIdle()andonSessionEnd()
Consolidation logic:
- Reads all messages from the memory store
- Identifies old messages (beyond the recent window)
- Generates an extractive summary of old messages
- Replaces old messages with a single summary message
- Preserves the recent window intact
Thread safety: All consolidation operations are guarded by an atomic flag
to prevent concurrent consolidation runs. Messages appended by concurrent
writers while a consolidation is in progress are preserved via a
snapshot-merge before the store is rewritten through a single
MemoryStore.replaceHistory(List) call (TAN-5180).
For a TenantAware store, the pipeline captures the active tenant
when it is constructed. If construction is unscoped, automatic scheduling
captures the tenant active when startAutoConsolidation(Duration)
is called instead; manual consolidation continues to honor its caller scope.
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionMemoryConsolidationPipeline(MemoryStore memoryStore) Creates a pipeline with default settings.MemoryConsolidationPipeline(MemoryStore memoryStore, int recentWindow, int minMessagesForConsolidation) Creates a pipeline with custom settings. -
Method Summary
Modifier and TypeMethodDescriptionbooleanPerforms a consolidation pass on the memory store.Returns the timestamp of the last successful consolidation.booleanReturns whether auto-consolidation is currently active.booleanReturns whether a consolidation is currently in progress.voidonIdle()Lifecycle hook: called when the agent becomes idle.voidLifecycle hook: called when the agent session ends.voidstartAutoConsolidation(Duration interval) Starts automatic consolidation at fixed intervals.voidStops automatic consolidation.
-
Constructor Details
-
MemoryConsolidationPipeline
Creates a pipeline with default settings.- Parameters:
memoryStore- the memory store to consolidate
-
MemoryConsolidationPipeline
public MemoryConsolidationPipeline(MemoryStore memoryStore, int recentWindow, int minMessagesForConsolidation) Creates a pipeline with custom settings.- Parameters:
memoryStore- the memory store to consolidaterecentWindow- number of recent messages to preserveminMessagesForConsolidation- minimum messages before consolidation triggers
-
-
Method Details
-
consolidate
public boolean consolidate()Performs a consolidation pass on the memory store.Only runs if there are enough messages and no other consolidation is already in progress.
- Returns:
- true if consolidation was performed, false if skipped
-
startAutoConsolidation
Starts automatic consolidation at fixed intervals.Uses a single-thread scheduler. For a
TenantAwarestore, the scheduler uses the tenant captured at construction or, when no tenant was active then, the tenant active at this method call.- Parameters:
interval- the interval between consolidation checks
-
stopAutoConsolidation
public void stopAutoConsolidation()Stops automatic consolidation. -
onIdle
public void onIdle()Lifecycle hook: called when the agent becomes idle. Triggers a consolidation pass. -
onSessionEnd
public void onSessionEnd()Lifecycle hook: called when the agent session ends. Triggers a final consolidation pass and stops auto-consolidation. -
isAutoConsolidationActive
public boolean isAutoConsolidationActive()Returns whether auto-consolidation is currently active.- Returns:
- true if auto-consolidation is running
-
getLastConsolidationTime
Returns the timestamp of the last successful consolidation.- Returns:
- last consolidation time, or null if never consolidated
-
isConsolidating
public boolean isConsolidating()Returns whether a consolidation is currently in progress.- Returns:
- true if consolidating
-