opi-coding-agent 0.5.0

Interactive coding agent CLI with file editing and shell execution
Documentation
use opi_ai::stream::{CumulativeUsage, Usage};

#[test]
fn cumulative_usage_accumulates() {
    let mut cu = CumulativeUsage::default();
    cu.accumulate(&Usage {
        input_tokens: 100,
        output_tokens: 50,
        cache_read_tokens: 0,
        cache_write_tokens: 0,
    });
    assert_eq!(cu.total_input_tokens(), 100);
    assert_eq!(cu.total_output_tokens(), 50);
    assert_eq!(cu.turn_count(), 1);

    cu.accumulate(&Usage {
        input_tokens: 200,
        output_tokens: 75,
        cache_read_tokens: 10,
        cache_write_tokens: 5,
    });
    assert_eq!(cu.total_input_tokens(), 300);
    assert_eq!(cu.total_output_tokens(), 125);
    assert_eq!(cu.turn_count(), 2);
}