From 9d3aef33e8607e750276abc6c0b551fa9cc849a2 Mon Sep 17 00:00:00 2001 From: mawkone Date: Wed, 3 Jun 2026 16:10:36 -0700 Subject: [PATCH] feat(runner): add structured gemini API request/response logging --- vibn-agent-runner/src/llm/gemini-chat.ts | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/vibn-agent-runner/src/llm/gemini-chat.ts b/vibn-agent-runner/src/llm/gemini-chat.ts index 2077a802..0c124a7b 100644 --- a/vibn-agent-runner/src/llm/gemini-chat.ts +++ b/vibn-agent-runner/src/llm/gemini-chat.ts @@ -121,12 +121,33 @@ export async function callGeminiChat(opts: { const fns = toGeminiFunctions(opts.tools ?? []); if (fns) config.tools = fns; + console.log("\n========================================================"); + console.log("➡️ [GEMINI API REQUEST]"); + console.log("========================================================"); + console.log( + `System Prompt: ${config.systemInstruction ? config.systemInstruction.slice(0, 1000) + "..." : "None"}`, + ); + console.log( + "Contents Payload:", + JSON.stringify(toGeminiContents(opts.messages), null, 2), + ); + console.log("========================================================\n"); + const response = await ai.models.generateContent({ model: GEMINI_MODEL, contents: toGeminiContents(opts.messages), config, }); + console.log("\n========================================================"); + console.log("⬅️ [GEMINI API RESPONSE]"); + console.log("========================================================"); + console.log( + "Raw Candidates:", + JSON.stringify(response.candidates, null, 2), + ); + console.log("========================================================\n"); + let text = ""; let thoughts = ""; const toolCalls: ToolCall[] = []; @@ -183,6 +204,18 @@ export async function* streamGeminiChat(opts: { const fns = toGeminiFunctions(opts.tools ?? []); if (fns) config.tools = fns; + console.log("\n========================================================"); + console.log("➡️ [GEMINI STREAM REQUEST]"); + console.log("========================================================"); + console.log( + `System Prompt: ${config.systemInstruction ? config.systemInstruction.slice(0, 1000) + "..." : "None"}`, + ); + console.log( + "Contents Payload:", + JSON.stringify(toGeminiContents(opts.messages), null, 2), + ); + console.log("========================================================\n"); + const streamResult = await ai.models.generateContentStream({ model: GEMINI_MODEL, contents: toGeminiContents(opts.messages),