opencrabs 0.3.56

The autonomous, self-improving AI agent. Single Rust binary. Every channel. Install with: cargo install opencrabs
Documentation
use crate::brain::provider::json_repair::*;

#[test]
fn passes_through_valid_json() {
    let v = parse_or_repair(r#"{"a":1,"b":"x"}"#);
    assert_eq!(v["a"], 1);
    assert_eq!(v["b"], "x");
}

#[test]
fn empty_returns_object() {
    let v = parse_or_repair("");
    assert!(v.is_object());
}

#[test]
fn closes_open_string() {
    let v = parse_or_repair(r#"{"command":"git status"#);
    assert_eq!(v["command"], "git status");
}

#[test]
fn closes_missing_brace() {
    let v = parse_or_repair(r#"{"a":1,"b":2"#);
    assert_eq!(v["a"], 1);
    assert_eq!(v["b"], 2);
}

#[test]
fn drops_trailing_key_without_value() {
    let v = parse_or_repair(r#"{"a":1,"b":"#);
    assert_eq!(v["a"], 1);
    assert!(v.get("b").is_none());
}

#[test]
fn closes_nested_array() {
    let v = parse_or_repair(r#"{"items":[1,2,3"#);
    assert_eq!(v["items"][0], 1);
    assert_eq!(v["items"][2], 3);
}

#[test]
fn closes_string_inside_array() {
    let v = parse_or_repair(r#"{"items":["a","b"#);
    assert_eq!(v["items"][0], "a");
    assert_eq!(v["items"][1], "b");
}

#[test]
fn unrecoverable_returns_partial_envelope() {
    let v = parse_or_repair(r#"this is not json"#);
    assert!(v["_repair_failed"].as_bool().unwrap_or(false));
    assert_eq!(v["_partial"], "this is not json");
}

#[test]
fn handles_escaped_quote_in_string() {
    let v = parse_or_repair(r#"{"msg":"he said \"hi"#);
    assert_eq!(v["msg"], "he said \"hi");
}

#[test]
fn strips_trailing_comma() {
    let v = parse_or_repair(r#"{"a":1,"#);
    assert_eq!(v["a"], 1);
}