From a810ca80bcee1590fe8491e611a7dff4335a790e Mon Sep 17 00:00:00 2001 From: Sehoon Shon Date: Wed, 12 Nov 2025 19:30:43 -0500 Subject: [PATCH] Allow users to reset to auto when it's in fallback mode (#12623) --- packages/core/src/config/config.test.ts | 31 +++++++++++++++++++++++++ packages/core/src/config/config.ts | 5 ++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/packages/core/src/config/config.test.ts b/packages/core/src/config/config.test.ts index 7e71e71cce..6cc77d3328 100644 --- a/packages/core/src/config/config.test.ts +++ b/packages/core/src/config/config.test.ts @@ -1509,6 +1509,37 @@ describe('Config getHooks', () => { expect(config.isInFallbackMode()).toBe(false); expect(mockCoreEvents.emitModelChanged).toHaveBeenCalledWith(proModel); }); + + it('should allow setting auto model from non-auto model and disable fallback mode', () => { + const config = new Config(baseParams); + config.setFallbackMode(true); + expect(config.isInFallbackMode()).toBe(true); + + config.setModel('auto'); + + expect(config.getModel()).toBe('auto'); + expect(config.isInFallbackMode()).toBe(false); + expect(mockCoreEvents.emitModelChanged).toHaveBeenCalledWith('auto'); + }); + + it('should allow setting auto model from auto model if it is in the fallback mode', () => { + const config = new Config({ + cwd: '/tmp', + targetDir: '/path/to/target', + debugMode: false, + sessionId: 'test-session-id', + model: 'auto', + usageStatisticsEnabled: false, + }); + config.setFallbackMode(true); + expect(config.isInFallbackMode()).toBe(true); + + config.setModel('auto'); + + expect(config.getModel()).toBe('auto'); + expect(config.isInFallbackMode()).toBe(false); + expect(mockCoreEvents.emitModelChanged).toHaveBeenCalledWith('auto'); + }); }); }); diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index b72bf2d9ca..c4a94bcfc9 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -769,12 +769,11 @@ export class Config { } setModel(newModel: string): void { - this.setFallbackMode(false); - - if (this.model !== newModel) { + if (this.model !== newModel || this.inFallbackMode) { this.model = newModel; coreEvents.emitModelChanged(newModel); } + this.setFallbackMode(false); } isInFallbackMode(): boolean {