fix: preserve Antigravity Claude signatures (#959) (thanks @rdev)

This commit is contained in:
Peter Steinberger
2026-01-15 17:02:52 +00:00
parent 1ae344d8a6
commit 36292d3fbb
2 changed files with 4 additions and 3 deletions

View File

@@ -117,6 +117,7 @@
- Logging: tolerate `EIO` from console writes to avoid gateway crashes. (#925, fixes #878) — thanks @grp06. - Logging: tolerate `EIO` from console writes to avoid gateway crashes. (#925, fixes #878) — thanks @grp06.
- Sandbox: restore `docker.binds` config validation and preserve configured PATH for `docker exec`. (#873) — thanks @akonyer. - Sandbox: restore `docker.binds` config validation and preserve configured PATH for `docker exec`. (#873) — thanks @akonyer.
- Google: downgrade unsigned thinking blocks before send to avoid missing signature errors. - Google: downgrade unsigned thinking blocks before send to avoid missing signature errors.
- Agents: preserve Antigravity Claude signatures and skip Gemini downgrades. (#959) — thanks @rdev.
#### macOS / Apps #### macOS / Apps
- macOS: ensure launchd log directory exists with a test-only override. (#909) — thanks @roshanasingh4. - macOS: ensure launchd log directory exists with a test-only override. (#909) — thanks @roshanasingh4.

View File

@@ -157,14 +157,14 @@ export async function sanitizeSessionHistory(params: {
sessionManager: SessionManager; sessionManager: SessionManager;
sessionId: string; sessionId: string;
}): Promise<AgentMessage[]> { }): Promise<AgentMessage[]> {
const isAntigravityClaudeModel = isAntigravityClaude(params.modelApi, params.modelId);
const sanitizedImages = await sanitizeSessionMessagesImages(params.messages, "session:history", { const sanitizedImages = await sanitizeSessionMessagesImages(params.messages, "session:history", {
sanitizeToolCallIds: shouldSanitizeToolCallIds(params.modelApi), sanitizeToolCallIds: shouldSanitizeToolCallIds(params.modelApi),
enforceToolCallLast: params.modelApi === "anthropic-messages", enforceToolCallLast: params.modelApi === "anthropic-messages",
preserveSignatures: params.modelApi === "google-antigravity" && isAntigravityClaude(params.modelId), preserveSignatures: params.modelApi === "google-antigravity" && isAntigravityClaudeModel,
}); });
const repairedTools = sanitizeToolUseResultPairing(sanitizedImages); const repairedTools = sanitizeToolUseResultPairing(sanitizedImages);
const shouldDowngradeGemini = const shouldDowngradeGemini = isGoogleModelApi(params.modelApi) && !isAntigravityClaudeModel;
isGoogleModelApi(params.modelApi) && !isAntigravityClaude(params.modelId);
// Gemini rejects unsigned thinking blocks; downgrade them before send to avoid INVALID_ARGUMENT. // Gemini rejects unsigned thinking blocks; downgrade them before send to avoid INVALID_ARGUMENT.
const downgradedThinking = shouldDowngradeGemini const downgradedThinking = shouldDowngradeGemini
? downgradeGeminiThinkingBlocks(repairedTools) ? downgradeGeminiThinkingBlocks(repairedTools)