Normalize canonical API formats

This commit is contained in:
fawney19
2026-04-29 09:25:19 +08:00
parent 02ad67fe33
commit 07a319259b
171 changed files with 2460 additions and 1962 deletions

View File

@@ -549,7 +549,7 @@ async fn gateway_locally_denies_claude_messages_after_execution_runtime_miss_wit
"/v1/messages",
"claude",
"chat",
"claude:chat",
"claude:messages",
"{\"model\":\"claude-sonnet-4-5\",\"messages\":[]}",
"请求缺少本地执行所需的认证、模型或配置上下文,无法选择上游提供商",
)
@@ -577,7 +577,7 @@ async fn gateway_locally_denies_claude_messages_stream_after_execution_runtime_m
"/v1/messages",
"claude",
"chat",
"claude:chat",
"claude:messages",
"{\"model\":\"claude-sonnet-4-5\",\"messages\":[],\"stream\":true}",
"请求缺少本地执行所需的认证、模型或配置上下文,无法选择上游提供商",
)
@@ -619,7 +619,7 @@ async fn gateway_locally_denies_gemini_generate_after_execution_runtime_miss_wit
"/v1beta/models/gemini-2.5-pro:generateContent",
"gemini",
"chat",
"gemini:chat",
"gemini:generate_content",
"{\"contents\":[]}",
"请求缺少本地执行所需的认证、模型或配置上下文,无法选择上游提供商",
)
@@ -633,7 +633,7 @@ async fn gateway_locally_denies_gemini_v1_generate_after_execution_runtime_miss_
"/v1/models/gemini-2.5-pro:generateContent",
"gemini",
"chat",
"gemini:chat",
"gemini:generate_content",
"{\"contents\":[]}",
"请求缺少本地执行所需的认证、模型或配置上下文,无法选择上游提供商",
)
@@ -647,7 +647,7 @@ async fn gateway_locally_denies_gemini_stream_after_execution_runtime_miss_witho
"/v1beta/models/gemini-2.5-pro:streamGenerateContent",
"gemini",
"chat",
"gemini:chat",
"gemini:generate_content",
"{\"contents\":[]}",
"请求缺少本地执行所需的认证、模型或配置上下文,无法选择上游提供商",
)
@@ -691,7 +691,7 @@ async fn gateway_locally_denies_gemini_files_root_after_execution_runtime_miss_w
"/v1beta/files?view=BASIC",
"gemini",
"files",
"gemini:chat",
"gemini:generate_content",
None,
"当前 Gemini Files 请求无法在本地执行:没有匹配到可用的执行路径",
)
@@ -707,7 +707,7 @@ async fn gateway_locally_denies_gemini_files_download_after_execution_runtime_mi
"/v1beta/files/file-123:download?alt=media",
"gemini",
"files",
"gemini:chat",
"gemini:generate_content",
None,
"当前 Gemini Files 请求无法在本地执行:没有匹配到可用的执行路径",
)
@@ -723,7 +723,7 @@ async fn gateway_locally_denies_gemini_files_upload_after_execution_runtime_miss
"/upload/v1beta/files?uploadType=resumable",
"gemini",
"files",
"gemini:chat",
"gemini:generate_content",
Some("{\"file\":{}}"),
"当前 Gemini Files 请求无法在本地执行:没有匹配到可用的执行路径",
)

View File

@@ -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,

View File

