fix(terminal): preserve partial output when command times out#3868
Merged
fix(terminal): preserve partial output when command times out#3868
Conversation
|
3 tasks
itsXactlY
pushed a commit
to itsXactlY/hermes-agent
that referenced
this pull request
Mar 30, 2026
…search#3868) When a command timed out, all captured output was discarded — the agent only saw 'Command timed out after Xs' with zero context. Now returns the buffered output followed by a timeout marker, matching the existing interrupt path behavior. Salvaged from PR NousResearch#3286 by @binhnt92. Co-authored-by: nguyen binh <binhnt92@users.noreply.github.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.
When a command timed out in
_execute_oneshot, all captured output was discarded — the agent only sawCommand timed out after Xswith zero context about what happened. For long builds or test runs, this meant no way to tell which tests passed or where it failed.The interrupt path (user sends a new message) already preserves partial output. The timeout path wasn't doing the same thing.
E2E verified:
echo line1 && echo line2 && sleep 30(timeout=2) → all lines captured + timeout marker ✅sleep 30(timeout=1) → clean timeout message, no leading newline ✅Includes 2 regression tests from the original PR.
Salvaged from PR #3286 by @binhnt92 with authorship preserved.