oxi-cli 0.56.0

Terminal-based AI coding assistant — multi-provider, streaming-first, extensible
Documentation
use oxi::rpc_mode::{RpcClient, RpcClientConfig, RpcResponse};

#[test]
fn rpc_client_round_trips_ready_and_real_state() {
    let mut client = RpcClient::new(RpcClientConfig {
        binary_path: env!("CARGO_BIN_EXE_oxi").to_string(),
        ..Default::default()
    });
    client.start().unwrap();

    let response = client.get_state().unwrap();
    match response {
        RpcResponse::Response {
            success,
            data: Some(data),
            ..
        } => {
            assert!(success);
            assert!(data["session_id"].as_str().is_some());
            assert!(data["message_count"].as_u64().is_some());
            assert!(data["model"]["id"].as_str().is_some());
        }
        _ => panic!("expected successful state response"),
    }
}

#[test]
fn rpc_client_surfaces_unsupported_command_errors() {
    let mut client = RpcClient::new(RpcClientConfig {
        binary_path: env!("CARGO_BIN_EXE_oxi").to_string(),
        ..Default::default()
    });
    client.start().unwrap();

    let error = client.set_auto_retry(false).unwrap_err().to_string();
    assert!(error.contains("set_auto_retry is not yet supported"));
}