This commit is contained in:
afjcjsbx
2026-04-24 18:21:01 +02:00
parent 94a6b0c0f5
commit dce29c181f
2 changed files with 37 additions and 8 deletions
+29 -5
View File
@@ -2,6 +2,7 @@ package api
import (
"bufio"
"bytes"
"encoding/json"
"errors"
"net/http"
@@ -593,7 +594,15 @@ func toolSummaryContainsContent(summary, content string) bool {
}
_, body, hasBody := strings.Cut(summary, "\n")
return hasBody && strings.TrimSpace(body) == content
if !hasBody {
return false
}
body = strings.TrimSpace(body)
if body == content {
return true
}
firstSection, _, _ := strings.Cut(body, "\n```")
return strings.TrimSpace(firstSection) == content
}
func sessionAttachments(msg providers.Message) []sessionChatAttachment {
@@ -714,7 +723,8 @@ func visibleAssistantToolSummaryMessages(
Role: "assistant",
Content: utils.FormatToolFeedbackMessage(
name,
visibleAssistantToolSummaryText(tc, toolFeedbackMaxArgsLength),
visibleAssistantToolFeedbackExplanation(tc, toolFeedbackMaxArgsLength),
visibleAssistantToolArgsPreview(tc, toolFeedbackMaxArgsLength),
),
})
}
@@ -722,7 +732,7 @@ func visibleAssistantToolSummaryMessages(
return messages
}
func visibleAssistantToolSummaryText(
func visibleAssistantToolFeedbackExplanation(
tc providers.ToolCall,
toolFeedbackMaxArgsLength int,
) string {
@@ -731,18 +741,32 @@ func visibleAssistantToolSummaryText(
return utils.Truncate(explanation, toolFeedbackMaxArgsLength)
}
}
return ""
}
func visibleAssistantToolArgsPreview(
tc providers.ToolCall,
toolFeedbackMaxArgsLength int,
) string {
argsJSON := ""
if tc.Function != nil {
argsJSON = tc.Function.Arguments
}
if strings.TrimSpace(argsJSON) == "" && len(tc.Arguments) > 0 {
if encodedArgs, err := json.Marshal(tc.Arguments); err == nil {
if encodedArgs, err := json.MarshalIndent(tc.Arguments, "", " "); err == nil {
argsJSON = string(encodedArgs)
}
}
argsJSON = strings.TrimSpace(argsJSON)
if argsJSON == "" {
return ""
}
var pretty bytes.Buffer
if err := json.Indent(&pretty, []byte(argsJSON), "", " "); err == nil {
argsJSON = pretty.String()
}
return utils.Truncate(strings.TrimSpace(argsJSON), toolFeedbackMaxArgsLength)
return utils.Truncate(argsJSON, toolFeedbackMaxArgsLength)
}
func visibleAssistantToolMessages(toolCalls []providers.ToolCall) []sessionChatMessage {