mirror of
https://github.com/sst/opencode.git
synced 2025-08-06 22:38:04 +00:00
79 lines
2.2 KiB
Go
79 lines
2.2 KiB
Go
package agent
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/sst/opencode/internal/history"
|
|
"github.com/sst/opencode/internal/llm/tools"
|
|
"github.com/sst/opencode/internal/lsp"
|
|
"github.com/sst/opencode/internal/message"
|
|
"github.com/sst/opencode/internal/permission"
|
|
"github.com/sst/opencode/internal/session"
|
|
)
|
|
|
|
func PrimaryAgentTools(
|
|
permissions permission.Service,
|
|
sessions session.Service,
|
|
messages message.Service,
|
|
history history.Service,
|
|
lspClients map[string]*lsp.Client,
|
|
) []tools.BaseTool {
|
|
ctx := context.Background()
|
|
mcpTools := GetMcpTools(ctx, permissions)
|
|
|
|
// 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 {
|
|
// Create the list of tools
|
|
toolsList := []tools.BaseTool{
|
|
tools.NewGlobTool(),
|
|
tools.NewGrepTool(),
|
|
tools.NewLsTool(),
|
|
tools.NewViewTool(lspClients),
|
|
tools.NewDefinitionTool(lspClients),
|
|
tools.NewReferencesTool(lspClients),
|
|
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
|
|
}
|