nebu-ctx 0.10.10

NebuCtx runtime for the nebu-ctx self-hosted client/server product.
Documentation
use crate::core::bug_memory::BugMemoryStore;

pub fn reminders_for_task(project_root: &str, task: &str) -> Vec<String> {
    let store = BugMemoryStore::load(project_root);
    store.reminders_for_task(task)
}

#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn reminders_budgeted() {
        let _lock = crate::core::data_dir::test_env_lock();
        let tmp = tempfile::tempdir().expect("tempdir");
        std::env::set_var(
            "NEBU_CTX_DATA_DIR",
            tmp.path().to_string_lossy().to_string(),
        );

        let project_root = tmp.path().join("proj");
        std::fs::create_dir_all(&project_root).expect("mkdir");
        let project_root_str = project_root.to_string_lossy().to_string();

        let mut store = BugMemoryStore::load(&project_root_str);
        for i in 0..10 {
            store.record_failure(
                "cargo build",
                101,
                &format!("error[E050{i}]: borrow checker failure"),
                crate::core::bug_memory::BugMemorySource::Shell,
            );
        }

        store.save(&project_root_str).expect("save");

        let reminders = reminders_for_task(&project_root_str, "fix cargo build error E0502 borrow");
        assert!(reminders.len() <= crate::core::budgets::PROSPECTIVE_REMINDERS_LIMIT);

        std::env::remove_var("NEBU_CTX_DATA_DIR");
    }
}