fix(gateway): support claude_code cross-format Claude messages

This commit is contained in:
zhefox
2026-08-05 13:57:20 +08:00
parent 1aab31a148
commit 4d67569873
13 changed files with 349 additions and 46 deletions
@@ -1456,6 +1456,46 @@ mod tests {
);
}
#[test]
fn claude_code_official_api_root_builds_documented_messages_urls() {
let mut transport = sample_transport(
"claude_code",
"claude:messages",
"https://api.anthropic.com/v1",
None,
);
transport.endpoint.config = Some(json!({
"anthropic": {"supported_operations": ["messages", "count_tokens"]}
}));
for (operation, expected_url) in [
(
ApiOperation::ClaudeMessagesCreate,
"https://api.anthropic.com/v1/messages",
),
(
ApiOperation::ClaudeCountTokens,
"https://api.anthropic.com/v1/messages/count_tokens",
),
] {
assert_eq!(
build_transport_request_url(
&transport,
TransportRequestUrlParams {
provider_api_format: "claude:messages",
mapped_model: Some("claude-opus-4-6"),
upstream_is_stream: false,
request_query: None,
kiro_api_region: None,
api_operation: Some(operation),
},
)
.as_deref(),
Some(expected_url)
);
}
}
#[test]
fn count_tokens_config_fields_fall_back_from_endpoint_to_provider() {
let mut transport = sample_transport(