@@ -186,6 +186,26 @@ pub struct RecommendedPreset {
186186 pub description : String ,
187187 pub aliases : Vec < ModelAlias > ,
188188 pub rules : Vec < RoutingRuleDto > ,
189+ /// 客户端路由配置
190+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
191+ pub endpoint_providers : Option < EndpointProvidersConfigDto > ,
192+ }
193+
194+ /// 端点 Provider 配置 DTO
195+ #[ derive( Debug , Clone , Serialize , Deserialize , Default ) ]
196+ pub struct EndpointProvidersConfigDto {
197+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
198+ pub cursor : Option < String > ,
199+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
200+ pub claude_code : Option < String > ,
201+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
202+ pub codex : Option < String > ,
203+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
204+ pub windsurf : Option < String > ,
205+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
206+ pub kiro : Option < String > ,
207+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
208+ pub other : Option < String > ,
189209}
190210
191211/// 获取推荐配置列表
@@ -260,6 +280,7 @@ pub async fn get_recommended_presets() -> Result<Vec<RecommendedPreset>, String>
260280 enabled: true ,
261281 } ,
262282 ] ,
283+ endpoint_providers: None ,
263284 } ,
264285 RecommendedPreset {
265286 id: "gemini-optimized" . to_string( ) ,
@@ -308,6 +329,7 @@ pub async fn get_recommended_presets() -> Result<Vec<RecommendedPreset>, String>
308329 enabled: true ,
309330 } ,
310331 ] ,
332+ endpoint_providers: None ,
311333 } ,
312334 RecommendedPreset {
313335 id: "multi-provider" . to_string( ) ,
@@ -398,6 +420,7 @@ pub async fn get_recommended_presets() -> Result<Vec<RecommendedPreset>, String>
398420 enabled: true ,
399421 } ,
400422 ] ,
423+ endpoint_providers: None ,
401424 } ,
402425 RecommendedPreset {
403426 id: "coding-assistant" . to_string( ) ,
@@ -443,6 +466,7 @@ pub async fn get_recommended_presets() -> Result<Vec<RecommendedPreset>, String>
443466 enabled: true ,
444467 } ,
445468 ] ,
469+ endpoint_providers: None ,
446470 } ,
447471 RecommendedPreset {
448472 id: "cost-effective" . to_string( ) ,
@@ -478,6 +502,24 @@ pub async fn get_recommended_presets() -> Result<Vec<RecommendedPreset>, String>
478502 enabled: true ,
479503 } ,
480504 ] ,
505+ endpoint_providers: None ,
506+ } ,
507+ // 客户端路由预设
508+ RecommendedPreset {
509+ id: "client-routing" . to_string( ) ,
510+ name: "客户端路由配置" . to_string( ) ,
511+ description: "为不同的 IDE 客户端配置不同的 Provider,Cursor/Windsurf 使用 Kiro,Claude Code 使用 Kiro,Codex 使用 OpenAI"
512+ . to_string( ) ,
513+ aliases: vec![ ] ,
514+ rules: vec![ ] ,
515+ endpoint_providers: Some ( EndpointProvidersConfigDto {
516+ cursor: Some ( "kiro" . to_string( ) ) ,
517+ claude_code: Some ( "kiro" . to_string( ) ) ,
518+ codex: Some ( "openai" . to_string( ) ) ,
519+ windsurf: Some ( "kiro" . to_string( ) ) ,
520+ kiro: Some ( "kiro" . to_string( ) ) ,
521+ other: None ,
522+ } ) ,
481523 } ,
482524 ] )
483525}
0 commit comments