#25869 [Bug]: `stream_chunk_builder` corrupts Gemini `server_side_tool_invocations` and `thought_signatures` in streaming, causing "Corrupted tool call context" on follow-up turns
### Check for existing issues
- [x] I have searched the existing issues and checked that my issue is not a duplicate.
### What happened?
When using Gemini models with streaming + web search + tool calls, follow-up turns fail with `400 Bad Request: "Corrupted tool call context"`. The root cause is in `stream_chunk_builder` — it incorrectly merges `provider_specific_fields` across streaming chunks.
### Root Cause
Gemini streams `server_side_tool_invocations` across multiple chunks: - **Chunk 1** contains `toolCall` with `args` and a correct `thought_signature` (~600 bytes) - **Chunk 2** contains `toolResponse` with `response` and a bloated `thought_signature` (~110KB, appears to contain the search HTML response)
In the non-streaming path, `_extract_server_side_tool_invocations` correctly handles this by merging toolCall and toolResponse by `id`, keeping the toolCall's `thought_signature` and only using the toolResponse's if the call doesn't already have one (lines 1411-1419 of `vertex_and_google_ai_studio_gemini.py`).
However, `stream_chunk_builder` (line ~7604 of `main.py`) simply takes the **last** list value for all list-type `provider_specific_fields`:
```python # For lis…