coder.go

 1package agent
 2
 3import (
 4	"context"
 5
 6	"github.com/charmbracelet/crush/internal/history"
 7	"github.com/charmbracelet/crush/internal/llm/prompt"
 8	"github.com/charmbracelet/crush/internal/llm/provider"
 9	"github.com/charmbracelet/crush/internal/lsp"
10	"github.com/charmbracelet/crush/internal/message"
11	"github.com/charmbracelet/crush/internal/permission"
12	"github.com/charmbracelet/crush/internal/session"
13)
14
15func NewCoderAgent(
16	ctx context.Context,
17	cwd string,
18	providers map[string]provider.Config,
19	smallModel Model,
20	largeModel Model,
21	contextFiles []string,
22	sessions session.Service,
23	messages message.Service,
24	permissions permission.Service,
25	lspClients map[string]*lsp.Client,
26	history history.Service,
27	mcps map[string]MCPConfig,
28) (Service, error) {
29	systemPrompt := prompt.CoderPrompt(cwd, contextFiles...)
30	tools := NewCoderTools(
31		ctx,
32		cwd,
33		sessions,
34		messages,
35		permissions,
36		lspClients,
37		history,
38		mcps,
39	)
40
41	return NewAgent(
42		ctx,
43		cwd,
44		systemPrompt,
45		tools,
46		providers,
47		smallModel,
48		largeModel,
49		sessions,
50		messages,
51	)
52}