diff --git a/server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java b/server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java index 577e571c9..67c474a9c 100644 --- a/server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java +++ b/server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java @@ -326,8 +326,13 @@ public EventKind onMessageSend(MessageSendParams params, ServerCallContext conte } } } - if (kind instanceof Task taskResult && !taskId.equals(taskResult.getId())) { - throw new InternalError("Task ID mismatch in agent response"); + if (kind instanceof Task taskResult) { + if (shouldAddPushInfo(params)) { + pushConfigStore.setInfo(taskResult.getId(), params.configuration().pushNotificationConfig()); + } + if (taskId != null && !taskId.equals(taskResult.getId())) { + throw new InternalError("Task ID mismatch in agent response"); + } } // Send push notification after initial return (for both blocking and non-blocking) diff --git a/spec/src/main/java/io/a2a/spec/AgentCapabilities.java b/spec/src/main/java/io/a2a/spec/AgentCapabilities.java index 2b4fbcee5..3abacf733 100644 --- a/spec/src/main/java/io/a2a/spec/AgentCapabilities.java +++ b/spec/src/main/java/io/a2a/spec/AgentCapabilities.java @@ -13,6 +13,10 @@ public record AgentCapabilities(boolean streaming, boolean pushNotifications, boolean stateTransitionHistory, List extensions) { + public AgentCapabilities { + extensions = extensions == null ? List.of() : extensions; + } + public static class Builder { private boolean streaming;