task.go

 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.NewViewTool(),
38			},
39			model:          model,
40			agent:          agentProvider,
41			titleGenerator: titleGenerator,
42		},
43	}, nil
44}