task.go 982 B

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