@@ -149,4 +149,54 @@ describe("resolveSelectedProviderInstanceId", () => {
149149 } ) ,
150150 ) . toBe ( "codex" ) ;
151151 } ) ;
152+
153+ it ( "keeps persisted model selections as the last fallback before codex" , ( ) => {
154+ const persistedInstanceId = ProviderInstanceId . make ( "codex_saved" ) ;
155+
156+ expect (
157+ resolveSelectedProviderInstanceId ( {
158+ entries : [ ] ,
159+ candidates : [ null ] ,
160+ selectedProvider : ProviderDriverKind . make ( "codex" ) ,
161+ fallbackInstanceIds : [ persistedInstanceId ] ,
162+ } ) ,
163+ ) . toBe ( persistedInstanceId ) ;
164+ } ) ;
165+
166+ it ( "falls back instead of returning a disabled explicit selection" , ( ) => {
167+ const providers = [
168+ provider ( {
169+ provider : ProviderDriverKind . make ( "codex" ) ,
170+ instanceId : "codex_disabled" ,
171+ enabled : false ,
172+ } ) ,
173+ provider ( { provider : ProviderDriverKind . make ( "codex" ) , instanceId : "codex" } ) ,
174+ ] ;
175+ const entries = deriveProviderInstanceEntries ( providers ) ;
176+
177+ expect (
178+ resolveSelectedProviderInstanceId ( {
179+ entries,
180+ candidates : [ ProviderInstanceId . make ( "codex_disabled" ) ] ,
181+ selectedProvider : ProviderDriverKind . make ( "codex" ) ,
182+ } ) ,
183+ ) . toBe ( "codex" ) ;
184+ } ) ;
185+
186+ it ( "falls back instead of returning an explicit selection outside a lock" , ( ) => {
187+ const providers = [
188+ provider ( { provider : ProviderDriverKind . make ( "claudeAgent" ) , instanceId : "claudeAgent" } ) ,
189+ provider ( { provider : ProviderDriverKind . make ( "codex" ) , instanceId : "codex" } ) ,
190+ ] ;
191+ const entries = deriveProviderInstanceEntries ( providers ) ;
192+
193+ expect (
194+ resolveSelectedProviderInstanceId ( {
195+ entries,
196+ candidates : [ ProviderInstanceId . make ( "claudeAgent" ) ] ,
197+ selectedProvider : ProviderDriverKind . make ( "claudeAgent" ) ,
198+ lockedProvider : ProviderDriverKind . make ( "codex" ) ,
199+ } ) ,
200+ ) . toBe ( "codex" ) ;
201+ } ) ;
152202} ) ;
0 commit comments