## 0xPlaygrounds/rig — v0.41.0…v0.42.0

_79 commits._

### Features
- **feat(agent): restore raw provider response access at the agent level, on both surfaces (#2366) (#2367)** (4487ba2)
- **feat(voyageai): expose embedding request options (#2343)** (6f66dbb)
- **feat(agent)!: expose portable model-turn termination metadata to hooks (#2341)** (91098e2)
- **feat: carry the provider transport request id on completion errors (#2314) (#2315)** (0e1fdcd)
- **feat: response identity metadata — native response id + provider transport request id, to every completion observer (#2265) (#2313)** (638a6c1)
- **feat(anthropic): per-breakpoint cache TTL — static prefix independent of conversation tail (#2266) (#2312)** (4be867d)
- **feat(venice): add Venice AI provider with live-recorded cassette coverage (#2306)** (834621b)
- **feat(cohere): add image embeddings (#2304)** (5e2981e)
- **feat(anthropic): support strict tool use (#2296)** (46c436b)
- **Add reasoning delta agent hook (#2282)** (3de43b9)

### Fixes
- **fix(providers): survive truncated tool calls and preserve DeepSeek wire data (#2359)** (57b4ad2)
- **fix(doubleword): report the embedding width Doubleword actually returns (#2356)** (d525224)
- **fix(openrouter): surface chat-completions refusals, and map the reasoning share of usage (#2358)** (8ea03a2)
- **fix(rig): exclude test cassettes from the published crate (#2350)** (854b765)
- **fix(embeddings): keep a document's embeddings in text order across batch boundaries (#2348)** (69aeac7)
- **fix(embeddings): builder input order (#2344)** (2dfb3cc)
- **fix(mistral): eight more provider bugs found by live cassette recording (#2337)** (d094fe1)
- **fix(openai): preserve the provider's response when a websocket upgrade is rejected (#2338)** (27841c5)
- **fix(core)!: preserve response headers on non-success HTTP errors (#2333)** (6963ab0)
- **fix: three model-listing and usage bugs found by live cassette recording (anthropic, gemini) (#2334)** (a8e5372)
- **fix(openai): six wire-level defects found by live cassette recording (#2332)** (64cb64f)
- **fix(mistral): four provider bugs found by live cassette recording (#2331)** (ffd0480)
- **fix(anthropic): two stop_sequence bugs found by live cassette recording (#2329)** (2bfd972)
- **fix(gemini): four response-mapping bugs found by live cassette recording (#2328)** (21f4797)
- **fix(gemini, agent): close the whole output-budget truncation chain, not just the 4096 cap (#2324)** (1a6a6ad)
- **fix(rig-core): enable all-feature wasm builds (#2319)** (6e839d3)
- **fix(bedrock): raw_completion discards provider-only response data (guardrail trace, request id, service tier) (#2311)** (88edc17)
- **fix(bedrock): ship invocable model identifiers, and keep provider error bodies the SDK cannot classify (#2309)** (4cc57b3)
- **fix(cohere): validate required tool choice (#2302)** (469c3c9)
- **fix(cohere): Cohere provider sends request shapes the v2 chat API rejects, and ships removed model IDs (#2263)** (f83cd54)
- **Revert "fix(openai): preserve Responses message phase across stateless replay (#2269) (#2295)" (#2300)** (57446c1)
- **fix(openai): preserve Responses message phase across stateless replay (#2269) (#2295)** (bb6b6cb)
- **fix(openai): merge additional_params tools into chat completions tool list (#1890) (#2294)** (923e7fb)
- **Fix Neo4j rustdoc link warning (#2287)** (9f52a38)
- **fix(gemini): send temperature and max_tokens; add live regression cassettes and a cache-prefix guard (#2283)** (9b58c4c)
- **fix(anthropic): prefer `message_delta` usage.input_tokens when the provider sends it there (#2279)** (9b9c428)
- **fix(release): isolate macro hygiene fixture (#2227)** (6cfae6d)

### Backend
- **Consolidate provider and agent boilerplate (#2285)** (618edf0)
- **cleanup: post-Vec-migration precision and the pre-Vec serde accommodations go (#2276)** (2c22e18)
- **Tool identity holds at every boundary: legacy lift, honest constructors, and the drains the siblings already had (2262 round-7 follow-up) (#2267)** (6f67b9d)
- **Stream parts become entities: lifecycle grammar, opaque keys, and tool names as data (the 84a43e9e C→B→A program) (#2262)** (c25f30b)
- **Canonical stream grammar: mandatory identity, one accumulator, decode-then-validate, and a wire-conformance corpus (#2258)** (1f95477)
- **Normalize completion responses at the provider boundary and erase the model type at agent construction (#2257)** (4f0bc70)

### Tests
- **test(rig-core): make a live tracing capture provable, not assumed (#2347)** (d082959)
- **test(bedrock): cover multi-tool_use streaming with a cassette (#2251)** (d5ff160)

### Docs
- **docs: reconcile the changelogs and the migration guide with what actually merged (#2353)** (4232abd)
- **docs(migrating): document release guide generation (#2260)** (dd61832)
- **docs(migrating): extend the guide back to 0.30 (#2226)** (d79ac79)
- **docs(changelog): credit every 0.41 contributor, not just merged-PR authors (#2223)** (396e5ad)

### Chore
- **chore(release): publish v0.42.0 from main, including everything merged since the release PR (#2371)** (d5a3498)
- **chore(deps): lower dependency floors to what rig needs and stop raising them (#2195) (#2369)** (9f74bbc)
- **chore(deps): bump redis from 1.2.1 to 1.5.0 (#2361)** (93b1fd0)
- **chore: release v0.42.0 (#2221)** (2da0303)
- **refactor(providers): share the paginated model-listing loop, and add Groq listing (#2339)** (de0f32f)
- **chore(deps): clear the outstanding security advisories (#2342)** (24ec499)
- **refactor: remove #[non_exhaustive] from the workspace (#2335)** (f27d94a)
- **refactor(rig-agent): share AgentConfig across builder, agent, and runner (#2326) (#2327)** (b1319ba)
- **refactor: workspace-wide LOC consolidation pass 8 (net −1,353 production lines) (#2320)** (0ce7966)
- **refactor(rig-core): consolidate provider boilerplate (#2317)** (d4e4c98)
- **refactor: share xAI Responses and audio drivers (#2316)** (38df465)
- **chore(deps): bump trybuild from 1.0.117 to 1.0.120 (#2131)** (d4fdfcf)
- **chore(deps): bump surrealdb from 3.0.5 to 3.2.3 (#2129)** (61f8585)
- **chore(deps): bump tokio-tungstenite from 0.28.0 to 0.29.0 (#2020)** (de51309)
- **refactor: workspace-wide LOC consolidation pass 7 (net −366 production lines) (#2310)** (016cee5)
- **refactor: workspace-wide LOC consolidation pass 6 (net −3,424 lines) (#2308)** (ba22d4c)
- **ci: reduce Rust cache churn and test rebuilds (#2307)** (1473e92)
- **refactor: consolidate provider/loader/agent plumbing (net −566 production LOC) (#2305)** (b79d956)
- **chore(deps): upgrade lopdf to 0.44.0 (#2297)** (65039c5)
- **refactor: remove dead API surface and consolidate provider/agent plumbing (net −794 production LOC) (#2301)** (ee2ed37)
- **refactor: consolidate provider schema/normalization and agent plumbing (net −365 production LOC) (#2299)** (897e627)
- **ci: pin sccache and make its install best-effort (#2292)** (73e0cd0)
- **refactor: consolidate provider scaffolding and agent-runner plumbing (net −439 production LOC) (#2289)** (caf3f31)
- **refactor: consolidate provider and agent plumbing (#2288)** (e21d48b)
- **refactor: consolidate provider plumbing and agent boilerplate (−365 production LOC, 5 defect fixes) (#2286)** (c046bd8)
- **refactor!: assistant content is tagged and provider extras are a named field (#2277)** (0364316)
- **refactor!: `OneOrMany<T>` becomes `Vec<T>` — the fake is deleted, the enforcement moves (#2273)** (dd0b637)
- **ci: run rig-derive's test suite, which ran in no job at all (#2275)** (c3a9e66)
- **ci: single-source the rig setup, drop every API key, and finish the deferred hardening (#2271)** (c233893)
- **ci: split the PR gate from the full --all-features suite (#2268)** (6d1ba0a)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/0xPlaygrounds/rig?utm_source=github-action)._