ralph-coder 0.2.1

An agentic code generation CLI powered by multiple LLM backends
Documentation
use crate::memory::MemoryStore;

/// Store a key/value fact in project memory.
pub fn remember(memory: &mut MemoryStore, key: &str, value: &str) -> String {
    memory.upsert(key, value);
    format!("Remembered: {} = {}", key, value)
}

/// Search stored facts. Empty query returns all facts.
pub fn recall(memory: &MemoryStore, query: &str) -> String {
    if query.trim().is_empty() {
        let facts = memory.all_facts();
        if facts.is_empty() {
            return "No facts stored yet.".to_string();
        }
        let mut out = format!("All {} stored fact(s):\n\n", facts.len());
        for f in &facts {
            out.push_str(&format!("  {}: {}\n", f.key, f.value));
        }
        return out;
    }
    let results = memory.search(query);
    if results.is_empty() {
        return format!("No facts found matching '{}'.", query);
    }
    let mut out = format!("Found {} fact(s) matching '{}':\n\n", results.len(), query);
    for f in &results {
        out.push_str(&format!("  {}: {}\n", f.key, f.value));
    }
    out
}