Skip to content

Commit 4e768cd

Browse files
committed
fix: handle thinking content_block_start event in bedrock messages stream transformation
1 parent aaff76c commit 4e768cd

File tree

1 file changed

+27
-11
lines changed

1 file changed

+27
-11
lines changed

src/providers/bedrock/messages.ts

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,31 @@ const transformContentBlock = (
513513
return undefined;
514514
};
515515

516+
function createContentBlockStartEvent(
517+
parsedChunk: BedrockChatCompleteStreamChunk
518+
): RawContentBlockStartEvent {
519+
const contentBlockStartEvent: RawContentBlockStartEvent = JSON.parse(
520+
ANTHROPIC_CONTENT_BLOCK_START_EVENT
521+
);
522+
523+
if (parsedChunk.start?.toolUse && parsedChunk.start.toolUse.toolUseId) {
524+
contentBlockStartEvent.content_block = {
525+
type: 'tool_use',
526+
id: parsedChunk.start.toolUse.toolUseId,
527+
name: parsedChunk.start.toolUse.name,
528+
input: {},
529+
};
530+
} else if (parsedChunk.delta?.reasoningContent?.text) {
531+
contentBlockStartEvent.content_block = {
532+
type: 'thinking',
533+
thinking: '',
534+
signature: '',
535+
};
536+
}
537+
538+
return contentBlockStartEvent;
539+
}
540+
516541
export const BedrockConverseMessagesStreamChunkTransform = (
517542
responseChunk: string,
518543
fallbackId: string,
@@ -545,17 +570,8 @@ export const BedrockConverseMessagesStreamChunkTransform = (
545570
returnChunk += `event: content_block_stop\ndata: ${JSON.stringify(previousBlockStopEvent)}\n\n`;
546571
}
547572
streamState.currentContentBlockIndex = parsedChunk.contentBlockIndex;
548-
const contentBlockStartEvent: RawContentBlockStartEvent = JSON.parse(
549-
ANTHROPIC_CONTENT_BLOCK_START_EVENT
550-
);
551-
if (parsedChunk.start?.toolUse && parsedChunk.start.toolUse.toolUseId) {
552-
contentBlockStartEvent.content_block = {
553-
type: 'tool_use',
554-
id: parsedChunk.start.toolUse.toolUseId,
555-
name: parsedChunk.start.toolUse.name,
556-
input: {},
557-
};
558-
}
573+
const contentBlockStartEvent: RawContentBlockStartEvent =
574+
createContentBlockStartEvent(parsedChunk);
559575
contentBlockStartEvent.index = parsedChunk.contentBlockIndex;
560576
returnChunk += `event: content_block_start\ndata: ${JSON.stringify(contentBlockStartEvent)}\n\n`;
561577
const contentBlockDeltaEvent = transformContentBlock(parsedChunk);

0 commit comments

Comments
 (0)