extractFromCodeChange method

List<MemoryCandidate> extractFromCodeChange(
  1. String diff,
  2. String description
)

Extract from a code diff with an optional description.

Implementation

List<MemoryCandidate> extractFromCodeChange(String diff, String description) {
  final combined = '$description\n$diff';
  final candidates = _matchPatterns(combined, ExtractionSource.codeChange);

  // Try to pull the file path from the diff header.
  final fileMatch = RegExp(
    r'^[+\-]{3} [ab]/(.+)$',
    multiLine: true,
  ).firstMatch(diff);
  final relatedFile = fileMatch?.group(1);

  if (relatedFile != null) {
    for (var i = 0; i < candidates.length; i++) {
      final c = candidates[i];
      candidates[i] = MemoryCandidate(
        content: c.content,
        source: c.source,
        category: c.category,
        confidence: c.confidence,
        reasoning: c.reasoning,
        relatedFile: relatedFile,
      );
    }
  }

  return _filterAndCap(candidates);
}