fix: Antigravity API compatibility and Gemini thinking tag leakage (#167)
* fix: ensure type:object in sanitized tool schemas for Antigravity API The sanitizeSchemaForGoogle function strips unsupported JSON Schema keywords like anyOf, but this can leave schemas with 'properties' and 'required' fields without a 'type' field. Both Google's Gemini API and Anthropic via Antigravity require 'type: object' when these fields exist. This fix adds a post-sanitization check that ensures type is set to 'object' when properties or required fields are present. Fixes errors like: - Gemini: 'parameters.properties: only allowed for OBJECT type' - Anthropic: 'tools.6.custom.input_schema.type: Field required' * fix: regenerate pi-ai patch with proper pnpm format The patch now correctly applies via pnpm patch-commit, fixing: - Thinking blocks: skip for Gemini, send with signature for Claude - Schema sanitization: ensure type:object after removing anyOf - Remove strict:null for LM Studio/Antigravity compatibility Tested with all Antigravity models (Gemini and Claude). * fix: strip thinking tags from block streaming output to prevent Gemini tag leakage
This commit is contained in:
committed by
GitHub
parent
d6f8b6ac51
commit
9958283ced
@@ -248,7 +248,9 @@ export function subscribeEmbeddedPiSession(params: {
|
||||
};
|
||||
|
||||
const emitBlockChunk = (text: string) => {
|
||||
const chunk = text.trimEnd();
|
||||
// Strip any <thinking> tags that may have leaked into the output (e.g., from Gemini mimicking history)
|
||||
const strippedText = stripThinkingSegments(stripUnpairedThinkingTags(text));
|
||||
const chunk = strippedText.trimEnd();
|
||||
if (!chunk) return;
|
||||
if (chunk === lastBlockReplyText) return;
|
||||
lastBlockReplyText = chunk;
|
||||
|
||||
Reference in New Issue
Block a user