fix phantom tool call failed messages and empty text parts with some models

This commit is contained in:
Dax Raad
2025-07-28 12:19:06 -04:00
parent 10d749a85e
commit f2bdb8159f
2 changed files with 10 additions and 4 deletions

View File

@@ -882,7 +882,7 @@ export namespace Session {
case "tool-input-start":
const part = await updatePart({
id: Identifier.ascending("part"),
id: toolCalls[value.id]?.id ?? Identifier.ascending("part"),
messageID: assistantMsg.id,
sessionID: assistantMsg.sessionID,
type: "tool",
@@ -1029,17 +1029,17 @@ export namespace Session {
case "text":
if (currentText) {
currentText.text += value.text
await updatePart(currentText)
if (currentText.text) await updatePart(currentText)
}
break
case "text-end":
if (currentText && currentText.text) {
if (currentText) {
currentText.text = currentText.text.trimEnd()
currentText.time = {
start: Date.now(),
end: Date.now(),
}
currentText.text = currentText.text.trimEnd()
await updatePart(currentText)
}
currentText = undefined

View File

@@ -281,6 +281,9 @@ func (m *messagesComponent) renderView() tea.Cmd {
if part.Synthetic {
continue
}
if part.Text == "" {
continue
}
remainingParts := message.Parts[partIndex+1:]
fileParts := make([]opencode.FilePart, 0)
for _, part := range remainingParts {
@@ -365,6 +368,9 @@ func (m *messagesComponent) renderView() tea.Cmd {
if reverted {
continue
}
if part.Text == "" {
continue
}
hasTextPart = true
finished := part.Time.End > 0
remainingParts := message.Parts[partIndex+1:]