fix: route Gemini CLI generateContent through stream

This commit is contained in:
Mas0nShi
2026-05-22 09:30:55 +08:00
parent 66f21de50e
commit 9533bd7043
3 changed files with 38 additions and 31 deletions
@@ -34,8 +34,12 @@ pub fn force_upstream_streaming_for_provider(
provider_type: &str,
provider_api_format: &str,
) -> bool {
provider_type.trim().eq_ignore_ascii_case("codex")
&& aether_ai_formats::is_openai_responses_format(provider_api_format)
let provider_type = provider_type.trim();
(provider_type.eq_ignore_ascii_case("codex")
&& aether_ai_formats::is_openai_responses_format(provider_api_format))
|| (provider_type.eq_ignore_ascii_case("gemini_cli")
&& aether_ai_formats::normalize_api_format_alias(provider_api_format)
== "gemini:generate_content")
}
pub(crate) fn parse_upstream_stream_policy(
@@ -196,6 +200,22 @@ mod tests {
));
}
#[test]
fn forces_streaming_for_gemini_cli_generate_content() {
assert!(force_upstream_streaming_for_provider(
"gemini_cli",
"gemini:generate_content"
));
assert!(force_upstream_streaming_for_provider(
" GEMINI_CLI ",
"gemini:generate_content"
));
assert!(!force_upstream_streaming_for_provider(
"google",
"gemini:generate_content"
));
}
#[test]
fn does_not_force_streaming_for_compact_or_other_provider_types() {
assert!(!force_upstream_streaming_for_provider(