185 lines · 4.5 KB · TypeScript
RawDownload
import { describe, expect, it } from "vitest";import { getComposerProviderState } from "./composerProviderRegistry"; describe("getComposerProviderState", () => {  it("returns codex defaults when no codex draft options exist", () => {    const state = getComposerProviderState({      provider: "codex",      model: "gpt-5.4",      prompt: "",      modelOptions: undefined,    });     expect(state).toEqual({      provider: "codex",      promptEffort: "high",      modelOptionsForDispatch: undefined,    });  });   it("normalizes codex dispatch options while preserving the selected effort", () => {    const state = getComposerProviderState({      provider: "codex",      model: "gpt-5.4",      prompt: "",      modelOptions: {        codex: {          reasoningEffort: "low",          fastMode: true,        },      },    });     expect(state).toEqual({      provider: "codex",      promptEffort: "low",      modelOptionsForDispatch: {        reasoningEffort: "low",        fastMode: true,      },    });  });   it("preserves codex fast mode when it is the only active option", () => {    const state = getComposerProviderState({      provider: "codex",      model: "gpt-5.4",      prompt: "",      modelOptions: {        codex: {          fastMode: true,        },      },    });     expect(state).toEqual({      provider: "codex",      promptEffort: "high",      modelOptionsForDispatch: {        fastMode: true,      },    });  });   it("drops explicit codex default/off overrides from dispatch while keeping the selected effort label", () => {    const state = getComposerProviderState({      provider: "codex",      model: "gpt-5.4",      prompt: "",      modelOptions: {        codex: {          reasoningEffort: "high",          fastMode: false,        },      },    });     expect(state).toEqual({      provider: "codex",      promptEffort: "high",      modelOptionsForDispatch: undefined,    });  });   it("returns Claude defaults for effort-capable models", () => {    const state = getComposerProviderState({      provider: "claudeAgent",      model: "claude-sonnet-4-6",      prompt: "",      modelOptions: undefined,    });     expect(state).toEqual({      provider: "claudeAgent",      promptEffort: "high",      modelOptionsForDispatch: undefined,    });  });   it("tracks Claude ultrathink from the prompt without changing dispatch effort", () => {    const state = getComposerProviderState({      provider: "claudeAgent",      model: "claude-sonnet-4-6",      prompt: "Ultrathink:\nInvestigate this failure",      modelOptions: {        claudeAgent: {          effort: "medium",        },      },    });     expect(state).toEqual({      provider: "claudeAgent",      promptEffort: "medium",      modelOptionsForDispatch: {        effort: "medium",      },      composerFrameClassName: "ultrathink-frame",      composerSurfaceClassName: "shadow-[0_0_0_1px_rgba(255,255,255,0.04)_inset]",      modelPickerIconClassName: "ultrathink-chroma",    });  });   it("drops unsupported Claude effort options for models without effort controls", () => {    const state = getComposerProviderState({      provider: "claudeAgent",      model: "claude-haiku-4-5",      prompt: "",      modelOptions: {        claudeAgent: {          effort: "max",          thinking: false,        },      },    });     expect(state).toEqual({      provider: "claudeAgent",      promptEffort: null,      modelOptionsForDispatch: {        thinking: false,      },    });  });   it("preserves Claude fast mode when it is the only active option", () => {    const state = getComposerProviderState({      provider: "claudeAgent",      model: "claude-opus-4-6",      prompt: "",      modelOptions: {        claudeAgent: {          fastMode: true,        },      },    });     expect(state).toEqual({      provider: "claudeAgent",      promptEffort: "high",      modelOptionsForDispatch: {        fastMode: true,      },    });  });   it("drops explicit Claude default/off overrides from dispatch while keeping the selected effort label", () => {    const state = getComposerProviderState({      provider: "claudeAgent",      model: "claude-opus-4-6",      prompt: "",      modelOptions: {        claudeAgent: {          effort: "high",          fastMode: false,        },      },    });     expect(state).toEqual({      provider: "claudeAgent",      promptEffort: "high",      modelOptionsForDispatch: undefined,    });  });});