mirror of
https://github.com/murashit/codex-panel.git
synced 2026-07-22 17:30:31 +00:00
77 lines
2.8 KiB
TypeScript
77 lines
2.8 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
|
|
import type { ModelMetadataClient } from "../../src/app-server/services/catalog";
|
|
import { resolvedRuntimeOverrideForClient } from "../../src/app-server/services/runtime-overrides";
|
|
import type { ModelListResponse } from "../../src/generated/app-server/v2/ModelListResponse";
|
|
|
|
describe("resolvedRuntimeOverrideForClient", () => {
|
|
it("uses Codex defaults without loading model metadata", async () => {
|
|
const client = modelClient([]);
|
|
|
|
await expect(resolvedRuntimeOverrideForClient(client, { model: null, effort: null })).resolves.toEqual({});
|
|
expect(client.request).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it("passes a model-only override without loading model metadata", async () => {
|
|
const client = modelClient([]);
|
|
|
|
await expect(resolvedRuntimeOverrideForClient(client, { model: "gpt-5.4-mini", effort: null })).resolves.toEqual({
|
|
model: "gpt-5.4-mini",
|
|
});
|
|
expect(client.request).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it("keeps only efforts supported by the selected model", async () => {
|
|
const client = modelClient([appServerModel("gpt-5.4-mini", ["low", "medium", "high"])]);
|
|
|
|
await expect(resolvedRuntimeOverrideForClient(client, { model: "gpt-5.4-mini", effort: "minimal" })).resolves.toEqual({
|
|
model: "gpt-5.4-mini",
|
|
});
|
|
await expect(resolvedRuntimeOverrideForClient(client, { model: "gpt-5.4-mini", effort: "low" })).resolves.toEqual({
|
|
model: "gpt-5.4-mini",
|
|
effort: "low",
|
|
});
|
|
});
|
|
|
|
it("preserves explicit settings when model metadata cannot be loaded", async () => {
|
|
const request = vi.fn(async () => {
|
|
throw new Error("unavailable");
|
|
}) as unknown as ModelMetadataClient["request"];
|
|
|
|
await expect(resolvedRuntimeOverrideForClient({ request }, { model: "gpt-5.4-mini", effort: "minimal" })).resolves.toEqual({
|
|
model: "gpt-5.4-mini",
|
|
effort: "minimal",
|
|
});
|
|
});
|
|
});
|
|
|
|
function modelClient(models: ModelListResponse["data"]): ModelMetadataClient {
|
|
return {
|
|
request: vi.fn(async () => ({ data: models, nextCursor: null })) as unknown as ModelMetadataClient["request"],
|
|
};
|
|
}
|
|
|
|
function appServerModel(name: string, efforts: string[]): ModelListResponse["data"][number] {
|
|
return {
|
|
id: name,
|
|
model: name,
|
|
upgrade: null,
|
|
upgradeInfo: null,
|
|
availabilityNux: null,
|
|
displayName: name,
|
|
description: "",
|
|
hidden: false,
|
|
supportedReasoningEfforts: efforts.map((reasoningEffort) => ({
|
|
reasoningEffort: reasoningEffort as never,
|
|
label: reasoningEffort,
|
|
description: "",
|
|
})),
|
|
defaultReasoningEffort: (efforts[0] ?? "low") as never,
|
|
inputModalities: ["text"],
|
|
supportsPersonality: false,
|
|
additionalSpeedTiers: [],
|
|
serviceTiers: [],
|
|
defaultServiceTier: null,
|
|
isDefault: false,
|
|
};
|
|
}
|