vios_app 0.1.1

Small JSON vaults: Argon2id + AES-GCM, with optional AAD binding.
Documentation
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
}