From a65e593ab4f35e1a647832ba36be2c696e1f5165 Mon Sep 17 00:00:00 2001 From: adamdottv <2363879+adamdottv@users.noreply.github.com> Date: Thu, 15 May 2025 12:44:16 -0500 Subject: feat: batch tool --- internal/llm/agent/tools.go | 64 ++++++++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 21 deletions(-) (limited to 'internal/llm/agent') diff --git a/internal/llm/agent/tools.go b/internal/llm/agent/tools.go index dba437bd2..157b5bf59 100644 --- a/internal/llm/agent/tools.go +++ b/internal/llm/agent/tools.go @@ -21,30 +21,41 @@ func PrimaryAgentTools( ctx := context.Background() mcpTools := GetMcpTools(ctx, permissions) - return append( - []tools.BaseTool{ - tools.NewBashTool(permissions), - tools.NewEditTool(lspClients, permissions, history), - tools.NewFetchTool(permissions), - tools.NewGlobTool(), - tools.NewGrepTool(), - tools.NewLsTool(), - tools.NewViewTool(lspClients), - tools.NewPatchTool(lspClients, permissions, history), - tools.NewWriteTool(lspClients, permissions, history), - tools.NewDiagnosticsTool(lspClients), - tools.NewDefinitionTool(lspClients), - tools.NewReferencesTool(lspClients), - tools.NewDocSymbolsTool(lspClients), - tools.NewWorkspaceSymbolsTool(lspClients), - tools.NewCodeActionTool(lspClients), - NewAgentTool(sessions, messages, lspClients), - }, mcpTools..., - ) + // Create the list of tools + toolsList := []tools.BaseTool{ + tools.NewBashTool(permissions), + tools.NewEditTool(lspClients, permissions, history), + tools.NewFetchTool(permissions), + tools.NewGlobTool(), + tools.NewGrepTool(), + tools.NewLsTool(), + tools.NewViewTool(lspClients), + tools.NewPatchTool(lspClients, permissions, history), + tools.NewWriteTool(lspClients, permissions, history), + tools.NewDiagnosticsTool(lspClients), + tools.NewDefinitionTool(lspClients), + tools.NewReferencesTool(lspClients), + tools.NewDocSymbolsTool(lspClients), + tools.NewWorkspaceSymbolsTool(lspClients), + tools.NewCodeActionTool(lspClients), + NewAgentTool(sessions, messages, lspClients), + } + + // Create a map of tools for the batch tool + toolsMap := make(map[string]tools.BaseTool) + for _, tool := range toolsList { + toolsMap[tool.Info().Name] = tool + } + + // Add the batch tool with access to all other tools + toolsList = append(toolsList, tools.NewBatchTool(toolsMap)) + + return append(toolsList, mcpTools...) } func TaskAgentTools(lspClients map[string]*lsp.Client) []tools.BaseTool { - return []tools.BaseTool{ + // Create the list of tools + toolsList := []tools.BaseTool{ tools.NewGlobTool(), tools.NewGrepTool(), tools.NewLsTool(), @@ -54,4 +65,15 @@ func TaskAgentTools(lspClients map[string]*lsp.Client) []tools.BaseTool { tools.NewDocSymbolsTool(lspClients), tools.NewWorkspaceSymbolsTool(lspClients), } + + // Create a map of tools for the batch tool + toolsMap := make(map[string]tools.BaseTool) + for _, tool := range toolsList { + toolsMap[tool.Info().Name] = tool + } + + // Add the batch tool with access to all other tools + toolsList = append(toolsList, tools.NewBatchTool(toolsMap)) + + return toolsList } -- cgit v1.2.3