Merge commit 'refs/pr/585'

# Conflicts:
#	apps/aether-gateway/src/ai_serving/planner/passthrough/provider/family/request.rs
#	apps/aether-gateway/src/tests/ai_execute/stream_provider_gemini/local_cli.rs
#	apps/aether-gateway/src/tests/ai_execute/sync/gemini/cli.rs
#	apps/aether-gateway/src/tests/control/admin/provider_query.rs
#	crates/aether-provider-transport/src/gemini_cli/mod.rs
#	crates/aether-provider-transport/src/gemini_cli/request.rs
#	crates/aether-provider-transport/src/gemini_cli/url.rs
#	crates/aether-provider-transport/src/lib.rs
This commit is contained in:
fawney19
2026-05-28 13:19:42 +08:00
21 changed files with 867 additions and 404 deletions
@@ -2972,28 +2972,41 @@ async fn provider_query_execute_standard_test_candidate(
if crate::provider_transport::is_gemini_cli_provider_transport(&transport)
&& normalized_provider_api_format == "gemini:generate_content"
{
let project_id = match crate::provider_transport::resolve_gemini_cli_project_id(&transport)
{
Some(project_id) => Some(project_id),
None => state
let mut gemini_cli_auth =
match crate::provider_transport::resolve_local_gemini_cli_request_auth(&transport) {
crate::provider_transport::GeminiCliRequestAuthSupport::Supported(auth) => auth,
crate::provider_transport::GeminiCliRequestAuthSupport::Unsupported(_) => {
crate::provider_transport::GeminiCliRequestAuth::default()
}
};
if gemini_cli_auth.project_id.is_none() {
gemini_cli_auth = state
.app()
.hydrate_gemini_cli_project_metadata_for_transport(&transport)
.await
.and_then(|hydrated| {
let project_id =
crate::provider_transport::resolve_gemini_cli_project_id(&hydrated);
transport = hydrated;
project_id
}),
};
let Some(project_id) = project_id else {
match crate::provider_transport::resolve_local_gemini_cli_request_auth(
&transport,
) {
crate::provider_transport::GeminiCliRequestAuthSupport::Supported(auth) => {
Some(auth)
}
crate::provider_transport::GeminiCliRequestAuthSupport::Unsupported(_) => {
None
}
}
})
.unwrap_or_default();
}
if gemini_cli_auth.project_id.is_none() {
return Ok(provider_query_skipped_execution_outcome(
provider_request_body,
"Gemini CLI project_id is unavailable for v1internal request",
));
};
}
provider_request_body = match crate::provider_transport::build_gemini_cli_v1internal_request(
project_id.as_str(),
&gemini_cli_auth,
trace_id,
request_model,
&provider_request_body,