fix(gateway): route format rules through serving facade

This commit is contained in:
MMEXA
2026-07-12 03:56:53 +08:00
parent 8d4d42a887
commit 63936aa110
6 changed files with 10 additions and 6 deletions
@@ -162,4 +162,8 @@ pub(crate) use aether_ai_formats::api::{
OPENAI_VIDEO_CREATE_SYNC_PLAN_KIND, OPENAI_VIDEO_DELETE_SYNC_PLAN_KIND, OPENAI_VIDEO_CREATE_SYNC_PLAN_KIND, OPENAI_VIDEO_DELETE_SYNC_PLAN_KIND,
OPENAI_VIDEO_REMIX_SYNC_PLAN_KIND, OPENAI_VIDEO_REMIX_SYNC_PLAN_KIND,
}; };
pub(crate) use aether_ai_formats::{is_embedding_api_format, is_rerank_api_format}; pub(crate) use aether_ai_formats::{
api_format_defaults_to_client_error_failover, api_format_defaults_to_non_stream,
api_format_permission_covers, intersect_api_format_allowed_lists, is_embedding_api_format,
is_rerank_api_format,
};
+1 -1
View File
@@ -2107,7 +2107,7 @@ fn intersect_api_format_list_policies(
(None, None) => None, (None, None) => None,
(Some(values), None) | (None, Some(values)) => Some(values), (Some(values), None) | (None, Some(values)) => Some(values),
(Some(left_values), Some(right_values)) => Some( (Some(left_values), Some(right_values)) => Some(
aether_ai_formats::intersect_api_format_allowed_lists(&left_values, &right_values), crate::ai_serving::intersect_api_format_allowed_lists(&left_values, &right_values),
), ),
} }
} }
@@ -101,7 +101,7 @@ fn provider_query_model_mapping_matches_endpoint(
) -> bool { ) -> bool {
let api_format_matches = mapping.api_formats.as_ref().is_none_or(|api_formats| { let api_format_matches = mapping.api_formats.as_ref().is_none_or(|api_formats| {
api_formats.iter().any(|value| { api_formats.iter().any(|value| {
aether_ai_formats::api_format_permission_covers(value, &endpoint.api_format) crate::ai_serving::api_format_permission_covers(value, &endpoint.api_format)
}) })
}); });
if !api_format_matches { if !api_format_matches {
@@ -220,7 +220,7 @@ fn users_me_usage_api_format_defaults_to_non_stream(item: &StoredRequestUsageAud
let Some(value) = api_format else { let Some(value) = api_format else {
return false; return false;
}; };
aether_ai_formats::api_format_defaults_to_non_stream(value) crate::ai_serving::api_format_defaults_to_non_stream(value)
} }
fn users_me_usage_request_body_implies_default_non_stream(item: &StoredRequestUsageAudit) -> bool { fn users_me_usage_request_body_implies_default_non_stream(item: &StoredRequestUsageAudit) -> bool {
@@ -38,7 +38,7 @@ pub(crate) fn provider_catalog_key_supports_format(
} }
formats formats
.iter() .iter()
.any(|candidate| aether_ai_formats::api_format_permission_covers(candidate, api_format)) .any(|candidate| crate::ai_serving::api_format_permission_covers(candidate, api_format))
} }
pub(crate) fn decrypt_catalog_secret_with_fallbacks( pub(crate) fn decrypt_catalog_secret_with_fallbacks(
@@ -97,7 +97,7 @@ pub(crate) fn local_failover_policy_from_transport(
LocalFailoverPolicy { LocalFailoverPolicy {
max_retries, max_retries,
retry_client_errors_by_default: retry_client_errors_by_default:
aether_ai_formats::api_format_defaults_to_client_error_failover( crate::ai_serving::api_format_defaults_to_client_error_failover(
&transport.endpoint.api_format, &transport.endpoint.api_format,
), ),
stop_cyber_policy_errors: codex_cyber_flag_passthrough_enabled( stop_cyber_policy_errors: codex_cyber_flag_passthrough_enabled(