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