Skip to content

Commit 1be4276

Browse files
committed
fix: allow multiple push the result of tool
1 parent 6e667fc commit 1be4276

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

src/core/assistant-message/presentAssistantMessage.ts

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -260,12 +260,31 @@ export async function presentAssistantMessage(cline: Task) {
260260
const lastToolUseMessage = cline.assistantMessageContent.find((msg) => msg.type === "tool_use")
261261
if (lastToolUseMessage && lastToolUseMessage.toolUseId) {
262262
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)
267287
}
268-
cline.userMessageContent.push(toolMessage)
269288
}
270289
} else {
271290
cline.userMessageContent.push(...newUserMessages)

0 commit comments

Comments
 (0)