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.NewWriteTool(lspClients, permissions, history),
37			NewAgentTool(sessions, messages, lspClients),
38		}, otherTools...,
39	)
40}
41
42func TaskAgentTools(lspClients map[string]*lsp.Client) []tools.BaseTool {
43	return []tools.BaseTool{
44		tools.NewGlobTool(),
45		tools.NewGrepTool(),
46		tools.NewLsTool(),
47		tools.NewSourcegraphTool(),
48		tools.NewViewTool(lspClients),
49	}
50}