From 89e6b91b899e549f0735e3500a17c2fd3ce225cd Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 27 Mar 2026 00:40:33 +0000 Subject: [PATCH] fix: decouple moonshot stream wrappers from provider runtime --- .../moonshot-stream-wrappers.test.ts | 31 +++++++++++++++++++ .../moonshot-stream-wrappers.ts | 6 ++-- 2 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 src/agents/pi-embedded-runner/moonshot-stream-wrappers.test.ts diff --git a/src/agents/pi-embedded-runner/moonshot-stream-wrappers.test.ts b/src/agents/pi-embedded-runner/moonshot-stream-wrappers.test.ts new file mode 100644 index 00000000000..f05ad127008 --- /dev/null +++ b/src/agents/pi-embedded-runner/moonshot-stream-wrappers.test.ts @@ -0,0 +1,31 @@ +import { describe, expect, it } from "vitest"; +import { shouldApplyMoonshotPayloadCompat } from "./moonshot-stream-wrappers.js"; + +describe("moonshot stream wrappers", () => { + it("keeps Moonshot compatibility on the lightweight provider-id path", () => { + expect( + shouldApplyMoonshotPayloadCompat({ + provider: "moonshot", + modelId: "kimi-k2.5", + }), + ).toBe(true); + expect( + shouldApplyMoonshotPayloadCompat({ + provider: "kimi-coding", + modelId: "kimi-code", + }), + ).toBe(true); + expect( + shouldApplyMoonshotPayloadCompat({ + provider: "ollama", + modelId: "kimi-k2.5:cloud", + }), + ).toBe(true); + expect( + shouldApplyMoonshotPayloadCompat({ + provider: "openai", + modelId: "gpt-5.4", + }), + ).toBe(false); + }); +}); diff --git a/src/agents/pi-embedded-runner/moonshot-stream-wrappers.ts b/src/agents/pi-embedded-runner/moonshot-stream-wrappers.ts index f9ce52eb234..0793a984fe9 100644 --- a/src/agents/pi-embedded-runner/moonshot-stream-wrappers.ts +++ b/src/agents/pi-embedded-runner/moonshot-stream-wrappers.ts @@ -1,7 +1,7 @@ import type { StreamFn } from "@mariozechner/pi-agent-core"; import { streamSimple } from "@mariozechner/pi-ai"; import type { ThinkLevel } from "../../auto-reply/thinking.js"; -import { usesMoonshotThinkingPayloadCompat } from "../provider-capabilities.js"; +import { normalizeProviderId } from "../provider-id.js"; type MoonshotThinkingType = "enabled" | "disabled"; @@ -60,10 +60,10 @@ export function shouldApplyMoonshotPayloadCompat(params: { provider: string; modelId: string; }): boolean { - const normalizedProvider = params.provider.trim().toLowerCase(); + const normalizedProvider = normalizeProviderId(params.provider); const normalizedModelId = params.modelId.trim().toLowerCase(); - if (usesMoonshotThinkingPayloadCompat(normalizedProvider)) { + if (normalizedProvider === "moonshot" || normalizedProvider === "kimi") { return true; }