diff options
| author | Kujtim Hoxha <[email protected]> | 2025-04-08 19:42:59 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-04-08 19:42:59 +0200 |
| commit | 124bd57c507fdcbb56ab27137cbe892f12e1b48f (patch) | |
| tree | 894d335a5f2f6587a19e94f139f681b91b01e877 /internal/llm/agent | |
| parent | 5acf0cba6040aaf90acb5dcacd3e4127d6833ac5 (diff) | |
| parent | c571283ac26cdf03be5a1d5c1e36051e3b7ea7be (diff) | |
| download | opencode-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.go | 10 | ||||
| -rw-r--r-- | internal/llm/agent/mcp-tools.go | 28 |
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)...) } } |
