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

Method loadOrCreateTask

pkg/a2a/server.go:257–282  ·  view source on GitHub ↗

loadOrCreateTask 加载或创建任务

(agentID, taskID, contextID string, metadata Metadata)

Source from the content-addressed store, hash-verified

255
256// loadOrCreateTask 加载或创建任务
257func (s *Server) loadOrCreateTask(agentID, taskID, contextID string, metadata Metadata) (*Task, error) {
258 task, err := s.taskStore.Load(agentID, taskID)
259 if err == nil {
260 // 任务已存在
261 if task.IsFinalState() {
262 // 已完成的任务收到新消息,重启任务
263 task.UpdateStatus(TaskStateSubmitted, nil)
264 } else if task.Status.State == TaskStateInputRequired {
265 // 需要输入的任务收到消息,继续工作
266 task.UpdateStatus(TaskStateWorking, nil)
267 }
268 return task, nil
269 }
270
271 // 创建新任务
272 if contextID == "" {
273 contextID = generateID()
274 }
275
276 task = NewTask(taskID, contextID)
277 if metadata != nil {
278 task.Metadata = metadata
279 }
280
281 return task, nil
282}
283
284// ============== 辅助函数 ==============
285

Callers 1

handleMessageSendMethod · 0.95

Calls 5

NewTaskFunction · 0.85
IsFinalStateMethod · 0.80
UpdateStatusMethod · 0.80
generateIDFunction · 0.70
LoadMethod · 0.65

Tested by

no test coverage detected