zot/packages/provider
Raymond Gasper fec5ae0bf1 fix(bedrock): inject stub toolConfig when history has tool blocks
Bedrock's Converse API returns HTTP 400 with "toolConfig field must be
defined when using toolUse and toolResult content blocks" whenever the
message history contains toolUse or toolResult blocks but toolConfig is
absent from the request.

The /btw side-chat sends the frozen main transcript as context with no
tools defined. If the main conversation included tool calls the serialised
messages will contain toolUse/toolResult blocks, triggering the 400.

Fix: add bedrockMessagesHaveToolBlocks() to detect this case and, when
req.Tools is empty but tool blocks are present in the history, inject a
minimal stub toolConfig with an inert placeholder tool. Bedrock accepts
the request and the stub can never be invoked since no tool_use stop
reason can fire when the advertised tool list is effectively empty.
2026-06-08 10:56:03 -04:00
..
auth refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
amazon_bedrock.go fix(bedrock): inject stub toolConfig when history has tool blocks 2026-06-08 10:56:03 -04:00
amazon_bedrock_test.go fix(bedrock): inject stub toolConfig when history has tool blocks 2026-06-08 10:56:03 -04:00
anthropic.go feat(provider): adaptive thinking + xhigh effort for Opus 4.7/4.8 2026-05-29 14:21:38 +02:00
anthropic_image.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
anthropic_image_test.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
azure_openai.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
cache.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
catalog_builtin.go provider: discover OpenRouter models live, drop baked-in catalog 2026-06-05 15:20:54 +02:00
discover.go provider: discover OpenRouter models live, drop baked-in catalog 2026-06-05 15:20:54 +02:00
extra_models.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
extra_providers.go provider: discover OpenRouter models live, drop baked-in catalog 2026-06-05 15:20:54 +02:00
gemini.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
gemini_test.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
github_copilot.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
google_vertex.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
google_vertex_test.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
labels.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
merge.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
models.go provider: discover OpenRouter models live, drop baked-in catalog 2026-06-05 15:20:54 +02:00
openai.go provider: discover OpenRouter models live, drop baked-in catalog 2026-06-05 15:20:54 +02:00
openai_codex.go fix(provider): deliver tool-result images to the OpenAI Responses route 2026-05-29 14:21:51 +02:00
openai_codex_test.go fix(provider): deliver tool-result images to the OpenAI Responses route 2026-05-29 14:21:51 +02:00
openai_responses.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
provider.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
provider_test.go provider: discover OpenRouter models live, drop baked-in catalog 2026-06-05 15:20:54 +02:00
reasoning.go feat(provider): adaptive thinking + xhigh effort for Opus 4.7/4.8 2026-05-29 14:21:38 +02:00
reasoning_test.go feat(provider): adaptive thinking + xhigh effort for Opus 4.7/4.8 2026-05-29 14:21:38 +02:00
refreshing.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
retry.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
retry_test.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
sse.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00
usermodels.go refactor: split source into packages/{provider,core,tui,agent} 2026-05-27 09:07:15 +02:00