@@ -116,6 +116,10 @@ export const defaultApplyEvents = (
116
116
}
117
117
118
118
case EventType . TEXT_MESSAGE_CONTENT : {
119
+ const { delta } = event as TextMessageContentEvent ;
120
+ const currentContent = messages [ messages . length - 1 ] . content ?? "" ;
121
+ const newTextMessageBuffer = currentContent + delta ;
122
+
119
123
const mutation = await runSubscribersWithMutation (
120
124
subscribers ,
121
125
messages ,
@@ -127,17 +131,15 @@ export const defaultApplyEvents = (
127
131
state,
128
132
agent,
129
133
input,
130
- textMessageBuffer : messages [ messages . length - 1 ] . content ?? "" ,
134
+ textMessageBuffer : newTextMessageBuffer ,
131
135
} ) ,
132
136
) ;
133
137
applyMutation ( mutation ) ;
134
138
135
139
if ( mutation . stopPropagation !== true ) {
136
- const { delta } = event as TextMessageContentEvent ;
137
-
138
140
// Get the last message and append the content
139
141
const lastMessage = messages [ messages . length - 1 ] ;
140
- lastMessage . content = lastMessage . content ! + delta ;
142
+ lastMessage . content = newTextMessageBuffer ;
141
143
applyMutation ( { messages } ) ;
142
144
}
143
145
@@ -233,31 +235,31 @@ export const defaultApplyEvents = (
233
235
}
234
236
235
237
case EventType . TOOL_CALL_ARGS : {
238
+ const { delta } = event as ToolCallArgsEvent ;
239
+ const toolCalls = ( messages [ messages . length - 1 ] as AssistantMessage ) ?. toolCalls ?? [ ] ;
240
+ const currentToolCallBuffer =
241
+ toolCalls . length > 0 ? toolCalls [ toolCalls . length - 1 ] . function . arguments : "" ;
242
+ const newToolCallBuffer = currentToolCallBuffer + delta ;
243
+ const toolCallName =
244
+ toolCalls . length > 0 ? toolCalls [ toolCalls . length - 1 ] . function . name : "" ;
245
+
246
+ let partialToolCallArgs = { } ;
247
+ try {
248
+ partialToolCallArgs = untruncateJson ( newToolCallBuffer ) ;
249
+ } catch ( error ) { }
250
+
236
251
const mutation = await runSubscribersWithMutation (
237
252
subscribers ,
238
253
messages ,
239
254
state ,
240
255
( subscriber , messages , state ) => {
241
- const toolCalls =
242
- ( messages [ messages . length - 1 ] as AssistantMessage ) ?. toolCalls ?? [ ] ;
243
- const toolCallBuffer =
244
- toolCalls . length > 0 ? toolCalls [ toolCalls . length - 1 ] . function . arguments : "" ;
245
- const toolCallName =
246
- toolCalls . length > 0 ? toolCalls [ toolCalls . length - 1 ] . function . name : "" ;
247
- let partialToolCallArgs = { } ;
248
- try {
249
- partialToolCallArgs = untruncateJson (
250
- toolCallBuffer + ( event as ToolCallArgsEvent ) . delta ,
251
- ) ;
252
- } catch ( error ) { }
253
-
254
256
return subscriber . onToolCallArgsEvent ?.( {
255
257
event : event as ToolCallArgsEvent ,
256
258
messages,
257
259
state,
258
260
agent,
259
261
input,
260
- toolCallBuffer,
262
+ toolCallBuffer : newToolCallBuffer ,
261
263
toolCallName,
262
264
partialToolCallArgs,
263
265
} ) ;
@@ -266,16 +268,14 @@ export const defaultApplyEvents = (
266
268
applyMutation ( mutation ) ;
267
269
268
270
if ( mutation . stopPropagation !== true ) {
269
- const { delta } = event as ToolCallArgsEvent ;
270
-
271
271
// Get the last message
272
272
const lastMessage = messages [ messages . length - 1 ] ;
273
273
274
274
// Get the last tool call
275
275
const lastToolCall = lastMessage . toolCalls [ lastMessage . toolCalls . length - 1 ] ;
276
276
277
- // Append the arguments
278
- lastToolCall . function . arguments += delta ;
277
+ // Set the complete new arguments
278
+ lastToolCall . function . arguments = newToolCallBuffer ;
279
279
280
280
applyMutation ( { messages } ) ;
281
281
}
0 commit comments