remem-ai 0.6.81

Local-first coding agent memory for Claude Code and OpenAI Codex
Documentation
use crate::db::{self, test_support::ScopedTestDataDir};

use super::super::run;
use super::{configure_codex_stub, insert_compressible_observations};

#[tokio::test]
async fn worker_once_stops_after_four_work_items_across_the_real_loop() -> anyhow::Result<()> {
    let _data_dir = ScopedTestDataDir::new("worker-once-work-item-budget");
    configure_codex_stub("/tmp/remem-missing-codex-for-once-budget")?;
    let conn = db::open_db()?;
    for index in 0..6 {
        let project = format!("/tmp/remem-budget-{index}");
        insert_compressible_observations(&conn, &project, 101)?;
        db::enqueue_job(
            &conn,
            "codex-cli",
            db::JobType::Compress,
            &project,
            None,
            "{}",
            200,
        )?;
    }
    drop(conn);

    run(true, 10).await?;

    let conn = db::open_db()?;
    let (attempted, untouched): (i64, i64) = conn.query_row(
        "SELECT
             SUM(CASE WHEN attempt_count = 1 THEN 1 ELSE 0 END),
             SUM(CASE WHEN attempt_count = 0 THEN 1 ELSE 0 END)
         FROM jobs WHERE project LIKE '/tmp/remem-budget-%'",
        [],
        |row| Ok((row.get(0)?, row.get(1)?)),
    )?;
    anyhow::ensure!(
        attempted == 4,
        "once worker should attempt four AI jobs, got {attempted}"
    );
    anyhow::ensure!(
        untouched == 2,
        "once worker should leave two AI jobs for a later admission, got {untouched}"
    );
    Ok(())
}