From 01d8bcdbf58aee18643645ac292e26904551776e Mon Sep 17 00:00:00 2001 From: Grail Finder Date: Sun, 1 Mar 2026 12:28:23 +0300 Subject: Enha: avoid \n\n in tool collapse --- bot.go | 4 ++-- tools.go | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/bot.go b/bot.go index 1df1665..bf3a239 100644 --- a/bot.go +++ b/bot.go @@ -1207,11 +1207,11 @@ func chatToTextSlice(messages []models.RoleMsg, showSys bool) []string { // This is a tool call indicator - show collapsed if toolCollapsed { toolName := messages[i].ToolCall.Name - resp[i] = fmt.Sprintf("%s\n%s\n[yellow::i][tool call: %s (press Ctrl+T to expand)][-:-:-]\n", icon, messages[i].GetText(), toolName) + resp[i] = strings.ReplaceAll(fmt.Sprintf("%s\n%s\n[yellow::i][tool call: %s (press Ctrl+T to expand)][-:-:-]\n", icon, messages[i].GetText(), toolName), "\n\n", "\n") } else { // Show full tool call info toolName := messages[i].ToolCall.Name - resp[i] = fmt.Sprintf("%s\n%s\n[yellow::i][tool call: %s][-:-:-]\nargs: %s\nid: %s\n", icon, messages[i].GetText(), toolName, messages[i].ToolCall.Args, messages[i].ToolCall.ID) + resp[i] = strings.ReplaceAll(fmt.Sprintf("%s\n%s\n[yellow::i][tool call: %s][-:-:-]\nargs: %s\nid: %s\n", icon, messages[i].GetText(), toolName, messages[i].ToolCall.Args, messages[i].ToolCall.ID), "\n\n", "\n") } continue } diff --git a/tools.go b/tools.go index b1e5bbd..04ba554 100644 --- a/tools.go +++ b/tools.go @@ -763,7 +763,6 @@ func executeCommand(args map[string]string) []byte { logger.Error(msg) return []byte(msg) } - // Handle commands passed as single string with spaces (e.g., "go run main.go" or "cd /tmp") // Split into base command and arguments parts := strings.Fields(commandStr) @@ -774,18 +773,15 @@ func executeCommand(args map[string]string) []byte { } command := parts[0] cmdArgs := parts[1:] - if !isCommandAllowed(command, cmdArgs...) { msg := fmt.Sprintf("command '%s' is not allowed", command) logger.Error(msg) return []byte(msg) } - // Special handling for cd command - update FilePickerDir if command == "cd" { return handleCdCommand(cmdArgs) } - // Execute with timeout for safety ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() -- cgit v1.2.3