完善 Antigravity 与 Gemini 跨格式兼容

This commit is contained in:
MMEXA
2026-07-08 22:34:29 +08:00
parent b1ed6b24b0
commit f9c8ec41f4
8 changed files with 961 additions and 175 deletions
@@ -4,6 +4,7 @@ use aether_ai_formats::formats::matrix::{
};
use aether_ai_formats::normalize_api_format_alias;
use crate::antigravity::is_antigravity_provider_transport;
use crate::auth::{
resolve_local_gemini_auth, resolve_local_openai_bearer_auth, resolve_local_standard_auth,
};
@@ -132,6 +133,11 @@ pub fn request_conversion_transport_unsupported_reason(
{
return local_windsurf_request_transport_unsupported_reason_with_network(transport);
}
if is_antigravity_provider_transport(transport)
&& normalize_api_format_alias(&transport.endpoint.api_format) == "gemini:generate_content"
{
return None;
}
match normalize_api_format_alias(&transport.endpoint.api_format).as_str() {
"openai:chat" => local_openai_chat_transport_unsupported_reason(transport),
@@ -658,6 +664,32 @@ mod tests {
);
}
#[test]
fn antigravity_gemini_transport_supports_standard_cross_format_conversion_via_envelope() {
let transport = transport_snapshot(
"antigravity",
"gemini:generate_content",
"oauth",
true,
None,
);
assert!(request_pair_allowed_for_transport(
&transport,
"openai:chat",
"gemini:generate_content"
));
assert!(request_pair_allowed_for_transport(
&transport,
"openai:responses",
"gemini:generate_content"
));
assert!(request_conversion_transport_supported(
&transport,
RequestConversionKind::ToGeminiStandard
));
}
#[test]
fn vertex_gemini_embedding_transport_supports_openai_embedding_conversion() {
let transport = transport_snapshot("vertex_ai", "gemini:embedding", "api_key", true, None);