shouldAutoCompact function

bool shouldAutoCompact(
  1. List<CompactMessage> messages,
  2. String model,
  3. int contextWindow,
  4. int tokenCount, {
  5. String? querySource,
  6. bool autoCompactEnabled = true,
  7. int snipTokensFreed = 0,
})

Determine whether auto-compact should run.

Implementation

bool shouldAutoCompact(
  List<CompactMessage> messages,
  String model,
  int contextWindow,
  int tokenCount, {
  String? querySource,
  bool autoCompactEnabled = true,
  int snipTokensFreed = 0,
}) {
  // Recursion guards
  if (querySource == 'session_memory' || querySource == 'compact') {
    return false;
  }
  if (!autoCompactEnabled) return false;

  final effectiveTokenCount = tokenCount - snipTokensFreed;
  final state = calculateTokenWarningState(
    effectiveTokenCount,
    model,
    contextWindow,
    autoCompactEnabled: autoCompactEnabled,
  );

  return state.isAboveAutoCompactThreshold;
}