fix(task): propagate subagent errors to prevent infinite hang#31299
Open
iloli-25 wants to merge 1 commit into
Open
fix(task): propagate subagent errors to prevent infinite hang#31299iloli-25 wants to merge 1 commit into
iloli-25 wants to merge 1 commit into
Conversation
Subscribe to Session.Event.Error before prompt starts to avoid race condition. Race prompt against error events and 120s timeout, interrupt error fiber on completion to prevent leaks.
Contributor
|
The following comment was made by an LLM, it may be inaccurate: Potential Duplicate FoundPR #13321: "fix: robust subagent completion propagation" This PR appears related as it also addresses subagent error/completion propagation issues. It may have overlapping scope with PR #31299, though it's unclear if it specifically addresses the timeout and race condition aspects. All other search results returned PR #31299 (the current PR itself), which is expected and not a duplicate. |
This was referenced Jun 8, 2026
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.
Subscribe to Session.Event.Error before prompt starts to avoid race condition. Race prompt against error events and 120s timeout, interrupt error fiber on completion to prevent leaks.
Issue for this PR
Closes #5204
Type of change
What does this PR do?
When a subagent hits a quota/rate limit error, the error fires as a
Session.Event.Error bus event but the parent agent hangs indefinitely
because ops.prompt() has no error listener and no timeout.
Fix: subscribe to Session.Event.Error before calling ops.prompt() to
eliminate the race window where an early error is missed. Race the
prompt against the error listener and a 120s idle timeout. Use
Effect.ensuring(Fiber.interrupt(errorFiber)) to clean up the subscriber
regardless of which branch wins.
How did you verify your code works?
Added a unit test in task.test.ts: mocks ops.prompt() as a never-resolving
promise, publishes a Session.Event.Error on the subagent session after
500ms, and asserts the task fails with the error message rather than
hanging. All 19 existing tests continue to pass.
Screenshots / recordings
If this is a UI change, please include a screenshot or recording.
Checklist
If you do not follow this template your PR will be automatically rejected.