remem-ai 0.6.81

Local-first coding agent memory for Claude Code and OpenAI Codex
Documentation
use crate::retrieval::memory_search::FtsMemoryHit;
use crate::retrieval::search::common::WeightedRankedHit;

pub(super) fn fts_normalized_hits(hits: &[FtsMemoryHit]) -> Vec<WeightedRankedHit> {
    let best = hits
        .iter()
        .map(|hit| hit.score)
        .fold(f64::INFINITY, f64::min);
    let worst = hits
        .iter()
        .map(|hit| hit.score)
        .fold(f64::NEG_INFINITY, f64::max);
    let spread = worst - best;
    hits.iter()
        .map(|hit| {
            if spread.abs() < f64::EPSILON {
                WeightedRankedHit::rank_only(hit.memory.id)
            } else {
                WeightedRankedHit::scored(
                    hit.memory.id,
                    ((worst - hit.score) / spread).clamp(0.0, 1.0),
                )
            }
        })
        .collect()
}