mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-08 08:12:20 +03:00
Release v3.8.33 — full CHANGELOG in the PR body. Blocking gates green (Build, Lint, Unit Tests 8/8, Package Artifact, Quality Gates, Quality Ratchet, Docs Sync, PR Test Policy, test-vitest). Admin-merged over a Node 26 future-compat timer flake (1/4) + an E2E UI flake (3/9) — both verified non-deterministic; full test:unit validated locally (16936 pass).
43 lines
2.0 KiB
TypeScript
43 lines
2.0 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
// Regression for the audio-input drop on the OpenAI -> Gemini/Antigravity path.
|
|
// Chat Completions clients send `{ type: "input_audio", input_audio: { data, format } }`;
|
|
// Gemini accepts audio as `inlineData` with an `audio/<format>` mime type. Before the
|
|
// fix, `convertOpenAIContentToParts` had no audio branch, so the part fell through every
|
|
// handler and was silently dropped (no error, just missing audio).
|
|
const gemini = await import("../../open-sse/translator/helpers/geminiHelper.ts");
|
|
|
|
test("convertOpenAIContentToParts maps input_audio (wav) to Gemini inlineData", () => {
|
|
const parts = gemini.convertOpenAIContentToParts([
|
|
{ type: "text", text: "transcribe this" },
|
|
{ type: "input_audio", input_audio: { data: "QUJDRA==", format: "wav" } },
|
|
]);
|
|
assert.deepEqual(parts, [
|
|
{ text: "transcribe this" },
|
|
{ inlineData: { mimeType: "audio/wav", data: "QUJDRA==" } },
|
|
]);
|
|
});
|
|
|
|
test("convertOpenAIContentToParts maps input_audio (mp3) and strips a data: prefix", () => {
|
|
const parts = gemini.convertOpenAIContentToParts([
|
|
{ type: "input_audio", input_audio: { data: "data:audio/mp3;base64,QUJDRA==", format: "mp3" } },
|
|
]);
|
|
// mp3 normalizes to the canonical audio/mpeg (matches the #913 translator test).
|
|
assert.deepEqual(parts, [{ inlineData: { mimeType: "audio/mpeg", data: "QUJDRA==" } }]);
|
|
});
|
|
|
|
test("convertOpenAIContentToParts supports the { type: 'audio', audio: {...} } shape", () => {
|
|
const parts = gemini.convertOpenAIContentToParts([
|
|
{ type: "audio", audio: { data: "QUJDRA==", format: "wav" } },
|
|
]);
|
|
assert.deepEqual(parts, [{ inlineData: { mimeType: "audio/wav", data: "QUJDRA==" } }]);
|
|
});
|
|
|
|
test("convertOpenAIContentToParts defaults the audio mime type to audio/wav", () => {
|
|
const parts = gemini.convertOpenAIContentToParts([
|
|
{ type: "input_audio", input_audio: { data: "QUJDRA==" } },
|
|
]);
|
|
assert.deepEqual(parts, [{ inlineData: { mimeType: "audio/wav", data: "QUJDRA==" } }]);
|
|
});
|