From 85ecae8f6ff3a8d8afee1fd18ba319db28e48883 Mon Sep 17 00:00:00 2001 From: Santiago Sainz Date: Fri, 27 Mar 2026 21:31:49 -0600 Subject: [PATCH] test(vscode): cover default agent clear paths Follow-up hardening for #7835 --- .../tests/unit/config-utils.test.ts | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/packages/kilo-vscode/tests/unit/config-utils.test.ts b/packages/kilo-vscode/tests/unit/config-utils.test.ts index 7e73521fdae..9a69c4be156 100644 --- a/packages/kilo-vscode/tests/unit/config-utils.test.ts +++ b/packages/kilo-vscode/tests/unit/config-utils.test.ts @@ -131,6 +131,19 @@ describe("ConfigState", () => { expect(s.config.agent?.code?.hidden).toBe(true) expect(s.config.default_agent).toBeUndefined() }) + + it("preserves clearing default_agent when the current default is disabled", () => { + const s = new ConfigState() + s.handleConfigLoaded({ default_agent: "code", agent: { code: { disable: false } } }) + + s.updateConfig({ agent: { code: { disable: true } } }) + s.updateConfig({ default_agent: null }) + + s.handleConfigLoaded({ default_agent: "code", agent: { code: { disable: false } } }) + + expect(s.config.agent?.code?.disable).toBe(true) + expect(s.config.default_agent).toBeUndefined() + }) }) describe("configUpdated while draft is pending", () => { @@ -161,6 +174,21 @@ describe("ConfigState", () => { expect(s.saving).toBe(false) expect(Object.keys(s.draft).length).toBe(0) }) + + it("clears default_agent when update confirms a null-sentinel save", () => { + const s = new ConfigState() + s.handleConfigLoaded({ default_agent: "code" }) + s.updateConfig({ default_agent: null }) + s.saveConfig() + + // Server confirms the write by returning config without default_agent. + s.handleConfigUpdated({}) + + expect(s.config.default_agent).toBeUndefined() + expect(s.dirty).toBe(false) + expect(s.saving).toBe(false) + expect(Object.keys(s.draft).length).toBe(0) + }) }) it("configLoaded is ignored while save is in-flight", () => {