@@ -185,7 +185,7 @@ export class LangchainBedrockProvider implements IAIProvider {
185185 stream : AsyncIterable < AIMessageChunk > ,
186186 ) : Promise < IterableReadableStream < AIStreamChunk > > {
187187 async function * generateChunks ( ) : AsyncGenerator < AIStreamChunk > {
188- let currentToolCalls : Map < number , AIToolCall > = new Map ( ) ;
188+ let currentToolCalls : Map < number , { id : string ; name : string ; argsString : string } > = new Map ( ) ;
189189
190190 for await ( const chunk of stream ) {
191191 if ( chunk . tool_call_chunks && chunk . tool_call_chunks . length > 0 ) {
@@ -196,7 +196,7 @@ export class LangchainBedrockProvider implements IAIProvider {
196196 currentToolCalls . set ( index , {
197197 id : toolCallChunk . id || '' ,
198198 name : toolCallChunk . name || '' ,
199- arguments : { } ,
199+ argsString : '' ,
200200 } ) ;
201201 }
202202
@@ -209,12 +209,7 @@ export class LangchainBedrockProvider implements IAIProvider {
209209 currentCall . name = toolCallChunk . name ;
210210 }
211211 if ( toolCallChunk . args ) {
212- try {
213- const parsedArgs = JSON . parse ( toolCallChunk . args ) ;
214- currentCall . arguments = { ...currentCall . arguments , ...parsedArgs } ;
215- } catch {
216- // Accumulate partial JSON - will be parsed when complete
217- }
212+ currentCall . argsString += toolCallChunk . args ;
218213 }
219214 }
220215 }
@@ -231,11 +226,24 @@ export class LangchainBedrockProvider implements IAIProvider {
231226 }
232227 }
233228
234- for ( const toolCall of currentToolCalls . values ( ) ) {
235- if ( toolCall . name ) {
229+ for ( const toolCallData of currentToolCalls . values ( ) ) {
230+ if ( toolCallData . name ) {
231+ let parsedArgs : Record < string , unknown > = { } ;
232+ if ( toolCallData . argsString ) {
233+ try {
234+ parsedArgs = JSON . parse ( toolCallData . argsString ) ;
235+ } catch {
236+ // Failed to parse args, use empty object
237+ }
238+ }
239+
236240 yield {
237241 type : 'tool_call' ,
238- toolCall,
242+ toolCall : {
243+ id : toolCallData . id ,
244+ name : toolCallData . name ,
245+ arguments : parsedArgs ,
246+ } ,
239247 } ;
240248 }
241249 }
0 commit comments