minillmlib 0.4.0

A minimalist, async-first Rust library for LLM interactions with streaming support
Documentation
# Claude Subscription

Use your Claude **Pro/Max subscription** instead of a pay-as-you-go API key. A
subscription OAuth token authenticates against the same native Anthropic API as
an API key, but draws on your subscription's rolling quota (the 5-hour / 7-day
window) rather than API billing.

```rust,no_run
use minillmlib::{ChatNode, GeneratorInfo, TokenPrice};

# async fn run() -> minillmlib::Result<()> {
// Anthropic returns token counts but no dollar cost, so set a price for a
// resolved cost ESTIMATE (otherwise tracking reports `Unpriced`).
let generator = GeneratorInfo::claude_subscription("claude-haiku-4-5")
    .with_token_price(TokenPrice::new(1.0, 5.0)); // $/Mtok in, $/Mtok out

let root = ChatNode::root("You are helpful.");
let response = root.chat("Hello!", &generator).await?;
# let _ = response;
# Ok(()) }
```

## How the token is resolved

`claude_subscription` resolves the bearer token in this order:

1. the `ANTHROPIC_AUTH_TOKEN` env var, if set (explicit override; you keep it
   fresh, e.g. from `claude setup-token`);
2. otherwise the live Claude Code credential at `~/.claude/.credentials.json`
   (`claudeAiOauth.accessToken`), which Claude Code keeps refreshed, so if you're
   logged into Claude Code with your subscription, it just works.

If neither source yields a token, the request fails loudly as unauthenticated
rather than silently using the wrong account.

## Subscription vs Console

> A subscription token (from Claude Code) bills your **Pro/Max plan**. A
> Console/API OAuth token bills your **API account**, not the subscription. For
> Console use an API key via `GeneratorInfo::anthropic(model)`, and this preset
> only for the actual Pro/Max subscription token.

Cost is always an ESTIMATE here: Anthropic returns only token counts, so the
`TokenPrice` you set (reflecting the model's published price) produces a
`Resolved` USD estimate; without it, tracking reports `Unpriced`.