refactor: improve all tools

Carlos Alexandro Becker created

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Change summary

internal/llm/agent/agent.go | 28 ++++++++--------------------
1 file changed, 8 insertions(+), 20 deletions(-)

Detailed changes

internal/llm/agent/agent.go 🔗

@@ -515,30 +515,18 @@ func (a *agent) createUserMessage(ctx context.Context, sessionID, content string
 }
 
 func (a *agent) getAllTools() ([]tools.BaseTool, error) {
-	allTools := slices.Collect(a.baseTools.Seq())
-
-	withCoderTools := func(t []tools.BaseTool) []tools.BaseTool {
-		if a.agentCfg.ID == "coder" {
-			t = append(t, slices.Collect(a.mcpTools.Seq())...)
-			if a.lspClients.Len() > 0 {
-				t = append(t, tools.NewDiagnosticsTool(a.lspClients))
-			}
+	var allTools []tools.BaseTool
+	for tool := range a.baseTools.Seq() {
+		if a.agentCfg.AllowedTools == nil || slices.Contains(a.agentCfg.AllowedTools, tool.Name()) {
+			allTools = append(allTools, tool)
 		}
-		return t
 	}
-
-	if a.agentCfg.AllowedTools == nil {
-		allTools = withCoderTools(allTools)
-	} else {
-		var filteredTools []tools.BaseTool
-		for _, tool := range allTools {
-			if slices.Contains(a.agentCfg.AllowedTools, tool.Name()) {
-				filteredTools = append(filteredTools, tool)
-			}
+	if a.agentCfg.ID == "coder" {
+		allTools = slices.AppendSeq(allTools, a.mcpTools.Seq())
+		if a.lspClients.Len() > 0 {
+			allTools = append(allTools, tools.NewDiagnosticsTool(a.lspClients))
 		}
-		allTools = withCoderTools(filteredTools)
 	}
-
 	if a.agentToolFn != nil {
 		agentTool, agentToolErr := a.agentToolFn()
 		if agentToolErr != nil {