From f282b36d1e4f6f405d28828b7f6498a8d45062c1 Mon Sep 17 00:00:00 2001 From: Badri Narayanan S Date: Sun, 21 Dec 2025 20:25:20 +0530 Subject: [PATCH] code cleanup and test fix --- src/cloudcode-client.js | 1 - src/format-converter.js | 2 -- src/token-extractor.js | 3 --- tests/test-multiturn-thinking-tools.cjs | 34 ++++++++++++++----------- 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/cloudcode-client.js b/src/cloudcode-client.js index 7127916..e26a26b 100644 --- a/src/cloudcode-client.js +++ b/src/cloudcode-client.js @@ -844,7 +844,6 @@ async function* streamSSEResponse(response, originalModel) { yield { type: 'message_stop' }; } - /** * List available models */ diff --git a/src/format-converter.js b/src/format-converter.js index d1d1c64..d8c9c83 100644 --- a/src/format-converter.js +++ b/src/format-converter.js @@ -399,7 +399,6 @@ export function convertAnthropicToGoogle(anthropicRequest) { const isClaudeModel = modelName.toLowerCase().includes('claude'); const isClaudeThinkingModel = isClaudeModel && modelName.toLowerCase().includes('thinking'); - const googleRequest = { contents: [], generationConfig: {} @@ -629,7 +628,6 @@ export function convertGoogleToAnthropic(googleResponse, model) { // Handle the response wrapper const response = googleResponse.response || googleResponse; - const candidates = response.candidates || []; const firstCandidate = candidates[0] || {}; const content = firstCandidate.content || {}; diff --git a/src/token-extractor.js b/src/token-extractor.js index d5f78d0..0405bac 100644 --- a/src/token-extractor.js +++ b/src/token-extractor.js @@ -13,7 +13,6 @@ import { TOKEN_REFRESH_INTERVAL_MS, ANTIGRAVITY_AUTH_PORT } from './constants.js // Cache for the extracted token let cachedToken = null; -let cachedConfig = null; let tokenExtractedAt = null; // Antigravity's SQLite database path @@ -131,7 +130,6 @@ export async function getToken() { if (needsRefresh()) { const data = await getTokenData(); cachedToken = data.apiKey; - cachedConfig = data; tokenExtractedAt = Date.now(); } return cachedToken; @@ -142,7 +140,6 @@ export async function getToken() { */ export async function forceRefresh() { cachedToken = null; - cachedConfig = null; tokenExtractedAt = null; return getToken(); } diff --git a/tests/test-multiturn-thinking-tools.cjs b/tests/test-multiturn-thinking-tools.cjs index 1b52164..258fdf0 100644 --- a/tests/test-multiturn-thinking-tools.cjs +++ b/tests/test-multiturn-thinking-tools.cjs @@ -204,25 +204,27 @@ async function runTests() { // ===== TURN 3: Final tool result and response ===== if (messages.length >= 4) { const lastAssistant = messages[messages.length - 1]; - const toolUseBlock = lastAssistant.content?.find(b => b.type === 'tool_use'); + const toolUseBlocks = lastAssistant.content?.filter(b => b.type === 'tool_use') || []; - if (toolUseBlock) { + if (toolUseBlocks.length > 0) { console.log('\nTURN 3: Provide file content, expect final response'); console.log('-'.repeat(40)); + // Provide tool_result for ALL tool_use blocks (API requires this) + const toolResults = toolUseBlocks.map((toolUseBlock, idx) => ({ + type: 'tool_result', + tool_use_id: toolUseBlock.id, + content: JSON.stringify({ + name: idx === 0 ? 'my-project' : 'core-package', + dependencies: idx === 0 + ? { express: '^4.18.2', cors: '^2.8.5' } + : { lodash: '^4.17.21' } + }, null, 2) + })); + messages.push({ role: 'user', - content: [{ - type: 'tool_result', - tool_use_id: toolUseBlock.id, - content: JSON.stringify({ - name: 'my-project', - dependencies: { - express: '^4.18.2', - cors: '^2.8.5' - } - }, null, 2) - }] + content: toolResults }); const turn3 = await makeRequest({ @@ -248,8 +250,10 @@ async function runTests() { console.log(` Response: "${analysis.text[0].text.substring(0, 100)}..."`); } - const passed = analysis.hasThinking && analysis.hasText; - results.push({ name: 'Turn 3: Thinking + Text response', passed }); + // Thinking is optional for final responses - model may skip it for simple tasks + const passed = analysis.hasText; + const thinkingNote = analysis.hasThinking ? ' (with thinking)' : ' (no thinking - normal for simple tasks)'; + results.push({ name: 'Turn 3: Text response' + thinkingNote, passed }); if (!passed) allPassed = false; } }