Class MemoryConsolidationPipeline

java.lang.Object
com.tnsai.memory.MemoryConsolidationPipeline

public class MemoryConsolidationPipeline extends Object
Consolidates conversation memory by summarizing older messages.

This pipeline can be triggered:

Consolidation logic:

  1. Reads all messages from the memory store
  2. Identifies old messages (beyond the recent window)
  3. Generates an extractive summary of old messages
  4. Replaces old messages with a single summary message
  5. 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 Details

    • MemoryConsolidationPipeline

      public MemoryConsolidationPipeline(MemoryStore memoryStore)
      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 consolidate
      recentWindow - number of recent messages to preserve
      minMessagesForConsolidation - 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

      public void startAutoConsolidation(Duration interval)
      Starts automatic consolidation at fixed intervals.

      Uses a single-thread scheduler. For a TenantAware store, 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

      public Instant 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