import { describe, expect, it } from "vitest"; import { buildSessionConnectionUpdate } from "./chat-session"; describe("buildSessionConnectionUpdate", () => { it("does not clear reasoning settings when config omits reasoning fields", () => { const update = buildSessionConnectionUpdate({ provider: "cline", model: "anthropic/claude-sonnet-4.6", }); expect(update).toEqual({ providerId: "cline", modelId: "anthropic/claude-sonnet-4.6", }); expect(Object.hasOwn(update, "thinking")).toBe(false); expect(Object.hasOwn(update, "reasoningEffort")).toBe(false); expect(Object.hasOwn(update, "thinkingBudgetTokens")).toBe(false); }); it("clears reasoning settings when thinking is explicitly disabled", () => { expect( buildSessionConnectionUpdate({ provider: "cline", model: "anthropic/claude-sonnet-4.6", thinking: false, }), ).toEqual({ providerId: "cline", modelId: "anthropic/claude-sonnet-4.6", thinking: false, reasoningEffort: null, thinkingBudgetTokens: null, }); }); it("updates explicit reasoning settings without clearing omitted settings", () => { const update = buildSessionConnectionUpdate({ provider: "cline", model: "anthropic/claude-sonnet-4.6", reasoningEffort: "high", }); expect(update).toEqual({ providerId: "cline", modelId: "anthropic/claude-sonnet-4.6", thinking: true, reasoningEffort: "high", }); expect(Object.hasOwn(update, "thinkingBudgetTokens")).toBe(false); }); });