@@ -364,7 +364,9 @@ func (a *sessionAgent) Run(ctx context.Context, call SessionAgentCall) (*fantasy
Finished: false,
}
currentAssistant.AddToolCall(toolCall)
- return a.messages.Update(genCtx, *currentAssistant)
+ // Use parent ctx instead of genCtx to ensure the update succeeds
+ // even if the request is canceled mid-stream
+ return a.messages.Update(ctx, *currentAssistant)
},
OnRetry: func(err *fantasy.ProviderError, delay time.Duration) {
// TODO: implement
@@ -378,11 +380,15 @@ func (a *sessionAgent) Run(ctx context.Context, call SessionAgentCall) (*fantasy
Finished: true,
}
currentAssistant.AddToolCall(toolCall)
- return a.messages.Update(genCtx, *currentAssistant)
+ // Use parent ctx instead of genCtx to ensure the update succeeds
+ // even if the request is canceled mid-stream
+ return a.messages.Update(ctx, *currentAssistant)
},
OnToolResult: func(result fantasy.ToolResultContent) error {
toolResult := a.convertToToolResult(result)
- _, createMsgErr := a.messages.Create(genCtx, currentAssistant.SessionID, message.CreateMessageParams{
+ // Use parent ctx instead of genCtx to ensure the message is created
+ // even if the request is canceled mid-stream
+ _, createMsgErr := a.messages.Create(ctx, currentAssistant.SessionID, message.CreateMessageParams{
Role: message.Tool,
Parts: []message.ContentPart{
toolResult,
@@ -485,7 +491,7 @@ func (a *sessionAgent) Run(ctx context.Context, call SessionAgentCall) (*fantasy
}
content := "There was an error while executing the tool"
if isCancelErr {
- content = "Tool execution canceled by user"
+ content = "Error: user cancelled assistant tool calling"
} else if isPermissionErr {
content = "User denied permission"
}