Normalize canonical API formats

This commit is contained in:
fawney19
2026-04-29 10:20:41 +08:00
parent 02ad67fe33
commit 07a319259b
171 changed files with 2460 additions and 1962 deletions
@@ -185,11 +185,8 @@ fn select_primary_credential(
if signature.starts_with("gemini:") {
return select_gemini_credential(bundle);
}
if signature == "claude:cli" {
return select_claude_cli_credential(bundle);
}
if signature.starts_with("claude:") {
return select_claude_chat_credential(bundle);
return select_claude_messages_credential(bundle);
}
if signature.starts_with("openai:") {
return select_openai_credential(bundle);
@@ -212,29 +209,15 @@ fn select_openai_credential(bundle: &GatewayCredentialBundle) -> Option<GatewayP
.or_else(|| select_cookie_credential(bundle))
}
fn select_claude_cli_credential(
fn select_claude_messages_credential(
bundle: &GatewayCredentialBundle,
) -> Option<GatewayPrimaryCredential> {
first_provider_api_key(
bundle,
&[
GatewayCredentialCarrier::XApiKey,
GatewayCredentialCarrier::ApiKey,
GatewayCredentialCarrier::AuthorizationBearer,
GatewayCredentialCarrier::XApiKey,
GatewayCredentialCarrier::ApiKey,
],
)
.or_else(|| first_bearer_token(bundle))
.or_else(|| select_cookie_credential(bundle))
}
fn select_claude_chat_credential(
bundle: &GatewayCredentialBundle,
) -> Option<GatewayPrimaryCredential> {
first_provider_api_key(
bundle,
&[
GatewayCredentialCarrier::XApiKey,
GatewayCredentialCarrier::ApiKey,
],
)
.or_else(|| first_bearer_token(bundle))
@@ -410,7 +393,8 @@ mod tests {
);
headers.insert("x-api-key", "claude-key".parse().unwrap());
let extracted = extract_request_credentials(&headers, &uri("/v1/messages"), "claude:chat");
let extracted =
extract_request_credentials(&headers, &uri("/v1/messages"), "claude:messages");
assert_eq!(
extracted.primary,
Some(GatewayPrimaryCredential::ProviderApiKey {
@@ -428,7 +412,8 @@ mod tests {
"Bearer cli-token".parse().unwrap(),
);
let extracted = extract_request_credentials(&headers, &uri("/v1/messages"), "claude:cli");
let extracted =
extract_request_credentials(&headers, &uri("/v1/messages"), "claude:messages");
assert_eq!(
extracted.primary,
Some(GatewayPrimaryCredential::ProviderApiKey {
@@ -446,7 +431,7 @@ mod tests {
let extracted = extract_request_credentials(
&headers,
&uri("/v1beta/models?key=gemini-query"),
"gemini:chat",
"gemini:generate_content",
);
assert_eq!(
extracted.primary,
@@ -660,7 +660,7 @@ fn contains_api_format_or_alias(items: &[String], target: &str) -> bool {
}
fn normalize_api_format_alias(value: &str) -> String {
crate::ai_pipeline::normalize_legacy_openai_format_alias(value)
crate::ai_pipeline::normalize_api_format_alias(value)
}
fn api_format_matches(left: &str, right: &str) -> bool {