From ea4d0a3ce7cf347ac842ee34f74f8989aa090704 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 1 May 2026 16:56:44 +0100 Subject: [PATCH] refactor: trim provider helper exports --- extensions/ollama/src/discovery-shared.ts | 4 ++-- extensions/ollama/src/model-id.ts | 2 +- extensions/openai/openclaw.plugin.test.ts | 2 +- extensions/openai/prompt-overlay.ts | 2 +- extensions/openai/realtime-voice-provider.ts | 4 +--- extensions/qwen/index.ts | 8 ++++++-- extensions/qwen/onboard.ts | 16 ++++------------ extensions/xai/src/code-execution-shared.ts | 8 ++++---- extensions/xai/src/tool-auth-shared.ts | 2 +- extensions/xai/src/web-search-shared.ts | 8 ++++---- extensions/xai/src/x-search-config.ts | 4 ++-- extensions/xai/src/x-search-shared.ts | 8 ++++---- 12 files changed, 31 insertions(+), 37 deletions(-) diff --git a/extensions/ollama/src/discovery-shared.ts b/extensions/ollama/src/discovery-shared.ts index fd001e2e479..3b833d1466d 100644 --- a/extensions/ollama/src/discovery-shared.ts +++ b/extensions/ollama/src/discovery-shared.ts @@ -39,7 +39,7 @@ function readStringValue(value: unknown): string | undefined { return undefined; } -export function resolveOllamaDiscoveryApiKey(params: { +function resolveOllamaDiscoveryApiKey(params: { env: NodeJS.ProcessEnv; baseUrl?: string; explicitApiKey?: string; @@ -169,7 +169,7 @@ export function shouldUseSyntheticOllamaAuth( return isLocalOllamaBaseUrl(readProviderBaseUrl(providerConfig)); } -export function hasMeaningfulExplicitOllamaConfig( +function hasMeaningfulExplicitOllamaConfig( providerConfig: ModelProviderConfig | undefined, ): boolean { if (!providerConfig) { diff --git a/extensions/ollama/src/model-id.ts b/extensions/ollama/src/model-id.ts index df0bcae7e73..8ee14a22e69 100644 --- a/extensions/ollama/src/model-id.ts +++ b/extensions/ollama/src/model-id.ts @@ -1,6 +1,6 @@ import { normalizeProviderId } from "openclaw/plugin-sdk/provider-model-shared"; -export const OLLAMA_PROVIDER_ID = "ollama"; +const OLLAMA_PROVIDER_ID = "ollama"; function uniqueModelPrefixCandidates(providerId?: string): string[] { const candidates = [providerId, normalizeProviderId(providerId ?? ""), OLLAMA_PROVIDER_ID] diff --git a/extensions/openai/openclaw.plugin.test.ts b/extensions/openai/openclaw.plugin.test.ts index 8c41321d667..f0172ef0926 100644 --- a/extensions/openai/openclaw.plugin.test.ts +++ b/extensions/openai/openclaw.plugin.test.ts @@ -65,7 +65,7 @@ function providerWizardByKey() { describe("OpenAI plugin manifest", () => { it("opts into staging bundled runtime dependencies", () => { - expect(packageJson.dependencies?.["@mariozechner/pi-ai"]).toBe("0.70.6"); + expect(packageJson.dependencies?.["@mariozechner/pi-ai"]).toBe("0.71.1"); expect(packageJson.dependencies?.ws).toBe("^8.20.0"); expect(packageJson.openclaw?.bundle?.stageRuntimeDependencies).toBe(true); }); diff --git a/extensions/openai/prompt-overlay.ts b/extensions/openai/prompt-overlay.ts index 5573a82d17e..77c737c22e0 100644 --- a/extensions/openai/prompt-overlay.ts +++ b/extensions/openai/prompt-overlay.ts @@ -12,7 +12,7 @@ const OPENAI_PROVIDER_IDS = new Set(["openai", "openai-codex"]); export const OPENAI_FRIENDLY_PROMPT_OVERLAY = GPT5_FRIENDLY_PROMPT_OVERLAY; export const OPENAI_GPT5_BEHAVIOR_CONTRACT = GPT5_BEHAVIOR_CONTRACT; -export type OpenAIPromptOverlayMode = Gpt5PromptOverlayMode; +type OpenAIPromptOverlayMode = Gpt5PromptOverlayMode; export function resolveOpenAIPromptOverlayMode( pluginConfig?: Record, diff --git a/extensions/openai/realtime-voice-provider.ts b/extensions/openai/realtime-voice-provider.ts index a7879ba25c0..9a4032d2904 100644 --- a/extensions/openai/realtime-voice-provider.ts +++ b/extensions/openai/realtime-voice-provider.ts @@ -31,7 +31,7 @@ import { trimToUndefined, } from "./realtime-provider-shared.js"; -export type OpenAIRealtimeVoice = +type OpenAIRealtimeVoice = | "alloy" | "ash" | "ballad" @@ -776,5 +776,3 @@ export function buildOpenAIRealtimeVoiceProvider(): RealtimeVoiceProviderPlugin createBrowserSession: createOpenAIRealtimeBrowserSession, }; } - -export type { OpenAIRealtimeVoiceProviderConfig }; diff --git a/extensions/qwen/index.ts b/extensions/qwen/index.ts index c5e8192aef0..a8519ef3874 100644 --- a/extensions/qwen/index.ts +++ b/extensions/qwen/index.ts @@ -1,13 +1,17 @@ import { defineSingleProviderPluginEntry } from "openclaw/plugin-sdk/provider-entry"; import { applyQwenNativeStreamingUsageCompat } from "./api.js"; import { buildQwenMediaUnderstandingProvider } from "./media-understanding-provider.js"; -import { isQwenCodingPlanBaseUrl, QWEN_36_PLUS_MODEL_ID, QWEN_BASE_URL } from "./models.js"; +import { + isQwenCodingPlanBaseUrl, + QWEN_36_PLUS_MODEL_ID, + QWEN_BASE_URL, + QWEN_DEFAULT_MODEL_REF, +} from "./models.js"; import { applyQwenConfig, applyQwenConfigCn, applyQwenStandardConfig, applyQwenStandardConfigCn, - QWEN_DEFAULT_MODEL_REF, } from "./onboard.js"; import { buildQwenProvider } from "./provider-catalog.js"; import { wrapQwenProviderStream } from "./stream.js"; diff --git a/extensions/qwen/onboard.ts b/extensions/qwen/onboard.ts index d92bc0d29ae..39edf9778d5 100644 --- a/extensions/qwen/onboard.ts +++ b/extensions/qwen/onboard.ts @@ -11,14 +11,6 @@ import { } from "./models.js"; import { buildQwenProvider } from "./provider-catalog.js"; -export { - QWEN_CN_BASE_URL, - QWEN_DEFAULT_MODEL_REF, - QWEN_GLOBAL_BASE_URL, - QWEN_STANDARD_CN_BASE_URL, - QWEN_STANDARD_GLOBAL_BASE_URL, -}; - const qwenPresetAppliers = createModelCatalogPresetAppliers<[string]>({ primaryModelRef: QWEN_DEFAULT_MODEL_REF, resolveParams: (_cfg: OpenClawConfig, baseUrl: string) => { @@ -39,11 +31,11 @@ const qwenPresetAppliers = createModelCatalogPresetAppliers<[string]>({ }, }); -export function applyQwenProviderConfig(cfg: OpenClawConfig): OpenClawConfig { +function applyQwenProviderConfig(cfg: OpenClawConfig): OpenClawConfig { return qwenPresetAppliers.applyProviderConfig(cfg, QWEN_GLOBAL_BASE_URL); } -export function applyQwenProviderConfigCn(cfg: OpenClawConfig): OpenClawConfig { +function applyQwenProviderConfigCn(cfg: OpenClawConfig): OpenClawConfig { return qwenPresetAppliers.applyProviderConfig(cfg, QWEN_CN_BASE_URL); } @@ -55,11 +47,11 @@ export function applyQwenConfigCn(cfg: OpenClawConfig): OpenClawConfig { return qwenPresetAppliers.applyConfig(cfg, QWEN_CN_BASE_URL); } -export function applyQwenStandardProviderConfig(cfg: OpenClawConfig): OpenClawConfig { +function applyQwenStandardProviderConfig(cfg: OpenClawConfig): OpenClawConfig { return qwenPresetAppliers.applyProviderConfig(cfg, QWEN_STANDARD_GLOBAL_BASE_URL); } -export function applyQwenStandardProviderConfigCn(cfg: OpenClawConfig): OpenClawConfig { +function applyQwenStandardProviderConfigCn(cfg: OpenClawConfig): OpenClawConfig { return qwenPresetAppliers.applyProviderConfig(cfg, QWEN_STANDARD_CN_BASE_URL); } diff --git a/extensions/xai/src/code-execution-shared.ts b/extensions/xai/src/code-execution-shared.ts index 3adbbeb6019..b31c0d5deb0 100644 --- a/extensions/xai/src/code-execution-shared.ts +++ b/extensions/xai/src/code-execution-shared.ts @@ -10,16 +10,16 @@ import { } from "./tool-config-shared.js"; import { type XaiWebSearchResponse } from "./web-search-shared.js"; -export const XAI_CODE_EXECUTION_ENDPOINT = XAI_RESPONSES_ENDPOINT; -export const XAI_DEFAULT_CODE_EXECUTION_MODEL = "grok-4-1-fast"; +const XAI_CODE_EXECUTION_ENDPOINT = XAI_RESPONSES_ENDPOINT; +const XAI_DEFAULT_CODE_EXECUTION_MODEL = "grok-4-1-fast"; -export type XaiCodeExecutionResponse = XaiWebSearchResponse & { +type XaiCodeExecutionResponse = XaiWebSearchResponse & { output?: Array<{ type?: string; }>; }; -export type XaiCodeExecutionResult = { +type XaiCodeExecutionResult = { content: string; citations: string[]; usedCodeExecution: boolean; diff --git a/extensions/xai/src/tool-auth-shared.ts b/extensions/xai/src/tool-auth-shared.ts index 9e4ad4ad4f5..6c48d3582fe 100644 --- a/extensions/xai/src/tool-auth-shared.ts +++ b/extensions/xai/src/tool-auth-shared.ts @@ -13,7 +13,7 @@ import { resolveSecretInputString, } from "openclaw/plugin-sdk/secret-input"; -export type XaiFallbackAuth = { +type XaiFallbackAuth = { apiKey: string; source: string; }; diff --git a/extensions/xai/src/web-search-shared.ts b/extensions/xai/src/web-search-shared.ts index a26f7671395..c8b05f9d700 100644 --- a/extensions/xai/src/web-search-shared.ts +++ b/extensions/xai/src/web-search-shared.ts @@ -11,15 +11,15 @@ import type { XaiWebSearchResponse } from "./web-search-response.types.js"; export { extractXaiWebSearchContent } from "./responses-tool-shared.js"; export type { XaiWebSearchResponse } from "./web-search-response.types.js"; -export const XAI_WEB_SEARCH_ENDPOINT = XAI_RESPONSES_ENDPOINT; -export const XAI_DEFAULT_WEB_SEARCH_MODEL = "grok-4-1-fast"; +const XAI_WEB_SEARCH_ENDPOINT = XAI_RESPONSES_ENDPOINT; +const XAI_DEFAULT_WEB_SEARCH_MODEL = "grok-4-1-fast"; type XaiWebSearchConfig = Record & { model?: unknown; inlineCitations?: unknown; }; -export type XaiWebSearchResult = { +type XaiWebSearchResult = { content: string; citations: string[]; inlineCitations?: XaiWebSearchResponse["inline_citations"]; @@ -51,7 +51,7 @@ export function buildXaiWebSearchPayload(params: { }; } -export function resolveXaiSearchConfig(searchConfig?: Record): XaiWebSearchConfig { +function resolveXaiSearchConfig(searchConfig?: Record): XaiWebSearchConfig { return ( (isRecord(searchConfig?.grok) ? (searchConfig.grok as XaiWebSearchConfig) : undefined) ?? {} ); diff --git a/extensions/xai/src/x-search-config.ts b/extensions/xai/src/x-search-config.ts index 7bc76a89623..8880d7b9b7d 100644 --- a/extensions/xai/src/x-search-config.ts +++ b/extensions/xai/src/x-search-config.ts @@ -10,13 +10,13 @@ function cloneRecord(value: T): T { return { ...value } as T; } -export function resolveLegacyXSearchConfig(config?: OpenClawConfig): JsonRecord | undefined { +function resolveLegacyXSearchConfig(config?: OpenClawConfig): JsonRecord | undefined { const web = config?.tools?.web as Record | undefined; const xSearch = web?.x_search; return isRecord(xSearch) ? cloneRecord(xSearch) : undefined; } -export function resolvePluginXSearchConfig(config?: OpenClawConfig): JsonRecord | undefined { +function resolvePluginXSearchConfig(config?: OpenClawConfig): JsonRecord | undefined { const pluginConfig = config?.plugins?.entries?.xai?.config; if (!isRecord(pluginConfig?.xSearch)) { return undefined; diff --git a/extensions/xai/src/x-search-shared.ts b/extensions/xai/src/x-search-shared.ts index 589d0481609..f3ac9c798f4 100644 --- a/extensions/xai/src/x-search-shared.ts +++ b/extensions/xai/src/x-search-shared.ts @@ -11,10 +11,10 @@ import { } from "./tool-config-shared.js"; import { type XaiWebSearchResponse } from "./web-search-shared.js"; -export const XAI_X_SEARCH_ENDPOINT = XAI_RESPONSES_ENDPOINT; +const XAI_X_SEARCH_ENDPOINT = XAI_RESPONSES_ENDPOINT; export const XAI_DEFAULT_X_SEARCH_MODEL = "grok-4-1-fast-non-reasoning"; -export type XaiXSearchConfig = { +type XaiXSearchConfig = { apiKey?: unknown; model?: unknown; inlineCitations?: unknown; @@ -31,13 +31,13 @@ export type XaiXSearchOptions = { enableVideoUnderstanding?: boolean; }; -export type XaiXSearchResult = { +type XaiXSearchResult = { content: string; citations: string[]; inlineCitations?: XaiWebSearchResponse["inline_citations"]; }; -export function resolveXaiXSearchConfig(config?: Record): XaiXSearchConfig { +function resolveXaiXSearchConfig(config?: Record): XaiXSearchConfig { return coerceXaiToolConfig(config) as XaiXSearchConfig; }