fix: implement pending_messages cleanup to prevent unbounded growth
Fixes #353 - Observations not being saved due to incomplete pending messages implementation Changes: - PendingMessageStore.markProcessed() now clears tool_input and tool_response - PendingMessageStore.cleanupProcessed() changed from time-based to count-based retention - Keeps most recent 100 processed messages for UI display - SDKAgent.processSDKResponse() calls cleanup after marking messages processed This prevents the database from growing unbounded with duplicate transcript data. The pending_messages table now only stores full transcripts for pending/processing messages, while processed messages keep metadata only. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -409,6 +409,14 @@ export class SDKAgent {
|
||||
count: session.pendingProcessingIds.size
|
||||
});
|
||||
session.pendingProcessingIds.clear();
|
||||
|
||||
// Clean up old processed messages (keep last 100 for UI display)
|
||||
const deletedCount = pendingMessageStore.cleanupProcessed(100);
|
||||
if (deletedCount > 0) {
|
||||
logger.debug('SDK', 'Cleaned up old processed messages', {
|
||||
deletedCount
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Broadcast activity status after processing (queue may have changed)
|
||||
|
||||
Reference in New Issue
Block a user