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