extractFromConversation method
Extract memory candidates from a list of conversation messages.
Each message is expected to be a map with at least a role and
content key.
Implementation
List<MemoryCandidate> extractFromConversation(
List<Map<String, dynamic>> messages,
) {
final candidates = <MemoryCandidate>[];
for (final msg in messages) {
final content = msg['content']?.toString() ?? '';
if (content.length < 10) continue;
// User-explicit memories.
if (_isExplicitMemory(content)) {
candidates.add(
MemoryCandidate(
content: _cleanExplicitMemory(content),
source: ExtractionSource.userExplicit,
category: classifyMemory(content).category,
confidence: 0.95,
reasoning: 'User explicitly asked to remember this.',
),
);
continue;
}
candidates.addAll(_matchPatterns(content, ExtractionSource.conversation));
}
return _filterAndCap(candidates);
}