mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-12 09:41:11 +00:00
refactor: dedupe provider stream family surface
This commit is contained in:
@@ -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<ProviderPlugin, "wrapStreamFn">;
|
||||
|
||||
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";
|
||||
|
||||
Reference in New Issue
Block a user