Files
openclaw/extensions/kimi-coding/index.test.ts
Peter Steinberger 2409df768c fix(kimi): honor K3 thinking off (#109335)
* fix(kimi): honor K3 thinking off

* chore: defer Kimi release note

* test(kimi): narrow live reasoning blocks
2026-07-16 13:50:15 -07:00

86 lines
2.3 KiB
TypeScript

// Kimi Coding tests cover index plugin behavior.
import { registerSingleProviderPlugin } from "openclaw/plugin-sdk/plugin-test-runtime";
import { describe, expect, it } from "vitest";
import plugin from "./index.js";
describe("kimi provider plugin", () => {
it("normalizes legacy Kimi Code ids to the stable API model id", async () => {
const provider = await registerSingleProviderPlugin(plugin);
expect(
provider.normalizeResolvedModel?.({
provider: "kimi",
modelId: "kimi-code",
model: {
id: "kimi-code",
name: "Kimi Code",
provider: "kimi",
api: "anthropic-messages",
},
} as never),
).toEqual({
id: "kimi-for-coding",
name: "Kimi Code",
provider: "kimi",
api: "anthropic-messages",
});
});
it("uses binary thinking with thinking off by default", async () => {
const provider = await registerSingleProviderPlugin(plugin);
expect(
provider.resolveThinkingProfile?.({
provider: "kimi",
modelId: "kimi-code",
reasoning: true,
} as never),
).toEqual({
levels: [
{ id: "off", label: "off" },
{ id: "low", label: "on" },
],
defaultLevel: "off",
});
});
it.each(["k3", "k3[1m]"])("exposes %s off and max thinking", async (modelId) => {
const provider = await registerSingleProviderPlugin(plugin);
expect(
provider.resolveThinkingProfile?.({
provider: "kimi",
modelId,
reasoning: true,
} as never),
).toEqual({
levels: [
{ id: "off", label: "off" },
{ id: "max", label: "max" },
],
defaultLevel: "max",
preserveWhenCatalogReasoningFalse: true,
});
});
it("wraps K3 simple completions without changing K2 simple completions", async () => {
const provider = await registerSingleProviderPlugin(plugin);
const streamFn = (() => undefined) as never;
expect(
provider.wrapSimpleCompletionStreamFn?.({
provider: "kimi",
modelId: "k3",
streamFn,
} as never),
).not.toBe(streamFn);
expect(
provider.wrapSimpleCompletionStreamFn?.({
provider: "kimi",
modelId: "kimi-for-coding",
streamFn,
} as never),
).toBe(streamFn);
});
});