core/v1.7.10
maximhq/bifrostcore/v1.7.10Aug 13, 2026by akshaydeo
AI Summary
This core release focuses on stabilizing reasoning handling by fixing retries for refusal errors and signature stripping, while also improving support for OpenAI reasoning models and Bedrock Mantle structured output.
Key Highlights
- Fix retries for unverifiable reasoning on chat-shaped requests.
- Fix stripping thinking signatures from Responses content blocks.
- Fix Grok model reasoning effort preservation (xhigh).
- Fix structured output streaming events (text deltas).
- Feature: Inline URL-sourced images for AWS-hosted Claude.
New Features
- Inline URL-sourced images for AWS-hosted Claude on native-Anthropic path
Full Release Notes
## Core Release v1.7.10
- fix: retry after an unverifiable reasoning refusal on chat-shaped requests too - `/v1/chat/completions` and `/v1/messages` carry replayed reasoning on `reasoning_details`, but the fail-soft strip only handled Responses-shaped items, so a router that switched models mid-conversation returned "messages.N.content.0: Invalid `signature` in `thinking` block" straight to the client instead of retrying without the signature
- fix: strip thinking signatures off Responses content blocks, not just `encrypted_content` on the reasoning item - a message could need the strip with `encrypted_content` already absent, and only reasoning items are dropped when nothing survives so an ordinary message keeps its own content
- fix: stop sending `reasoning.content` to non-gpt-oss OpenAI/Azure reasoning models, which cap the array at zero entries and reject a populated one with "Invalid 'input[N].content': array too long. Expected an array with maximum length 0"; replayed Anthropic thinking blocks translate into `reasoning_text` blocks and were hitting this. `summary` + `encrypted_content` already carry everything OpenAI accepts
- fix: stop clearing `reasoning_effort` for current-generation Grok models - the rule substring-matched "grok-3-mini", so `grok-4.5`, `grok-4.6` and `grok-4.20-multi-agent` all silently lost the field and answered at the wrong reasoning depth, cost and latency. Replaced with an exact-match deny-list (`SupportsGrokReasoningEffort`) that normalizes routing prefixes, `-latest` and xAI's 4-digit date suffixes
- fix: keep `reasoning_effort: "xhigh"` for `grok-4.6` and `grok-4.20-multi-agent` - the shared OpenAI-dialect normalizer downgraded it to "high" before the xAI compat pass ran, so the value was lost even with the deny-list corrected. `grok-4.5` still downgrades on purpose, matching xAI's documented upstream coercion
- fix: emit `content_part.added`, `output_text.delta`, `output_text.done` and `content_part.done` when a tool-based structured-output call is reassembled into a message on the Responses streaming path - only `output_item.added`/`done` were emitted, so every consumer reading incremental events rather than the item snapshot saw a stream with no text at all. A schema-constrained `streamGenerateContent` to Bedrock Mantle returned `{"candidates":[{"content":{"role":"model"},"finishReason":"STOP"}]}` with tokens billed. Affects Vertex, Bedrock Mantle and Azure Claude, the three providers that emulate structured output with a forced tool call
- feat: inline URL-sourced images and documents for AWS-hosted Claude on the native-Anthropic path - Bedrock Mantle rejects `{"source":{"type":"url"}}` with "URL content sources are not yet supported for this model". Fetches go through the SSRF-safe dialer with a size cap, and a failed fetch aborts the request rather than silently dropping an attachment. Brings the native-Anthropic surface to parity with Bedrock's Converse path
### Installation
```bash
go get github.com/maximhq/bifrost/core@v1.7.10
```
---
_This release was automatically created from version file: `core/version`_