Skip to content

Commit b4dc09f

Browse files
authored
fix(a2a): a2a server don't send end event. (alibaba#2437)
1 parent 742fae3 commit b4dc09f

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

spring-ai-alibaba-a2a/spring-ai-alibaba-a2a-common/src/main/java/com/alibaba/cloud/ai/a2a/route/JsonRpcA2aRouterProvider.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import com.alibaba.cloud.ai.a2a.server.JsonRpcA2aRequestHandler;
2424
import io.a2a.spec.JSONRPCResponse;
25+
import io.a2a.spec.TaskStatusUpdateEvent;
2526
import io.a2a.util.Utils;
2627
import org.slf4j.Logger;
2728
import org.slf4j.LoggerFactory;
@@ -61,9 +62,9 @@ public JsonRpcA2aRouterProvider(String wellKnownUrl, String messageUrl) {
6162
@Override
6263
public RouterFunction<ServerResponse> getRouter(JsonRpcA2aRequestHandler a2aRequestHandler) {
6364
return RouterFunctions.route()
64-
.GET(this.wellKnownUrl, new AgentCardHandler(a2aRequestHandler))
65-
.POST(this.messageUrl, new MessageHandler(a2aRequestHandler))
66-
.build();
65+
.GET(this.wellKnownUrl, new AgentCardHandler(a2aRequestHandler))
66+
.POST(this.messageUrl, new MessageHandler(a2aRequestHandler))
67+
.build();
6768
}
6869

6970
private class AgentCardHandler implements HandlerFunction<ServerResponse> {
@@ -133,6 +134,12 @@ private ServerResponse buildSseResponse(Flux<?> result) {
133134
log.debug("send sse body to agent: {}", sseBody);
134135
}
135136
sseBuilder.data(sseBody);
137+
if (((JSONRPCResponse<?>) o).getResult() instanceof TaskStatusUpdateEvent) {
138+
TaskStatusUpdateEvent event = (TaskStatusUpdateEvent) ((JSONRPCResponse<?>) o).getResult();
139+
if (event.isFinal()) {
140+
sseBuilder.complete();
141+
}
142+
}
136143
}
137144
catch (IOException e) {
138145
sseBuilder.error(e);

0 commit comments

Comments
 (0)