tools.go

 1package agent
 2
 3import (
 4	"context"
 5
 6	"github.com/charmbracelet/crush/internal/history"
 7	"github.com/charmbracelet/crush/internal/llm/tools"
 8	"github.com/charmbracelet/crush/internal/lsp"
 9	"github.com/charmbracelet/crush/internal/message"
10	"github.com/charmbracelet/crush/internal/permission"
11	"github.com/charmbracelet/crush/internal/session"
12)
13
14func CoderAgentTools(
15	permissions permission.Service,
16	sessions session.Service,
17	messages message.Service,
18	history history.Service,
19	lspClients map[string]*lsp.Client,
20) []tools.BaseTool {
21	ctx := context.Background()
22	otherTools := GetMcpTools(ctx, permissions)
23	if len(lspClients) > 0 {
24		otherTools = append(otherTools, tools.NewDiagnosticsTool(lspClients))
25	}
26	return append(
27		[]tools.BaseTool{
28			tools.NewBashTool(permissions),
29			tools.NewEditTool(lspClients, permissions, history),
30			tools.NewFetchTool(permissions),
31			tools.NewGlobTool(),
32			tools.NewGrepTool(),
33			tools.NewLsTool(),
34			tools.NewSourcegraphTool(),
35			tools.NewViewTool(lspClients),
36			tools.NewPatchTool(lspClients, permissions, history),
37			tools.NewWriteTool(lspClients, permissions, history),
38			NewAgentTool(sessions, messages, lspClients),
39		}, otherTools...,
40	)
41}
42
43func TaskAgentTools(lspClients map[string]*lsp.Client) []tools.BaseTool {
44	return []tools.BaseTool{
45		tools.NewGlobTool(),
46		tools.NewGrepTool(),
47		tools.NewLsTool(),
48		tools.NewSourcegraphTool(),
49		tools.NewViewTool(lspClients),
50	}
51}