Repository navigation
v0.19.0
0.19.0 contains correctness fixes and model updates. It includes breaking changes. CHANGELOG.md gives a migration note for each.
Breaking
ThinkingLevelgainsXHighandMax, and is now#[non_exhaustive]. Code that matches on it outside the crate needs a wildcard arm (#171).ModelConfig::costis nowOption<CostConfig>.Nonemeans pricing is unknown; a config with every rate at zero means the model is free (#172).AnthropicCompatis now#[non_exhaustive]. Build it with its constructors and builders instead of a struct literal.- Claude presets now use native structured outputs (
output_config.format). Schemas must follow Anthropic's rules:additionalProperties: false, and nominimum/maxLength.
New models
claude_opus_5_5(),claude_fable_5_1()gpt_6_astra(),gpt_6_sol(),gpt_6_luna(). These use the OpenAI Responses API and include pricing for requests over 272K input tokens.ModelConfig::openai_responses()XHigh/Maxare sent only to models that accept them. Each preset declares its highest effort level (#176).- Gemini 3.x uses
thinkingLevelinstead of a token budget. - xAI Grok now receives the configured reasoning effort.
Fixes
- Tool arguments: truncated or malformed arguments no longer run the tool with
{}(#167). - Sub-agent spend now reaches the parent's totals (#173).
- OpenAI Responses and Azure now collect tool calls (#178).
- Azure sends requests to its documented v1 endpoint. The old URL was never served, so every request failed. Legacy deployment-style
base_urls still work. - Structured outputs:
prompt_structurednow works on Fable 5.1 and Opus 5.5 (#175). - Refusals and content-filter stops now report
StopReason::Refusalwith an explanation, on Responses, Azure and Chat Completions. Tools in a refused turn are not run. - Rate limits: HTTP 429 and capacity errors are retried as rate limits instead of being mistaken for context overflow.
- Usage and cost:
- Cached and cache-write tokens are billed at their own rates.
- A cache rate left at 0 bills at the input rate.
gpt_5_5now prices requests over 272K input tokens.
- DeepSeek:
reasoning_contentis sent back when the request includes tools, as DeepSeek requires. - OpenCode routing:
grok-*andmuse-spark-*(andgpt-*on Go) are routed to the Responses API. - Retired model ids are replaced in examples and docs, and MiniMax moves to
api.minimax.io. ThinkingLevel::Offsends no thinking or effort setting on every provider. Models that always think run at their own default level.
Note: this release was verified with unit, mock-server and price-audit tests. It has not been run against a live provider API.