diff --git a/poc-memory/src/agents/defs.rs b/poc-memory/src/agents/defs.rs index 069bd89..1979a77 100644 --- a/poc-memory/src/agents/defs.rs +++ b/poc-memory/src/agents/defs.rs @@ -268,9 +268,12 @@ fn resolve( "siblings" | "neighborhood" => { let mut out = String::new(); let mut all_keys: Vec = Vec::new(); + let mut included_nodes: std::collections::HashSet = std::collections::HashSet::new(); const MAX_NEIGHBORS: usize = 25; for key in keys { + if included_nodes.contains(key) { continue; } + included_nodes.insert(key.clone()); let Some(node) = store.nodes.get(key.as_str()) else { continue }; let neighbors = graph.neighbors(key); @@ -325,6 +328,8 @@ fn resolve( let mut budget_exceeded = false; for (nbr, strength, _score) in &included { + if included_nodes.contains(nbr) { continue; } + included_nodes.insert(nbr.clone()); if let Some(n) = store.nodes.get(nbr.as_str()) { if budget_exceeded || out.len() > NEIGHBORHOOD_BUDGET { // Header-only: key + first non-empty line