fix(memory): preserve unprocessed dream history
This commit is contained in:
+22
-2
@@ -433,13 +433,33 @@ class MemoryStore:
|
||||
]
|
||||
|
||||
def compact_history(self) -> None:
|
||||
"""Drop oldest entries if the file exceeds *max_history_entries*."""
|
||||
"""Drop oldest processed entries without discarding pending Dream input."""
|
||||
if self.max_history_entries <= 0:
|
||||
return
|
||||
entries = self._read_entries()
|
||||
if len(entries) <= self.max_history_entries:
|
||||
return
|
||||
kept = entries[-self.max_history_entries:]
|
||||
last_dream_cursor = self.get_last_dream_cursor()
|
||||
first_unprocessed = next(
|
||||
(
|
||||
index
|
||||
for index, entry in enumerate(entries)
|
||||
if (
|
||||
(cursor := self._valid_cursor(entry.get("cursor"))) is not None
|
||||
and cursor > last_dream_cursor
|
||||
)
|
||||
),
|
||||
len(entries),
|
||||
)
|
||||
keep_from = min(len(entries) - self.max_history_entries, first_unprocessed)
|
||||
kept = entries[keep_from:]
|
||||
if len(kept) > self.max_history_entries:
|
||||
logger.warning(
|
||||
"History compaction retained {} unprocessed entries beyond the configured "
|
||||
"limit of {}",
|
||||
len(kept),
|
||||
self.max_history_entries,
|
||||
)
|
||||
self._write_entries(kept)
|
||||
|
||||
# -- JSONL helpers -------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user