@@ -82,7 +82,7 @@ async fn gateway_executes_openai_responses_cross_format_upstream_stream_via_loca
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-cli-gemini-finalize-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,
@@ -90,11 +90,11 @@ async fn gateway_executes_openai_responses_cross_format_upstream_stream_via_loca
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-openai-cli-gemini-finalize-local-1".to_string(),
global_model_id: "global-model-openai-cli-gemini-finalize-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -104,7 +104,7 @@ async fn gateway_executes_openai_responses_cross_format_upstream_stream_via_loca
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "gemini-2.5-pro-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,
@@ -137,7 +137,7 @@ async fn gateway_executes_openai_responses_cross_format_upstream_stream_via_loca
StoredProviderCatalogEndpoint::new(
"endpoint-openai-cli-gemini-finalize-local-1".to_string(),
"provider-openai-cli-gemini-finalize-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -169,7 +169,7 @@ async fn gateway_executes_openai_responses_cross_format_upstream_stream_via_loca
)
.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-openai-cli-gemini-finalize",
@@ -177,7 +177,7 @@ async fn gateway_executes_openai_responses_cross_format_upstream_stream_via_loca
.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,
@@ -540,7 +540,7 @@ async fn gateway_executes_openai_responses_cross_format_function_call_upstream_s
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-cli-gemini-tool-finalize-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,
@@ -548,11 +548,11 @@ async fn gateway_executes_openai_responses_cross_format_function_call_upstream_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-openai-cli-gemini-tool-finalize-local-1".to_string(),
global_model_id: "global-model-openai-cli-gemini-tool-finalize-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -562,7 +562,7 @@ async fn gateway_executes_openai_responses_cross_format_function_call_upstream_s
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "gemini-2.5-pro-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,
@@ -595,7 +595,7 @@ async fn gateway_executes_openai_responses_cross_format_function_call_upstream_s
StoredProviderCatalogEndpoint::new(
"endpoint-openai-cli-gemini-tool-finalize-local-1".to_string(),
"provider-openai-cli-gemini-tool-finalize-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -627,7 +627,7 @@ async fn gateway_executes_openai_responses_cross_format_function_call_upstream_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-openai-cli-gemini-tool-finalize",
@@ -635,7 +635,7 @@ async fn gateway_executes_openai_responses_cross_format_function_call_upstream_s
.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,
@@ -1010,7 +1010,7 @@ async fn gateway_executes_openai_responses_antigravity_cross_format_upstream_str
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-cli-antigravity-finalize-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,
@@ -1018,11 +1018,11 @@ async fn gateway_executes_openai_responses_antigravity_cross_format_upstream_str
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-openai-cli-antigravity-finalize-local-1".to_string(),
global_model_id: "global-model-openai-cli-antigravity-finalize-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -1032,7 +1032,7 @@ async fn gateway_executes_openai_responses_antigravity_cross_format_upstream_str
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,
@@ -1065,7 +1065,7 @@ async fn gateway_executes_openai_responses_antigravity_cross_format_upstream_str
StoredProviderCatalogEndpoint::new(
"endpoint-openai-cli-antigravity-finalize-local-1".to_string(),
"provider-openai-cli-antigravity-finalize-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -1100,12 +1100,12 @@ async fn gateway_executes_openai_responses_antigravity_cross_format_upstream_str
)
.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,

View File

@@ -556,7 +556,7 @@ async fn gateway_executes_kiro_claude_cli_sync_upstream_stream_via_local_finaliz
true,
false,
Some(serde_json::json!(["claude", "kiro"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -567,7 +567,7 @@ async fn gateway_executes_kiro_claude_cli_sync_upstream_stream_via_local_finaliz
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude", "kiro"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4"])),
)
.expect("auth snapshot should build")
@@ -581,7 +581,7 @@ async fn gateway_executes_kiro_claude_cli_sync_upstream_stream_via_local_finaliz
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-kiro-cli-finalize-local-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -589,11 +589,11 @@ async fn gateway_executes_kiro_claude_cli_sync_upstream_stream_via_local_finaliz
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-kiro-cli-finalize-local-1".to_string(),
global_model_id: "global-model-kiro-cli-finalize-local-1".to_string(),
global_model_name: "claude-sonnet-4".to_string(),
@@ -603,7 +603,7 @@ async fn gateway_executes_kiro_claude_cli_sync_upstream_stream_via_local_finaliz
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -636,7 +636,7 @@ async fn gateway_executes_kiro_claude_cli_sync_upstream_stream_via_local_finaliz
StoredProviderCatalogEndpoint::new(
"endpoint-kiro-cli-finalize-local-1".to_string(),
"provider-kiro-cli-finalize-local-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -684,7 +684,7 @@ async fn gateway_executes_kiro_claude_cli_sync_upstream_stream_via_local_finaliz
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(DEVELOPMENT_ENCRYPTION_KEY, "__placeholder__")
.expect("api key should encrypt"),
Some(
@@ -695,7 +695,7 @@ async fn gateway_executes_kiro_claude_cli_sync_upstream_stream_via_local_finaliz
.expect("auth config should encrypt"),
),
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
Some(serde_json::json!({"enabled": true, "node_id":"proxy-node-kiro-cli-finalize-local"})),

View File

@@ -51,7 +51,7 @@ async fn gateway_executes_claude_chat_sync_same_format_via_local_finalize_respon
true,
false,
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -62,7 +62,7 @@ async fn gateway_executes_claude_chat_sync_same_format_via_local_finalize_respon
Some(5),
Some(4_102_444_800_i64),
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4"])),
)
.expect("auth snapshot should build")
@@ -76,7 +76,7 @@ async fn gateway_executes_claude_chat_sync_same_format_via_local_finalize_respon
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-claude-chat-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,
@@ -84,11 +84,11 @@ async fn gateway_executes_claude_chat_sync_same_format_via_local_finalize_respon
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-claude-chat-finalize-local-1".to_string(),
global_model_id: "global-model-claude-chat-finalize-local-1".to_string(),
global_model_name: "claude-sonnet-4".to_string(),
@@ -98,7 +98,7 @@ async fn gateway_executes_claude_chat_sync_same_format_via_local_finalize_respon
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,
@@ -131,7 +131,7 @@ async fn gateway_executes_claude_chat_sync_same_format_via_local_finalize_respon
StoredProviderCatalogEndpoint::new(
"endpoint-claude-chat-finalize-local-1".to_string(),
"provider-claude-chat-finalize-local-1".to_string(),
"claude:chat".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("chat".to_string()),
true,
@@ -163,7 +163,7 @@ async fn gateway_executes_claude_chat_sync_same_format_via_local_finalize_respon
)
.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-claude-chat-finalize",
@@ -171,7 +171,7 @@ async fn gateway_executes_claude_chat_sync_same_format_via_local_finalize_respon
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:chat": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
None,
@@ -499,7 +499,7 @@ async fn gateway_executes_claude_chat_sync_upstream_stream_via_local_finalize_re
true,
false,
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -510,7 +510,7 @@ async fn gateway_executes_claude_chat_sync_upstream_stream_via_local_finalize_re
Some(5),
Some(4_102_444_800_i64),
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4"])),
)
.expect("auth snapshot should build")
@@ -524,7 +524,7 @@ async fn gateway_executes_claude_chat_sync_upstream_stream_via_local_finalize_re
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-claude-chat-stream-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,
@@ -532,11 +532,11 @@ async fn gateway_executes_claude_chat_sync_upstream_stream_via_local_finalize_re
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-claude-chat-stream-finalize-local-1".to_string(),
global_model_id: "global-model-claude-chat-stream-finalize-local-1".to_string(),
global_model_name: "claude-sonnet-4".to_string(),
@@ -546,7 +546,7 @@ async fn gateway_executes_claude_chat_sync_upstream_stream_via_local_finalize_re
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,
@@ -579,7 +579,7 @@ async fn gateway_executes_claude_chat_sync_upstream_stream_via_local_finalize_re
StoredProviderCatalogEndpoint::new(
"endpoint-claude-chat-stream-finalize-local-1".to_string(),
"provider-claude-chat-stream-finalize-local-1".to_string(),
"claude:chat".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("chat".to_string()),
true,
@@ -611,7 +611,7 @@ async fn gateway_executes_claude_chat_sync_upstream_stream_via_local_finalize_re
)
.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-claude-chat-stream-finalize",
@@ -619,7 +619,7 @@ async fn gateway_executes_claude_chat_sync_upstream_stream_via_local_finalize_re
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:chat": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
None,
@@ -952,7 +952,7 @@ async fn gateway_executes_claude_cli_sync_upstream_stream_via_local_finalize_res
true,
false,
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-code"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -963,7 +963,7 @@ async fn gateway_executes_claude_cli_sync_upstream_stream_via_local_finalize_res
Some(5),
Some(4_102_444_800_i64),
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-code"])),
)
.expect("auth snapshot should build")
@@ -977,7 +977,7 @@ async fn gateway_executes_claude_cli_sync_upstream_stream_via_local_finalize_res
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-claude-cli-finalize-local-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -985,11 +985,11 @@ async fn gateway_executes_claude_cli_sync_upstream_stream_via_local_finalize_res
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-claude-cli-finalize-local-1".to_string(),
global_model_id: "global-model-claude-cli-finalize-local-1".to_string(),
global_model_name: "claude-code".to_string(),
@@ -999,7 +999,7 @@ async fn gateway_executes_claude_cli_sync_upstream_stream_via_local_finalize_res
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-code-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -1032,7 +1032,7 @@ async fn gateway_executes_claude_cli_sync_upstream_stream_via_local_finalize_res
StoredProviderCatalogEndpoint::new(
"endpoint-claude-cli-finalize-local-1".to_string(),
"provider-claude-cli-finalize-local-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -1064,7 +1064,7 @@ async fn gateway_executes_claude_cli_sync_upstream_stream_via_local_finalize_res
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-claude-cli-finalize",
@@ -1072,7 +1072,7 @@ async fn gateway_executes_claude_cli_sync_upstream_stream_via_local_finalize_res
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
None,

View File

@@ -56,7 +56,7 @@ async fn gateway_executes_gemini_chat_sync_same_format_via_local_finalize_respon
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()),
@@ -67,7 +67,7 @@ async fn gateway_executes_gemini_chat_sync_same_format_via_local_finalize_respon
Some(5),
Some(4_102_444_800_i64),
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")
@@ -81,7 +81,7 @@ async fn gateway_executes_gemini_chat_sync_same_format_via_local_finalize_respon
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-gemini-chat-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,
@@ -89,11 +89,11 @@ async fn gateway_executes_gemini_chat_sync_same_format_via_local_finalize_respon
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-finalize-local-1".to_string(),
global_model_id: "global-model-gemini-chat-finalize-local-1".to_string(),
global_model_name: "gemini-2.5-pro".to_string(),
@@ -103,7 +103,7 @@ async fn gateway_executes_gemini_chat_sync_same_format_via_local_finalize_respon
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,
@@ -136,7 +136,7 @@ async fn gateway_executes_gemini_chat_sync_same_format_via_local_finalize_respon
StoredProviderCatalogEndpoint::new(
"endpoint-gemini-chat-finalize-local-1".to_string(),
"provider-gemini-chat-finalize-local-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -172,7 +172,7 @@ async fn gateway_executes_gemini_chat_sync_same_format_via_local_finalize_respon
)
.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-finalize",
@@ -180,7 +180,7 @@ async fn gateway_executes_gemini_chat_sync_same_format_via_local_finalize_respon
.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,
@@ -552,7 +552,7 @@ async fn gateway_executes_gemini_chat_sync_upstream_stream_via_local_finalize_re
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()),
@@ -563,7 +563,7 @@ async fn gateway_executes_gemini_chat_sync_upstream_stream_via_local_finalize_re
Some(5),
Some(4_102_444_800_i64),
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")
@@ -577,7 +577,7 @@ async fn gateway_executes_gemini_chat_sync_upstream_stream_via_local_finalize_re
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-gemini-chat-stream-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,
@@ -585,11 +585,11 @@ async fn gateway_executes_gemini_chat_sync_upstream_stream_via_local_finalize_re
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-stream-finalize-local-1".to_string(),
global_model_id: "global-model-gemini-chat-stream-finalize-local-1".to_string(),
global_model_name: "gemini-2.5-pro".to_string(),
@@ -599,7 +599,7 @@ async fn gateway_executes_gemini_chat_sync_upstream_stream_via_local_finalize_re
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,
@@ -632,7 +632,7 @@ async fn gateway_executes_gemini_chat_sync_upstream_stream_via_local_finalize_re
StoredProviderCatalogEndpoint::new(
"endpoint-gemini-chat-stream-finalize-local-1".to_string(),
"provider-gemini-chat-stream-finalize-local-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -668,7 +668,7 @@ async fn gateway_executes_gemini_chat_sync_upstream_stream_via_local_finalize_re
)
.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-finalize",
@@ -676,7 +676,7 @@ async fn gateway_executes_gemini_chat_sync_upstream_stream_via_local_finalize_re
.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,
@@ -1038,7 +1038,7 @@ async fn gateway_executes_gemini_cli_sync_upstream_stream_via_local_finalize_res
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()),
@@ -1049,7 +1049,7 @@ async fn gateway_executes_gemini_cli_sync_upstream_stream_via_local_finalize_res
Some(5),
Some(4_102_444_800_i64),
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")
@@ -1063,7 +1063,7 @@ async fn gateway_executes_gemini_cli_sync_upstream_stream_via_local_finalize_res
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-gemini-cli-finalize-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,
@@ -1071,11 +1071,11 @@ async fn gateway_executes_gemini_cli_sync_upstream_stream_via_local_finalize_res
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-finalize-local-1".to_string(),
global_model_id: "global-model-gemini-cli-finalize-local-1".to_string(),
global_model_name: "gemini-cli".to_string(),
@@ -1085,7 +1085,7 @@ async fn gateway_executes_gemini_cli_sync_upstream_stream_via_local_finalize_res
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,
@@ -1118,7 +1118,7 @@ async fn gateway_executes_gemini_cli_sync_upstream_stream_via_local_finalize_res
StoredProviderCatalogEndpoint::new(
"endpoint-gemini-cli-finalize-local-1".to_string(),
"provider-gemini-cli-finalize-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -1154,7 +1154,7 @@ async fn gateway_executes_gemini_cli_sync_upstream_stream_via_local_finalize_res
)
.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-finalize",
@@ -1162,7 +1162,7 @@ async fn gateway_executes_gemini_cli_sync_upstream_stream_via_local_finalize_res
.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,
@@ -1538,7 +1538,7 @@ async fn gateway_executes_antigravity_gemini_cli_sync_upstream_stream_via_local_
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()),
@@ -1549,7 +1549,7 @@ async fn gateway_executes_antigravity_gemini_cli_sync_upstream_stream_via_local_
Some(5),
Some(4_102_444_800_i64),
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")
@@ -1563,7 +1563,7 @@ async fn gateway_executes_antigravity_gemini_cli_sync_upstream_stream_via_local_
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-antigravity-cli-finalize-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,
@@ -1571,11 +1571,11 @@ async fn gateway_executes_antigravity_gemini_cli_sync_upstream_stream_via_local_
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-finalize-local-1".to_string(),
global_model_id: "global-model-antigravity-cli-finalize-local-1".to_string(),
global_model_name: "gemini-cli".to_string(),
@@ -1585,7 +1585,7 @@ async fn gateway_executes_antigravity_gemini_cli_sync_upstream_stream_via_local_
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,
@@ -1618,7 +1618,7 @@ async fn gateway_executes_antigravity_gemini_cli_sync_upstream_stream_via_local_
StoredProviderCatalogEndpoint::new(
"endpoint-antigravity-cli-finalize-local-1".to_string(),
"provider-antigravity-cli-finalize-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -1653,12 +1653,12 @@ async fn gateway_executes_antigravity_gemini_cli_sync_upstream_stream_via_local_
)
.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,

