From 02755f60d025fcff3c44e079ffd0e7fe62600ac1 Mon Sep 17 00:00:00 2001 From: stevef Date: Mon, 20 Apr 2026 11:51:08 +0200 Subject: [PATCH] Fix infinite loop in message tool and fix compilation error on main branch. --- pkg/agent/instance.go | 6 ++---- pkg/agent/loop_test.go | 4 ++-- pkg/tools/integration/message.go | 5 +++-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/pkg/agent/instance.go b/pkg/agent/instance.go index f3ec2cf87..5bcb83087 100644 --- a/pkg/agent/instance.go +++ b/pkg/agent/instance.go @@ -102,13 +102,11 @@ func NewAgentInstance( toolsRegistry.Register(tools.NewListDirTool(workspace, readRestrict, allowReadPaths)) } if cfg.Tools.IsToolEnabled("exec") { - execTool, err := tools.NewExecToolWithDenyPaths(workspace, restrict, [][]*regexp.Regexp{allowReadPaths}, denyWritePaths, cfg) + execTool, err := tools.NewExecToolWithConfig(workspace, restrict, cfg, allowReadPaths) if err != nil { logger.ErrorCF("agent", "Failed to initialize exec tool; continuing without exec", map[string]any{"error": err.Error()}) - execTool = nil - } - if execTool != nil { + } else { toolsRegistry.Register(execTool) } } diff --git a/pkg/agent/loop_test.go b/pkg/agent/loop_test.go index 90025df3e..b22a5aebc 100644 --- a/pkg/agent/loop_test.go +++ b/pkg/agent/loop_test.go @@ -3693,8 +3693,8 @@ func TestProcessMessage_MessageToolPublishesOutboundWithTurnMetadata(t *testing. if err != nil { t.Fatalf("processMessage() error = %v", err) } - if response == "" { - t.Fatal("expected processMessage() to return a final loop response") + if response != "" { + t.Fatalf("expected empty loop response when tool handles delivery, got %q", response) } select { diff --git a/pkg/tools/integration/message.go b/pkg/tools/integration/message.go index 98d87bcb3..68912fdd5 100644 --- a/pkg/tools/integration/message.go +++ b/pkg/tools/integration/message.go @@ -137,7 +137,8 @@ func (t *MessageTool) Execute(ctx context.Context, args map[string]any) *ToolRes // Silent: user already received the message directly return &ToolResult{ - ForLLM: fmt.Sprintf("Message sent to %s:%s", channel, chatID), - Silent: true, + ForLLM: fmt.Sprintf("Message sent to %s:%s", channel, chatID), + Silent: true, + ResponseHandled: true, } }