summaryrefslogtreecommitdiffhomepage
path: root/internal/llm/agent
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-08 19:42:59 +0200
committerGitHub <[email protected]>2025-04-08 19:42:59 +0200
commit124bd57c507fdcbb56ab27137cbe892f12e1b48f (patch)
tree894d335a5f2f6587a19e94f139f681b91b01e877 /internal/llm/agent
parent5acf0cba6040aaf90acb5dcacd3e4127d6833ac5 (diff)
parentc571283ac26cdf03be5a1d5c1e36051e3b7ea7be (diff)
downloadopencode-124bd57c507fdcbb56ab27137cbe892f12e1b48f.tar.gz
opencode-124bd57c507fdcbb56ab27137cbe892f12e1b48f.zip
Merge pull request #24 from kujtimiihoxha/cleanup-tools
Cleanup tools
Diffstat (limited to 'internal/llm/agent')
-rw-r--r--internal/llm/agent/coder.go10
-rw-r--r--internal/llm/agent/mcp-tools.go28
2 files changed, 20 insertions, 18 deletions
diff --git a/internal/llm/agent/coder.go b/internal/llm/agent/coder.go
index b47289c33..8ff3c61aa 100644
--- a/internal/llm/agent/coder.go
+++ b/internal/llm/agent/coder.go
@@ -44,7 +44,7 @@ func NewCoderAgent(app *app.App) (Agent, error) {
return nil, err
}
- otherTools := GetMcpTools(app.Context)
+ otherTools := GetMcpTools(app.Context, app.Permissions)
if len(app.LSPClients) > 0 {
otherTools = append(otherTools, tools.NewDiagnosticsTool(app.LSPClients))
}
@@ -53,15 +53,15 @@ func NewCoderAgent(app *app.App) (Agent, error) {
App: app,
tools: append(
[]tools.BaseTool{
- tools.NewBashTool(),
- tools.NewEditTool(app.LSPClients),
- tools.NewFetchTool(),
+ tools.NewBashTool(app.Permissions),
+ tools.NewEditTool(app.LSPClients, app.Permissions),
+ tools.NewFetchTool(app.Permissions),
tools.NewGlobTool(),
tools.NewGrepTool(),
tools.NewLsTool(),
tools.NewSourcegraphTool(),
tools.NewViewTool(app.LSPClients),
- tools.NewWriteTool(app.LSPClients),
+ tools.NewWriteTool(app.LSPClients, app.Permissions),
}, otherTools...,
),
model: model,
diff --git a/internal/llm/agent/mcp-tools.go b/internal/llm/agent/mcp-tools.go
index ec78e0a86..64b5f639b 100644
--- a/internal/llm/agent/mcp-tools.go
+++ b/internal/llm/agent/mcp-tools.go
@@ -16,9 +16,10 @@ import (
)
type mcpTool struct {
- mcpName string
- tool mcp.Tool
- mcpConfig config.MCPServer
+ mcpName string
+ tool mcp.Tool
+ mcpConfig config.MCPServer
+ permissions permission.Service
}
type MCPClient interface {
@@ -80,7 +81,7 @@ func runTool(ctx context.Context, c MCPClient, toolName string, input string) (t
func (b *mcpTool) Run(ctx context.Context, params tools.ToolCall) (tools.ToolResponse, error) {
permissionDescription := fmt.Sprintf("execute %s with the following parameters: %s", b.Info().Name, params.Input)
- p := permission.Default.Request(
+ p := b.permissions.Request(
permission.CreatePermissionRequest{
Path: config.WorkingDirectory(),
ToolName: b.Info().Name,
@@ -118,17 +119,18 @@ func (b *mcpTool) Run(ctx context.Context, params tools.ToolCall) (tools.ToolRes
return tools.NewTextErrorResponse("invalid mcp type"), nil
}
-func NewMcpTool(name string, tool mcp.Tool, mcpConfig config.MCPServer) tools.BaseTool {
+func NewMcpTool(name string, tool mcp.Tool, permissions permission.Service, mcpConfig config.MCPServer) tools.BaseTool {
return &mcpTool{
- mcpName: name,
- tool: tool,
- mcpConfig: mcpConfig,
+ mcpName: name,
+ tool: tool,
+ mcpConfig: mcpConfig,
+ permissions: permissions,
}
}
var mcpTools []tools.BaseTool
-func getTools(ctx context.Context, name string, m config.MCPServer, c MCPClient) []tools.BaseTool {
+func getTools(ctx context.Context, name string, m config.MCPServer, permissions permission.Service, c MCPClient) []tools.BaseTool {
var stdioTools []tools.BaseTool
initRequest := mcp.InitializeRequest{}
initRequest.Params.ProtocolVersion = mcp.LATEST_PROTOCOL_VERSION
@@ -149,13 +151,13 @@ func getTools(ctx context.Context, name string, m config.MCPServer, c MCPClient)
return stdioTools
}
for _, t := range tools.Tools {
- stdioTools = append(stdioTools, NewMcpTool(name, t, m))
+ stdioTools = append(stdioTools, NewMcpTool(name, t, permissions, m))
}
defer c.Close()
return stdioTools
}
-func GetMcpTools(ctx context.Context) []tools.BaseTool {
+func GetMcpTools(ctx context.Context, permissions permission.Service) []tools.BaseTool {
if len(mcpTools) > 0 {
return mcpTools
}
@@ -172,7 +174,7 @@ func GetMcpTools(ctx context.Context) []tools.BaseTool {
continue
}
- mcpTools = append(mcpTools, getTools(ctx, name, m, c)...)
+ mcpTools = append(mcpTools, getTools(ctx, name, m, permissions, c)...)
case config.MCPSse:
c, err := client.NewSSEMCPClient(
m.URL,
@@ -182,7 +184,7 @@ func GetMcpTools(ctx context.Context) []tools.BaseTool {
log.Printf("error creating mcp client: %s", err)
continue
}
- mcpTools = append(mcpTools, getTools(ctx, name, m, c)...)
+ mcpTools = append(mcpTools, getTools(ctx, name, m, permissions, c)...)
}
}