use crate::naorix::naorix_memory::{MemoryTrace, MemoryBank};
use std::fs;
use std::path::Path;
pub fn recall_best_match(
vaults_dir: &str,
current_tone: &str,
current_intent: &str,
current_reem: &str,
) -> Option<MemoryTrace> {
let mut best_match: Option<MemoryTrace> = None;
let mut best_score = 0;
if let Ok(entries) = fs::read_dir(vaults_dir) {
for entry in entries.flatten() {
let path = entry.path();
if path.is_file() && path.extension().and_then(|s| s.to_str()) == Some("vaultmem") {
if let Ok(mem_str) = fs::read_to_string(&path) {
if let Ok(mem): Result<MemoryTrace, _> = serde_json::from_str(&mem_str) {
let score = score_match(&mem, current_tone, current_intent, current_reem);
if score > best_score {
best_score = score;
best_match = Some(mem);
}
}
}
}
}
}
best_match
}
fn score_match(mem: &MemoryTrace, tone: &str, intent: &str, reem: &str) -> u32 {
let mut score = 0;
if mem.tone == tone {
score += 3;
}
if mem.intent == intent {
score += 2;
}
if mem.reem_code == reem {
score += 1;
}
score
}