Skip to content

v0.6.2

Choose a tag to compare

@magifd2 magifd2 released this 13 May 12:03
· 156 commits to main since this release

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.ThoughtSignature and llm.Message.{ThoughtPartSigs,TextPartSig} carry signature payloads through the agent / memory / chat / contextbuild pipeline; matching fields on memory.ToolCallRecord and memory.Record persist them in session storage and .shellagent export bundles.
  • Design note: docs/en/adr/0009-gemini-thought-signatures.md / docs/ja/adr/0009-gemini-thought-signatures.ja.md documents 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 omitempty JSON tags; legacy sessions and .shellagent exports load and replay without modification.
  • Session.AddAssistantMessageWithToolCalls gains 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.