From 7bb6cfd28c1bacaa666c2360199b6ef5a75cfcef Mon Sep 17 00:00:00 2001 From: Sakuranda Date: Wed, 18 Mar 2026 14:29:01 +0800 Subject: [PATCH] fix(cli): preserve runtime-added models when saving settings --- packages/cli/src/config/settings.ts | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/cli/src/config/settings.ts b/packages/cli/src/config/settings.ts index dbd9a20ec..25b9ee737 100644 --- a/packages/cli/src/config/settings.ts +++ b/packages/cli/src/config/settings.ts @@ -307,7 +307,7 @@ export class LoadedSettings { setNestedPropertySafe(settingsFile.settings, key, value); setNestedPropertySafe(settingsFile.originalSettings, key, value); this._merged = this.computeMergedSettings(); - saveSettings(settingsFile); + saveSettings(settingsFile, createSettingsUpdate(key, value)); } } @@ -703,7 +703,22 @@ export function loadSettings( ); } -export function saveSettings(settingsFile: SettingsFile): void { +function createSettingsUpdate( + key: string, + value: unknown, +): Record { + const root: Record = {}; + setNestedPropertySafe(root, key, value); + return root; +} + +export function saveSettings( + settingsFile: SettingsFile, + updates: Record = settingsFile.originalSettings as Record< + string, + unknown + >, +): void { try { // Ensure the directory exists const dirPath = path.dirname(settingsFile.path); @@ -712,10 +727,7 @@ export function saveSettings(settingsFile: SettingsFile): void { } // Use the format-preserving update function - updateSettingsFilePreservingFormat( - settingsFile.path, - settingsFile.originalSettings as Record, - ); + updateSettingsFilePreservingFormat(settingsFile.path, updates); } catch (error) { debugLogger.error('Error saving user settings file.'); debugLogger.error(error instanceof Error ? error.message : String(error));