evaluateTimeBasedTrigger function
({TimeBasedMCConfig config, double gapMinutes})?
evaluateTimeBasedTrigger(
- List<
CompactMessage> messages, - String? querySource
Evaluate whether the time-based microcompact trigger should fire.
Implementation
({double gapMinutes, TimeBasedMCConfig config})? evaluateTimeBasedTrigger(
List<CompactMessage> messages,
String? querySource,
) {
final config = getTimeBasedMCConfig();
if (!config.enabled ||
querySource == null ||
!querySource.startsWith('repl_main_thread')) {
return null;
}
CompactMessage? lastAssistant;
for (int i = messages.length - 1; i >= 0; i--) {
if (messages[i].type == MessageRole.assistant) {
lastAssistant = messages[i];
break;
}
}
if (lastAssistant == null) return null;
final gapMinutes = DateTime.now()
.difference(lastAssistant.timestamp)
.inMinutes
.toDouble();
if (!gapMinutes.isFinite || gapMinutes < config.gapThresholdMinutes) {
return null;
}
return (gapMinutes: gapMinutes, config: config);
}