task.go 1021 B

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