Repository navigation
fix(a2a): apply configured blocking timeouts, echo A2A-Extensions responses, notification subscription lifecycle - #94
Merged
Conversation
Signed-off-by: Zhoujie628 <zhoujie628@users.noreply.github.com>
…uest handler DefaultRequestHandler.Builder.build() hardcodes agent=5s/consumption=2s/ reconciliation=1s and never consults A2AConfigProvider (only the CDI @PostConstruct path reads it). A builder-assembled handler therefore returned a WORKING task snapshot after 5 seconds while the agent kept running, silently breaking blocking message:send for any real agent task (LLM calls, multi-step workflow steps). - apply the A2AProperties values directly after build (reflection, fails fast if the SDK field layout changes) and log the effective values - raise A2AProperties defaults 30/5/1 -> 900/960/60 seconds; positive() validation kept (0 remains rejected; disabling blocking is the caller's returnImmediately choice, not a zero timeout) - new test exercises the real build->apply path (reads back the handler fields) instead of only the ConfigProvider mapping Signed-off-by: ZhouJie6 <ivo.zhou@huawei.com>
…ponse header Success responses now carry A2A-Extensions listing the requested extensions that the agent card declares, so extension-aware clients can verify server participation per the A2A extension mechanism. Requested-but-undeclared extensions are not activated and stay out of the list; error responses are unchanged. Covered by a MockMvc test for the supported, unsupported, and no-declaration cases. Signed-off-by: ZhouJie6 <ivo.zhou@huawei.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR contains 3 commits addressing three correctness issues in the A2A-T server-side Spring wiring.
1.
fix: keep workbench notification subscriptions state-independentDecouples workbench Notification-T subscriptions from workflow Task-T session state; a subscription stays open until a recovery result, explicit cancellation, or workbench shutdown.
2.
fix(a2a): apply configured blocking timeouts to the builder-built request handlerDefaultRequestHandler.Builder.build()hardcodes blocking-call timeouts (agent=5s / consumption=2s / reconciliation=1s) and never consultsA2AConfigProvider(only the CDI@PostConstructpath reads it). Under Spring wiring the configuration is therefore silently ignored: a blockingmessage:sendreturns a WORKING snapshot after 5 seconds while the agent keeps running — a silent failure for any real agent task (LLM calls, multi-step workflow steps).A2APropertiesvalues directly afterbuild()via reflection (fails fast if the SDK field layout changes) and log the effective values.A2APropertiesdefaults 30/5/1 → 900/960/60 seconds;positive()validation kept (0 remains rejected; disabling blocking is the caller's returnImmediately choice, not a zero timeout).3.
feat(a2a): echo requested supported extensions via A2A-Extensions response headerSuccess responses now echo the
A2A-Extensionsheader listing the requested extensions that the AgentCard declares, so extension-aware clients can verify server participation per the A2A extension mechanism. Requested-but-undeclared extensions are not activated and stay out of the list; error responses are unchanged. Covered by MockMvc tests for the supported, unsupported, and no-declaration cases.Verification
mvn -B testBUILD SUCCESS (workflow-engine, spring-boot-starter, samples)spotless:applyformatting; google-java-format check passesSigned-off-bytrailerFollow-up
After merge, publish
net.openan.workflow.sdk:spring-boot-starter:0.1.2to Maven Central (the current Central latest, 0.1.1, still ships the blocking-timeout bug).