58 lines
2.6 KiB
TypeScript
58 lines
2.6 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
// Regression guard for #4184.
|
|
//
|
|
// The theoldllm provider (free OpenAI-compatible upstream) listed its models
|
|
// with NO contextLength, so getResolvedModelCapabilities resolved their context
|
|
// window to `null` and the dashboard/catalog reported no usable window. #4184
|
|
// adds an entry-level `defaultContextLength` plus per-model `contextLength`
|
|
// overrides reflecting each upstream model's real window. This test asserts both
|
|
// the registry data (source of truth) and the resolved context window for the
|
|
// models that carry an explicit override — the latter would resolve to `null`
|
|
// on the pre-#4184 registry, so it fails without the fix.
|
|
const { getRegistryEntry } = await import("../../open-sse/config/providerRegistry.ts");
|
|
const { getResolvedModelCapabilities } = await import("../../src/lib/modelCapabilities.ts");
|
|
|
|
function model(id: string) {
|
|
const entry = getRegistryEntry("theoldllm");
|
|
assert.ok(entry, "theoldllm registry entry must exist");
|
|
return (entry.models ?? []).find((m) => m.id === id);
|
|
}
|
|
|
|
test("#4184 theoldllm entry declares a 200000 defaultContextLength", () => {
|
|
const entry = getRegistryEntry("theoldllm");
|
|
assert.ok(entry, "theoldllm registry entry must exist");
|
|
assert.equal(entry.defaultContextLength, 200000);
|
|
});
|
|
|
|
test("#4184 per-model contextLength overrides match each upstream window", () => {
|
|
assert.equal(model("GPT_5_4")?.contextLength, 400000, "GPT-5.4 window is 400K");
|
|
assert.equal(model("gemini_3_flash")?.contextLength, 1000000, "Gemini 3 Flash window is 1M");
|
|
assert.equal(model("gemini_3_pro")?.contextLength, 1000000, "Gemini 3 Pro window is 1M");
|
|
for (const id of ["claude_opus_4", "claude_sonnet_4", "claude_haiku_3_5", "deepseek_v4"]) {
|
|
assert.equal(model(id)?.contextLength, 200000, `${id} window is 200K`);
|
|
}
|
|
});
|
|
|
|
test("#4184 GPT_4o carries no explicit contextLength (relies on defaultContextLength)", () => {
|
|
// Intentionally left to the entry default — documents the fallback contract so a
|
|
// later edit that removes defaultContextLength is caught by the assertion above.
|
|
assert.equal(model("GPT_4o")?.contextLength, undefined);
|
|
});
|
|
|
|
test("#4184 resolved context window reflects the override (null before the fix)", () => {
|
|
assert.equal(
|
|
getResolvedModelCapabilities({ provider: "theoldllm", model: "GPT_5_4" }).contextWindow,
|
|
400000
|
|
);
|
|
assert.equal(
|
|
getResolvedModelCapabilities({ provider: "theoldllm", model: "gemini_3_pro" }).contextWindow,
|
|
1000000
|
|
);
|
|
assert.equal(
|
|
getResolvedModelCapabilities({ provider: "theoldllm", model: "claude_opus_4" }).contextWindow,
|
|
200000
|
|
);
|
|
});
|