retrieveByContext method

List<Memory> retrieveByContext(
  1. String context, {
  2. int maxResults = 15,
})

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