MCPcopy Create free account
hub / github.com/astercloud/aster / handleTasksCancel

Method handleTasksCancel

pkg/a2a/server.go:216–254  ·  view source on GitHub ↗

handleTasksCancel 处理 tasks/cancel 方法

(_ context.Context, agentID string, req *JSONRPCRequest)

Source from the content-addressed store, hash-verified

214
215// handleTasksCancel 处理 tasks/cancel 方法
216func (s *Server) handleTasksCancel(_ context.Context, agentID string, req *JSONRPCRequest) *JSONRPCResponse {
217 var params TasksCancelParams
218 if err := parseParams(req.Params, &params); err != nil {
219 return NewErrorResponse(req.ID, ErrorCodeInvalidParams, err.Error(), nil)
220 }
221
222 task, err := s.taskStore.Load(agentID, params.TaskID)
223 if err != nil {
224 return NewErrorResponse(req.ID, ErrorCodeTaskNotFound, err.Error(), nil)
225 }
226
227 // 检查是否可以取消
228 if task.IsFinalState() {
229 return NewSuccessResponse(req.ID, &TasksCancelResult{
230 Success: false,
231 Message: "Task is already in final state",
232 })
233 }
234
235 // 设置取消信号
236 s.taskStore.AddCancellation(params.TaskID)
237
238 // 更新任务状态
239 task.UpdateStatus(TaskStateCanceled, &Message{
240 MessageID: generateID(),
241 Role: "agent",
242 Parts: []Part{{Kind: "text", Text: "Task canceled by request."}},
243 Kind: "message",
244 })
245
246 if err := s.taskStore.Save(agentID, task); err != nil {
247 a2aLog.Warn(context.Background(), "save task error", map[string]any{"error": err})
248 }
249
250 return NewSuccessResponse(req.ID, &TasksCancelResult{
251 Success: true,
252 Message: "Task canceled successfully",
253 })
254}
255
256// loadOrCreateTask 加载或创建任务
257func (s *Server) loadOrCreateTask(agentID, taskID, contextID string, metadata Metadata) (*Task, error) {

Callers 1

HandleRequestMethod · 0.95

Calls 11

parseParamsFunction · 0.85
NewErrorResponseFunction · 0.85
NewSuccessResponseFunction · 0.85
IsFinalStateMethod · 0.80
UpdateStatusMethod · 0.80
generateIDFunction · 0.70
ErrorMethod · 0.65
LoadMethod · 0.65
AddCancellationMethod · 0.65
SaveMethod · 0.65
WarnMethod · 0.65

Tested by

no test coverage detected