From 2c46514527c00b53194a955ae397e951b698775f Mon Sep 17 00:00:00 2001 From: Daria Wieliczko Date: Fri, 17 Apr 2026 18:16:50 +0000 Subject: [PATCH] fix(tck): resolve capability test failures for extensions and push notifications - Default `extensions` to an empty list in `AgentCapabilities` to ensure it serializes as an array, fixing `test_capabilities_structure`. - Save `pushNotificationConfig` in `onMessageSend` for non-streaming messages, fixing `test_send_message_with_push_notification_config` --- .../server/requesthandlers/DefaultRequestHandler.java | 9 +++++++-- spec/src/main/java/io/a2a/spec/AgentCapabilities.java | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) 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;