extract method

Future<String> extract(
  1. List<Message> messages
)

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