Repository navigation
Comparing changes
Open a pull request
base repository: stainsevan-hue/a2a-java
base: main
head repository: a2aproject/a2a-java
compare: main
- 17 commits
- 2,599 files changed
- 8 contributors
Commits on Nov 3, 2026
-
Configuration menu - View commit details
-
Copy full SHA for e820a0b - Browse repository at this point
Copy the full SHA e820a0bView commit details -
fix(compat-0.3): signal normal stream completion from the REST transp…
…ort (a2aproject#1279) The 0.3 REST transport never reported a normally finished stream back to the caller: both completion callbacks handed to postAsyncSSE were empty lambdas and RestSSEEventListener_v0_3 had no onComplete() at all, so a client could not tell a finished stream apart from one that is still running. Do what the native REST transport already does since a2aproject#1236, and what the 0.3 JSON-RPC transport has always done: turn the connection-end callback into a single terminal errorHandler(null) call. signalTerminal() keeps that to exactly one terminal outcome, so a completion that arrives after a parsing error is dropped instead of producing a second callback. The listener contract is covered directly, including error-then-completion, repeated completion and concurrent terminal signals, all of which fail when the atomic guard is removed. The errorConsumer Javadoc in ClientTransport_v0_3 now spells out the null-on-success convention, matching the native interface. Fixes a2aproject#1194
Configuration menu - View commit details
-
Copy full SHA for 18694d9 - Browse repository at this point
Copy the full SHA 18694d9View commit details -
docs: announce 1.5.0.Final (a2aproject#1283)
* docs: announce 1.5.0.Final * docs: fix PR link labels * docs: explain escaped PR links * docs: restore original announcement
Configuration menu - View commit details
-
Copy full SHA for 1e83bea - Browse repository at this point
Copy the full SHA 1e83beaView commit details -
Configuration menu - View commit details
-
Copy full SHA for e5483dd - Browse repository at this point
Copy the full SHA e5483ddView commit details
Commits on Nov 4, 2026
-
test(compat-0.3): cover null part metadata conversions (a2aproject#1289)
Add regression coverage for text and data metadata conversion and defensive copying. The runtime fix is already in a2aproject#1261. Related to a2aproject#1275. Signed-off-by: Japneet Singh <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for a2c8a93 - Browse repository at this point
Copy the full SHA a2c8a93View commit details
Commits on Nov 5, 2026
-
fix(common): stop the HTML-escape removal from corrupting escaped bac…
…kslashes (a2aproject#1293) removeHtmlEscaping replaced every HTML escape it could match in the printed protobuf JSON, without looking at whether the sequence was itself escaped. A message text holding a literal backslash followed by the characters "u003c" is printed by JsonFormat as "\\u003c"; the replacement started at the second backslash, so the body carried "\<", which is not valid JSON: MalformedJsonException: Invalid escape sequence at line 7 column 22 path $.message.parts[0].text The scan now copies an escaped backslash as it is and rewrites a six-character escape only when no backslash precedes it, so both the value and the escape removal survive. Fixes 1292 Co-authored-by: WMK666666 <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 8101f3a - Browse repository at this point
Copy the full SHA 8101f3aView commit details -
fix: avoid loading peer-supplied exception classes (a2aproject#1296)
Use a generic exception when reading v0.3 JSON-RPC error data. Add regression coverage for class initialization and constructor invocation. Based on a fix and test proposed by Chaitanya Pawar.
Configuration menu - View commit details
-
Copy full SHA for 5811345 - Browse repository at this point
Copy the full SHA 5811345View commit details
Commits on Nov 6, 2026
-
Configuration menu - View commit details
-
Copy full SHA for b010fae - Browse repository at this point
Copy the full SHA b010faeView commit details -
fix: omit unset proto3 fields from JSON-RPC client requests (a2aproje…
…ct#1286) toJsonRPCRequest() serialised with alwaysPrintFieldsWithNoPresence(), so proto3 scalars the caller never set went out as "" (tenant, taskId, contextId, filename, mediaType) and repeated fields as []. A peer cannot tell "not supplied" from "supplied but empty" any more: in a2aproject#770 the .NET agent was told the task id was present but empty, answered with an empty task.id, and the client then failed to deserialise it. Requests now use a plain printer, which is what the REST client already does. Responses keep alwaysPrintFieldsWithNoPresence() to match the REST server handler, so clients still see the full payload shape. Both printers are static fields now instead of being rebuilt per call, and both still go through ProtoJsonUtils.toJson so the HTML-unescaping from a2aproject#892 is preserved. Adds two unit tests: one asserting the request omits those fields, one pinning that the response printer still prints them. Fixes a2aproject#770
Configuration menu - View commit details
-
Copy full SHA for b7eadac - Browse repository at this point
Copy the full SHA b7eadacView commit details -
feat(examples): serve an extended agent card in helloworld (a2aprojec…
…t#1288) This fixes a2aproject#81 Signed-off-by: Andrea Cosentino <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for fc3e9bd - Browse repository at this point
Copy the full SHA fc3e9bdView commit details -
Configuration menu - View commit details
-
Copy full SHA for 31455e9 - Browse repository at this point
Copy the full SHA 31455e9View commit details
Commits on Nov 9, 2026
-
fix(compat-0.3): close the SSE stream on terminal events (a2aproject#…
…1285) * fix(compat-0.3): close the SSE stream on terminal events The 0.3 SSE listeners only stop reading a stream when the server tears the connection down. The native listeners close it themselves as soon as the event that ends the task arrives, and that difference is visible on a late resubscription to a task that already finished. - RestSSEEventListener_v0_3 took the cancellation future in onMessage and then dropped it: handleMessage() never received it, so neither a final status update nor a terminal task snapshot closed the connection. The listener now passes the future to an auto-close check, the same way AbstractSSEEventListener.handleEvent does. - SSEEventListener_v0_3 cancelled on a final status update only, and treated a task snapshot that is already in a final state as a still running stream, although that snapshot is what a resubscription to a finished task receives. Both listeners now use the same predicate as AbstractSSEEventListener.shouldAutoClose: a final status update, or a task whose state is final. The terminal callback keeps going through signalTerminal(), so a completion that arrives after the auto-close is still dropped. * fix(compat-0.3): cancel the SSE stream once its future is published JSONRPCTransport_v0_3 stores the future returned by postAsyncSSE only after that call returns, so a terminal event delivered while the request is still in flight reached the listener with a null future, and the completed-task path called cancel(true) on it. The listener now records the close request and replays it from onStreamFuturePublished, which the transport calls right after publishing the future. onError and the invalid-message path go through the same helper, as they receive ref.get() as well. Covered at both levels: SSEEventListener_v0_3_Test exercises a terminal event arriving before publication and checks that publishing the future is not itself a close request; JSONRPCTransportStreamingCancel_v0_3_Test drives sendMessageStreaming and resubscribe with a client that delivers the event before postAsyncSSE returns. * fix(compat-0.3): defer the REST SSE close until the future is published The REST listener only closed the stream when the future was already available: `shouldAutoClose(event) && future != null`. postAsyncSSE publishes that future after it returns, so a terminal event delivered during the call skipped both the terminal callback and the cancellation. REST never replays the request, so the caller waited on a stream that had already finished. The listener now records the close intent and replays it from onStreamFuturePublished, the same way the JSON-RPC listener does, and the terminal callback no longer depends on the future being published. onError goes through the same path, so an early failure closes the channel too.
Configuration menu - View commit details
-
Copy full SHA for be2b8f3 - Browse repository at this point
Copy the full SHA be2b8f3View commit details -
test: cover literal escapes in streaming JSON-RPC responses (a2aproje…
…ct#1300) Extend HTML-unescaping regressions across supported escape encodings and representative backslash parity cases. Verify a streaming artifact DataPart round-trips through JSON-RPC response serialization without changing the merged implementation. Co-authored-by: Copilot <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for b96e0b3 - Browse repository at this point
Copy the full SHA b96e0b3View commit details -
fix: handle large SSE events in Vert.x HTTP client (a2aproject#1304)
Parse response buffers incrementally with the shared SSE parser and enforce the default line and event limits. Preserve framing across UTF-8 and line-ending boundaries, recover after oversized events, and complete futures when callbacks fail. Add coverage for fragmented GET and POST streams, parser limits, and callback failures.
Configuration menu - View commit details
-
Copy full SHA for 504e2a9 - Browse repository at this point
Copy the full SHA 504e2a9View commit details -
Configuration menu - View commit details
-
Copy full SHA for b8a0694 - Browse repository at this point
Copy the full SHA b8a0694View commit details -
Configuration menu - View commit details
-
Copy full SHA for 259d45f - Browse repository at this point
Copy the full SHA 259d45fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 897835e - Browse repository at this point
Copy the full SHA 897835eView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff main...main