mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-08-20 22:23:59 +00:00
* fix(coding-agent): keep model and thinking level changes session scoped * fix(coding-agent): persist requested default thinking level * feat: --default arg to persist * fix * fix(coding-agent): keep model and thinking level changes session scoped * fix: make default thinking level per model show list of models * cleanup export
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import type { TUI } from "@earendil-works/pi-tui";
|
|
import { afterEach, beforeAll, describe, expect, it, vi } from "vitest";
|
|
import { ModelSelectorComponent } from "../src/modes/interactive/components/model-selector.ts";
|
|
import { initTheme } from "../src/modes/interactive/theme/theme.ts";
|
|
import { stripAnsi } from "../src/utils/ansi.ts";
|
|
import { createHarness, type Harness } from "./suite/harness.ts";
|
|
|
|
function createFakeTui(): TUI {
|
|
return { requestRender: () => {} } as unknown as TUI;
|
|
}
|
|
|
|
describe("model selector", () => {
|
|
let harness: Harness | undefined;
|
|
|
|
beforeAll(() => {
|
|
initTheme("dark");
|
|
});
|
|
|
|
afterEach(() => {
|
|
harness?.cleanup();
|
|
harness = undefined;
|
|
});
|
|
|
|
it("lists every catalog that failed to refresh", async () => {
|
|
harness = await createHarness();
|
|
vi.spyOn(harness.session.modelRuntime, "refresh").mockResolvedValue({
|
|
aborted: false,
|
|
errors: new Map([
|
|
["openai", new Error("unavailable")],
|
|
["anthropic", new Error("unavailable")],
|
|
]),
|
|
});
|
|
|
|
const selector = new ModelSelectorComponent(
|
|
createFakeTui(),
|
|
harness.getModel(),
|
|
harness.session.modelRuntime,
|
|
[],
|
|
() => {},
|
|
() => {},
|
|
);
|
|
|
|
await vi.waitFor(() => {
|
|
const rendered = stripAnsi(selector.render(120).join("\n"));
|
|
expect(rendered).toContain("Could not refresh 2 model catalogs (openai, anthropic); showing cached models.");
|
|
});
|
|
});
|
|
});
|