Skip to content

Commit 5af2b29

Browse files
ehsavoiekabirgemini-code-assist[bot]
authored
fix!: Rename blocking to returnImmediately in SendMessageConfiguration (#722)
Sync a2a.proto with upstream (dec790a -> 601c408). The `blocking` field in `SendMessageConfiguration` has been renamed to `return_immediately` with inverted semantics: - `blocking=true` (wait) -> `returnImmediately=false` - `blocking=false` (return immediately) -> `returnImmediately=true` The default behavior changed: `false` now means "wait for completion" instead of "return immediately". BREAKING CHANGE: `MessageSendConfiguration.blocking()` renamed to `returnImmediately()`. Builder method `.blocking(boolean)` renamed to `.returnImmediately(boolean)` with inverted value. JSON wire format field changed from `"blocking"` to `"returnImmediately"`. --------- Signed-off-by: Emmanuel Hugonnet <ehugonne@redhat.com> Co-authored-by: Kabir Khan <kkhan@redhat.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
1 parent e252a0f commit 5af2b29

File tree

22 files changed

+369
-356
lines changed

22 files changed

+369
-356
lines changed

client/base/src/main/java/io/a2a/client/Client.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,7 @@ private ClientEvent getClientEvent(StreamingEventKind event, ClientTaskManager t
696696
private MessageSendConfiguration createMessageSendConfiguration(@Nullable TaskPushNotificationConfig taskPushNotificationConfig) {
697697
return MessageSendConfiguration.builder()
698698
.acceptedOutputModes(clientConfig.getAcceptedOutputModes())
699-
.blocking(!clientConfig.isPolling())
699+
.returnImmediately(clientConfig.isPolling())
700700
.historyLength(clientConfig.getHistoryLength())
701701
.taskPushNotificationConfig(taskPushNotificationConfig)
702702
.build();

client/transport/jsonrpc/src/test/java/io/a2a/client/transport/jsonrpc/JSONRPCTransportStreamingTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public void testSendStreamingMessageParams() {
6262

6363
MessageSendConfiguration configuration = MessageSendConfiguration.builder()
6464
.acceptedOutputModes(List.of("text"))
65-
.blocking(false)
65+
.returnImmediately(true)
6666
.build();
6767

6868
MessageSendParams params = MessageSendParams.builder()
@@ -102,7 +102,7 @@ public void testA2AClientSendStreamingMessage() throws Exception {
102102
.build();
103103
MessageSendConfiguration configuration = MessageSendConfiguration.builder()
104104
.acceptedOutputModes(List.of("text"))
105-
.blocking(false)
105+
.returnImmediately(true)
106106
.build();
107107
MessageSendParams params = MessageSendParams.builder()
108108
.message(message)

client/transport/jsonrpc/src/test/java/io/a2a/client/transport/jsonrpc/JSONRPCTransportTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public void testA2AClientSendMessage() throws Exception {
111111
.build();
112112
MessageSendConfiguration configuration = MessageSendConfiguration.builder()
113113
.acceptedOutputModes(List.of("text"))
114-
.blocking(true)
114+
.returnImmediately(false)
115115
.build();
116116
MessageSendParams params = MessageSendParams.builder()
117117
.message(message)
@@ -159,7 +159,7 @@ public void testA2AClientSendMessageWithMessageResponse() throws Exception {
159159
.build();
160160
MessageSendConfiguration configuration = MessageSendConfiguration.builder()
161161
.acceptedOutputModes(List.of("text"))
162-
.blocking(true)
162+
.returnImmediately(false)
163163
.build();
164164
MessageSendParams params = MessageSendParams.builder()
165165
.message(message)
@@ -201,7 +201,7 @@ public void testA2AClientSendMessageWithError() throws Exception {
201201
.build();
202202
MessageSendConfiguration configuration = MessageSendConfiguration.builder()
203203
.acceptedOutputModes(List.of("text"))
204-
.blocking(true)
204+
.returnImmediately(false)
205205
.build();
206206
MessageSendParams params = MessageSendParams.builder()
207207
.message(message)
@@ -446,7 +446,7 @@ public void testA2AClientSendMessageWithFilePart() throws Exception {
446446
.build();
447447
MessageSendConfiguration configuration = MessageSendConfiguration.builder()
448448
.acceptedOutputModes(List.of("text"))
449-
.blocking(true)
449+
.returnImmediately(false)
450450
.build();
451451
MessageSendParams params = MessageSendParams.builder()
452452
.message(message)
@@ -506,7 +506,7 @@ public void testA2AClientSendMessageWithDataPart() throws Exception {
506506
.build();
507507
MessageSendConfiguration configuration = MessageSendConfiguration.builder()
508508
.acceptedOutputModes(List.of("text"))
509-
.blocking(true)
509+
.returnImmediately(false)
510510
.build();
511511
MessageSendParams params = MessageSendParams.builder()
512512
.message(message)
@@ -564,7 +564,7 @@ public void testA2AClientSendMessageWithMixedParts() throws Exception {
564564
.build();
565565
MessageSendConfiguration configuration = MessageSendConfiguration.builder()
566566
.acceptedOutputModes(List.of("text"))
567-
.blocking(true)
567+
.returnImmediately(false)
568568
.build();
569569
MessageSendParams params = MessageSendParams.builder()
570570
.message(message)
@@ -625,7 +625,7 @@ public void testExtensionSupportRequiredErrorUnmarshalling() throws Exception {
625625
.build();
626626
MessageSendConfiguration configuration = MessageSendConfiguration.builder()
627627
.acceptedOutputModes(List.of("text"))
628-
.blocking(true)
628+
.returnImmediately(false)
629629
.build();
630630
MessageSendParams params = MessageSendParams.builder()
631631
.message(message)
@@ -681,7 +681,7 @@ public void testVersionNotSupportedErrorUnmarshalling() throws Exception {
681681
.build();
682682
MessageSendConfiguration configuration = MessageSendConfiguration.builder()
683683
.acceptedOutputModes(List.of("text"))
684-
.blocking(true)
684+
.returnImmediately(false)
685685
.build();
686686
MessageSendParams params = MessageSendParams.builder()
687687
.message(message)

client/transport/jsonrpc/src/test/java/io/a2a/client/transport/jsonrpc/JsonMessages.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public class JsonMessages {
151151
"acceptedOutputModes":[
152152
"text"
153153
],
154-
"blocking":true
154+
"returnImmediately":false
155155
},
156156
"metadata":{
157157
@@ -201,7 +201,7 @@ public class JsonMessages {
201201
"acceptedOutputModes":[
202202
"text"
203203
],
204-
"blocking":true
204+
"returnImmediately":false
205205
},
206206
"metadata":{
207207
@@ -385,7 +385,7 @@ public class JsonMessages {
385385
"acceptedOutputModes":[
386386
"text"
387387
],
388-
"blocking":true
388+
"returnImmediately":false
389389
},
390390
"metadata":{
391391
@@ -452,7 +452,7 @@ public class JsonMessages {
452452
"acceptedOutputModes":[
453453
"text"
454454
],
455-
"blocking":true
455+
"returnImmediately":false
456456
},
457457
"metadata":{
458458
@@ -523,7 +523,7 @@ public class JsonMessages {
523523
"acceptedOutputModes":[
524524
"text"
525525
],
526-
"blocking":true
526+
"returnImmediately":false
527527
},
528528
"metadata":{
529529

client/transport/rest/src/test/java/io/a2a/client/transport/rest/RestTransportTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ public void testSendMessageStreaming() throws Exception {
259259
.build();
260260
MessageSendConfiguration configuration = MessageSendConfiguration.builder()
261261
.acceptedOutputModes(List.of("text"))
262-
.blocking(false)
262+
.returnImmediately(true)
263263
.build();
264264
MessageSendParams params = MessageSendParams.builder()
265265
.message(message)
@@ -577,7 +577,7 @@ public void testVersionNotSupportedErrorUnmarshallingStreaming() throws Exceptio
577577
.build();
578578
MessageSendConfiguration configuration = MessageSendConfiguration.builder()
579579
.acceptedOutputModes(List.of("text"))
580-
.blocking(false)
580+
.returnImmediately(true)
581581
.build();
582582
MessageSendParams params = MessageSendParams.builder()
583583
.message(message)

reference/jsonrpc/src/test/java/io/a2a/server/apps/quarkus/A2AServerRoutesTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public void testSendMessage_MethodNameSetInContext() {
141141
},
142142
"configuration": {
143143
"acceptedOutputModes": ["text"],
144-
"blocking": true
144+
"returnImmediately": false
145145
},
146146
"metadata": {}
147147
}
@@ -193,7 +193,7 @@ public void testSendStreamingMessage_MethodNameSetInContext() {
193193
},
194194
"configuration": {
195195
"acceptedOutputModes": ["text"],
196-
"blocking": true
196+
"returnImmediately": false
197197
},
198198
"metadata": {}
199199
}
@@ -692,7 +692,7 @@ public void testTenantExtraction_StreamingRequest() {
692692
},
693693
"configuration": {
694694
"acceptedOutputModes": ["text"],
695-
"blocking": true
695+
"returnImmediately": false
696696
},
697697
"metadata": {}
698698
}

server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
*
5252
* // Access configuration if needed
5353
* MessageSendConfiguration config = context.getConfiguration();
54-
* boolean isBlocking = config != null && config.blocking();
54+
* boolean returnImmediately = config != null && Boolean.TRUE.equals(config.returnImmediately());
5555
*
5656
* // Process and respond...
5757
* }

server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -441,15 +441,16 @@ public EventKind onMessageSend(MessageSendParams params, ServerCallContext conte
441441
final java.util.concurrent.atomic.AtomicReference<@NonNull String> taskId = new java.util.concurrent.atomic.AtomicReference<>(queueTaskId);
442442
ResultAggregator resultAggregator = new ResultAggregator(mss.taskManager, null, executor, eventConsumerExecutor);
443443

444-
// Default to blocking=false per A2A spec (return after task creation)
445-
boolean blocking = params.configuration() != null && Boolean.TRUE.equals(params.configuration().blocking());
446-
447-
// Log blocking behavior from client request
448-
if (params.configuration() != null && params.configuration().blocking() != null) {
449-
LOGGER.debug("DefaultRequestHandler: Client requested blocking={} for task {}",
450-
params.configuration().blocking(), taskId.get());
444+
// Default to blocking per A2A spec (returnImmediately defaults to false, meaning wait for completion)
445+
boolean returnImmediately = params.configuration() != null && Boolean.TRUE.equals(params.configuration().returnImmediately());
446+
boolean blocking = !returnImmediately;
447+
448+
// Log return behavior from client request
449+
if (params.configuration() != null && params.configuration().returnImmediately() != null) {
450+
LOGGER.debug("DefaultRequestHandler: Client requested returnImmediately={}, using blocking={} for task {}",
451+
params.configuration().returnImmediately(), blocking, taskId.get());
451452
} else if (params.configuration() != null) {
452-
LOGGER.debug("DefaultRequestHandler: Client sent configuration but blocking=null, using default blocking={} for task {}", blocking, taskId.get());
453+
LOGGER.debug("DefaultRequestHandler: Client sent configuration but returnImmediately=null, using default blocking={} for task {}", blocking, taskId.get());
453454
} else {
454455
LOGGER.debug("DefaultRequestHandler: Client sent no configuration, using default blocking={} for task {}", blocking, taskId.get());
455456
}

server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class RequestContextTest {
3030
private static MessageSendConfiguration defaultConfiguration() {
3131
return MessageSendConfiguration.builder()
3232
.acceptedOutputModes(List.of())
33-
.blocking(false)
33+
.returnImmediately(true)
3434
.build();
3535
}
3636

server-common/src/test/java/io/a2a/server/requesthandlers/DefaultRequestHandlerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
public class DefaultRequestHandlerTest {
5656

5757
private static final MessageSendConfiguration DEFAULT_CONFIG = MessageSendConfiguration.builder()
58-
.blocking(false)
58+
.returnImmediately(true)
5959
.acceptedOutputModes(List.of())
6060
.build();
6161

0 commit comments

Comments
 (0)