diff --git a/extensions/kimi-coding/stream.ts b/extensions/kimi-coding/stream.ts index af0954b7503..312ebacc321 100644 --- a/extensions/kimi-coding/stream.ts +++ b/extensions/kimi-coding/stream.ts @@ -1,6 +1,6 @@ import type { StreamFn } from "@mariozechner/pi-agent-core"; import { streamSimple } from "@mariozechner/pi-ai"; -import { createAnthropicToolPayloadCompatibilityWrapper } from "openclaw/plugin-sdk/provider-stream"; +import { createOpenAIAnthropicToolPayloadCompatibilityWrapper } from "openclaw/plugin-sdk/provider-stream"; const TOOL_CALLS_SECTION_BEGIN = "<|tool_calls_section_begin|>"; const TOOL_CALLS_SECTION_END = "<|tool_calls_section_end|>"; @@ -183,9 +183,6 @@ export function createKimiToolCallMarkupWrapper(baseStreamFn: StreamFn | undefin export function wrapKimiProviderStream(baseStreamFn: StreamFn | undefined): StreamFn { return createKimiToolCallMarkupWrapper( - createAnthropicToolPayloadCompatibilityWrapper(baseStreamFn, { - toolSchemaMode: "openai-functions", - toolChoiceMode: "openai-string-modes", - }), + createOpenAIAnthropicToolPayloadCompatibilityWrapper(baseStreamFn), ); } diff --git a/src/agents/pi-embedded-runner-extraparams.test.ts b/src/agents/pi-embedded-runner-extraparams.test.ts index 058d50d645b..52a4aa0f3fd 100644 --- a/src/agents/pi-embedded-runner-extraparams.test.ts +++ b/src/agents/pi-embedded-runner-extraparams.test.ts @@ -54,7 +54,10 @@ import { resolveExtraParams, resolvePreparedExtraParams, } from "./pi-embedded-runner.js"; -import { createAnthropicToolPayloadCompatibilityWrapper } from "./pi-embedded-runner/anthropic-family-tool-payload-compat.js"; +import { + createAnthropicToolPayloadCompatibilityWrapper, + createOpenAIAnthropicToolPayloadCompatibilityWrapper, +} from "./pi-embedded-runner/anthropic-family-tool-payload-compat.js"; import { createBedrockNoCacheWrapper, isAnthropicBedrockModel, @@ -162,10 +165,7 @@ beforeEach(() => { ); } if (params.provider === "kimi") { - return createAnthropicToolPayloadCompatibilityWrapper(params.context.streamFn, { - toolSchemaMode: "openai-functions", - toolChoiceMode: "openai-string-modes", - }); + return createOpenAIAnthropicToolPayloadCompatibilityWrapper(params.context.streamFn); } if (params.provider === "minimax" || params.provider === "minimax-portal") { return createMinimaxFastModeWrapper( diff --git a/src/agents/pi-embedded-runner/anthropic-family-tool-payload-compat.ts b/src/agents/pi-embedded-runner/anthropic-family-tool-payload-compat.ts index db08548a9db..249084a3488 100644 --- a/src/agents/pi-embedded-runner/anthropic-family-tool-payload-compat.ts +++ b/src/agents/pi-embedded-runner/anthropic-family-tool-payload-compat.ts @@ -158,3 +158,12 @@ export function createAnthropicToolPayloadCompatibilityWrapper( }); }; } + +export function createOpenAIAnthropicToolPayloadCompatibilityWrapper( + baseStreamFn: StreamFn | undefined, +): StreamFn { + return createAnthropicToolPayloadCompatibilityWrapper(baseStreamFn, { + toolSchemaMode: "openai-functions", + toolChoiceMode: "openai-string-modes", + }); +} diff --git a/src/plugin-sdk/provider-stream.ts b/src/plugin-sdk/provider-stream.ts index d1d7a07d082..9fc8e017ac6 100644 --- a/src/plugin-sdk/provider-stream.ts +++ b/src/plugin-sdk/provider-stream.ts @@ -27,7 +27,10 @@ export { hasCopilotVisionInput, } from "../agents/copilot-dynamic-headers.js"; export { applyAnthropicEphemeralCacheControlMarkers } from "../agents/pi-embedded-runner/anthropic-cache-control-payload.js"; -export { createAnthropicToolPayloadCompatibilityWrapper } from "../agents/pi-embedded-runner/anthropic-family-tool-payload-compat.js"; +export { + createAnthropicToolPayloadCompatibilityWrapper, + createOpenAIAnthropicToolPayloadCompatibilityWrapper, +} from "../agents/pi-embedded-runner/anthropic-family-tool-payload-compat.js"; export { createBedrockNoCacheWrapper, isAnthropicBedrockModel,