@@ -853,6 +853,32 @@ describe("model-selection", () => {
853853 ref : { provider : "opencode-go" , model : "kimi-k2.6" } ,
854854 } ) ;
855855 } ) ;
856+
857+ it ( "resolves slash-form aliases before provider/model parsing" , ( ) => {
858+ const cfg = {
859+ agents : {
860+ defaults : {
861+ models : {
862+ "openai/xiaomi/mimo-v2-pro-mit" : {
863+ alias : "xiaomi/mimo-v2-pro-mit" ,
864+ } ,
865+ } ,
866+ } ,
867+ } ,
868+ } as OpenClawConfig ;
869+
870+ const result = resolveAllowedModelRef ( {
871+ cfg,
872+ catalog : [ ] ,
873+ raw : "xiaomi/mimo-v2-pro-mit" ,
874+ defaultProvider : "openai" ,
875+ } ) ;
876+
877+ expect ( result ) . toEqual ( {
878+ key : "openai/xiaomi/mimo-v2-pro-mit" ,
879+ ref : { provider : "openai" , model : "xiaomi/mimo-v2-pro-mit" } ,
880+ } ) ;
881+ } ) ;
856882 } ) ;
857883
858884 describe ( "resolveModelRefFromString" , ( ) => {
@@ -882,6 +908,30 @@ describe("model-selection", () => {
882908 expect ( resolved ?. ref ) . toEqual ( { provider : "openai" , model : "gpt-4" } ) ;
883909 } ) ;
884910
911+ it ( "prefers slash-form aliases over direct provider/model parsing" , ( ) => {
912+ const index = {
913+ byAlias : new Map ( [
914+ [
915+ "xiaomi/mimo-v2-pro-mit" ,
916+ {
917+ alias : "xiaomi/mimo-v2-pro-mit" ,
918+ ref : { provider : "openai" , model : "xiaomi/mimo-v2-pro-mit" } ,
919+ } ,
920+ ] ,
921+ ] ) ,
922+ byKey : new Map ( ) ,
923+ } ;
924+
925+ const resolved = resolveModelRefFromString ( {
926+ raw : "xiaomi/mimo-v2-pro-mit" ,
927+ defaultProvider : "anthropic" ,
928+ aliasIndex : index ,
929+ } ) ;
930+
931+ expect ( resolved ?. ref ) . toEqual ( { provider : "openai" , model : "xiaomi/mimo-v2-pro-mit" } ) ;
932+ expect ( resolved ?. alias ) . toBe ( "xiaomi/mimo-v2-pro-mit" ) ;
933+ } ) ;
934+
885935 it ( "strips trailing profile suffix for simple model refs" , ( ) => {
886936 const resolved = resolveModelRefFromString ( {
887937 raw : "gpt-5@myprofile" ,
@@ -1090,6 +1140,29 @@ describe("model-selection", () => {
10901140 }
10911141 } ) ;
10921142
1143+ it ( "prefers slash-form aliases for configured default models" , ( ) => {
1144+ const cfg = {
1145+ agents : {
1146+ defaults : {
1147+ model : { primary : "xiaomi/mimo-v2-pro-mit" } ,
1148+ models : {
1149+ "openai/xiaomi/mimo-v2-pro-mit" : {
1150+ alias : "xiaomi/mimo-v2-pro-mit" ,
1151+ } ,
1152+ } ,
1153+ } ,
1154+ } ,
1155+ } as OpenClawConfig ;
1156+
1157+ const result = resolveConfiguredModelRef ( {
1158+ cfg,
1159+ defaultProvider : "anthropic" ,
1160+ defaultModel : "claude-sonnet-4-6" ,
1161+ } ) ;
1162+
1163+ expect ( result ) . toEqual ( { provider : "openai" , model : "xiaomi/mimo-v2-pro-mit" } ) ;
1164+ } ) ;
1165+
10931166 it ( "should use default provider/model if config is empty" , ( ) => {
10941167 const cfg : Partial < OpenClawConfig > = { } ;
10951168 const result = resolveConfiguredModelRef ( {
0 commit comments