fix(agent): return recoverable tool input errors - #38
Merged
Merged
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.
Invalid model tool arguments can abort a run before the model receives feedback. Validate arguments before preview and dispatch, returning matching
is_error=Truetool results with correction guidance. Cover missing fields, incorrect types, unknown tools, NUL characters, and incomplete JSON delivered by the SDK. Valid sibling calls still execute, recovery uses the existing turn budget, and Journals/ATIF preserve rejected inputs and errors.Validation: 276 core tests pass with both the locked SDK and benchmark SDK 1.5.0; 22 Harbor adapter tests pass. Independent Herdr review reported no findings. CI passes on Python 3.13 and 3.14.
Four historical response replays recover with scripted follow-ups. The targeted scheduler continues after one live argument error and passes 6/6 official tests. The fresh full20 run records 10 passes, nine zeros, and one unscored task; nine passes finish normally. The baseline passed 8/20, but the fresh group contains no argument errors and has other experimental differences, so the score gain cannot be attributed to this fix.
Some malformed JSON still fails inside the SDK before delivery. Circuit also exposes an existing cost-finalization interruption/ATIF export issue, documented for follow-up.
The PR includes the Unreleased changelog entry, synchronized Chinese and English development notes, and structured experiment results.