rho-coding-agent 1.14.0

A lightweight agent harness inspired by Pi
Documentation
use super::*;

fn stored_session(agent_id: Option<&str>) -> (tempfile::TempDir, tempfile::TempDir, Session) {
    let root = tempfile::tempdir().unwrap();
    let cwd = tempfile::tempdir().unwrap();
    let session = match agent_id {
        Some(agent_id) => {
            Session::create_in_root_with_agent(root.path(), cwd.path(), agent_id, "fingerprint-a")
                .unwrap()
        }
        None => Session::create_in_root(root.path(), cwd.path()).unwrap(),
    };
    (root, cwd, session)
}

#[test]
fn resume_accepts_unchanged_agent_definition() {
    let (_root, _cwd, session) = stored_session(Some("reviewer"));
    validate_resume_agent(&session, "reviewer", "fingerprint-a").unwrap();
}

#[test]
fn resume_reports_changed_agent_definition() {
    let (_root, _cwd, session) = stored_session(Some("reviewer"));
    let error = validate_resume_agent(&session, "reviewer", "fingerprint-b").unwrap_err();
    assert!(error.to_string().contains("definition changed"));
}

#[test]
fn resume_reports_missing_agent_identity() {
    let (_root, _cwd, session) = stored_session(None);
    let error = validate_resume_agent(&session, "default", "fingerprint-a").unwrap_err();
    assert!(error
        .to_string()
        .contains("no stored agent definition identity"));
}