extract method
Extract session memory from conversation messages. Returns the extracted markdown summary.
Implementation
Future<String> extract(List<Message> messages) async {
_state.extractionInProgress = true;
try {
final summary = _buildSummary(messages);
// Write to disk
final file = File(summaryPath);
await file.parent.create(recursive: true);
await file.writeAsString(summary);
// Update state
if (messages.isNotEmpty) {
_state.lastSummarizedMessageId = messages.last.id;
}
_state.initialized = true;
_state.tokensSinceLastExtraction = 0;
_state.toolCallsSinceLastExtraction = 0;
_state.extractionCount++;
return summary;
} finally {
_state.extractionInProgress = false;
}
}