mirror of
https://github.com/Nezumi-2711/9router.git
synced 2026-09-22 20:00:47 +00:00
- Add DEFAULT_THINKING_AG_SIGNATURE, DEFAULT_THINKING_GEMINI_CLI_SIGNATURE, DEFAULT_THINKING_VERTEX_SIGNATURE - Rename DEFAULT_THINKING_GEMINI_SIGNATURE → DEFAULT_THINKING_AG_SIGNATURE for clarity - Pass provider-specific signature into openaiToGeminiBase (AG vs Gemini CLI) - Replace synthetic thoughtSignatures with Vertex-native signature in postProcessForVertex - Register Vertex → OpenAI response translator (fixes empty Vertex streaming responses) Made-with: Cursor
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
import { register } from "../index.js";
|
|
import { FORMATS } from "../formats.js";
|
|
import { openaiToGeminiRequest } from "./openai-to-gemini.js";
|
|
import { DEFAULT_THINKING_VERTEX_SIGNATURE } from "../../config/defaultThinkingSignature.js";
|
|
|
|
/**
|
|
* Post-process a Gemini-format body for Vertex AI compatibility:
|
|
*
|
|
* 1. Replace all synthetic thoughtSignatures with Vertex-native signature.
|
|
* 2. Strip `id` from functionCall and functionResponse (Vertex rejects these).
|
|
*/
|
|
function postProcessForVertex(body) {
|
|
if (!body?.contents) return body;
|
|
|
|
for (const turn of body.contents) {
|
|
if (!Array.isArray(turn.parts)) continue;
|
|
|
|
for (const part of turn.parts) {
|
|
// Replace any synthetic signature with Vertex-native one
|
|
if (part.thoughtSignature !== undefined) {
|
|
part.thoughtSignature = DEFAULT_THINKING_VERTEX_SIGNATURE;
|
|
}
|
|
// Strip id from functionCall
|
|
if (part.functionCall && "id" in part.functionCall) {
|
|
delete part.functionCall.id;
|
|
}
|
|
// Strip id from functionResponse
|
|
if (part.functionResponse && "id" in part.functionResponse) {
|
|
delete part.functionResponse.id;
|
|
}
|
|
}
|
|
}
|
|
|
|
return body;
|
|
}
|
|
|
|
export function openaiToVertexRequest(model, body, stream, credentials) {
|
|
const gemini = openaiToGeminiRequest(model, body, stream, credentials);
|
|
return postProcessForVertex(gemini);
|
|
}
|
|
|
|
register(FORMATS.OPENAI, FORMATS.VERTEX, openaiToVertexRequest, null);
|