@@ -260,12 +260,31 @@ export async function presentAssistantMessage(cline: Task) {
260
260
const lastToolUseMessage = cline . assistantMessageContent . find ( ( msg ) => msg . type === "tool_use" )
261
261
if ( lastToolUseMessage && lastToolUseMessage . toolUseId ) {
262
262
const toolUseId = lastToolUseMessage . toolUseId
263
- const toolMessage : Anthropic . ToolResultBlockParam = {
264
- tool_use_id : toolUseId ,
265
- type : "tool_result" ,
266
- content : newUserMessages ,
263
+ let toolResultMessage = cline . userMessageContent . find (
264
+ ( msg ) => msg . type === "tool_result" && msg . tool_use_id === toolUseId ,
265
+ )
266
+ if ( toolResultMessage !== undefined && toolResultMessage . type === "tool_result" ) {
267
+ const content = toolResultMessage . content
268
+ const updateMessages : Array < Anthropic . TextBlockParam | Anthropic . ImageBlockParam > = [ ]
269
+ if ( typeof content === "string" ) {
270
+ updateMessages . push ( { type : "text" , text : content } )
271
+ } else if ( Array . isArray ( content ) ) {
272
+ updateMessages . push ( ...content )
273
+ } else {
274
+ throw new Error (
275
+ "Unexpected tool result content type: " + JSON . stringify ( toolResultMessage ) ,
276
+ )
277
+ }
278
+ updateMessages . push ( ...newUserMessages )
279
+ toolResultMessage . content = updateMessages
280
+ } else {
281
+ const toolMessage : Anthropic . ToolResultBlockParam = {
282
+ tool_use_id : toolUseId ,
283
+ type : "tool_result" ,
284
+ content : newUserMessages ,
285
+ }
286
+ cline . userMessageContent . push ( toolMessage )
267
287
}
268
- cline . userMessageContent . push ( toolMessage )
269
288
}
270
289
} else {
271
290
cline . userMessageContent . push ( ...newUserMessages )
0 commit comments