cai-output 0.1.0

Output formatters for Coding Agent Insights
Documentation
  • Coverage
  • 100%
    42 out of 42 items documented0 out of 23 items with examples
  • Size
  • Source code size: 39.73 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 4.37 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 31s Average build duration of successful builds.
  • all releases: 31s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Repository
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • duyet

cai-output

Output formatters for CAI entries in multiple formats.

Overview

cai-output provides flexible output formatting for entries, supporting JSON, JSONL, CSV, tables, and more.

Formatters

JSON Formatter

use cai_output::JsonFormatter;
use cai_core::Entry;

let formatter = JsonFormatter::default();
formatter.format(&entries, &mut writer)?;

JSONL Formatter (JSON Lines)

use cai_output::JsonlFormatter;

let formatter = JsonlFormatter::default();
formatter.format(&entries, &mut writer)?;

CSV Formatter

use cai_output::CsvFormatter;

let formatter = CsvFormatter::default();
formatter.format(&entries, &mut writer)?;

Table Formatter

use cai_output::TableFormatter;

let formatter = TableFormatter::default();
formatter.format(&entries, &mut writer)?;

AI Formatter

Compact format optimized for AI consumption:

use cai_output::AiFormatter;

let formatter = AiFormatter::default();
formatter.format(&entries, &mut writer)?;

Stats Formatter

Summary statistics:

use cai_output::StatsFormatter;

let formatter = StatsFormatter::default();
formatter.format(&entries, &mut writer)?;

Configuration

Formatters support configuration:

use cai_output::{Formatter, FormatterConfig};

let mut config = FormatterConfig {
    max_width: 120,
    colorize: true,
    truncate: 100,
    limit: 50,
};

formatter.set_config(config);

Streaming

Format entries one at a time:

formatter.format_one(&entry, &mut writer)?;

Usage

Add to your Cargo.toml:

[dependencies]
cai-output = { path = "../cai-output" }

Design Decisions

  • Generic over Write: Works with any writer
  • Streaming support: Handle large datasets efficiently
  • Configurable: Customizable truncation and limits

Testing

cargo test -p cai-output

License

MIT OR Apache-2.0