From 86ea651df358779dcd30a8354b1c6e45edb39c17 Mon Sep 17 00:00:00 2001 From: goddammit1 <164378662+goddammit1@users.noreply.github.com> Date: Sun, 12 Apr 2026 16:28:27 +0300 Subject: [PATCH] fix: empty response --- lib/proxy/engine/proxy_isolate.dart | 12 ++++++++++++ lib/proxy/gemini/gemini_code_assist_client.dart | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/proxy/engine/proxy_isolate.dart b/lib/proxy/engine/proxy_isolate.dart index d865936..a55781e 100644 --- a/lib/proxy/engine/proxy_isolate.dart +++ b/lib/proxy/engine/proxy_isolate.dart @@ -469,6 +469,12 @@ class _ProxyIsolateHost { details: _requestContextPayload(prompt: resolvedPrompt), ); final payload = await _executeNonStreamRequest(resolvedPrompt, retryTracker: retryTracker); + + final candidates = payload['candidates'] as List?; + if (candidates != null && candidates.isEmpty) { + return _errorResponse(502, 'bad_gateway', 'Upstream API returned empty candidates'); + } + await _logTrace( category: 'chat.completions', route: route, @@ -664,6 +670,12 @@ class _ProxyIsolateHost { } final payload = await _executeNonStreamRequest(resolvedPrompt, retryTracker: retryTracker); + + final candidates = payload['candidates'] as List?; + if (candidates != null && candidates.isEmpty) { + return _errorResponse(502, 'bad_gateway', 'Upstream API returned empty candidates'); + } + await _logResponsePreview( category: 'responses', route: route, diff --git a/lib/proxy/gemini/gemini_code_assist_client.dart b/lib/proxy/gemini/gemini_code_assist_client.dart index 544d40c..85151c3 100644 --- a/lib/proxy/gemini/gemini_code_assist_client.dart +++ b/lib/proxy/gemini/gemini_code_assist_client.dart @@ -161,7 +161,7 @@ const _cloudCodeDomains = { }; const defaultGeminiRequestMaxRetries = 10; const defaultGeminiBaseRetryDelay = Duration(seconds: 1); -const defaultGeminiRequestTimeout = Duration(seconds: 90); +const defaultGeminiRequestTimeout = Duration(minutes: 5); const _maxTransientRequestRetries = 3; const _maxRetryable429Delay = Duration(minutes: 1); const _maxRetryableTransientDelay = Duration(minutes: 5);