remem-ai 0.5.199

Local-first coding agent memory for Claude Code and OpenAI Codex
Documentation
use std::fs;

use crate::summarize::input::extract_last_assistant_message;

#[test]
fn extract_last_assistant_message_skips_malformed_lines() {
    let path = std::env::temp_dir().join(format!(
        "remem-summarize-transcript-{}-{}.jsonl",
        std::process::id(),
        chrono::Utc::now().timestamp_nanos_opt().unwrap_or_default()
    ));
    let transcript = concat!(
        "not-json\n",
        "{\"type\":\"user\",\"message\":{\"content\":[{\"type\":\"text\",\"text\":\"ignore\"}]}}\n",
        "{\"type\":\"assistant\",\"message\":{\"content\":[{\"type\":\"text\",\"text\":\"first\"}]}}\n",
        "{\"type\":\"assistant\",\"message\":{\"content\":[{\"type\":\"tool_use\",\"text\":\"skip\"},{\"type\":\"text\",\"text\":\"second\"}]}}\n"
    );
    fs::write(&path, transcript).expect("transcript should be written");

    let extracted = extract_last_assistant_message(path.to_str().expect("utf8 path"));
    assert_eq!(extracted.as_deref(), Some("second"));

    let _ = fs::remove_file(path);
}