From 61be6b19598fbe751cd4a63d18dc3688d15b7ae7 Mon Sep 17 00:00:00 2001 From: Hermann_Kitio Date: Mon, 27 Apr 2026 02:59:07 +0300 Subject: [PATCH] debug(geminiLive): minimal SDK config to isolate rejected field --- src/lib/__tests__/geminiLive.test.ts | 18 +++++++---------- src/lib/geminiLive.ts | 29 +++++++++++++++++----------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/lib/__tests__/geminiLive.test.ts b/src/lib/__tests__/geminiLive.test.ts index 9fa8ce9..90bea3a 100644 --- a/src/lib/__tests__/geminiLive.test.ts +++ b/src/lib/__tests__/geminiLive.test.ts @@ -125,23 +125,19 @@ describe("openGeminiLiveSession (SDK)", () => { capturedConnect = null; }); - it("appelle live.connect avec le modèle + config Live (audio + system + transcripts + VAD)", async () => { + it("appelle live.connect avec une config minimale (debug Sprint 6d — isolement champ rejeté)", async () => { const client = new FakeWs(); const capture = await openWithMock(client); expect(capture.model).toMatch(/gemini/); const config = capture.config; expect(config.responseModalities).toContain("AUDIO"); - expect(config.systemInstruction).toContain( - "un bailleur qui propose un appartement", - ); - expect(config.inputAudioTranscription).toEqual({}); - expect(config.outputAudioTranscription).toEqual({}); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const vad: any = (config.realtimeInputConfig as any) - ?.automaticActivityDetection; - expect(vad?.disabled).toBe(false); - expect(vad?.silenceDurationMs).toBe(2000); + // ⚠ DEBUG : les autres champs sont temporairement commentés dans + // geminiLive.ts pour isoler celui qui fait rejeter le setup par Gemini. + expect(config.systemInstruction).toBeUndefined(); + expect(config.inputAudioTranscription).toBeUndefined(); + expect(config.outputAudioTranscription).toBeUndefined(); + expect(config.realtimeInputConfig).toBeUndefined(); }); it("forwarde un chunk audio client {type:'audio'} via session.sendRealtimeInput (PCM 16k base64)", async () => { diff --git a/src/lib/geminiLive.ts b/src/lib/geminiLive.ts index 8b0c119..92be3dd 100644 --- a/src/lib/geminiLive.ts +++ b/src/lib/geminiLive.ts @@ -293,19 +293,26 @@ export function openGeminiLiveSession( }; // ── Ouverture de la session SDK ────────────────────────────────────── + // ⚠ DEBUG : config minimale pour isoler le champ qui fait rejeter le setup + // par Gemini. À restaurer une fois identifié. + // Variables conservées en signature pour ne pas casser les imports / la + // construction du prompt qui valide le sujet. + void systemPrompt; + void StartSensitivity; + void EndSensitivity; const sdkConfig = { responseModalities: [Modality.AUDIO], - systemInstruction: systemPrompt, - inputAudioTranscription: {}, - outputAudioTranscription: {}, - realtimeInputConfig: { - automaticActivityDetection: { - disabled: false, - startOfSpeechSensitivity: StartSensitivity.START_SENSITIVITY_LOW, - endOfSpeechSensitivity: EndSensitivity.END_SENSITIVITY_LOW, - silenceDurationMs: 2000, - }, - }, + // systemInstruction: systemPrompt, + // inputAudioTranscription: {}, + // outputAudioTranscription: {}, + // realtimeInputConfig: { + // automaticActivityDetection: { + // disabled: false, + // startOfSpeechSensitivity: StartSensitivity.START_SENSITIVITY_LOW, + // endOfSpeechSensitivity: EndSensitivity.END_SENSITIVITY_LOW, + // silenceDurationMs: 2000, + // }, + // }, }; console.log("[T2] SDK config:", JSON.stringify(sdkConfig, null, 2));