fix: add deferred trim to system message handler
Build Nanobot OAuth / build (pull_request) Successful in 6m58s
Build Nanobot OAuth / cleanup (pull_request) Has been skipped

System messages (including subagents) can trigger memory_consolidate,
which sets _trim_checkpoint. The system handler must also check and
apply deferred trims to prevent unbounded session growth.

Addresses review feedback from PR #17.
This commit is contained in:
2026-03-04 15:15:53 +00:00
parent dc94aa76cc
commit e782318338
+10
View File
@@ -803,6 +803,16 @@ class AgentLoop:
session.add_raw_message(chain_msg)
self.sessions.save(session)
# Deferred trim: same logic as _process_message
# System messages (including subagents) can trigger consolidation
checkpoint = getattr(session, '_trim_checkpoint', None)
if checkpoint is not None:
old_size = len(session.messages)
session.messages = session.messages[checkpoint:]
session._trim_checkpoint = None
self.sessions.save(session)
logger.info(f"Deferred trim applied: {old_size} -> {len(session.messages)} messages (checkpoint={checkpoint})")
# Return original content (not signed) for outbound, but with suppressed metadata
return OutboundMessage(
channel=origin_channel,