Repository navigation
v0.6.2
Bug-fix release: tool-call loops against Gemini 3 family models on the Vertex AI backend now complete cleanly.
Fixed
- Gemini 3 thought-signature preservation. Vertex tool-call loops used to fail on the second LLM round with HTTP 400 INVALID_ARGUMENT ("function call ... is missing a
thought_signature"). The backend now captures opaque per-Part continuation tokens from every Gemini 3+ response and replays them on subsequent requests so multi-step tool use completes normally.
Added
llm.ToolCall.ThoughtSignatureandllm.Message.{ThoughtPartSigs,TextPartSig}carry signature payloads through the agent / memory / chat / contextbuild pipeline; matching fields onmemory.ToolCallRecordandmemory.Recordpersist them in session storage and.shellagentexport bundles.- Design note:
docs/en/adr/0009-gemini-thought-signatures.md/docs/ja/adr/0009-gemini-thought-signatures.ja.mddocuments the per-field-vs-parts-array tradeoff, the rejected alternatives, and the ordering-risk caveat.
Compatibility
- LLM-observable behaviour and the local OpenAI-compatible backend are unchanged.
- New signature fields all carry
omitemptyJSON tags; legacy sessions and.shellagentexports load and replay without modification. Session.AddAssistantMessageWithToolCallsgains two trailing parameters; sole production caller updated.- Legacy-session caveat: sessions recorded before this fix have no stored signatures. Continuing such a session on Gemini 3 can still 400 on the first multi-call round — start a fresh session or restart the conversation if you see the error.
Manual smoke verified: the original 5-parallel-weather-tool-call scenario that reproduced the 400 now completes through both Vertex (Gemini 3) and local backends without error.
See CHANGELOG.md for full details.