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 append_then_get_matches() {
    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",
            "hello world",
        ])
        .output()
        .unwrap();
    assert!(out.status.success(), "append failed: {out:?}");
    let id = String::from_utf8(out.stdout).unwrap().trim().to_string();
    assert!(!id.is_empty());

    let out = ws.cmd().args(["get", &id]).output().unwrap();
    assert!(out.status.success(), "get failed: {out:?}");
    let body = String::from_utf8(out.stdout).unwrap();
    assert!(body.contains("hello world"), "body was {body:?}");
}

#[test]
fn append_then_get_json_round_trip() {
    let ws = CliWorkspace::new();
    assert!(ws.init().status.success());
    let out = ws
        .cmd()
        .args([
            "--json",
            "append",
            "--partition",
            "user=alex,year=2026,month=05,topic=meetings",
            "--message",
            "hi",
        ])
        .output()
        .unwrap();
    assert!(out.status.success());
    let parsed: serde_json::Value = serde_json::from_slice(&out.stdout).unwrap();
    let id = parsed["id"].as_str().unwrap();
    let out = ws.cmd().args(["--json", "get", id]).output().unwrap();
    assert!(out.status.success());
    let parsed: serde_json::Value = serde_json::from_slice(&out.stdout).unwrap();
    assert_eq!(parsed["body"].as_str().unwrap(), "hi");
}

#[test]
fn get_unknown_id_exits_3() {
    let ws = CliWorkspace::new();
    assert!(ws.init().status.success());
    let out = ws
        .cmd()
        .args(["get", "01ARZ3NDEKTSV4RRFFQ69G5FAV"])
        .output()
        .unwrap();
    assert_eq!(out.status.code(), Some(3));
}