mirror of
https://github.com/rowboatlabs/rowboat.git
synced 2026-07-12 21:02:17 +02:00
Thorough-effort Anthropic runs through the gateway failed on the tool
loop: Bedrock rejected the echoed thinking block ("Invalid `signature`
in `thinking` block"). OpenRouter streams reasoning_details as
per-delta FRAGMENTS on reasoning events — the part-level capture kept
only the last fragment (unsigned) — while the fully accumulated,
signed array rides the finish event's providerMetadata, and OpenRouter
gives message-level reasoning_details precedence on read-back.
The bridge now attaches finish-step providerMetadata to the assistant
message as message-level providerOptions (restoring parity with the
legacy StreamStepMessageBuilder, which always did this);
convertFromMessages already echoes it. The authoritative signed array
wins over the per-part fragments, which providers then ignore.
Also persist provider failure detail on turn_failed: errorMessage()
appends the API error's status code and responseBody (bounded to 2KB)
— "Failed after 3 attempts" alone was undebuggable from the turn log.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| account | ||
| agent-schedule | ||
| agents | ||
| analytics | ||
| application | ||
| apps | ||
| auth | ||
| background-tasks | ||
| billing | ||
| channels | ||
| code-mode | ||
| composio | ||
| config | ||
| di | ||
| events | ||
| filesystem | ||
| knowledge | ||
| mcp | ||
| migrations | ||
| models | ||
| pre_built | ||
| runs | ||
| schedule | ||
| search | ||
| security | ||
| services | ||
| sessions | ||
| slack | ||
| turns | ||
| voice | ||
| workspace | ||
| index.ts | ||