fix(ai): add Moonshot CN Kimi K2.7 metadata

closes #5760
This commit is contained in:
Armin Ronacher
2026-06-15 17:08:59 +02:00
parent 1aa3c02d56
commit 0369bdb8f4
7 changed files with 120 additions and 5 deletions

View File

@@ -1118,6 +1118,54 @@ describe("openai-completions tool_choice", () => {
expect(params.reasoning_effort).toBeUndefined();
});
it("omits disabled thinking for Moonshot Kimi K2.7 Code models", async () => {
const cases = [getModel("moonshotai", "kimi-k2.7-code"), getModel("moonshotai-cn", "kimi-k2.7-code")];
for (const model of cases) {
expect(model).toBeDefined();
let payload: unknown;
await streamSimple(
model!,
{
messages: [{ role: "user", content: "Hi", timestamp: Date.now() }],
},
{
apiKey: "test",
onPayload: (params: unknown) => {
payload = params;
},
},
).result();
const params = (payload ?? mockState.lastParams) as { thinking?: unknown; reasoning_effort?: string };
expect(params.thinking).toBeUndefined();
expect(params.reasoning_effort).toBeUndefined();
}
});
it("keeps disabled thinking for Moonshot Kimi K2.6 when thinking is off", async () => {
const model = getModel("moonshotai-cn", "kimi-k2.6")!;
let payload: unknown;
await streamSimple(
model,
{
messages: [{ role: "user", content: "Hi", timestamp: Date.now() }],
},
{
apiKey: "test",
onPayload: (params: unknown) => {
payload = params;
},
},
).result();
const params = (payload ?? mockState.lastParams) as { thinking?: unknown; reasoning_effort?: string };
expect(params.thinking).toEqual({ type: "disabled" });
expect(params.reasoning_effort).toBeUndefined();
});
it("sends max_tokens for OpenCode completions models", async () => {
const cases = [getModel("opencode-go", "kimi-k2.6")!, getModel("opencode", "grok-build-0.1")!] as const;

View File

@@ -69,6 +69,15 @@ describe("getSupportedThinkingLevels", () => {
expect(getSupportedThinkingLevels(model!)).toEqual(["off", "high"]);
});
it("excludes thinking off for Moonshot Kimi K2.7 Code models", () => {
const cases = [getModel("moonshotai", "kimi-k2.7-code"), getModel("moonshotai-cn", "kimi-k2.7-code")];
for (const model of cases) {
expect(model).toBeDefined();
expect(getSupportedThinkingLevels(model!)).toEqual(["minimal", "low", "medium", "high"]);
}
});
it("includes only high for OpenCode Grok Build", () => {
const model = getModel("opencode", "grok-build-0.1");
expect(model).toBeDefined();