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}