fix: strip only msg_* thought_signature (#805) (thanks @marcmarg)

This commit is contained in:
Peter Steinberger
2026-01-13 04:13:24 +00:00
parent c4e8b60d2c
commit 2a9ef806a0
2 changed files with 6 additions and 4 deletions

View File

@@ -28,6 +28,7 @@
- Auto-reply: re-evaluate reasoning tag enforcement on fallback providers to prevent leaked reasoning. (#810 — thanks @mcinteerj) - Auto-reply: re-evaluate reasoning tag enforcement on fallback providers to prevent leaked reasoning. (#810 — thanks @mcinteerj)
- Tools/Gemini: drop null-only union variants while cleaning tool schemas to avoid Cloud Code Assist schema errors. (#782 — thanks @AbhisekBasu1) - Tools/Gemini: drop null-only union variants while cleaning tool schemas to avoid Cloud Code Assist schema errors. (#782 — thanks @AbhisekBasu1)
- Connections UI: polish multi-account account cards in the Connections view. (#816 — thanks @steipete) - Connections UI: polish multi-account account cards in the Connections view. (#816 — thanks @steipete)
- Gemini: strip Claude `msg_*` thought_signature fields from session history to avoid base64 decode errors. (#805 — thanks @marcmarg)
## 2026.1.12-3 ## 2026.1.12-3

View File

@@ -9,12 +9,13 @@ import {
isCloudCodeAssistFormatError, isCloudCodeAssistFormatError,
isCompactionFailureError, isCompactionFailureError,
isContextOverflowError, isContextOverflowError,
isMessagingToolDuplicate,
isFailoverErrorMessage, isFailoverErrorMessage,
normalizeTextForComparison,
sanitizeGoogleTurnOrdering, sanitizeGoogleTurnOrdering,
sanitizeSessionMessagesImages, sanitizeSessionMessagesImages,
sanitizeToolCallId, sanitizeToolCallId,
stripThoughtSignatures, stripThoughtSignatures,
validateGeminiTurns,
} from "./pi-embedded-helpers.js"; } from "./pi-embedded-helpers.js";
import { import {
DEFAULT_AGENTS_FILENAME, DEFAULT_AGENTS_FILENAME,
@@ -591,9 +592,9 @@ describe("sanitizeSessionMessagesImages - thought_signature stripping", () => {
const content = (out[0] as { content?: unknown[] }).content; const content = (out[0] as { content?: unknown[] }).content;
expect(content).toHaveLength(2); expect(content).toHaveLength(2);
expect("thought_signature" in ((content?.[0] ?? {}) as object)).toBe(false); expect("thought_signature" in ((content?.[0] ?? {}) as object)).toBe(false);
expect((content?.[1] as { thought_signature?: unknown })?.thought_signature).toBe( expect(
"AQID", (content?.[1] as { thought_signature?: unknown })?.thought_signature,
); ).toBe("AQID");
}); });
}); });