nucel-agent-claude-code 0.1.2

Claude Code provider for Nucel agent-sdk — subprocess wrapper for claude CLI
Documentation
# nucel-agent-claude-code

Claude Code provider for [Nucel Agent SDK](https://github.com/nucel-dev/agent-sdk) — subprocess wrapper for the `claude` CLI.

## Features

- **Streaming JSONL** — real-time parsing of `system/init`, `assistant`, `result` messages
- **Token tracking** — input, output, cache_read, cache_creation tokens
- **Budget enforcement** — automatic cost checks before each query
- **Timeout protection** — configurable timeout per query (default: 10 minutes)
- **Permission modes**`prompt`, `accept_edits`, `bypass_permissions`, `reject_all`
- **Stderr capture** — for debugging CLI errors

## How it works

Spawns `claude -p "<prompt>" --output-format stream-json --verbose` as a subprocess, parses the JSONL output line-by-line, and extracts:
- Text responses from `assistant` messages
- Cost from `result.total_cost_usd`
- Token usage from `result.usage` and `result.modelUsage`

## Usage

```toml
[dependencies]
nucel-agent-sdk = "0.1"
```

```rust
use nucel_agent_sdk::{ClaudeCodeExecutor, AgentExecutor, SpawnConfig};

let executor = ClaudeCodeExecutor::new();

// Check availability
let avail = executor.availability();
if !avail.available {
    eprintln!("Install: npm install -g @anthropic-ai/claude-code");
    return;
}

// Spawn and query
let session = executor.spawn(
    std::path::Path::new("/my/repo"),
    "Fix the failing tests",
    &SpawnConfig {
        model: Some("claude-opus-4-6".into()),
        budget_usd: Some(5.0),
        permission_mode: Some(nucel_agent_sdk::PermissionMode::AcceptEdits),
        ..Default::default()
    },
).await?;

let cost = session.total_cost().await?;
println!("Cost: ${:.4}", cost.total_usd);
session.close().await?;
```

## CLI Requirements

- `claude` CLI installed: `npm install -g @anthropic-ai/claude-code`
- Valid `ANTHROPIC_API_KEY` or Claude Max/Pro subscription

## License

Apache-2.0