shouldExtractMemory method

bool shouldExtractMemory(
  1. List<SessionMessage> messages
)

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;
}