From a5a7ea0e39942dcc30cd65e9545d667e782d084a Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 6 Apr 2026 17:48:57 +0100 Subject: [PATCH] refactor: dedupe provider stream family surface --- src/plugin-sdk/provider-stream-family.ts | 167 +---------------------- 1 file changed, 1 insertion(+), 166 deletions(-) diff --git a/src/plugin-sdk/provider-stream-family.ts b/src/plugin-sdk/provider-stream-family.ts index 0f360c2fc00..2efa88a8916 100644 --- a/src/plugin-sdk/provider-stream-family.ts +++ b/src/plugin-sdk/provider-stream-family.ts @@ -1,166 +1 @@ -import { - createGoogleThinkingPayloadWrapper, - sanitizeGoogleThinkingPayload, -} from "../agents/pi-embedded-runner/google-stream-wrappers.js"; -import { createMinimaxFastModeWrapper } from "../agents/pi-embedded-runner/minimax-stream-wrappers.js"; -import { - createMoonshotThinkingWrapper, - resolveMoonshotThinkingType, -} from "../agents/pi-embedded-runner/moonshot-thinking-stream-wrappers.js"; -import { - createCodexNativeWebSearchWrapper, - createOpenAIAttributionHeadersWrapper, - createOpenAIFastModeWrapper, - createOpenAIReasoningCompatibilityWrapper, - createOpenAIResponsesContextManagementWrapper, - createOpenAIServiceTierWrapper, - createOpenAITextVerbosityWrapper, - resolveOpenAIFastMode, - resolveOpenAIServiceTier, - resolveOpenAITextVerbosity, -} from "../agents/pi-embedded-runner/openai-stream-wrappers.js"; -import { - getOpenRouterModelCapabilities, - loadOpenRouterModelCapabilities, -} from "../agents/pi-embedded-runner/openrouter-model-capabilities.js"; -import { - createKilocodeWrapper, - createOpenRouterSystemCacheWrapper, - createOpenRouterWrapper, - isProxyReasoningUnsupported, -} from "../agents/pi-embedded-runner/proxy-stream-wrappers.js"; -import { - createToolStreamWrapper, - createZaiToolStreamWrapper, -} from "../agents/pi-embedded-runner/zai-stream-wrappers.js"; -import type { ProviderPlugin } from "../plugins/types.js"; -import type { ProviderWrapStreamFnContext } from "./plugin-entry.js"; - -export type ProviderStreamFamily = - | "google-thinking" - | "kilocode-thinking" - | "moonshot-thinking" - | "minimax-fast-mode" - | "openai-responses-defaults" - | "openrouter-thinking" - | "tool-stream-default-on"; - -type ProviderStreamFamilyHooks = Pick; - -export function buildProviderStreamFamilyHooks( - family: ProviderStreamFamily, -): ProviderStreamFamilyHooks { - switch (family) { - case "google-thinking": - return { - wrapStreamFn: (ctx: ProviderWrapStreamFnContext) => - createGoogleThinkingPayloadWrapper(ctx.streamFn, ctx.thinkingLevel), - }; - case "moonshot-thinking": - return { - wrapStreamFn: (ctx: ProviderWrapStreamFnContext) => { - const thinkingType = resolveMoonshotThinkingType({ - configuredThinking: ctx.extraParams?.thinking, - thinkingLevel: ctx.thinkingLevel, - }); - return createMoonshotThinkingWrapper(ctx.streamFn, thinkingType); - }, - }; - case "kilocode-thinking": - return { - wrapStreamFn: (ctx: ProviderWrapStreamFnContext) => { - const thinkingLevel = - ctx.modelId === "kilo/auto" || isProxyReasoningUnsupported(ctx.modelId) - ? undefined - : ctx.thinkingLevel; - return createKilocodeWrapper(ctx.streamFn, thinkingLevel); - }, - }; - case "minimax-fast-mode": - return { - wrapStreamFn: (ctx: ProviderWrapStreamFnContext) => - createMinimaxFastModeWrapper(ctx.streamFn, ctx.extraParams?.fastMode === true), - }; - case "openai-responses-defaults": - return { - wrapStreamFn: (ctx: ProviderWrapStreamFnContext) => { - let nextStreamFn = createOpenAIAttributionHeadersWrapper(ctx.streamFn); - - if (resolveOpenAIFastMode(ctx.extraParams)) { - nextStreamFn = createOpenAIFastModeWrapper(nextStreamFn); - } - - const serviceTier = resolveOpenAIServiceTier(ctx.extraParams); - if (serviceTier) { - nextStreamFn = createOpenAIServiceTierWrapper(nextStreamFn, serviceTier); - } - - const textVerbosity = resolveOpenAITextVerbosity(ctx.extraParams); - if (textVerbosity) { - nextStreamFn = createOpenAITextVerbosityWrapper(nextStreamFn, textVerbosity); - } - - nextStreamFn = createCodexNativeWebSearchWrapper(nextStreamFn, { - config: ctx.config, - agentDir: ctx.agentDir, - }); - return createOpenAIResponsesContextManagementWrapper( - createOpenAIReasoningCompatibilityWrapper(nextStreamFn), - ctx.extraParams, - ); - }, - }; - case "openrouter-thinking": - return { - wrapStreamFn: (ctx: ProviderWrapStreamFnContext) => { - const thinkingLevel = - ctx.modelId === "auto" || isProxyReasoningUnsupported(ctx.modelId) - ? undefined - : ctx.thinkingLevel; - return createOpenRouterWrapper(ctx.streamFn, thinkingLevel); - }, - }; - case "tool-stream-default-on": - return { - wrapStreamFn: (ctx: ProviderWrapStreamFnContext) => - createToolStreamWrapper(ctx.streamFn, ctx.extraParams?.tool_stream !== false), - }; - } -} - -export { - createGoogleThinkingPayloadWrapper, - sanitizeGoogleThinkingPayload, -} from "../agents/pi-embedded-runner/google-stream-wrappers.js"; -export { createMinimaxFastModeWrapper } from "../agents/pi-embedded-runner/minimax-stream-wrappers.js"; -export { - createMoonshotThinkingWrapper, - resolveMoonshotThinkingType, -} from "../agents/pi-embedded-runner/moonshot-thinking-stream-wrappers.js"; -export { - createOpenAIAttributionHeadersWrapper, - createCodexNativeWebSearchWrapper, - createOpenAIDefaultTransportWrapper, - createOpenAIFastModeWrapper, - createOpenAIReasoningCompatibilityWrapper, - createOpenAIResponsesContextManagementWrapper, - createOpenAIServiceTierWrapper, - createOpenAITextVerbosityWrapper, - resolveOpenAIFastMode, - resolveOpenAIServiceTier, - resolveOpenAITextVerbosity, -} from "../agents/pi-embedded-runner/openai-stream-wrappers.js"; -export { - createKilocodeWrapper, - createOpenRouterSystemCacheWrapper, - createOpenRouterWrapper, - isProxyReasoningUnsupported, -} from "../agents/pi-embedded-runner/proxy-stream-wrappers.js"; -export { - getOpenRouterModelCapabilities, - loadOpenRouterModelCapabilities, -} from "../agents/pi-embedded-runner/openrouter-model-capabilities.js"; -export { - createToolStreamWrapper, - createZaiToolStreamWrapper, -} from "../agents/pi-embedded-runner/zai-stream-wrappers.js"; +export * from "./provider-stream.js";