1package agent
2
3import (
4 "context"
5 "errors"
6
7 "github.com/kujtimiihoxha/termai/internal/config"
8 "github.com/kujtimiihoxha/termai/internal/llm/models"
9 "github.com/kujtimiihoxha/termai/internal/llm/tools"
10 "github.com/kujtimiihoxha/termai/internal/lsp"
11 "github.com/kujtimiihoxha/termai/internal/message"
12 "github.com/kujtimiihoxha/termai/internal/session"
13)
14
15type taskAgent struct {
16 Service
17}
18
19func NewTaskAgent(messages message.Service, sessions session.Service, lspClients map[string]*lsp.Client) (Service, error) {
20 model, ok := models.SupportedModels[config.Get().Model.Coder]
21 if !ok {
22 return nil, errors.New("model not supported")
23 }
24
25 ctx := context.Background()
26
27 agent, err := NewAgent(
28 ctx,
29 sessions,
30 messages,
31 model,
32 []tools.BaseTool{
33 tools.NewGlobTool(),
34 tools.NewGrepTool(),
35 tools.NewLsTool(),
36 tools.NewSourcegraphTool(),
37 tools.NewViewTool(lspClients),
38 },
39 )
40 if err != nil {
41 return nil, err
42 }
43
44 return &taskAgent{
45 agent,
46 }, nil
47}