fix(core): repair null streaming tool args from complete raw JSON - #2451
Open
Blue-Berrys wants to merge 1 commit into
Open
fix(core): repair null streaming tool args from complete raw JSON#2451Blue-Berrys wants to merge 1 commit into
Blue-Berrys wants to merge 1 commit into
Conversation
Early stream chunks may leave ToolUseBlock.input with keys but null values for complex multi-line content. Always re-parse accumulated raw arguments and fill missing/null keys without overwriting non-null values. Closes agentscope-ai#768.
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
oss-maintainer
approved these changes
Jul 28, 2026
oss-maintainer
left a comment
Collaborator
There was a problem hiding this comment.
Review — Approved ✅
Good fix for the null-value streaming tool-call accumulation issue (#768).
Code analysis:
merge()now correctly skips null values from partial input maps, preventing early stream chunks from wiping previously accumulated non-null arguments.build()is updated to always attempt raw JSON parsing (not just whenfinalArgsis empty), which is the right call — the final accumulated raw content is indeed the source of truth.- The merge logic in
build()correctly preserves existing non-null values while filling in missing/null keys from parsed JSON.
Tests:
testRepairNullInputValuesFromCompleteRawContent— directly reproduces the HTML streaming scenario from #768.testNullInputDoesNotOverwriteNonNullArgs— validates the ordering invariant.
Both tests are well-structured and target the exact failure modes.
LGTM. Please sign the CLA.
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Blue-Berrys
force-pushed
the
fix/768-toolcall-accumulator-null-args
branch
from
July 28, 2026 08:08
997a17a to
db566d0
Compare
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
ToolCallsAccumulatorso complete raw tool-call JSON fills missing/null input values after streaming.Closes #768
Description
When streaming tool-call arguments for complex multi-line content (e.g. HTML), early chunks can leave
ToolUseBlock.inputwith keys present but null values. Becausebuild()previously only parsed raw content whenfinalArgswas empty, those nulls were never repaired even thoughcontentheld valid complete JSON.Checklist
mvn spotless:applyToolCallsAccumulatorTest, 15 tests)Testing
JAVA_HOME=/path/to/jdk21 mvn -pl agentscope-core -am \ -Dspotless.check.skip=true \ -Dtest=ToolCallsAccumulatorTest \ -Dsurefire.failIfNoSpecifiedTests=false \ test