shouldExtractMemory method
Determine if session memory should be extracted now.
Implementation
bool shouldExtractMemory(List<SessionMessage> messages) {
final currentTokenCount = tokenCountWithEstimation(messages);
final s = state.value;
if (!s.isSessionMemoryInitialized) {
if (!s.hasMetInitializationThreshold(currentTokenCount)) return false;
state.value.markInitialized();
}
final hasMetTokenThreshold = s.hasMetUpdateThreshold(currentTokenCount);
final toolCallsSince = countToolCallsSince(
messages,
_lastMemoryMessageUuid,
);
final hasMetToolCallThreshold = toolCallsSince >= s.toolCallsBetweenUpdates;
final hasToolCallsInLast = hasToolCallsInLastAssistantTurn(messages);
final shouldExtract =
(hasMetTokenThreshold && hasMetToolCallThreshold) ||
(hasMetTokenThreshold && !hasToolCallsInLast);
if (shouldExtract) {
final lastMessage = messages.isNotEmpty ? messages.last : null;
if (lastMessage?.uuid != null) {
_lastMemoryMessageUuid = lastMessage!.uuid;
}
return true;
}
return false;
}