Skip to content
This repository was archived by the owner on Sep 18, 2025. It is now read-only.

Commit 80cd75c

Browse files
committed
handle errors correctly in the agent tool
1 parent cdc5f20 commit 80cd75c

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

internal/llm/agent/agent-tool.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,44 +50,45 @@ func (b *agentTool) Run(ctx context.Context, call tools.ToolCall) (tools.ToolRes
5050

5151
sessionID, messageID := tools.GetContextValues(ctx)
5252
if sessionID == "" || messageID == "" {
53-
return tools.NewTextErrorResponse("session ID and message ID are required"), nil
53+
return tools.ToolResponse{}, fmt.Errorf("session_id and message_id are required")
5454
}
5555

5656
agent, err := NewTaskAgent(b.lspClients)
5757
if err != nil {
58-
return tools.NewTextErrorResponse(fmt.Sprintf("error creating agent: %s", err)), nil
58+
return tools.ToolResponse{}, fmt.Errorf("error creating agent: %s", err)
5959
}
6060

6161
session, err := b.sessions.CreateTaskSession(ctx, call.ID, sessionID, "New Agent Session")
6262
if err != nil {
63-
return tools.NewTextErrorResponse(fmt.Sprintf("error creating session: %s", err)), nil
63+
return tools.ToolResponse{}, fmt.Errorf("error creating session: %s", err)
6464
}
6565

6666
err = agent.Generate(ctx, session.ID, params.Prompt)
6767
if err != nil {
68-
return tools.NewTextErrorResponse(fmt.Sprintf("error generating agent: %s", err)), nil
68+
return tools.ToolResponse{}, fmt.Errorf("error generating agent: %s", err)
6969
}
7070

7171
messages, err := b.messages.List(ctx, session.ID)
7272
if err != nil {
73-
return tools.NewTextErrorResponse(fmt.Sprintf("error listing messages: %s", err)), nil
73+
return tools.ToolResponse{}, fmt.Errorf("error listing messages: %s", err)
7474
}
75+
7576
if len(messages) == 0 {
76-
return tools.NewTextErrorResponse("no messages found"), nil
77+
return tools.NewTextErrorResponse("no response"), nil
7778
}
7879

7980
response := messages[len(messages)-1]
8081
if response.Role != message.Assistant {
81-
return tools.NewTextErrorResponse("no assistant message found"), nil
82+
return tools.NewTextErrorResponse("no response"), nil
8283
}
8384

8485
updatedSession, err := b.sessions.Get(ctx, session.ID)
8586
if err != nil {
86-
return tools.NewTextErrorResponse(fmt.Sprintf("error: %s", err)), nil
87+
return tools.ToolResponse{}, fmt.Errorf("error getting session: %s", err)
8788
}
8889
parentSession, err := b.sessions.Get(ctx, sessionID)
8990
if err != nil {
90-
return tools.NewTextErrorResponse(fmt.Sprintf("error: %s", err)), nil
91+
return tools.ToolResponse{}, fmt.Errorf("error getting parent session: %s", err)
9192
}
9293

9394
parentSession.Cost += updatedSession.Cost
@@ -96,7 +97,7 @@ func (b *agentTool) Run(ctx context.Context, call tools.ToolCall) (tools.ToolRes
9697

9798
_, err = b.sessions.Save(ctx, parentSession)
9899
if err != nil {
99-
return tools.NewTextErrorResponse(fmt.Sprintf("error: %s", err)), nil
100+
return tools.ToolResponse{}, fmt.Errorf("error saving parent session: %s", err)
100101
}
101102
return tools.NewTextResponse(response.Content().String()), nil
102103
}

0 commit comments

Comments
 (0)