Support sub-agent escalation event in ParallelAgent#5105
Open
jinnigu wants to merge 2 commits intogoogle:mainfrom
Open
Support sub-agent escalation event in ParallelAgent#5105jinnigu wants to merge 2 commits intogoogle:mainfrom
jinnigu wants to merge 2 commits intogoogle:mainfrom
Conversation
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.
Please ensure you have read the contribution guide before creating a pull request.
Link to Issue or Description of Change
1. Link to an existing issue (if applicable):
2. Or, if no issue exists, describe the change:
Problem:
ParallelAgentdoes not short-circuit when a sub-agent emits an escalation event (actions.escalate = True). Other sub-agents continue running to completion unnecessarily. This is the Python counterpart of google/adk-java#561, resolved in google/adk-java#612.Solution:
When any sub-agent emits an escalation event, the
ParallelAgentnow yields the event, cancels all remaining sub-agent tasks, and marks itself as complete in resumable mode. This works for both the Python 3.11+ (TaskGroup) and pre-3.11 code paths.Testing Plan
Unit Tests:
I have added or updated unit tests for my change.
All unit tests pass locally.
test_run_async_short_circuits_other_agents_on_escalate_action— parameterized overis_resumable(True/False) xuse_pre_3_11_merge(True/False) = 4 test variants. Verifies the slow agent is cancelled, post-escalation events are suppressed, correct event ordering, and properend_of_agentstate in resumable mode.test_resumable_parallel_agent_escalation_short_circuits_persisted_run— integration test usingInMemoryRunnerthat verifies events are correctly persisted to the session store and that re-running a completed escalated invocation is a no-op.All 15 tests pass (12 in
test_parallel_agent.py, 3 intest_resume_invocation.py), no regressions.Manual End-to-End (E2E) Tests:
N/A — behavior is fully covered by unit and integration tests.
Checklist
Additional context
LoopAgentalready supports escalation; this bringsParallelAgentto parity.