Files
paseo/packages/app/src/create-agent-preferences/optimistic-preferences.test.ts
T
Mohamed Boudra f2054cc701 Preserve Claude model and thinking preferences (#2912)
* fix(agents): preserve Claude thinking selections

Model switches now resolve thinking against the target model's saved preference instead of resetting to the catalog default. Claude owns its configured-model defaults and legacy Fable alias handling, while persisted permission modes remain unchanged.

* chore(claude): tag Fable compatibility shim

* fix(app): resolve persisted model aliases

* fix(models): preserve aliases for older clients

* fix(models): hide compatibility aliases from listings

* fix(settings): hide compatibility model aliases

* test(claude): cover legacy catalog entry

* test(app): expect mock thinking controls in schedules

* fix(app): preserve queued thinking preferences

* fix(app): reconcile schedule provider snapshots

* fix(app): preserve schedule model selections

* fix(claude): preserve exact configured model ids

* fix(app): preserve committed thinking preferences

* fix(app): preserve aliased schedule thinking
2026-08-06 11:33:18 +02:00

31 lines
1.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { OptimisticFormPreferences } from "./optimistic-preferences";
describe("optimistic form preferences", () => {
it("removes a rejected update while preserving later queued updates", () => {
const preferences = new OptimisticFormPreferences({});
const failed = preferences.begin({ provider: "claude" });
const pending = preferences.begin({ isolation: "worktree" });
expect(preferences.current()).toEqual({ provider: "claude", isolation: "worktree" });
preferences.reject(failed);
expect(preferences.current()).toEqual({ isolation: "worktree" });
preferences.commit(pending, { isolation: "worktree" });
expect(preferences.current()).toEqual({ isolation: "worktree" });
});
it("does not replace pending optimistic state with a stale external snapshot", () => {
const preferences = new OptimisticFormPreferences({ provider: "codex" });
const pending = preferences.begin({ provider: "claude" });
preferences.reconcile({ provider: "codex", isolation: "local" });
expect(preferences.current()).toEqual({ provider: "claude" });
preferences.commit(pending, { provider: "claude" });
preferences.reconcile({ provider: "claude", isolation: "worktree" });
expect(preferences.current()).toEqual({ provider: "claude", isolation: "worktree" });
});
});