mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
fix: improve error handling and nil consistency in FormatArgsJSON
- Use fmt.Sprintf fallback instead of {} on encoding errors
- Normalize nil args to {} in FormatArgsJSON for consistent output
- Update tests to expect {} instead of null for nil args
Based on PR #2670 review feedback from afjcjsbx
This commit is contained in:
@@ -172,10 +172,6 @@ func toolFeedbackExplanationFromMessages(messages []providers.Message) string {
|
||||
}
|
||||
|
||||
func toolFeedbackArgsPreview(args map[string]any, maxLen int) string {
|
||||
if args == nil {
|
||||
args = map[string]any{}
|
||||
}
|
||||
|
||||
argsJSON := utils.FormatArgsJSON(args, true, false)
|
||||
return utils.Truncate(argsJSON, maxLen)
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ toolLoop:
|
||||
feedbackMsg := utils.FormatToolFeedbackMessage(
|
||||
toolName,
|
||||
toolFeedbackExplanation,
|
||||
toolFeedbackArgsPreview(toolArgs, toolFeedbackMaxLen),
|
||||
toolFeedbackArgsPreview(toolArgs, toolFeedbackMaxLen),
|
||||
)
|
||||
fbCtx, fbCancel := context.WithTimeout(turnCtx, 3*time.Second)
|
||||
_ = al.bus.PublishOutbound(fbCtx, outboundMessageForTurnWithKind(ts, feedbackMsg, messageKindToolFeedback))
|
||||
|
||||
@@ -10,6 +10,11 @@ import (
|
||||
const ToolFeedbackContinuationHint = "Continuing the current task."
|
||||
|
||||
func FormatArgsJSON(args map[string]any, prettyPrint, disableEscapeHTML bool) string {
|
||||
// Normalize nil to empty map for consistent output
|
||||
if args == nil {
|
||||
args = map[string]any{}
|
||||
}
|
||||
|
||||
var buf bytes.Buffer
|
||||
enc := json.NewEncoder(&buf)
|
||||
if prettyPrint {
|
||||
@@ -19,7 +24,8 @@ func FormatArgsJSON(args map[string]any, prettyPrint, disableEscapeHTML bool) st
|
||||
enc.SetEscapeHTML(false)
|
||||
}
|
||||
if err := enc.Encode(args); err != nil {
|
||||
return "{}"
|
||||
// Fallback to fmt.Sprintf to preserve visibility of problematic args
|
||||
return fmt.Sprintf("%v", args)
|
||||
}
|
||||
return strings.TrimSpace(buf.String())
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ func TestFormatArgsJSON_EscapeHTMLByDefault(t *testing.T) {
|
||||
|
||||
func TestFormatArgsJSON_NilArgs(t *testing.T) {
|
||||
got := FormatArgsJSON(nil, false, false)
|
||||
want := `null`
|
||||
want := `{}`
|
||||
if got != want {
|
||||
t.Fatalf("FormatArgsJSON() nil = %q, want %q", got, want)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user