cai-output 0.1.0

Output formatters for Coding Agent Insights
Documentation
# 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

```rust
use cai_output::JsonFormatter;
use cai_core::Entry;

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

### JSONL Formatter (JSON Lines)

```rust
use cai_output::JsonlFormatter;

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

### CSV Formatter

```rust
use cai_output::CsvFormatter;

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

### Table Formatter

```rust
use cai_output::TableFormatter;

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

### AI Formatter

Compact format optimized for AI consumption:

```rust
use cai_output::AiFormatter;

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

### Stats Formatter

Summary statistics:

```rust
use cai_output::StatsFormatter;

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

## Configuration

Formatters support configuration:

```rust
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:

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

## Usage

Add to your `Cargo.toml`:

```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

```bash
cargo test -p cai-output
```

## License

MIT OR Apache-2.0