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
@@ -44,7 +44,7 @@ async fn gateway_executes_gemini_chat_stream_via_local_decision_gate_with_local_
true,
false,
Some(serde_json::json!(["gemini"])),
Some(serde_json::json!(["gemini:chat"])),
Some(serde_json::json!(["gemini:generate_content"])),
Some(serde_json::json!(["gemini-2.5-pro"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -55,7 +55,7 @@ async fn gateway_executes_gemini_chat_stream_via_local_decision_gate_with_local_
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["gemini"])),
Some(serde_json::json!(["gemini:chat"])),
Some(serde_json::json!(["gemini:generate_content"])),
Some(serde_json::json!(["gemini-2.5-pro"])),
)
.expect("auth snapshot should build")
@@ -69,7 +69,7 @@ async fn gateway_executes_gemini_chat_stream_via_local_decision_gate_with_local_
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-gemini-chat-local-stream-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,
@@ -77,11 +77,11 @@ async fn gateway_executes_gemini_chat_stream_via_local_decision_gate_with_local_
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-gemini-chat-local-stream-1".to_string(),
global_model_id: "global-model-gemini-chat-local-stream-1".to_string(),
global_model_name: "gemini-2.5-pro".to_string(),
@@ -91,7 +91,7 @@ async fn gateway_executes_gemini_chat_stream_via_local_decision_gate_with_local_
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,
@@ -124,7 +124,7 @@ async fn gateway_executes_gemini_chat_stream_via_local_decision_gate_with_local_
StoredProviderCatalogEndpoint::new(
"endpoint-gemini-chat-local-stream-1".to_string(),
"provider-gemini-chat-local-stream-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -160,7 +160,7 @@ async fn gateway_executes_gemini_chat_stream_via_local_decision_gate_with_local_
)
.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-gemini-chat-stream",
@@ -168,7 +168,7 @@ async fn gateway_executes_gemini_chat_stream_via_local_decision_gate_with_local_
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"gemini:chat": 1})),
Some(serde_json::json!({"gemini:generate_content": 1})),
None,
None,
Some(serde_json::json!({"enabled": true, "node_id":"proxy-node-gemini-chat-stream"})),
@@ -198,7 +198,7 @@ async fn gateway_executes_gemini_chat_stream_via_local_decision_gate_with_local_
"route_class": "ai_public",
"route_family": "gemini",
"route_kind": "chat",
"auth_endpoint_signature": "gemini:chat",
"auth_endpoint_signature": "gemini:generate_content",
"execution_runtime_candidate": true,
"auth_context": {
"user_id": "user-gemini-chat-local-stream-1",
@@ -44,7 +44,7 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_with_local_s
true,
false,
Some(serde_json::json!(["gemini"])),
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
Some(serde_json::json!(["gemini-cli"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -55,7 +55,7 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_with_local_s
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["gemini"])),
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
Some(serde_json::json!(["gemini-cli"])),
)
.expect("auth snapshot should build")
@@ -69,7 +69,7 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_with_local_s
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-gemini-cli-local-1".to_string(),
endpoint_api_format: "gemini:cli".to_string(),
endpoint_api_format: "gemini:generate_content".to_string(),
endpoint_api_family: Some("gemini".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -77,11 +77,11 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_with_local_s
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["gemini:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"gemini:generate_content": 1})),
model_id: "model-gemini-cli-local-1".to_string(),
global_model_id: "global-model-gemini-cli-local-1".to_string(),
global_model_name: "gemini-cli".to_string(),
@@ -91,7 +91,7 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_with_local_s
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "gemini-cli-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["gemini:cli".to_string()]),
api_formats: Some(vec!["gemini:generate_content".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -124,7 +124,7 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_with_local_s
StoredProviderCatalogEndpoint::new(
"endpoint-gemini-cli-local-1".to_string(),
"provider-gemini-cli-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -160,12 +160,12 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_with_local_s
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
encrypt_python_fernet_plaintext(DEVELOPMENT_ENCRYPTION_KEY, "sk-upstream-gemini-cli")
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"gemini:cli": 1})),
Some(serde_json::json!({"gemini:generate_content": 1})),
None,
None,
Some(serde_json::json!({"enabled": true, "node_id":"proxy-node-gemini-cli-local"})),
@@ -482,7 +482,7 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_after_oauth_
true,
false,
Some(serde_json::json!(["gemini", "gemini_cli"])),
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
Some(serde_json::json!(["gemini-cli"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -493,7 +493,7 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_after_oauth_
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["gemini", "gemini_cli"])),
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
Some(serde_json::json!(["gemini-cli"])),
)
.expect("auth snapshot should build")
@@ -507,7 +507,7 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_after_oauth_
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-gemini-cli-oauth-stream-local-1".to_string(),
endpoint_api_format: "gemini:cli".to_string(),
endpoint_api_format: "gemini:generate_content".to_string(),
endpoint_api_family: Some("gemini".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -515,11 +515,11 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_after_oauth_
key_name: "oauth".to_string(),
key_auth_type: "oauth".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["gemini:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"gemini:generate_content": 1})),
model_id: "model-gemini-cli-oauth-stream-local-1".to_string(),
global_model_id: "global-model-gemini-cli-oauth-stream-local-1".to_string(),
global_model_name: "gemini-cli".to_string(),
@@ -529,7 +529,7 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_after_oauth_
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "gemini-cli-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["gemini:cli".to_string()]),
api_formats: Some(vec!["gemini:generate_content".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -562,7 +562,7 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_after_oauth_
StoredProviderCatalogEndpoint::new(
"endpoint-gemini-cli-oauth-stream-local-1".to_string(),
"provider-gemini-cli-oauth-stream-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -603,12 +603,12 @@ async fn gateway_executes_gemini_cli_stream_via_local_decision_gate_after_oauth_
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
encrypt_python_fernet_plaintext(DEVELOPMENT_ENCRYPTION_KEY, "__placeholder__")
.expect("placeholder api key should encrypt"),
Some(encrypted_auth_config),
None,
Some(serde_json::json!({"gemini:cli": 1})),
Some(serde_json::json!({"gemini:generate_content": 1})),
None,
None,
Some(
@@ -987,7 +987,7 @@ async fn gateway_executes_vertex_ai_gemini_cli_stream_via_local_decision_gate_wi
true,
false,
Some(serde_json::json!(["gemini", "vertex"])),
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
Some(serde_json::json!(["gemini-cli"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -998,7 +998,7 @@ async fn gateway_executes_vertex_ai_gemini_cli_stream_via_local_decision_gate_wi
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["gemini", "vertex"])),
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
Some(serde_json::json!(["gemini-cli"])),
)
.expect("auth snapshot should build")
@@ -1012,7 +1012,7 @@ async fn gateway_executes_vertex_ai_gemini_cli_stream_via_local_decision_gate_wi
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-vertex-cli-stream-local-1".to_string(),
endpoint_api_format: "gemini:cli".to_string(),
endpoint_api_format: "gemini:generate_content".to_string(),
endpoint_api_family: Some("gemini".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -1020,11 +1020,11 @@ async fn gateway_executes_vertex_ai_gemini_cli_stream_via_local_decision_gate_wi
key_name: "prod".to_string(),
key_auth_type: "api_key".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["gemini:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"gemini:generate_content": 1})),
model_id: "model-vertex-cli-stream-local-1".to_string(),
global_model_id: "global-model-vertex-cli-stream-local-1".to_string(),
global_model_name: "gemini-cli".to_string(),
@@ -1034,7 +1034,7 @@ async fn gateway_executes_vertex_ai_gemini_cli_stream_via_local_decision_gate_wi
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "gemini-cli-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["gemini:cli".to_string()]),
api_formats: Some(vec!["gemini:generate_content".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -1067,7 +1067,7 @@ async fn gateway_executes_vertex_ai_gemini_cli_stream_via_local_decision_gate_wi
StoredProviderCatalogEndpoint::new(
"endpoint-vertex-cli-stream-local-1".to_string(),
"provider-vertex-cli-stream-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -1103,12 +1103,12 @@ async fn gateway_executes_vertex_ai_gemini_cli_stream_via_local_decision_gate_wi
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
encrypt_python_fernet_plaintext(DEVELOPMENT_ENCRYPTION_KEY, "vertex-upstream-secret")
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"gemini:cli": 1})),
Some(serde_json::json!({"gemini:generate_content": 1})),
None,
None,
None,
@@ -1428,7 +1428,7 @@ async fn gateway_executes_antigravity_gemini_cli_stream_via_local_decision_gate_
true,
false,
Some(serde_json::json!(["gemini", "antigravity"])),
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
Some(serde_json::json!(["gemini-cli"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -1439,7 +1439,7 @@ async fn gateway_executes_antigravity_gemini_cli_stream_via_local_decision_gate_
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["gemini", "antigravity"])),
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
Some(serde_json::json!(["gemini-cli"])),
)
.expect("auth snapshot should build")
@@ -1453,7 +1453,7 @@ async fn gateway_executes_antigravity_gemini_cli_stream_via_local_decision_gate_
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-antigravity-cli-oauth-stream-local-1".to_string(),
endpoint_api_format: "gemini:cli".to_string(),
endpoint_api_format: "gemini:generate_content".to_string(),
endpoint_api_family: Some("gemini".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -1461,11 +1461,11 @@ async fn gateway_executes_antigravity_gemini_cli_stream_via_local_decision_gate_
key_name: "oauth".to_string(),
key_auth_type: "oauth".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["gemini:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"gemini:generate_content": 1})),
model_id: "model-antigravity-cli-oauth-stream-local-1".to_string(),
global_model_id: "global-model-antigravity-cli-oauth-stream-local-1".to_string(),
global_model_name: "gemini-cli".to_string(),
@@ -1475,7 +1475,7 @@ async fn gateway_executes_antigravity_gemini_cli_stream_via_local_decision_gate_
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-5".to_string(),
priority: 1,
api_formats: Some(vec!["gemini:cli".to_string()]),
api_formats: Some(vec!["gemini:generate_content".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -1508,7 +1508,7 @@ async fn gateway_executes_antigravity_gemini_cli_stream_via_local_decision_gate_
StoredProviderCatalogEndpoint::new(
"endpoint-antigravity-cli-oauth-stream-local-1".to_string(),
"provider-antigravity-cli-oauth-stream-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -1543,12 +1543,12 @@ async fn gateway_executes_antigravity_gemini_cli_stream_via_local_decision_gate_
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["gemini:cli"])),
Some(serde_json::json!(["gemini:generate_content"])),
encrypt_python_fernet_plaintext(DEVELOPMENT_ENCRYPTION_KEY, "__placeholder__")
.expect("placeholder api key should encrypt"),
Some(encrypted_auth_config),
None,
Some(serde_json::json!({"gemini:cli": 1})),
Some(serde_json::json!({"gemini:generate_content": 1})),
None,
None,
None,