diff --git a/spring-ai-alibaba-a2a/spring-ai-alibaba-a2a-common/src/main/java/com/alibaba/cloud/ai/a2a/route/JsonRpcA2aRouterProvider.java b/spring-ai-alibaba-a2a/spring-ai-alibaba-a2a-common/src/main/java/com/alibaba/cloud/ai/a2a/route/JsonRpcA2aRouterProvider.java index c103541023..f1d2699531 100644 --- a/spring-ai-alibaba-a2a/spring-ai-alibaba-a2a-common/src/main/java/com/alibaba/cloud/ai/a2a/route/JsonRpcA2aRouterProvider.java +++ b/spring-ai-alibaba-a2a/spring-ai-alibaba-a2a-common/src/main/java/com/alibaba/cloud/ai/a2a/route/JsonRpcA2aRouterProvider.java @@ -22,6 +22,7 @@ import com.alibaba.cloud.ai.a2a.server.JsonRpcA2aRequestHandler; import io.a2a.spec.JSONRPCResponse; +import io.a2a.spec.TaskStatusUpdateEvent; import io.a2a.util.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,9 +62,9 @@ public JsonRpcA2aRouterProvider(String wellKnownUrl, String messageUrl) { @Override public RouterFunction getRouter(JsonRpcA2aRequestHandler a2aRequestHandler) { return RouterFunctions.route() - .GET(this.wellKnownUrl, new AgentCardHandler(a2aRequestHandler)) - .POST(this.messageUrl, new MessageHandler(a2aRequestHandler)) - .build(); + .GET(this.wellKnownUrl, new AgentCardHandler(a2aRequestHandler)) + .POST(this.messageUrl, new MessageHandler(a2aRequestHandler)) + .build(); } private class AgentCardHandler implements HandlerFunction { @@ -133,6 +134,12 @@ private ServerResponse buildSseResponse(Flux result) { log.debug("send sse body to agent: {}", sseBody); } sseBuilder.data(sseBody); + if (((JSONRPCResponse) o).getResult() instanceof TaskStatusUpdateEvent) { + TaskStatusUpdateEvent event = (TaskStatusUpdateEvent) ((JSONRPCResponse) o).getResult(); + if (event.isFinal()) { + sseBuilder.complete(); + } + } } catch (IOException e) { sseBuilder.error(e);