View File

@@ -505,7 +505,7 @@ async fn gateway_executes_openai_chat_stream_via_local_openai_responses_cross_fo
endpoint_is_active: true,
key_id: "key-openai-chat-cli-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!["openai:responses".to_string()]),
key_allowed_models: None,
@@ -578,7 +578,7 @@ async fn gateway_executes_openai_chat_stream_via_local_openai_responses_cross_fo
"key-openai-chat-cli-local-1".to_string(),
"provider-openai-chat-cli-local-1".to_string(),
"prod".to_string(),
"api_key".to_string(),
"oauth".to_string(),
None,
true,
)

View File

@@ -101,7 +101,7 @@ async fn gateway_executes_kiro_claude_cli_stream_via_local_provider_catalog_cand
true,
false,
Some(serde_json::json!(["claude", "kiro"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -112,7 +112,7 @@ async fn gateway_executes_kiro_claude_cli_stream_via_local_provider_catalog_cand
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude", "kiro"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4"])),
)
.expect("auth snapshot should build")
@@ -126,7 +126,7 @@ async fn gateway_executes_kiro_claude_cli_stream_via_local_provider_catalog_cand
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-kiro-cli-local-stream-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -134,11 +134,11 @@ async fn gateway_executes_kiro_claude_cli_stream_via_local_provider_catalog_cand
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-kiro-cli-local-stream-1".to_string(),
global_model_id: "global-model-kiro-cli-local-stream-1".to_string(),
global_model_name: "claude-sonnet-4".to_string(),
@@ -148,7 +148,7 @@ async fn gateway_executes_kiro_claude_cli_stream_via_local_provider_catalog_cand
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -181,7 +181,7 @@ async fn gateway_executes_kiro_claude_cli_stream_via_local_provider_catalog_cand
StoredProviderCatalogEndpoint::new(
"endpoint-kiro-cli-local-stream-1".to_string(),
"provider-kiro-cli-local-stream-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -228,7 +228,7 @@ async fn gateway_executes_kiro_claude_cli_stream_via_local_provider_catalog_cand
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(DEVELOPMENT_ENCRYPTION_KEY, "__placeholder__")
.expect("api key should encrypt"),
Some(
@@ -239,7 +239,7 @@ async fn gateway_executes_kiro_claude_cli_stream_via_local_provider_catalog_cand
.expect("auth config should encrypt"),
),
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
Some(
@@ -270,7 +270,7 @@ async fn gateway_executes_kiro_claude_cli_stream_via_local_provider_catalog_cand
"route_class": "ai_public",
"route_family": "claude",
"route_kind": "cli",
"auth_endpoint_signature": "claude:cli",
"auth_endpoint_signature": "claude:messages",
"execution_runtime_candidate": true,
"auth_context": {
"user_id": "user-kiro-cli-local-stream-123",
@@ -606,7 +606,7 @@ async fn gateway_executes_claude_cli_stream_via_local_decision_gate_without_wait
true,
false,
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-code"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -617,7 +617,7 @@ async fn gateway_executes_claude_cli_stream_via_local_decision_gate_without_wait
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-code"])),
)
.expect("auth snapshot should build")
@@ -631,7 +631,7 @@ async fn gateway_executes_claude_cli_stream_via_local_decision_gate_without_wait
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-claude-cli-local-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -639,11 +639,11 @@ async fn gateway_executes_claude_cli_stream_via_local_decision_gate_without_wait
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-claude-cli-local-1".to_string(),
global_model_id: "global-model-claude-cli-local-1".to_string(),
global_model_name: "claude-code".to_string(),
@@ -653,7 +653,7 @@ async fn gateway_executes_claude_cli_stream_via_local_decision_gate_without_wait
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-code-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -686,7 +686,7 @@ async fn gateway_executes_claude_cli_stream_via_local_decision_gate_without_wait
StoredProviderCatalogEndpoint::new(
"endpoint-claude-cli-local-1".to_string(),
"provider-claude-cli-local-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -721,12 +721,12 @@ async fn gateway_executes_claude_cli_stream_via_local_decision_gate_without_wait
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(DEVELOPMENT_ENCRYPTION_KEY, "sk-upstream-claude-cli")
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
Some(serde_json::json!({"enabled": true, "node_id":"proxy-node-claude-cli-local"})),
@@ -1055,7 +1055,7 @@ async fn gateway_executes_claude_code_cli_stream_via_local_decision_gate_with_lo
true,
false,
Some(serde_json::json!(["claude", "claude_code"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-code"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -1066,7 +1066,7 @@ async fn gateway_executes_claude_code_cli_stream_via_local_decision_gate_with_lo
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude", "claude_code"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-code"])),
)
.expect("auth snapshot should build")
@@ -1080,7 +1080,7 @@ async fn gateway_executes_claude_code_cli_stream_via_local_decision_gate_with_lo
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-claude-code-cli-local-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -1088,11 +1088,11 @@ async fn gateway_executes_claude_code_cli_stream_via_local_decision_gate_with_lo
key_name: "prod".to_string(),
key_auth_type: "oauth".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-claude-code-cli-local-1".to_string(),
global_model_id: "global-model-claude-code-cli-local-1".to_string(),
global_model_name: "claude-code".to_string(),
@@ -1102,7 +1102,7 @@ async fn gateway_executes_claude_code_cli_stream_via_local_decision_gate_with_lo
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-code-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -1139,7 +1139,7 @@ async fn gateway_executes_claude_code_cli_stream_via_local_decision_gate_with_lo
StoredProviderCatalogEndpoint::new(
"endpoint-claude-code-cli-local-1".to_string(),
"provider-claude-code-cli-local-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -1174,7 +1174,7 @@ async fn gateway_executes_claude_code_cli_stream_via_local_decision_gate_with_lo
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-claude-code-oauth",
@@ -1182,7 +1182,7 @@ async fn gateway_executes_claude_code_cli_stream_via_local_decision_gate_with_lo
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
Some(
@@ -1575,7 +1575,7 @@ async fn gateway_executes_claude_chat_stream_via_local_decision_gate_with_local_
true,
false,
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4-5"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -1586,7 +1586,7 @@ async fn gateway_executes_claude_chat_stream_via_local_decision_gate_with_local_
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4-5"])),
)
.expect("auth snapshot should build")
@@ -1600,7 +1600,7 @@ async fn gateway_executes_claude_chat_stream_via_local_decision_gate_with_local_
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-claude-chat-local-stream-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,
@@ -1608,11 +1608,11 @@ async fn gateway_executes_claude_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!["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-claude-chat-local-stream-1".to_string(),
global_model_id: "global-model-claude-chat-local-stream-1".to_string(),
global_model_name: "claude-sonnet-4-5".to_string(),
@@ -1622,7 +1622,7 @@ async fn gateway_executes_claude_chat_stream_via_local_decision_gate_with_local_
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-5-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,
@@ -1655,7 +1655,7 @@ async fn gateway_executes_claude_chat_stream_via_local_decision_gate_with_local_
StoredProviderCatalogEndpoint::new(
"endpoint-claude-chat-local-stream-1".to_string(),
"provider-claude-chat-local-stream-1".to_string(),
"claude:chat".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("chat".to_string()),
true,
@@ -1690,7 +1690,7 @@ async fn gateway_executes_claude_chat_stream_via_local_decision_gate_with_local_
)
.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-claude-chat-stream",
@@ -1698,7 +1698,7 @@ async fn gateway_executes_claude_chat_stream_via_local_decision_gate_with_local_
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:chat": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
Some(serde_json::json!({"enabled": true, "node_id":"proxy-node-claude-chat-stream"})),

View File

@@ -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",

View File

@@ -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,

View File

@@ -446,7 +446,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-gemini-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,
@@ -454,11 +454,11 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
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-local-1".to_string(),
global_model_id: "global-model-openai-chat-gemini-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -468,7 +468,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
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,
@@ -488,7 +488,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
row.model_provider_model_mappings = Some(vec![StoredProviderModelMapping {
name: "gemini-2.5-flash-upstream".to_string(),
priority: 2,
api_formats: Some(vec!["gemini:chat".to_string()]),
api_formats: Some(vec!["gemini:generate_content".to_string()]),
}]);
row
}
@@ -539,7 +539,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-gemini-local-1".to_string(),
"provider-openai-chat-gemini-local-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -564,7 +564,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-gemini-local-disabled".to_string(),
"provider-openai-chat-gemini-local-disabled".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -594,7 +594,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
)
.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",
@@ -602,7 +602,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
.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,
@@ -622,7 +622,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
)
.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-disabled",
@@ -630,7 +630,7 @@ async fn gateway_executes_openai_chat_sync_via_local_cross_format_gemini_candida
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"gemini:chat": 2})),
Some(serde_json::json!({"gemini:generate_content": 2})),
None,
None,
None,
@@ -1026,7 +1026,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_cli_syn
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-claude-cli-local-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -1034,11 +1034,11 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_cli_syn
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-openai-chat-claude-cli-local-1".to_string(),
global_model_id: "global-model-openai-chat-claude-cli-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -1048,7 +1048,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_cli_syn
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-code-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -1081,7 +1081,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_cli_syn
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-claude-cli-local-1".to_string(),
"provider-openai-chat-claude-cli-local-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -1113,7 +1113,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_cli_syn
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-chat-claude-cli",
@@ -1121,7 +1121,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_cli_syn
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
None,
@@ -1423,7 +1423,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_cli_syn
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-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,
@@ -1431,11 +1431,11 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_cli_syn
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-openai-chat-gemini-cli-local-1".to_string(),
global_model_id: "global-model-openai-chat-gemini-cli-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -1445,7 +1445,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_cli_syn
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,
@@ -1478,7 +1478,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_cli_syn
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-gemini-cli-local-1".to_string(),
"provider-openai-chat-gemini-cli-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -1510,7 +1510,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_cli_syn
)
.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-openai-chat-gemini-cli",
@@ -1518,7 +1518,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_cli_syn
.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,
@@ -1820,7 +1820,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_sync_fa
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-claude-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,
@@ -1828,11 +1828,11 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_sync_fa
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-local-1".to_string(),
global_model_id: "global-model-openai-chat-claude-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -1842,7 +1842,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_sync_fa
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-5-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,
@@ -1875,7 +1875,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_sync_fa
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-claude-local-1".to_string(),
"provider-openai-chat-claude-local-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_returns_openai_chat_error_for_local_cross_format_claude_sync_fa
)
.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",
@@ -1915,7 +1915,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_claude_sync_fa
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:chat": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
None,
@@ -2223,7 +2223,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_sync_fa
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-chat-gemini-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,
@@ -2231,11 +2231,11 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_sync_fa
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-local-1".to_string(),
global_model_id: "global-model-openai-chat-gemini-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -2245,7 +2245,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_sync_fa
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,
@@ -2278,7 +2278,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_sync_fa
StoredProviderCatalogEndpoint::new(
"endpoint-openai-chat-gemini-local-1".to_string(),
"provider-openai-chat-gemini-local-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -2310,7 +2310,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_sync_fa
)
.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",
@@ -2318,7 +2318,7 @@ async fn gateway_returns_openai_chat_error_for_local_cross_format_gemini_sync_fa
.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,

