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
@@ -573,7 +573,7 @@ async fn gateway_executes_openai_chat_cross_format_upstream_stream_via_local_fin
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-gemini-finalize-local-1".to_string(),
endpoint_api_format: "gemini:chat".to_string(),
endpoint_api_format: "gemini:generate_content".to_string(),
endpoint_api_family: Some("gemini".to_string()),
endpoint_kind: Some("chat".to_string()),
endpoint_is_active: true,
@@ -581,11 +581,11 @@ async fn gateway_executes_openai_chat_cross_format_upstream_stream_via_local_fin
key_name: "prod".to_string(),
key_auth_type: "api_key".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["gemini:chat".to_string()]),
key_api_formats: Some(vec!["gemini:generate_content".to_string()]),
key_allowed_models: None,
key_capabilities: None,
key_internal_priority: 5,
key_global_priority_by_format: Some(serde_json::json!({"gemini:chat": 1})),
key_global_priority_by_format: Some(serde_json::json!({"gemini:generate_content": 1})),
model_id: "model-openai-chat-gemini-finalize-local-1".to_string(),
global_model_id: "global-model-openai-chat-gemini-finalize-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -595,7 +595,7 @@ async fn gateway_executes_openai_chat_cross_format_upstream_stream_via_local_fin
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "gemini-2.5-pro-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["gemini:chat".to_string()]),
api_formats: Some(vec!["gemini:generate_content".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -628,7 +628,7 @@ async fn gateway_executes_openai_chat_cross_format_upstream_stream_via_local_fin
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-gemini-finalize-local-1".to_string(),
"provider-openai-chat-gemini-finalize-local-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -660,7 +660,7 @@ async fn gateway_executes_openai_chat_cross_format_upstream_stream_via_local_fin
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["gemini:chat"])),
Some(serde_json::json!(["gemini:generate_content"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-chat-gemini-finalize",
@@ -668,7 +668,7 @@ async fn gateway_executes_openai_chat_cross_format_upstream_stream_via_local_fin
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"gemini:chat": 1})),
Some(serde_json::json!({"gemini:generate_content": 1})),
None,
None,
None,
@@ -1009,7 +1009,7 @@ async fn gateway_executes_openai_chat_cross_format_tool_use_upstream_stream_via_
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-claude-tool-finalize-local-1".to_string(),
endpoint_api_format: "claude:chat".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("chat".to_string()),
endpoint_is_active: true,
@@ -1017,11 +1017,11 @@ async fn gateway_executes_openai_chat_cross_format_tool_use_upstream_stream_via_
key_name: "prod".to_string(),
key_auth_type: "api_key".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:chat".to_string()]),
key_api_formats: Some(vec!["claude:messages".to_string()]),
key_allowed_models: None,
key_capabilities: None,
key_internal_priority: 5,
key_global_priority_by_format: Some(serde_json::json!({"claude:chat": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-openai-chat-claude-tool-finalize-local-1".to_string(),
global_model_id: "global-model-openai-chat-claude-tool-finalize-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -1031,7 +1031,7 @@ async fn gateway_executes_openai_chat_cross_format_tool_use_upstream_stream_via_
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:chat".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -1064,7 +1064,7 @@ async fn gateway_executes_openai_chat_cross_format_tool_use_upstream_stream_via_
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-claude-tool-finalize-local-1".to_string(),
"provider-openai-chat-claude-tool-finalize-local-1".to_string(),
"claude:chat".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("chat".to_string()),
true,
@@ -1096,7 +1096,7 @@ async fn gateway_executes_openai_chat_cross_format_tool_use_upstream_stream_via_
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-chat-claude-tool-finalize",
@@ -1104,7 +1104,7 @@ async fn gateway_executes_openai_chat_cross_format_tool_use_upstream_stream_via_
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:chat": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
None,
@@ -1462,19 +1462,19 @@ async fn gateway_skips_openai_chat_antigravity_cross_format_sync_candidate_as_tr
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-antigravity-finalize-local-1".to_string(),
endpoint_api_format: "gemini:chat".to_string(),
endpoint_api_format: "gemini:generate_content".to_string(),
endpoint_api_family: Some("gemini".to_string()),
endpoint_kind: Some("chat".to_string()),
endpoint_is_active: true,
key_id: "key-openai-chat-antigravity-finalize-local-1".to_string(),
key_name: "prod".to_string(),
key_auth_type: "api_key".to_string(),
key_auth_type: "oauth".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["gemini:chat".to_string()]),
key_api_formats: Some(vec!["gemini:generate_content".to_string()]),
key_allowed_models: None,
key_capabilities: None,
key_internal_priority: 5,
key_global_priority_by_format: Some(serde_json::json!({"gemini:chat": 1})),
key_global_priority_by_format: Some(serde_json::json!({"gemini:generate_content": 1})),
model_id: "model-openai-chat-antigravity-finalize-local-1".to_string(),
global_model_id: "global-model-openai-chat-antigravity-finalize-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -1484,7 +1484,7 @@ async fn gateway_skips_openai_chat_antigravity_cross_format_sync_candidate_as_tr
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-5".to_string(),
priority: 1,
api_formats: Some(vec!["gemini:chat".to_string()]),
api_formats: Some(vec!["gemini:generate_content".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -1517,7 +1517,7 @@ async fn gateway_skips_openai_chat_antigravity_cross_format_sync_candidate_as_tr
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-antigravity-finalize-local-1".to_string(),
"provider-openai-chat-antigravity-finalize-local-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -1541,13 +1541,13 @@ async fn gateway_skips_openai_chat_antigravity_cross_format_sync_candidate_as_tr
"key-openai-chat-antigravity-finalize-local-1".to_string(),
"provider-openai-chat-antigravity-finalize-local-1".to_string(),
"prod".to_string(),
"api_key".to_string(),
"oauth".to_string(),
None,
true,
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["gemini:chat"])),
Some(serde_json::json!(["gemini:generate_content"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-chat-antigravity-finalize",
@@ -1555,7 +1555,7 @@ async fn gateway_skips_openai_chat_antigravity_cross_format_sync_candidate_as_tr
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"gemini:chat": 1})),
Some(serde_json::json!({"gemini:generate_content": 1})),
None,
None,
None,
@@ -1822,7 +1822,7 @@ async fn gateway_executes_openai_chat_cross_format_claude_upstream_sync_via_loca
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-claude-direct-sync-1".to_string(),
endpoint_api_format: "claude:chat".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("chat".to_string()),
endpoint_is_active: true,
@@ -1830,11 +1830,11 @@ async fn gateway_executes_openai_chat_cross_format_claude_upstream_sync_via_loca
key_name: "prod".to_string(),
key_auth_type: "api_key".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:chat".to_string()]),
key_api_formats: Some(vec!["claude:messages".to_string()]),
key_allowed_models: None,
key_capabilities: None,
key_internal_priority: 5,
key_global_priority_by_format: Some(serde_json::json!({"claude:chat": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-openai-chat-claude-direct-sync-1".to_string(),
global_model_id: "global-model-openai-chat-claude-direct-sync-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -1844,7 +1844,7 @@ async fn gateway_executes_openai_chat_cross_format_claude_upstream_sync_via_loca
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:chat".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -1877,7 +1877,7 @@ async fn gateway_executes_openai_chat_cross_format_claude_upstream_sync_via_loca
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-claude-direct-sync-1".to_string(),
"provider-openai-chat-claude-direct-sync-1".to_string(),
"claude:chat".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("chat".to_string()),
true,
@@ -1907,7 +1907,7 @@ async fn gateway_executes_openai_chat_cross_format_claude_upstream_sync_via_loca
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-chat-claude-direct-sync",
@@ -1915,7 +1915,7 @@ async fn gateway_executes_openai_chat_cross_format_claude_upstream_sync_via_loca
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:chat": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
None,
@@ -2173,7 +2173,7 @@ async fn gateway_executes_openai_chat_cross_format_gemini_upstream_sync_via_loca
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-gemini-direct-sync-1".to_string(),
endpoint_api_format: "gemini:chat".to_string(),
endpoint_api_format: "gemini:generate_content".to_string(),
endpoint_api_family: Some("gemini".to_string()),
endpoint_kind: Some("chat".to_string()),
endpoint_is_active: true,
@@ -2181,11 +2181,11 @@ async fn gateway_executes_openai_chat_cross_format_gemini_upstream_sync_via_loca
key_name: "prod".to_string(),
key_auth_type: "api_key".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["gemini:chat".to_string()]),
key_api_formats: Some(vec!["gemini:generate_content".to_string()]),
key_allowed_models: None,
key_capabilities: None,
key_internal_priority: 5,
key_global_priority_by_format: Some(serde_json::json!({"gemini:chat": 1})),
key_global_priority_by_format: Some(serde_json::json!({"gemini:generate_content": 1})),
model_id: "model-openai-chat-gemini-direct-sync-1".to_string(),
global_model_id: "global-model-openai-chat-gemini-direct-sync-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -2195,7 +2195,7 @@ async fn gateway_executes_openai_chat_cross_format_gemini_upstream_sync_via_loca
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "gemini-2.5-pro-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["gemini:chat".to_string()]),
api_formats: Some(vec!["gemini:generate_content".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -2228,7 +2228,7 @@ async fn gateway_executes_openai_chat_cross_format_gemini_upstream_sync_via_loca
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-gemini-direct-sync-1".to_string(),
"provider-openai-chat-gemini-direct-sync-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -2258,7 +2258,7 @@ async fn gateway_executes_openai_chat_cross_format_gemini_upstream_sync_via_loca
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["gemini:chat"])),
Some(serde_json::json!(["gemini:generate_content"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-chat-gemini-direct-sync",
@@ -2266,7 +2266,7 @@ async fn gateway_executes_openai_chat_cross_format_gemini_upstream_sync_via_loca
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"gemini:chat": 1})),
Some(serde_json::json!({"gemini:generate_content": 1})),
None,
None,
None,