fix(bedrock): wrap streamed text deltas in TextContent before updateContentBlock()#601
Merged
ilvalerione merged 1 commit intoJul 15, 2026
Conversation
…ontentBlock() HandleStream passes the raw delta string to StreamState::updateContentBlock(), whose second parameter is typed ContentBlockInterface. With strict_types this is a TypeError on every Bedrock ConverseStream response containing a text block. Mirror the adjacent reasoningContent branch, which already wraps its delta in a content block before updating stream state.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
src/Providers/AWS/HandleStream.phppasses the raw delta string toStreamState::updateContentBlock(int $index, ContentBlockInterface $block):Since
declare(strict_types=1)was added to this file, this is a runtimeTypeErroron every Bedrock ConverseStream response that contains a text block — i.e. any streamed text completion via the Bedrock provider:The adjacent
reasoningContentbranch already handles this correctly (wraps the delta inReasoningContentbefore callingupdateContentBlock); the text branch never got the same treatment.Fix
Mirror the reasoning-branch pattern for text deltas by wrapping the chunk in
TextContent.Reproduction
Any
stream()call throughBedrockRuntimeagainst a Converse-compatible model that returns text.Context
We have carried this as a downstream composer patch since v3.3.10, where the same line produced a malformed content-block shape that dropped
tool_useblocks;strict_typeshas since upgraded it from silent corruption to a hard crash. Happy to adjust style (e.g. importTextContentinstead of the FQCN) if preferred.