View File

@@ -48,7 +48,7 @@ async fn gateway_executes_claude_code_cli_sync_via_local_decision_gate_with_loca
true,
false,
Some(serde_json::json!(["claude", "claude_code"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-code"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -59,7 +59,7 @@ async fn gateway_executes_claude_code_cli_sync_via_local_decision_gate_with_loca
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude", "claude_code"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-code"])),
)
.expect("auth snapshot should build")
@@ -73,7 +73,7 @@ async fn gateway_executes_claude_code_cli_sync_via_local_decision_gate_with_loca
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-claude-code-cli-local-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -81,11 +81,11 @@ async fn gateway_executes_claude_code_cli_sync_via_local_decision_gate_with_loca
key_name: "prod".to_string(),
key_auth_type: "oauth".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-claude-code-cli-local-1".to_string(),
global_model_id: "global-model-claude-code-cli-local-1".to_string(),
global_model_name: "claude-code".to_string(),
@@ -95,7 +95,7 @@ async fn gateway_executes_claude_code_cli_sync_via_local_decision_gate_with_loca
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-code-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -132,7 +132,7 @@ async fn gateway_executes_claude_code_cli_sync_via_local_decision_gate_with_loca
StoredProviderCatalogEndpoint::new(
"endpoint-claude-code-cli-local-1".to_string(),
"provider-claude-code-cli-local-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -167,7 +167,7 @@ async fn gateway_executes_claude_code_cli_sync_via_local_decision_gate_with_loca
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-claude-code-oauth",
@@ -175,7 +175,7 @@ async fn gateway_executes_claude_code_cli_sync_via_local_decision_gate_with_loca
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
Some(

View File

@@ -121,7 +121,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
true,
false,
Some(serde_json::json!(["claude", "kiro"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -132,7 +132,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude", "kiro"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4"])),
)
.expect("auth snapshot should build")
@@ -146,7 +146,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-kiro-cli-local-sync-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -154,11 +154,11 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-kiro-cli-local-sync-1".to_string(),
global_model_id: "global-model-kiro-cli-local-sync-1".to_string(),
global_model_name: "claude-sonnet-4".to_string(),
@@ -168,7 +168,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -201,7 +201,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
StoredProviderCatalogEndpoint::new(
"endpoint-kiro-cli-local-sync-1".to_string(),
"provider-kiro-cli-local-sync-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -249,7 +249,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(DEVELOPMENT_ENCRYPTION_KEY, "__placeholder__")
.expect("api key should encrypt"),
Some(
@@ -260,7 +260,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
.expect("auth config should encrypt"),
),
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
Some(serde_json::json!({"enabled": true, "node_id":"proxy-node-kiro-cli-local-sync"})),
@@ -289,7 +289,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
"route_class": "ai_public",
"route_family": "claude",
"route_kind": "cli",
"auth_endpoint_signature": "claude:cli",
"auth_endpoint_signature": "claude:messages",
"execution_runtime_candidate": true,
"auth_context": {
"user_id": "user-kiro-cli-local-sync-123",
@@ -683,7 +683,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
true,
false,
Some(serde_json::json!(["claude", "kiro"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -694,7 +694,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude", "kiro"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4"])),
)
.expect("auth snapshot should build")
@@ -708,7 +708,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-kiro-cli-local-refresh-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -716,11 +716,11 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-kiro-cli-local-refresh-1".to_string(),
global_model_id: "global-model-kiro-cli-local-refresh-1".to_string(),
global_model_name: "claude-sonnet-4".to_string(),
@@ -730,7 +730,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -763,7 +763,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
StoredProviderCatalogEndpoint::new(
"endpoint-kiro-cli-local-refresh-1".to_string(),
"provider-kiro-cli-local-refresh-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -810,7 +810,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(DEVELOPMENT_ENCRYPTION_KEY, "__placeholder__")
.expect("api key should encrypt"),
Some(
@@ -821,7 +821,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
.expect("auth config should encrypt"),
),
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
None,
@@ -873,7 +873,7 @@ async fn gateway_executes_kiro_claude_cli_sync_via_local_provider_catalog_candid
"route_class": "ai_public",
"route_family": "claude",
"route_kind": "cli",
"auth_endpoint_signature": "claude:cli",
"auth_endpoint_signature": "claude:messages",
"execution_runtime_candidate": true,
"auth_context": {
"user_id": "user-kiro-cli-local-refresh-123",

View File

@@ -44,7 +44,7 @@ async fn gateway_executes_claude_chat_sync_via_local_decision_gate_with_local_sy
true,
false,
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4-5"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -55,7 +55,7 @@ async fn gateway_executes_claude_chat_sync_via_local_decision_gate_with_local_sy
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4-5"])),
)
.expect("auth snapshot should build")
@@ -69,7 +69,7 @@ async fn gateway_executes_claude_chat_sync_via_local_decision_gate_with_local_sy
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-claude-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,
@@ -77,11 +77,11 @@ async fn gateway_executes_claude_chat_sync_via_local_decision_gate_with_local_sy
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-claude-local-1".to_string(),
global_model_id: "global-model-claude-local-1".to_string(),
global_model_name: "claude-sonnet-4-5".to_string(),
@@ -91,7 +91,7 @@ async fn gateway_executes_claude_chat_sync_via_local_decision_gate_with_local_sy
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-5-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,
@@ -124,7 +124,7 @@ async fn gateway_executes_claude_chat_sync_via_local_decision_gate_with_local_sy
StoredProviderCatalogEndpoint::new(
"endpoint-claude-local-1".to_string(),
"provider-claude-local-1".to_string(),
"claude:chat".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("chat".to_string()),
true,
@@ -159,12 +159,12 @@ async fn gateway_executes_claude_chat_sync_via_local_decision_gate_with_local_sy
)
.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-claude-chat")
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:chat": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
Some(serde_json::json!({"enabled": true, "node_id":"proxy-node-claude-chat-local"})),
@@ -470,7 +470,7 @@ async fn gateway_surfaces_candidate_list_empty_reason_for_claude_chat_runtime_mi
true,
false,
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4-5"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -481,7 +481,7 @@ async fn gateway_surfaces_candidate_list_empty_reason_for_claude_chat_runtime_mi
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4-5"])),
)
.expect("auth snapshot should build")
@@ -595,7 +595,7 @@ async fn gateway_returns_claude_chat_error_for_local_sync_failure() {
true,
false,
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4-5"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -606,7 +606,7 @@ async fn gateway_returns_claude_chat_error_for_local_sync_failure() {
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:chat"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-sonnet-4-5"])),
)
.expect("auth snapshot should build")
@@ -620,7 +620,7 @@ async fn gateway_returns_claude_chat_error_for_local_sync_failure() {
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-claude-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,
@@ -628,11 +628,11 @@ async fn gateway_returns_claude_chat_error_for_local_sync_failure() {
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-claude-local-1".to_string(),
global_model_id: "global-model-claude-local-1".to_string(),
global_model_name: "claude-sonnet-4-5".to_string(),
@@ -642,7 +642,7 @@ async fn gateway_returns_claude_chat_error_for_local_sync_failure() {
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-5-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,
@@ -675,7 +675,7 @@ async fn gateway_returns_claude_chat_error_for_local_sync_failure() {
StoredProviderCatalogEndpoint::new(
"endpoint-claude-local-1".to_string(),
"provider-claude-local-1".to_string(),
"claude:chat".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("chat".to_string()),
true,
@@ -710,12 +710,12 @@ async fn gateway_returns_claude_chat_error_for_local_sync_failure() {
)
.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-claude-chat")
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:chat": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
Some(serde_json::json!({"enabled": true, "node_id":"proxy-node-claude-chat-local"})),

View File

@@ -44,7 +44,7 @@ async fn gateway_executes_claude_cli_sync_via_local_decision_gate_with_local_syn
true,
false,
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-code"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -55,7 +55,7 @@ async fn gateway_executes_claude_cli_sync_via_local_decision_gate_with_local_syn
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-code"])),
)
.expect("auth snapshot should build")
@@ -69,7 +69,7 @@ async fn gateway_executes_claude_cli_sync_via_local_decision_gate_with_local_syn
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-claude-cli-local-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -77,11 +77,11 @@ async fn gateway_executes_claude_cli_sync_via_local_decision_gate_with_local_syn
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-claude-cli-local-1".to_string(),
global_model_id: "global-model-claude-cli-local-1".to_string(),
global_model_name: "claude-code".to_string(),
@@ -91,7 +91,7 @@ async fn gateway_executes_claude_cli_sync_via_local_decision_gate_with_local_syn
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-code-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -124,7 +124,7 @@ async fn gateway_executes_claude_cli_sync_via_local_decision_gate_with_local_syn
StoredProviderCatalogEndpoint::new(
"endpoint-claude-cli-local-1".to_string(),
"provider-claude-cli-local-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -159,12 +159,12 @@ async fn gateway_executes_claude_cli_sync_via_local_decision_gate_with_local_syn
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(DEVELOPMENT_ENCRYPTION_KEY, "sk-upstream-claude-cli")
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
Some(serde_json::json!({"enabled": true, "node_id":"proxy-node-claude-cli-local"})),
@@ -478,7 +478,7 @@ async fn gateway_returns_claude_cli_error_for_local_sync_failure() {
true,
false,
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-code"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -489,7 +489,7 @@ async fn gateway_returns_claude_cli_error_for_local_sync_failure() {
Some(5),
Some(4_102_444_800),
Some(serde_json::json!(["claude"])),
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["claude-code"])),
)
.expect("auth snapshot should build")
@@ -503,7 +503,7 @@ async fn gateway_returns_claude_cli_error_for_local_sync_failure() {
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-claude-cli-local-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -511,11 +511,11 @@ async fn gateway_returns_claude_cli_error_for_local_sync_failure() {
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-claude-cli-local-1".to_string(),
global_model_id: "global-model-claude-cli-local-1".to_string(),
global_model_name: "claude-code".to_string(),
@@ -525,7 +525,7 @@ async fn gateway_returns_claude_cli_error_for_local_sync_failure() {
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-code-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -558,7 +558,7 @@ async fn gateway_returns_claude_cli_error_for_local_sync_failure() {
StoredProviderCatalogEndpoint::new(
"endpoint-claude-cli-local-1".to_string(),
"provider-claude-cli-local-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -593,12 +593,12 @@ async fn gateway_returns_claude_cli_error_for_local_sync_failure() {
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(DEVELOPMENT_ENCRYPTION_KEY, "sk-upstream-claude-cli")
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
Some(serde_json::json!({"enabled": true, "node_id":"proxy-node-claude-cli-local"})),
@@ -752,7 +752,7 @@ async fn gateway_marks_claude_cli_cross_format_runtime_miss_when_format_conversi
true,
false,
None,
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["gpt-5.4"])),
api_key_id.to_string(),
Some("default".to_string()),
@@ -763,7 +763,7 @@ async fn gateway_marks_claude_cli_cross_format_runtime_miss_when_format_conversi
Some(5),
Some(4_102_444_800),
None,
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
Some(serde_json::json!(["gpt-5.4"])),
)
.expect("auth snapshot should build")

View File

@@ -1616,7 +1616,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_gemini_sy
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-cli-gemini-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,
@@ -1624,11 +1624,11 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_gemini_sy
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-openai-cli-gemini-local-1".to_string(),
global_model_id: "global-model-openai-cli-gemini-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -1638,7 +1638,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_gemini_sy
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,
@@ -1671,7 +1671,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_gemini_sy
StoredProviderCatalogEndpoint::new(
"endpoint-openai-cli-gemini-local-1".to_string(),
"provider-openai-cli-gemini-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -1703,7 +1703,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_gemini_sy
)
.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-openai-cli-gemini",
@@ -1711,7 +1711,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_gemini_sy
.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,
@@ -1992,7 +1992,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_claude_sy
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-cli-claude-local-1".to_string(),
endpoint_api_format: "claude:cli".to_string(),
endpoint_api_format: "claude:messages".to_string(),
endpoint_api_family: Some("claude".to_string()),
endpoint_kind: Some("cli".to_string()),
endpoint_is_active: true,
@@ -2000,11 +2000,11 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_claude_sy
key_name: "prod".to_string(),
key_auth_type: "bearer".to_string(),
key_is_active: true,
key_api_formats: Some(vec!["claude:cli".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:cli": 1})),
key_global_priority_by_format: Some(serde_json::json!({"claude:messages": 1})),
model_id: "model-openai-cli-claude-local-1".to_string(),
global_model_id: "global-model-openai-cli-claude-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -2014,7 +2014,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_claude_sy
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-code-upstream".to_string(),
priority: 1,
api_formats: Some(vec!["claude:cli".to_string()]),
api_formats: Some(vec!["claude:messages".to_string()]),
}]),
model_supports_streaming: Some(true),
model_is_active: true,
@@ -2047,7 +2047,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_claude_sy
StoredProviderCatalogEndpoint::new(
"endpoint-openai-cli-claude-local-1".to_string(),
"provider-openai-cli-claude-local-1".to_string(),
"claude:cli".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("cli".to_string()),
true,
@@ -2079,7 +2079,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_claude_sy
)
.expect("key should build")
.with_transport_fields(
Some(serde_json::json!(["claude:cli"])),
Some(serde_json::json!(["claude:messages"])),
encrypt_python_fernet_plaintext(
DEVELOPMENT_ENCRYPTION_KEY,
"sk-upstream-openai-cli-claude",
@@ -2087,7 +2087,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_claude_sy
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:cli": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
None,
@@ -2368,7 +2368,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_claude_ch
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-cli-claude-chat-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,
@@ -2376,11 +2376,11 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_claude_ch
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-cli-claude-chat-local-1".to_string(),
global_model_id: "global-model-openai-cli-claude-chat-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -2390,7 +2390,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_claude_ch
model_provider_model_mappings: Some(vec![StoredProviderModelMapping {
name: "claude-sonnet-4-5-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,
@@ -2423,7 +2423,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_claude_ch
StoredProviderCatalogEndpoint::new(
"endpoint-openai-cli-claude-chat-local-1".to_string(),
"provider-openai-cli-claude-chat-local-1".to_string(),
"claude:chat".to_string(),
"claude:messages".to_string(),
Some("claude".to_string()),
Some("chat".to_string()),
true,
@@ -2455,7 +2455,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_claude_ch
)
.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-cli-claude-chat",
@@ -2463,7 +2463,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_claude_ch
.expect("api key should encrypt"),
None,
None,
Some(serde_json::json!({"claude:chat": 1})),
Some(serde_json::json!({"claude:messages": 1})),
None,
None,
None,
@@ -2747,7 +2747,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_gemini_ch
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-openai-cli-gemini-chat-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,
@@ -2755,11 +2755,11 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_gemini_ch
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-cli-gemini-chat-local-1".to_string(),
global_model_id: "global-model-openai-cli-gemini-chat-local-1".to_string(),
global_model_name: "gpt-5".to_string(),
@@ -2769,7 +2769,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_gemini_ch
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,
@@ -2802,7 +2802,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_gemini_ch
StoredProviderCatalogEndpoint::new(
"endpoint-openai-cli-gemini-chat-local-1".to_string(),
"provider-openai-cli-gemini-chat-local-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -2834,7 +2834,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_gemini_ch
)
.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-cli-gemini-chat",
@@ -2842,7 +2842,7 @@ async fn gateway_returns_openai_responses_error_for_local_cross_format_gemini_ch
.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,

View File

@@ -43,7 +43,7 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_with_local_syn
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()),
@@ -54,7 +54,7 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_with_local_syn
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")
@@ -68,7 +68,7 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_with_local_syn
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,
@@ -76,11 +76,11 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_with_local_syn
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(),
@@ -90,7 +90,7 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_with_local_syn
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,
@@ -123,7 +123,7 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_with_local_syn
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,
@@ -159,12 +159,12 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_with_local_syn
)
.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"})),
@@ -463,7 +463,7 @@ async fn gateway_returns_gemini_cli_error_for_local_sync_failure() {
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()),
@@ -474,7 +474,7 @@ async fn gateway_returns_gemini_cli_error_for_local_sync_failure() {
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")
@@ -488,7 +488,7 @@ async fn gateway_returns_gemini_cli_error_for_local_sync_failure() {
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,
@@ -496,11 +496,11 @@ async fn gateway_returns_gemini_cli_error_for_local_sync_failure() {
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(),
@@ -510,7 +510,7 @@ async fn gateway_returns_gemini_cli_error_for_local_sync_failure() {
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,
@@ -543,7 +543,7 @@ async fn gateway_returns_gemini_cli_error_for_local_sync_failure() {
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,
@@ -579,12 +579,12 @@ async fn gateway_returns_gemini_cli_error_for_local_sync_failure() {
)
.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"})),
@@ -755,7 +755,7 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_after_oauth_re
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()),
@@ -766,7 +766,7 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_after_oauth_re
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")
@@ -780,7 +780,7 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_after_oauth_re
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-gemini-cli-oauth-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,
@@ -788,11 +788,11 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_after_oauth_re
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-local-1".to_string(),
global_model_id: "global-model-gemini-cli-oauth-local-1".to_string(),
global_model_name: "gemini-cli".to_string(),
@@ -802,7 +802,7 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_after_oauth_re
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,
@@ -835,7 +835,7 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_after_oauth_re
StoredProviderCatalogEndpoint::new(
"endpoint-gemini-cli-oauth-local-1".to_string(),
"provider-gemini-cli-oauth-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -876,12 +876,12 @@ async fn gateway_executes_gemini_cli_sync_via_local_decision_gate_after_oauth_re
)
.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(
@@ -1254,7 +1254,7 @@ async fn gateway_executes_vertex_ai_gemini_cli_sync_via_local_decision_gate_with
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()),
@@ -1265,7 +1265,7 @@ async fn gateway_executes_vertex_ai_gemini_cli_sync_via_local_decision_gate_with
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")
@@ -1279,7 +1279,7 @@ async fn gateway_executes_vertex_ai_gemini_cli_sync_via_local_decision_gate_with
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-vertex-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,
@@ -1287,11 +1287,11 @@ async fn gateway_executes_vertex_ai_gemini_cli_sync_via_local_decision_gate_with
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-local-1".to_string(),
global_model_id: "global-model-vertex-cli-local-1".to_string(),
global_model_name: "gemini-cli".to_string(),
@@ -1301,7 +1301,7 @@ async fn gateway_executes_vertex_ai_gemini_cli_sync_via_local_decision_gate_with
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,
@@ -1334,7 +1334,7 @@ async fn gateway_executes_vertex_ai_gemini_cli_sync_via_local_decision_gate_with
StoredProviderCatalogEndpoint::new(
"endpoint-vertex-cli-local-1".to_string(),
"provider-vertex-cli-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -1370,12 +1370,12 @@ async fn gateway_executes_vertex_ai_gemini_cli_sync_via_local_decision_gate_with
)
.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,
@@ -1689,7 +1689,7 @@ async fn gateway_executes_antigravity_gemini_cli_sync_via_local_decision_gate_af
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()),
@@ -1700,7 +1700,7 @@ async fn gateway_executes_antigravity_gemini_cli_sync_via_local_decision_gate_af
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")
@@ -1714,7 +1714,7 @@ async fn gateway_executes_antigravity_gemini_cli_sync_via_local_decision_gate_af
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-antigravity-cli-oauth-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,
@@ -1722,11 +1722,11 @@ async fn gateway_executes_antigravity_gemini_cli_sync_via_local_decision_gate_af
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-local-1".to_string(),
global_model_id: "global-model-antigravity-cli-oauth-local-1".to_string(),
global_model_name: "gemini-cli".to_string(),
@@ -1736,7 +1736,7 @@ async fn gateway_executes_antigravity_gemini_cli_sync_via_local_decision_gate_af
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,
@@ -1769,7 +1769,7 @@ async fn gateway_executes_antigravity_gemini_cli_sync_via_local_decision_gate_af
StoredProviderCatalogEndpoint::new(
"endpoint-antigravity-cli-oauth-local-1".to_string(),
"provider-antigravity-cli-oauth-local-1".to_string(),
"gemini:cli".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("cli".to_string()),
true,
@@ -1804,12 +1804,12 @@ async fn gateway_executes_antigravity_gemini_cli_sync_via_local_decision_gate_af
)
.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,

View File

@@ -43,7 +43,7 @@ async fn gateway_executes_gemini_chat_sync_via_local_decision_gate_with_local_sy
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()),
@@ -54,7 +54,7 @@ async fn gateway_executes_gemini_chat_sync_via_local_decision_gate_with_local_sy
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")
@@ -68,7 +68,7 @@ async fn gateway_executes_gemini_chat_sync_via_local_decision_gate_with_local_sy
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-gemini-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,
@@ -76,11 +76,11 @@ async fn gateway_executes_gemini_chat_sync_via_local_decision_gate_with_local_sy
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-local-1".to_string(),
global_model_id: "global-model-gemini-local-1".to_string(),
global_model_name: "gemini-2.5-pro".to_string(),
@@ -90,7 +90,7 @@ async fn gateway_executes_gemini_chat_sync_via_local_decision_gate_with_local_sy
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,
@@ -123,7 +123,7 @@ async fn gateway_executes_gemini_chat_sync_via_local_decision_gate_with_local_sy
StoredProviderCatalogEndpoint::new(
"endpoint-gemini-local-1".to_string(),
"provider-gemini-local-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -159,12 +159,12 @@ async fn gateway_executes_gemini_chat_sync_via_local_decision_gate_with_local_sy
)
.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")
.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-local"})),
@@ -453,7 +453,7 @@ async fn gateway_returns_gemini_chat_error_for_local_sync_failure() {
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()),
@@ -464,7 +464,7 @@ async fn gateway_returns_gemini_chat_error_for_local_sync_failure() {
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")
@@ -478,7 +478,7 @@ async fn gateway_returns_gemini_chat_error_for_local_sync_failure() {
provider_priority: 10,
provider_is_active: true,
endpoint_id: "endpoint-gemini-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,
@@ -486,11 +486,11 @@ async fn gateway_returns_gemini_chat_error_for_local_sync_failure() {
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-local-1".to_string(),
global_model_id: "global-model-gemini-local-1".to_string(),
global_model_name: "gemini-2.5-pro".to_string(),
@@ -500,7 +500,7 @@ async fn gateway_returns_gemini_chat_error_for_local_sync_failure() {
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,
@@ -533,7 +533,7 @@ async fn gateway_returns_gemini_chat_error_for_local_sync_failure() {
StoredProviderCatalogEndpoint::new(
"endpoint-gemini-local-1".to_string(),
"provider-gemini-local-1".to_string(),
"gemini:chat".to_string(),
"gemini:generate_content".to_string(),
Some("gemini".to_string()),
Some("chat".to_string()),
true,
@@ -569,12 +569,12 @@ async fn gateway_returns_gemini_chat_error_for_local_sync_failure() {
)
.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")
.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-local"})),