diff --git a/src/plugin-sdk/provider-models.ts b/src/plugin-sdk/provider-models.ts index b82bc09dc2f..8f6f2565138 100644 --- a/src/plugin-sdk/provider-models.ts +++ b/src/plugin-sdk/provider-models.ts @@ -36,8 +36,10 @@ export { OPENCODE_ZEN_DEFAULT_MODEL } from "../plugins/provider-model-defaults.j export { OPENCODE_ZEN_DEFAULT_MODEL_REF } from "../agents/opencode-zen-models.js"; export { buildMinimaxApiModelDefinition, + buildMinimaxModelDefinition, DEFAULT_MINIMAX_BASE_URL, MINIMAX_API_BASE_URL, + MINIMAX_API_COST, MINIMAX_CN_API_BASE_URL, MINIMAX_HOSTED_COST, MINIMAX_HOSTED_MODEL_ID, @@ -47,6 +49,7 @@ export { export { buildMistralModelDefinition, MISTRAL_BASE_URL, + MISTRAL_DEFAULT_COST, MISTRAL_DEFAULT_MODEL_ID, MISTRAL_DEFAULT_MODEL_REF, } from "../../extensions/mistral/model-definitions.js"; @@ -54,15 +57,29 @@ export { buildModelStudioDefaultModelDefinition, buildModelStudioModelDefinition, MODELSTUDIO_CN_BASE_URL, + MODELSTUDIO_DEFAULT_COST, MODELSTUDIO_DEFAULT_MODEL_ID, MODELSTUDIO_DEFAULT_MODEL_REF, MODELSTUDIO_GLOBAL_BASE_URL, } from "../../extensions/modelstudio/model-definitions.js"; -export { MOONSHOT_BASE_URL } from "../../extensions/moonshot/provider-catalog.js"; +export { + buildMoonshotProvider, + MOONSHOT_BASE_URL, + MOONSHOT_DEFAULT_MODEL_ID, +} from "../../extensions/moonshot/provider-catalog.js"; export { MOONSHOT_CN_BASE_URL } from "../../extensions/moonshot/onboard.js"; +export { + KIMI_CODING_BASE_URL, + KIMI_CODING_DEFAULT_MODEL_ID, +} from "../../extensions/kimi-coding/provider-catalog.js"; +export { + QIANFAN_BASE_URL, + QIANFAN_DEFAULT_MODEL_ID, +} from "../../extensions/qianfan/provider-catalog.js"; export { buildXaiModelDefinition, XAI_BASE_URL, + XAI_DEFAULT_COST, XAI_DEFAULT_MODEL_ID, XAI_DEFAULT_MODEL_REF, } from "../../extensions/xai/model-definitions.js"; @@ -72,6 +89,7 @@ export { ZAI_CODING_CN_BASE_URL, ZAI_CODING_GLOBAL_BASE_URL, ZAI_CN_BASE_URL, + ZAI_DEFAULT_COST, ZAI_DEFAULT_MODEL_ID, ZAI_DEFAULT_MODEL_REF, ZAI_GLOBAL_BASE_URL, diff --git a/src/plugin-sdk/subpaths.test.ts b/src/plugin-sdk/subpaths.test.ts index 6a63b0f57ba..ec0f4cb8d79 100644 --- a/src/plugin-sdk/subpaths.test.ts +++ b/src/plugin-sdk/subpaths.test.ts @@ -16,6 +16,7 @@ import * as lineCoreSdk from "openclaw/plugin-sdk/line-core"; import * as msteamsSdk from "openclaw/plugin-sdk/msteams"; import * as nostrSdk from "openclaw/plugin-sdk/nostr"; import * as ollamaSetupSdk from "openclaw/plugin-sdk/ollama-setup"; +import * as providerModelsSdk from "openclaw/plugin-sdk/provider-models"; import * as providerSetupSdk from "openclaw/plugin-sdk/provider-setup"; import * as replyPayloadSdk from "openclaw/plugin-sdk/reply-payload"; import * as routingSdk from "openclaw/plugin-sdk/routing"; @@ -178,6 +179,14 @@ describe("plugin-sdk subpath exports", () => { ); }); + it("exports provider model helpers from the dedicated subpath", () => { + expect(typeof providerModelsSdk.buildMinimaxApiModelDefinition).toBe("function"); + expect(typeof providerModelsSdk.buildMinimaxModelDefinition).toBe("function"); + expect(typeof providerModelsSdk.buildMoonshotProvider).toBe("function"); + expect(typeof providerModelsSdk.resolveZaiBaseUrl).toBe("function"); + expect(providerModelsSdk.QIANFAN_BASE_URL).toBe("https://qianfan.baidubce.com/v2"); + }); + it("exports shared setup helpers from the dedicated subpath", () => { expect(typeof setupSdk.DEFAULT_ACCOUNT_ID).toBe("string"); expect(typeof setupSdk.createAccountScopedAllowFromSection).toBe("function"); diff --git a/src/plugins/provider-model-definitions.ts b/src/plugins/provider-model-definitions.ts index 5788d0ad2ca..5eebcb204db 100644 --- a/src/plugins/provider-model-definitions.ts +++ b/src/plugins/provider-model-definitions.ts @@ -1,9 +1,14 @@ -import { KIMI_CODING_MODEL_REF } from "../../extensions/kimi-coding/onboard.js"; import { - KIMI_DEFAULT_MODEL_ID as KIMI_CODING_MODEL_ID, KIMI_CODING_BASE_URL, -} from "../../extensions/kimi-coding/provider-catalog.js"; -import { + KIMI_CODING_DEFAULT_MODEL_ID as KIMI_CODING_MODEL_ID, + buildMinimaxApiModelDefinition, + buildMinimaxModelDefinition, + buildMistralModelDefinition, + buildModelStudioDefaultModelDefinition, + buildModelStudioModelDefinition, + buildMoonshotProvider, + buildXaiModelDefinition, + buildZaiModelDefinition, DEFAULT_MINIMAX_BASE_URL, MINIMAX_API_BASE_URL, MINIMAX_API_COST, @@ -12,48 +17,24 @@ import { MINIMAX_HOSTED_MODEL_ID, MINIMAX_HOSTED_MODEL_REF, MINIMAX_LM_STUDIO_COST, - buildMinimaxApiModelDefinition, - buildMinimaxModelDefinition, -} from "../../extensions/minimax/model-definitions.js"; -import { - buildMistralModelDefinition, MISTRAL_BASE_URL, MISTRAL_DEFAULT_COST, MISTRAL_DEFAULT_MODEL_ID, MISTRAL_DEFAULT_MODEL_REF, -} from "../../extensions/mistral/model-definitions.js"; -import { MODELSTUDIO_CN_BASE_URL, MODELSTUDIO_DEFAULT_COST, MODELSTUDIO_DEFAULT_MODEL_ID, MODELSTUDIO_DEFAULT_MODEL_REF, MODELSTUDIO_GLOBAL_BASE_URL, - buildModelStudioDefaultModelDefinition, - buildModelStudioModelDefinition, -} from "../../extensions/modelstudio/model-definitions.js"; -import { - MOONSHOT_CN_BASE_URL, - MOONSHOT_DEFAULT_MODEL_REF, -} from "../../extensions/moonshot/onboard.js"; -import { - buildMoonshotProvider, MOONSHOT_BASE_URL, + MOONSHOT_CN_BASE_URL, MOONSHOT_DEFAULT_MODEL_ID, -} from "../../extensions/moonshot/provider-catalog.js"; -import { QIANFAN_DEFAULT_MODEL_REF } from "../../extensions/qianfan/onboard.js"; -import { QIANFAN_BASE_URL, QIANFAN_DEFAULT_MODEL_ID, -} from "../../extensions/qianfan/provider-catalog.js"; -import { XAI_BASE_URL, XAI_DEFAULT_COST, XAI_DEFAULT_MODEL_ID, XAI_DEFAULT_MODEL_REF, - buildXaiModelDefinition, -} from "../../extensions/xai/model-definitions.js"; -import { - buildZaiModelDefinition, resolveZaiBaseUrl, ZAI_CN_BASE_URL, ZAI_CODING_CN_BASE_URL, @@ -61,7 +42,7 @@ import { ZAI_DEFAULT_COST, ZAI_DEFAULT_MODEL_ID, ZAI_GLOBAL_BASE_URL, -} from "../../extensions/zai/model-definitions.js"; +} from "openclaw/plugin-sdk/provider-models"; import type { ModelDefinitionConfig } from "../config/types.models.js"; import { KILOCODE_DEFAULT_CONTEXT_WINDOW, @@ -71,6 +52,10 @@ import { KILOCODE_DEFAULT_MODEL_NAME, } from "../providers/kilocode-shared.js"; +const KIMI_CODING_MODEL_REF = `kimi/${KIMI_CODING_MODEL_ID}`; +const MOONSHOT_DEFAULT_MODEL_REF = `moonshot/${MOONSHOT_DEFAULT_MODEL_ID}`; +const QIANFAN_DEFAULT_MODEL_REF = `qianfan/${QIANFAN_DEFAULT_MODEL_ID}`; + export { DEFAULT_MINIMAX_BASE_URL, MINIMAX_API_BASE_URL, diff --git a/src/plugins/provider-zai-endpoint.ts b/src/plugins/provider-zai-endpoint.ts index 4426b1065fe..5e76755c969 100644 --- a/src/plugins/provider-zai-endpoint.ts +++ b/src/plugins/provider-zai-endpoint.ts @@ -3,7 +3,7 @@ import { ZAI_CODING_CN_BASE_URL, ZAI_CODING_GLOBAL_BASE_URL, ZAI_GLOBAL_BASE_URL, -} from "../../extensions/zai/model-definitions.js"; +} from "openclaw/plugin-sdk/provider-models"; import { fetchWithTimeout } from "../utils/fetch-timeout.js"; export type ZaiEndpointId = "global" | "cn" | "coding-global" | "coding-cn"; diff --git a/test/fixtures/plugin-extension-import-boundary-inventory.json b/test/fixtures/plugin-extension-import-boundary-inventory.json index 740e9b6226f..fe51488c706 100644 --- a/test/fixtures/plugin-extension-import-boundary-inventory.json +++ b/test/fixtures/plugin-extension-import-boundary-inventory.json @@ -1,98 +1 @@ -[ - { - "file": "src/plugins/provider-model-definitions.ts", - "line": 1, - "kind": "import", - "specifier": "../../extensions/kimi-coding/onboard.js", - "resolvedPath": "extensions/kimi-coding/onboard.js", - "reason": "imports extension-owned file from src/plugins" - }, - { - "file": "src/plugins/provider-model-definitions.ts", - "line": 5, - "kind": "import", - "specifier": "../../extensions/kimi-coding/provider-catalog.js", - "resolvedPath": "extensions/kimi-coding/provider-catalog.js", - "reason": "imports extension-owned file from src/plugins" - }, - { - "file": "src/plugins/provider-model-definitions.ts", - "line": 17, - "kind": "import", - "specifier": "../../extensions/minimax/model-definitions.js", - "resolvedPath": "extensions/minimax/model-definitions.js", - "reason": "imports extension-owned file from src/plugins" - }, - { - "file": "src/plugins/provider-model-definitions.ts", - "line": 24, - "kind": "import", - "specifier": "../../extensions/mistral/model-definitions.js", - "resolvedPath": "extensions/mistral/model-definitions.js", - "reason": "imports extension-owned file from src/plugins" - }, - { - "file": "src/plugins/provider-model-definitions.ts", - "line": 33, - "kind": "import", - "specifier": "../../extensions/modelstudio/model-definitions.js", - "resolvedPath": "extensions/modelstudio/model-definitions.js", - "reason": "imports extension-owned file from src/plugins" - }, - { - "file": "src/plugins/provider-model-definitions.ts", - "line": 37, - "kind": "import", - "specifier": "../../extensions/moonshot/onboard.js", - "resolvedPath": "extensions/moonshot/onboard.js", - "reason": "imports extension-owned file from src/plugins" - }, - { - "file": "src/plugins/provider-model-definitions.ts", - "line": 42, - "kind": "import", - "specifier": "../../extensions/moonshot/provider-catalog.js", - "resolvedPath": "extensions/moonshot/provider-catalog.js", - "reason": "imports extension-owned file from src/plugins" - }, - { - "file": "src/plugins/provider-model-definitions.ts", - "line": 43, - "kind": "import", - "specifier": "../../extensions/qianfan/onboard.js", - "resolvedPath": "extensions/qianfan/onboard.js", - "reason": "imports extension-owned file from src/plugins" - }, - { - "file": "src/plugins/provider-model-definitions.ts", - "line": 47, - "kind": "import", - "specifier": "../../extensions/qianfan/provider-catalog.js", - "resolvedPath": "extensions/qianfan/provider-catalog.js", - "reason": "imports extension-owned file from src/plugins" - }, - { - "file": "src/plugins/provider-model-definitions.ts", - "line": 54, - "kind": "import", - "specifier": "../../extensions/xai/model-definitions.js", - "resolvedPath": "extensions/xai/model-definitions.js", - "reason": "imports extension-owned file from src/plugins" - }, - { - "file": "src/plugins/provider-model-definitions.ts", - "line": 64, - "kind": "import", - "specifier": "../../extensions/zai/model-definitions.js", - "resolvedPath": "extensions/zai/model-definitions.js", - "reason": "imports extension-owned file from src/plugins" - }, - { - "file": "src/plugins/provider-zai-endpoint.ts", - "line": 6, - "kind": "import", - "specifier": "../../extensions/zai/model-definitions.js", - "resolvedPath": "extensions/zai/model-definitions.js", - "reason": "imports extension-owned file from src/plugins" - } -] +[]