77import io .a2a .server .agentexecution .AgentExecutor ;
88import io .a2a .server .agentexecution .RequestContext ;
99import io .a2a .server .events .EventQueue ;
10+ import io .a2a .server .tasks .TaskUpdater ;
1011import io .a2a .spec .JSONRPCError ;
1112import io .a2a .spec .Task ;
1213import io .a2a .spec .TaskNotCancelableError ;
@@ -42,22 +43,12 @@ public void execute(RequestContext context, EventQueue eventQueue) throws JSONRP
4243 eventQueue .enqueueEvent (task );
4344 }
4445
46+ TaskUpdater updater = new TaskUpdater (eventQueue , context .getTaskId (), context .getTaskId ());
47+
4548 // Immediately set to WORKING state
46- eventQueue .enqueueEvent (new TaskStatusUpdateEvent .Builder ()
47- .taskId (context .getTaskId ())
48- .contextId (context .getContextId ())
49- .status (new TaskStatus (TaskState .WORKING ))
50- .build ());
51-
49+ updater .startWork ();
5250 System .out .println ("====> task set to WORKING, starting background execution" );
5351
54- // // Fire and forget - start the task but don't wait for it
55- // CompletableFuture<Void> taskFuture = CompletableFuture
56- // .runAsync(() -> executeTaskInBackground(context, eventQueue), taskExecutor);
57-
58- // // Store the future for potential cancellation
59- // runningTasks.put(context.getTaskId(), taskFuture);
60-
6152 // Method returns immediately - task continues in background
6253 System .out .println ("====> execute() method returning immediately, task running in background" );
6354 }
@@ -66,12 +57,7 @@ public void execute(RequestContext context, EventQueue eventQueue) throws JSONRP
6657 public void cancel (RequestContext context , EventQueue eventQueue ) throws JSONRPCError {
6758 System .out .println ("====> task cancel request received" );
6859 Task task = context .getTask ();
69-
70- if (task == null ) {
71- System .out .println ("====> task not found" );
72- throw new TaskNotFoundError ();
73- }
74-
60+
7561 if (task .getStatus ().state () == TaskState .CANCELED ) {
7662 System .out .println ("====> task already canceled" );
7763 throw new TaskNotCancelableError ();
@@ -82,6 +68,8 @@ public void cancel(RequestContext context, EventQueue eventQueue) throws JSONRPC
8268 throw new TaskNotCancelableError ();
8369 }
8470
71+ TaskUpdater updater = new TaskUpdater (eventQueue , context .getTaskId (), context .getTaskId ());
72+ updater .cancel ();
8573 eventQueue .enqueueEvent (new TaskStatusUpdateEvent .Builder ()
8674 .taskId (task .getId ())
8775 .contextId (task .getContextId ())
0 commit comments