retrieveByContext method
Retrieves memories from all stores matching the context query.
Results are merged and ranked by composite score.
Implementation
List<Memory> retrieveByContext(
String context, {
int maxResults = 15,
}) {
final episodics = episodic.search(context, maxResults: maxResults);
final semantics = semantic.search(context, maxResults: maxResults);
final workingMems = working.search(context);
// Merge and de-duplicate by content
final seen = <String>{};
final all = [...workingMems, ...episodics, ...semantics];
final unique = all.where((m) => seen.add(m.content)).toList();
// Sort by composite score: strength × recency
unique.sort((a, b) {
final scoreA = a.strength * _recencyFactor(a.timestamp);
final scoreB = b.strength * _recencyFactor(b.timestamp);
return scoreB.compareTo(scoreA);
});
return unique.take(maxResults).toList();
}