summaryrefslogtreecommitdiffhomepage
path: root/internal/llm/agent/agent-tool.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/llm/agent/agent-tool.go')
-rw-r--r--internal/llm/agent/agent-tool.go18
1 files changed, 7 insertions, 11 deletions
diff --git a/internal/llm/agent/agent-tool.go b/internal/llm/agent/agent-tool.go
index 83160bb64..308412bde 100644
--- a/internal/llm/agent/agent-tool.go
+++ b/internal/llm/agent/agent-tool.go
@@ -5,6 +5,7 @@ import (
"encoding/json"
"fmt"
+ "github.com/kujtimiihoxha/termai/internal/config"
"github.com/kujtimiihoxha/termai/internal/llm/tools"
"github.com/kujtimiihoxha/termai/internal/lsp"
"github.com/kujtimiihoxha/termai/internal/message"
@@ -53,7 +54,7 @@ func (b *agentTool) Run(ctx context.Context, call tools.ToolCall) (tools.ToolRes
return tools.ToolResponse{}, fmt.Errorf("session_id and message_id are required")
}
- agent, err := NewTaskAgent(b.messages, b.sessions, b.lspClients)
+ agent, err := NewAgent(config.AgentTask, b.sessions, b.messages, TaskAgentTools(b.lspClients))
if err != nil {
return tools.ToolResponse{}, fmt.Errorf("error creating agent: %s", err)
}
@@ -63,21 +64,16 @@ func (b *agentTool) Run(ctx context.Context, call tools.ToolCall) (tools.ToolRes
return tools.ToolResponse{}, fmt.Errorf("error creating session: %s", err)
}
- err = agent.Generate(ctx, session.ID, params.Prompt)
+ done, err := agent.Run(ctx, session.ID, params.Prompt)
if err != nil {
return tools.ToolResponse{}, fmt.Errorf("error generating agent: %s", err)
}
-
- messages, err := b.messages.List(ctx, session.ID)
- if err != nil {
- return tools.ToolResponse{}, fmt.Errorf("error listing messages: %s", err)
- }
-
- if len(messages) == 0 {
- return tools.NewTextErrorResponse("no response"), nil
+ result := <-done
+ if result.Err() != nil {
+ return tools.ToolResponse{}, fmt.Errorf("error generating agent: %s", result.Err())
}
- response := messages[len(messages)-1]
+ response := result.Response()
if response.Role != message.Assistant {
return tools.NewTextErrorResponse("no response"), nil
}