mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-05 02:21:42 +00:00
119 lines
3.5 KiB
TypeScript
119 lines
3.5 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const normalizeProviderModelIdWithManifestMock = vi.hoisted(() => vi.fn());
|
|
const normalizeProviderModelIdWithRuntimeMock = vi.hoisted(() => vi.fn());
|
|
|
|
vi.mock("../plugins/manifest-model-id-normalization.js", () => ({
|
|
normalizeProviderModelIdWithManifest: normalizeProviderModelIdWithManifestMock,
|
|
}));
|
|
|
|
vi.mock("../agents/provider-model-normalization.runtime.js", () => ({
|
|
normalizeProviderModelIdWithRuntime: normalizeProviderModelIdWithRuntimeMock,
|
|
}));
|
|
|
|
describe("statusSummaryRuntime configured model normalization", () => {
|
|
beforeEach(() => {
|
|
vi.resetModules();
|
|
normalizeProviderModelIdWithManifestMock.mockReset();
|
|
normalizeProviderModelIdWithRuntimeMock.mockReset();
|
|
});
|
|
|
|
it("skips manifest and plugin model normalization for configured model refs", async () => {
|
|
const { statusSummaryRuntime } = await import("./status.summary.runtime.js");
|
|
|
|
expect(
|
|
statusSummaryRuntime.resolveConfiguredStatusModelRef({
|
|
cfg: {
|
|
agents: {
|
|
defaults: {
|
|
model: { primary: "openai-codex/gpt-5.5" },
|
|
},
|
|
},
|
|
} as never,
|
|
defaultProvider: "openai",
|
|
defaultModel: "gpt-5.5",
|
|
}),
|
|
).toEqual({
|
|
provider: "openai-codex",
|
|
model: "gpt-5.5",
|
|
});
|
|
|
|
expect(
|
|
statusSummaryRuntime.resolveConfiguredStatusModelRef({
|
|
cfg: {
|
|
agents: {
|
|
defaults: {
|
|
model: { primary: "fast-codex" },
|
|
models: {
|
|
"openai-codex/gpt-5.5": { alias: "fast-codex" },
|
|
},
|
|
},
|
|
},
|
|
} as never,
|
|
defaultProvider: "openai",
|
|
defaultModel: "gpt-5.5",
|
|
}),
|
|
).toEqual({
|
|
provider: "openai-codex",
|
|
model: "gpt-5.5",
|
|
});
|
|
|
|
expect(normalizeProviderModelIdWithManifestMock).not.toHaveBeenCalled();
|
|
expect(normalizeProviderModelIdWithRuntimeMock).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it("skips manifest and plugin model normalization for providerless persisted session models", async () => {
|
|
const { statusSummaryRuntime } = await import("./status.summary.runtime.js");
|
|
const cfg = {
|
|
agents: {
|
|
defaults: {
|
|
model: { primary: "anthropic/claude-sonnet-4-6" },
|
|
},
|
|
},
|
|
} as never;
|
|
|
|
normalizeProviderModelIdWithManifestMock.mockReturnValue("claude-opus-4-6");
|
|
normalizeProviderModelIdWithRuntimeMock.mockReturnValue("runtime-normalized-opus");
|
|
|
|
expect(
|
|
statusSummaryRuntime.resolveSessionModelRef(cfg, {
|
|
model: "opus-4.6",
|
|
}),
|
|
).toEqual({
|
|
provider: "anthropic",
|
|
model: "opus-4.6",
|
|
});
|
|
|
|
expect(
|
|
statusSummaryRuntime.resolveSessionModelRef(cfg, {
|
|
model: "fallback-runtime-model",
|
|
modelOverride: "opus-4.6",
|
|
}),
|
|
).toEqual({
|
|
provider: "anthropic",
|
|
model: "opus-4.6",
|
|
});
|
|
|
|
expect(
|
|
statusSummaryRuntime.resolveStatusModelComparisonLabel({
|
|
provider: "anthropic",
|
|
model: "opus-4.6",
|
|
defaultProvider: "anthropic",
|
|
}),
|
|
).toBe("anthropic/claude-opus-4-6");
|
|
expect(
|
|
statusSummaryRuntime.resolveStatusModelLookupRef({
|
|
provider: "anthropic",
|
|
model: "opus-4.6",
|
|
defaultProvider: "anthropic",
|
|
}),
|
|
).toEqual({
|
|
provider: "anthropic",
|
|
model: "claude-opus-4-6",
|
|
});
|
|
|
|
expect(normalizeProviderModelIdWithManifestMock).not.toHaveBeenCalled();
|
|
expect(normalizeProviderModelIdWithRuntimeMock).not.toHaveBeenCalled();
|
|
});
|
|
});
|