kiromi-ai-cli 0.2.2

Operator and developer CLI for the kiromi-ai-memory store: append, search, snapshot, regenerate, migrate-scheme, gc, audit-tail.
// SPDX-License-Identifier: Apache-2.0 OR MIT
#![allow(clippy::unwrap_used, clippy::expect_used, clippy::panic, missing_docs)]

mod common;

use common::CliWorkspace;

#[test]
fn delete_single_memory_then_get_returns_4() {
    let ws = CliWorkspace::new();
    assert!(ws.init().status.success());
    let out = ws
        .cmd()
        .args([
            "append",
            "--partition",
            "user=alex,year=2026,month=05,topic=meetings",
            "--message",
            "to be deleted",
        ])
        .output()
        .unwrap();
    let id = String::from_utf8(out.stdout).unwrap().trim().to_string();

    let del = ws.cmd().args(["delete", &id]).output().unwrap();
    assert!(del.status.success());

    let get = ws.cmd().args(["get", &id]).output().unwrap();
    assert_eq!(get.status.code(), Some(4), "expected tombstoned exit");
}

#[test]
fn delete_partition_tombstones_all() {
    let ws = CliWorkspace::new();
    assert!(ws.init().status.success());
    for body in ["a", "b", "c"] {
        let _ = ws
            .cmd()
            .args([
                "append",
                "--partition",
                "user=alex,year=2026,month=05,topic=meetings",
                "--message",
                body,
            ])
            .output()
            .unwrap();
    }
    let out = ws
        .cmd()
        .args([
            "--json",
            "delete-partition",
            "user=alex/year=2026/month=05/topic=meetings",
        ])
        .output()
        .unwrap();
    assert!(out.status.success());
    let parsed: serde_json::Value = serde_json::from_slice(&out.stdout).unwrap();
    assert_eq!(parsed["tombstoned"].as_u64(), Some(3));
}