mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-28 10:22:32 +00:00
refactor: remove core provider model definitions compat
This commit is contained in:
@@ -1 +1,6 @@
|
||||
export { buildKimiCodingProvider } from "./provider-catalog.js";
|
||||
export {
|
||||
buildKimiCodingProvider,
|
||||
KIMI_CODING_BASE_URL,
|
||||
KIMI_CODING_DEFAULT_MODEL_ID,
|
||||
} from "./provider-catalog.js";
|
||||
export { KIMI_CODING_MODEL_REF, KIMI_MODEL_REF } from "./onboard.js";
|
||||
|
||||
@@ -1 +1,13 @@
|
||||
export { buildMinimaxPortalProvider, buildMinimaxProvider } from "./provider-catalog.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,
|
||||
MINIMAX_HOSTED_MODEL_REF,
|
||||
MINIMAX_LM_STUDIO_COST,
|
||||
} from "./model-definitions.js";
|
||||
|
||||
9
extensions/mistral/api.ts
Normal file
9
extensions/mistral/api.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
export { applyMistralConfig, applyMistralProviderConfig, MISTRAL_DEFAULT_MODEL_REF } from "./onboard.js";
|
||||
export {
|
||||
buildMistralCatalogModels,
|
||||
buildMistralModelDefinition,
|
||||
MISTRAL_BASE_URL,
|
||||
MISTRAL_DEFAULT_COST,
|
||||
MISTRAL_DEFAULT_MODEL_ID,
|
||||
MISTRAL_DEFAULT_MODEL_REF,
|
||||
} from "./model-definitions.js";
|
||||
@@ -3,7 +3,6 @@ import {
|
||||
resolveAgentModelFallbackValues,
|
||||
resolveAgentModelPrimaryValue,
|
||||
} from "../../src/config/model-input.js";
|
||||
import { buildMistralModelDefinition as buildCoreMistralModelDefinition } from "../../src/plugins/provider-model-definitions.js";
|
||||
import {
|
||||
createConfigWithFallbacks,
|
||||
createLegacyProviderConfig,
|
||||
@@ -52,11 +51,12 @@ describe("mistral onboard", () => {
|
||||
expect(mistralDefault?.maxTokens).toBe(16384);
|
||||
});
|
||||
|
||||
it("keeps the core and bundled mistral defaults aligned", () => {
|
||||
it("uses the bundled mistral default model definition", () => {
|
||||
const bundled = buildBundledMistralModelDefinition();
|
||||
const core = buildCoreMistralModelDefinition();
|
||||
const cfg = applyMistralProviderConfig({});
|
||||
const defaultModel = cfg.models?.providers?.mistral?.models.find((model) => model.id === bundled.id);
|
||||
|
||||
expect(core).toMatchObject({
|
||||
expect(defaultModel).toMatchObject({
|
||||
id: bundled.id,
|
||||
contextWindow: bundled.contextWindow,
|
||||
maxTokens: bundled.maxTokens,
|
||||
|
||||
@@ -1,13 +1,44 @@
|
||||
export {
|
||||
buildModelStudioDefaultModelDefinition,
|
||||
buildModelStudioModelDefinition,
|
||||
MODELSTUDIO_CN_BASE_URL,
|
||||
MODELSTUDIO_DEFAULT_COST,
|
||||
MODELSTUDIO_DEFAULT_MODEL_ID,
|
||||
MODELSTUDIO_DEFAULT_MODEL_REF,
|
||||
MODELSTUDIO_GLOBAL_BASE_URL,
|
||||
} from "openclaw/plugin-sdk/provider-models";
|
||||
import type { ModelDefinitionConfig } from "openclaw/plugin-sdk/provider-models";
|
||||
import {
|
||||
MODELSTUDIO_BASE_URL,
|
||||
MODELSTUDIO_DEFAULT_COST as MODELSTUDIO_PROVIDER_DEFAULT_COST,
|
||||
MODELSTUDIO_DEFAULT_MODEL_ID as MODELSTUDIO_PROVIDER_DEFAULT_MODEL_ID,
|
||||
MODELSTUDIO_MODEL_CATALOG,
|
||||
} from "./provider-catalog.js";
|
||||
|
||||
export const MODELSTUDIO_GLOBAL_BASE_URL = MODELSTUDIO_BASE_URL;
|
||||
export const MODELSTUDIO_CN_BASE_URL = "https://coding.dashscope.aliyuncs.com/v1";
|
||||
export const MODELSTUDIO_DEFAULT_COST = MODELSTUDIO_PROVIDER_DEFAULT_COST;
|
||||
export const MODELSTUDIO_DEFAULT_MODEL_ID = MODELSTUDIO_PROVIDER_DEFAULT_MODEL_ID;
|
||||
export const MODELSTUDIO_DEFAULT_MODEL_REF = `modelstudio/${MODELSTUDIO_DEFAULT_MODEL_ID}`;
|
||||
|
||||
export const MODELSTUDIO_STANDARD_CN_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1";
|
||||
export const MODELSTUDIO_STANDARD_GLOBAL_BASE_URL =
|
||||
"https://dashscope-intl.aliyuncs.com/compatible-mode/v1";
|
||||
|
||||
export function buildModelStudioModelDefinition(params: {
|
||||
id: string;
|
||||
name?: string;
|
||||
reasoning?: boolean;
|
||||
input?: string[];
|
||||
cost?: ModelDefinitionConfig["cost"];
|
||||
contextWindow?: number;
|
||||
maxTokens?: number;
|
||||
}): ModelDefinitionConfig {
|
||||
const catalog = MODELSTUDIO_MODEL_CATALOG.find((model) => model.id === params.id);
|
||||
return {
|
||||
id: params.id,
|
||||
name: params.name ?? catalog?.name ?? params.id,
|
||||
reasoning: params.reasoning ?? catalog?.reasoning ?? false,
|
||||
input:
|
||||
(params.input as ("text" | "image")[]) ??
|
||||
(catalog?.input ? [...catalog.input] : ["text"]),
|
||||
cost: params.cost ?? catalog?.cost ?? MODELSTUDIO_DEFAULT_COST,
|
||||
contextWindow: params.contextWindow ?? catalog?.contextWindow ?? 262_144,
|
||||
maxTokens: params.maxTokens ?? catalog?.maxTokens ?? 65_536,
|
||||
};
|
||||
}
|
||||
|
||||
export function buildModelStudioDefaultModelDefinition(): ModelDefinitionConfig {
|
||||
return buildModelStudioModelDefinition({ id: MODELSTUDIO_DEFAULT_MODEL_ID });
|
||||
}
|
||||
|
||||
@@ -5,14 +5,14 @@ import type {
|
||||
|
||||
export const MODELSTUDIO_BASE_URL = "https://coding-intl.dashscope.aliyuncs.com/v1";
|
||||
export const MODELSTUDIO_DEFAULT_MODEL_ID = "qwen3.5-plus";
|
||||
const MODELSTUDIO_DEFAULT_COST = {
|
||||
export const MODELSTUDIO_DEFAULT_COST = {
|
||||
input: 0,
|
||||
output: 0,
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
};
|
||||
|
||||
const MODELSTUDIO_MODEL_CATALOG: ReadonlyArray<ModelDefinitionConfig> = [
|
||||
export const MODELSTUDIO_MODEL_CATALOG: ReadonlyArray<ModelDefinitionConfig> = [
|
||||
{
|
||||
id: "qwen3.5-plus",
|
||||
name: "qwen3.5-plus",
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
export { buildMoonshotProvider } from "./provider-catalog.js";
|
||||
export { buildMoonshotProvider, MOONSHOT_BASE_URL, MOONSHOT_DEFAULT_MODEL_ID } from "./provider-catalog.js";
|
||||
export { MOONSHOT_CN_BASE_URL, MOONSHOT_DEFAULT_MODEL_REF } from "./onboard.js";
|
||||
|
||||
@@ -3,3 +3,4 @@ export {
|
||||
QIANFAN_DEFAULT_MODEL_ID,
|
||||
buildQianfanProvider,
|
||||
} from "./provider-catalog.js";
|
||||
export { QIANFAN_DEFAULT_MODEL_REF } from "./onboard.js";
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
export { buildVercelAiGatewayProvider } from "./provider-catalog.js";
|
||||
export {
|
||||
applyVercelAiGatewayConfig,
|
||||
VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF,
|
||||
} from "./onboard.js";
|
||||
export { applyVercelAiGatewayConfig, VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF } from "./onboard.js";
|
||||
|
||||
@@ -1 +1,11 @@
|
||||
export { applyZaiConfig, applyZaiProviderConfig, ZAI_DEFAULT_MODEL_REF } from "./onboard.js";
|
||||
export {
|
||||
buildZaiModelDefinition,
|
||||
resolveZaiBaseUrl,
|
||||
ZAI_CN_BASE_URL,
|
||||
ZAI_CODING_CN_BASE_URL,
|
||||
ZAI_CODING_GLOBAL_BASE_URL,
|
||||
ZAI_DEFAULT_COST,
|
||||
ZAI_DEFAULT_MODEL_ID,
|
||||
ZAI_GLOBAL_BASE_URL,
|
||||
} from "./model-definitions.js";
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { resolveAgentModelPrimaryValue } from "../../src/config/model-input.js";
|
||||
import {
|
||||
ZAI_CODING_CN_BASE_URL,
|
||||
ZAI_GLOBAL_BASE_URL,
|
||||
} from "../../src/plugins/provider-model-definitions.js";
|
||||
import { ZAI_CODING_CN_BASE_URL, ZAI_GLOBAL_BASE_URL } from "./model-definitions.js";
|
||||
import { applyZaiConfig, applyZaiProviderConfig } from "./onboard.js";
|
||||
|
||||
describe("zai onboard", () => {
|
||||
|
||||
@@ -2,10 +2,7 @@ import { mkdtempSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
MOONSHOT_BASE_URL as MOONSHOT_AI_BASE_URL,
|
||||
MOONSHOT_CN_BASE_URL,
|
||||
} from "../plugins/provider-model-definitions.js";
|
||||
import { MOONSHOT_BASE_URL as MOONSHOT_AI_BASE_URL, MOONSHOT_CN_BASE_URL } from "../../extensions/moonshot/api.js";
|
||||
import { captureEnv } from "../test-utils/env.js";
|
||||
import { resolveImplicitProvidersForTest } from "./models-config.e2e-harness.js";
|
||||
import { applyNativeStreamingUsageCompat } from "./models-config.providers.js";
|
||||
|
||||
@@ -9,9 +9,8 @@ import { createProviderApiKeyAuthMethod } from "../plugins/provider-api-key-auth
|
||||
import { providerApiKeyAuthRuntime } from "../plugins/provider-api-key-auth.runtime.js";
|
||||
import {
|
||||
MINIMAX_CN_API_BASE_URL,
|
||||
ZAI_CODING_CN_BASE_URL,
|
||||
ZAI_CODING_GLOBAL_BASE_URL,
|
||||
} from "../plugins/provider-model-definitions.js";
|
||||
} from "../../extensions/minimax/api.js";
|
||||
import { ZAI_CODING_CN_BASE_URL, ZAI_CODING_GLOBAL_BASE_URL } from "../../extensions/zai/api.js";
|
||||
import type { ProviderAuthMethod, ProviderPlugin } from "../plugins/types.js";
|
||||
import type { WizardPrompter } from "../wizard/prompts.js";
|
||||
import { applyAuthChoice, resolvePreferredProviderForAuthChoice } from "./auth-choice.js";
|
||||
|
||||
@@ -5,10 +5,12 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vite
|
||||
import {
|
||||
MINIMAX_API_BASE_URL,
|
||||
MINIMAX_CN_API_BASE_URL,
|
||||
} from "../../extensions/minimax/api.js";
|
||||
import {
|
||||
ZAI_CODING_CN_BASE_URL,
|
||||
ZAI_CODING_GLOBAL_BASE_URL,
|
||||
ZAI_GLOBAL_BASE_URL,
|
||||
} from "../plugins/provider-model-definitions.js";
|
||||
} from "../../extensions/zai/api.js";
|
||||
import { makeTempWorkspace } from "../test-helpers/workspace.js";
|
||||
import { withEnvAsync } from "../test-utils/env.js";
|
||||
import {
|
||||
|
||||
@@ -159,7 +159,7 @@ export {
|
||||
MODELSTUDIO_DEFAULT_MODEL_ID,
|
||||
MODELSTUDIO_DEFAULT_MODEL_REF,
|
||||
MODELSTUDIO_GLOBAL_BASE_URL,
|
||||
} from "../plugins/provider-model-definitions.js";
|
||||
} from "../../extensions/modelstudio/model-definitions.js";
|
||||
|
||||
export function buildKilocodeModelDefinition(): ModelDefinitionConfig {
|
||||
return {
|
||||
|
||||
@@ -869,7 +869,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/byteplus-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw BytePlus provider plugin",
|
||||
@@ -1075,7 +1075,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/deepseek-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw DeepSeek provider plugin",
|
||||
@@ -6394,7 +6394,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/huggingface-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Hugging Face provider plugin",
|
||||
@@ -7729,7 +7729,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js", "shared.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "onboard.js", "provider-catalog.js", "shared.js"],
|
||||
packageName: "@openclaw/kilocode-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Kilo Gateway provider plugin",
|
||||
@@ -7773,7 +7773,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/kimi-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Kimi provider plugin",
|
||||
@@ -8099,7 +8099,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/litellm-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw LiteLLM provider plugin",
|
||||
@@ -9562,6 +9562,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"api.js",
|
||||
"image-generation-provider.js",
|
||||
"media-understanding-provider.js",
|
||||
"model-definitions.js",
|
||||
@@ -9657,6 +9658,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"api.js",
|
||||
"media-understanding-provider.js",
|
||||
"model-definitions.js",
|
||||
"onboard.js",
|
||||
@@ -9707,7 +9709,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["model-definitions.js", "onboard.js", "provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "model-definitions.js", "onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/modelstudio-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Model Studio provider plugin",
|
||||
@@ -9794,6 +9796,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"api.js",
|
||||
"media-understanding-provider.js",
|
||||
"onboard.js",
|
||||
"provider-catalog.js",
|
||||
@@ -11237,7 +11240,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/nvidia-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw NVIDIA provider plugin",
|
||||
@@ -11334,6 +11337,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"api.js",
|
||||
"cli-backend.js",
|
||||
"image-generation-provider.js",
|
||||
"media-understanding-provider.js",
|
||||
@@ -11491,6 +11495,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"api.js",
|
||||
"media-understanding-provider.js",
|
||||
"onboard.js",
|
||||
"provider-catalog.js",
|
||||
@@ -11731,7 +11736,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/qianfan-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Qianfan provider plugin",
|
||||
@@ -14324,7 +14329,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/synthetic-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Synthetic provider plugin",
|
||||
@@ -16724,7 +16729,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/together-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Together provider plugin",
|
||||
@@ -17001,7 +17006,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/venice-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Venice provider plugin",
|
||||
@@ -17044,7 +17049,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/vercel-ai-gateway-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Vercel AI Gateway provider plugin",
|
||||
@@ -17755,7 +17760,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/volcengine-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Volcengine provider plugin",
|
||||
@@ -18495,7 +18500,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
publicSurfaceArtifacts: ["api.js", "onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/xiaomi-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Xiaomi provider plugin",
|
||||
@@ -18539,6 +18544,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"api.js",
|
||||
"detect.js",
|
||||
"media-understanding-provider.js",
|
||||
"model-definitions.js",
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
import { HUGGINGFACE_DEFAULT_MODEL_REF } from "../../extensions/huggingface/api.js";
|
||||
import { LITELLM_DEFAULT_MODEL_REF } from "../../extensions/litellm/api.js";
|
||||
import { OPENROUTER_DEFAULT_MODEL_REF } from "../../extensions/openrouter/api.js";
|
||||
import { TOGETHER_DEFAULT_MODEL_REF } from "../../extensions/together/api.js";
|
||||
import { VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF } from "../../extensions/vercel-ai-gateway/api.js";
|
||||
import { XIAOMI_DEFAULT_MODEL_REF } from "../../extensions/xiaomi/api.js";
|
||||
import { ZAI_DEFAULT_MODEL_REF } from "../../extensions/zai/api.js";
|
||||
import { resolveOpenClawAgentDir } from "../agents/agent-paths.js";
|
||||
import { upsertAuthProfile } from "../agents/auth-profiles.js";
|
||||
import type { SecretInput } from "../config/types.secrets.js";
|
||||
@@ -7,15 +14,6 @@ import {
|
||||
writeOAuthCredentials,
|
||||
type WriteOAuthCredentialsOptions,
|
||||
} from "./provider-auth-helpers.js";
|
||||
import { HUGGINGFACE_DEFAULT_MODEL_REF } from "../../extensions/huggingface/api.js";
|
||||
import { LITELLM_DEFAULT_MODEL_REF } from "../../extensions/litellm/api.js";
|
||||
import { OPENROUTER_DEFAULT_MODEL_REF } from "../../extensions/openrouter/api.js";
|
||||
import { TOGETHER_DEFAULT_MODEL_REF } from "../../extensions/together/api.js";
|
||||
import {
|
||||
VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF,
|
||||
} from "../../extensions/vercel-ai-gateway/api.js";
|
||||
import { XIAOMI_DEFAULT_MODEL_REF } from "../../extensions/xiaomi/api.js";
|
||||
import { ZAI_DEFAULT_MODEL_REF } from "../../extensions/zai/api.js";
|
||||
import { KILOCODE_DEFAULT_MODEL_REF } from "./provider-model-kilocode.js";
|
||||
|
||||
const resolveAuthAgentDir = (agentDir?: string) => agentDir ?? resolveOpenClawAgentDir();
|
||||
|
||||
@@ -1,323 +0,0 @@
|
||||
import type { ModelDefinitionConfig } from "../config/types.models.js";
|
||||
import {
|
||||
KILOCODE_DEFAULT_CONTEXT_WINDOW,
|
||||
KILOCODE_DEFAULT_COST,
|
||||
KILOCODE_DEFAULT_MAX_TOKENS,
|
||||
KILOCODE_DEFAULT_MODEL_ID,
|
||||
KILOCODE_DEFAULT_MODEL_NAME,
|
||||
} from "./provider-model-kilocode.js";
|
||||
import { MINIMAX_DEFAULT_MODEL_ID, MINIMAX_TEXT_MODEL_CATALOG } from "./provider-model-minimax.js";
|
||||
|
||||
const KIMI_CODING_BASE_URL = "https://api.kimi.com/coding/";
|
||||
const KIMI_CODING_MODEL_ID = "kimi-code";
|
||||
const KIMI_CODING_MODEL_REF = `kimi/${KIMI_CODING_MODEL_ID}`;
|
||||
|
||||
const DEFAULT_MINIMAX_BASE_URL = "https://api.minimax.io/v1";
|
||||
const MINIMAX_API_BASE_URL = "https://api.minimax.io/anthropic";
|
||||
const MINIMAX_CN_API_BASE_URL = "https://api.minimaxi.com/anthropic";
|
||||
const MINIMAX_HOSTED_MODEL_ID = MINIMAX_DEFAULT_MODEL_ID;
|
||||
const MINIMAX_HOSTED_MODEL_REF = `minimax/${MINIMAX_HOSTED_MODEL_ID}`;
|
||||
const DEFAULT_MINIMAX_CONTEXT_WINDOW = 200000;
|
||||
const DEFAULT_MINIMAX_MAX_TOKENS = 8192;
|
||||
const MINIMAX_API_COST = { input: 0.3, output: 1.2, cacheRead: 0.03, cacheWrite: 0.12 };
|
||||
const MINIMAX_HOSTED_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };
|
||||
const MINIMAX_LM_STUDIO_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };
|
||||
|
||||
const MISTRAL_BASE_URL = "https://api.mistral.ai/v1";
|
||||
const MISTRAL_DEFAULT_MODEL_ID = "mistral-large-latest";
|
||||
const MISTRAL_DEFAULT_MODEL_REF = `mistral/${MISTRAL_DEFAULT_MODEL_ID}`;
|
||||
const MISTRAL_DEFAULT_CONTEXT_WINDOW = 262144;
|
||||
const MISTRAL_DEFAULT_MAX_TOKENS = 16384;
|
||||
const MISTRAL_DEFAULT_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };
|
||||
|
||||
const MODELSTUDIO_CN_BASE_URL = "https://coding.dashscope.aliyuncs.com/v1";
|
||||
const MODELSTUDIO_GLOBAL_BASE_URL = "https://coding-intl.dashscope.aliyuncs.com/v1";
|
||||
const MODELSTUDIO_DEFAULT_MODEL_ID = "qwen3.5-plus";
|
||||
const MODELSTUDIO_DEFAULT_MODEL_REF = `modelstudio/${MODELSTUDIO_DEFAULT_MODEL_ID}`;
|
||||
const MODELSTUDIO_DEFAULT_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };
|
||||
const MODELSTUDIO_MODEL_CATALOG = {
|
||||
"qwen3.5-plus": {
|
||||
name: "qwen3.5-plus",
|
||||
reasoning: false,
|
||||
input: ["text", "image"],
|
||||
contextWindow: 1000000,
|
||||
maxTokens: 65536,
|
||||
},
|
||||
"qwen3-max-2026-01-23": {
|
||||
name: "qwen3-max-2026-01-23",
|
||||
reasoning: false,
|
||||
input: ["text"],
|
||||
contextWindow: 262144,
|
||||
maxTokens: 65536,
|
||||
},
|
||||
"qwen3-coder-next": {
|
||||
name: "qwen3-coder-next",
|
||||
reasoning: false,
|
||||
input: ["text"],
|
||||
contextWindow: 262144,
|
||||
maxTokens: 65536,
|
||||
},
|
||||
"qwen3-coder-plus": {
|
||||
name: "qwen3-coder-plus",
|
||||
reasoning: false,
|
||||
input: ["text"],
|
||||
contextWindow: 1000000,
|
||||
maxTokens: 65536,
|
||||
},
|
||||
"MiniMax-M2.5": {
|
||||
name: "MiniMax-M2.5",
|
||||
reasoning: false,
|
||||
input: ["text"],
|
||||
contextWindow: 1000000,
|
||||
maxTokens: 65536,
|
||||
},
|
||||
"glm-5": {
|
||||
name: "glm-5",
|
||||
reasoning: false,
|
||||
input: ["text"],
|
||||
contextWindow: 202752,
|
||||
maxTokens: 16384,
|
||||
},
|
||||
"glm-4.7": {
|
||||
name: "glm-4.7",
|
||||
reasoning: false,
|
||||
input: ["text"],
|
||||
contextWindow: 202752,
|
||||
maxTokens: 16384,
|
||||
},
|
||||
"kimi-k2.5": {
|
||||
name: "kimi-k2.5",
|
||||
reasoning: false,
|
||||
input: ["text", "image"],
|
||||
contextWindow: 262144,
|
||||
maxTokens: 32768,
|
||||
},
|
||||
} as const;
|
||||
|
||||
const MOONSHOT_BASE_URL = "https://api.moonshot.ai/v1";
|
||||
const MOONSHOT_CN_BASE_URL = "https://api.moonshot.cn/v1";
|
||||
const MOONSHOT_DEFAULT_MODEL_ID = "kimi-k2.5";
|
||||
const MOONSHOT_DEFAULT_MODEL_REF = `moonshot/${MOONSHOT_DEFAULT_MODEL_ID}`;
|
||||
const MOONSHOT_DEFAULT_CONTEXT_WINDOW = 256000;
|
||||
const MOONSHOT_DEFAULT_MAX_TOKENS = 8192;
|
||||
const MOONSHOT_DEFAULT_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };
|
||||
|
||||
const QIANFAN_BASE_URL = "https://qianfan.baidubce.com/v2";
|
||||
const QIANFAN_DEFAULT_MODEL_ID = "deepseek-v3.2";
|
||||
const QIANFAN_DEFAULT_MODEL_REF = `qianfan/${QIANFAN_DEFAULT_MODEL_ID}`;
|
||||
|
||||
const XAI_BASE_URL = "https://api.x.ai/v1";
|
||||
const XAI_DEFAULT_MODEL_ID = "grok-4";
|
||||
const XAI_DEFAULT_MODEL_REF = `xai/${XAI_DEFAULT_MODEL_ID}`;
|
||||
const XAI_DEFAULT_CONTEXT_WINDOW = 131072;
|
||||
const XAI_DEFAULT_MAX_TOKENS = 8192;
|
||||
const XAI_DEFAULT_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };
|
||||
|
||||
const ZAI_CODING_GLOBAL_BASE_URL = "https://api.z.ai/api/coding/paas/v4";
|
||||
const ZAI_CODING_CN_BASE_URL = "https://open.bigmodel.cn/api/coding/paas/v4";
|
||||
const ZAI_GLOBAL_BASE_URL = "https://api.z.ai/api/paas/v4";
|
||||
const ZAI_CN_BASE_URL = "https://open.bigmodel.cn/api/paas/v4";
|
||||
const ZAI_DEFAULT_MODEL_ID = "glm-5";
|
||||
const ZAI_DEFAULT_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };
|
||||
const ZAI_MODEL_CATALOG = {
|
||||
"glm-5": { name: "GLM-5", reasoning: true },
|
||||
"glm-5-turbo": { name: "GLM-5 Turbo", reasoning: true },
|
||||
"glm-4.7": { name: "GLM-4.7", reasoning: true },
|
||||
"glm-4.7-flash": { name: "GLM-4.7 Flash", reasoning: true },
|
||||
"glm-4.7-flashx": { name: "GLM-4.7 FlashX", reasoning: true },
|
||||
} as const;
|
||||
|
||||
function buildMinimaxModelDefinition(params: {
|
||||
id: string;
|
||||
name?: string;
|
||||
reasoning?: boolean;
|
||||
cost: ModelDefinitionConfig["cost"];
|
||||
contextWindow: number;
|
||||
maxTokens: number;
|
||||
}): ModelDefinitionConfig {
|
||||
const catalog = MINIMAX_TEXT_MODEL_CATALOG[params.id as keyof typeof MINIMAX_TEXT_MODEL_CATALOG];
|
||||
return {
|
||||
id: params.id,
|
||||
name: params.name ?? catalog?.name ?? `MiniMax ${params.id}`,
|
||||
reasoning: params.reasoning ?? catalog?.reasoning ?? false,
|
||||
input: ["text"],
|
||||
cost: params.cost,
|
||||
contextWindow: params.contextWindow,
|
||||
maxTokens: params.maxTokens,
|
||||
};
|
||||
}
|
||||
|
||||
function buildMinimaxApiModelDefinition(modelId: string): ModelDefinitionConfig {
|
||||
return buildMinimaxModelDefinition({
|
||||
id: modelId,
|
||||
cost: MINIMAX_API_COST,
|
||||
contextWindow: DEFAULT_MINIMAX_CONTEXT_WINDOW,
|
||||
maxTokens: DEFAULT_MINIMAX_MAX_TOKENS,
|
||||
});
|
||||
}
|
||||
|
||||
function buildMistralModelDefinition(): ModelDefinitionConfig {
|
||||
return {
|
||||
id: MISTRAL_DEFAULT_MODEL_ID,
|
||||
name: "Mistral Large",
|
||||
reasoning: false,
|
||||
input: ["text", "image"],
|
||||
cost: MISTRAL_DEFAULT_COST,
|
||||
contextWindow: MISTRAL_DEFAULT_CONTEXT_WINDOW,
|
||||
maxTokens: MISTRAL_DEFAULT_MAX_TOKENS,
|
||||
};
|
||||
}
|
||||
|
||||
function buildModelStudioModelDefinition(params: {
|
||||
id: string;
|
||||
name?: string;
|
||||
reasoning?: boolean;
|
||||
input?: string[];
|
||||
cost?: ModelDefinitionConfig["cost"];
|
||||
contextWindow?: number;
|
||||
maxTokens?: number;
|
||||
}): ModelDefinitionConfig {
|
||||
const catalog = MODELSTUDIO_MODEL_CATALOG[params.id as keyof typeof MODELSTUDIO_MODEL_CATALOG];
|
||||
return {
|
||||
id: params.id,
|
||||
name: params.name ?? catalog?.name ?? params.id,
|
||||
reasoning: params.reasoning ?? catalog?.reasoning ?? false,
|
||||
input:
|
||||
(params.input as ("text" | "image")[]) ??
|
||||
([...(catalog?.input ?? ["text"])] as ("text" | "image")[]),
|
||||
cost: params.cost ?? MODELSTUDIO_DEFAULT_COST,
|
||||
contextWindow: params.contextWindow ?? catalog?.contextWindow ?? 262144,
|
||||
maxTokens: params.maxTokens ?? catalog?.maxTokens ?? 65536,
|
||||
};
|
||||
}
|
||||
|
||||
function buildModelStudioDefaultModelDefinition(): ModelDefinitionConfig {
|
||||
return buildModelStudioModelDefinition({ id: MODELSTUDIO_DEFAULT_MODEL_ID });
|
||||
}
|
||||
|
||||
function createMoonshotModelDefinition(): ModelDefinitionConfig {
|
||||
return {
|
||||
id: MOONSHOT_DEFAULT_MODEL_ID,
|
||||
name: "Kimi K2.5",
|
||||
reasoning: false,
|
||||
input: ["text", "image"],
|
||||
cost: MOONSHOT_DEFAULT_COST,
|
||||
contextWindow: MOONSHOT_DEFAULT_CONTEXT_WINDOW,
|
||||
maxTokens: MOONSHOT_DEFAULT_MAX_TOKENS,
|
||||
};
|
||||
}
|
||||
|
||||
function buildXaiModelDefinition(): ModelDefinitionConfig {
|
||||
return {
|
||||
id: XAI_DEFAULT_MODEL_ID,
|
||||
name: "Grok 4",
|
||||
reasoning: false,
|
||||
input: ["text"],
|
||||
cost: XAI_DEFAULT_COST,
|
||||
contextWindow: XAI_DEFAULT_CONTEXT_WINDOW,
|
||||
maxTokens: XAI_DEFAULT_MAX_TOKENS,
|
||||
};
|
||||
}
|
||||
|
||||
function resolveZaiBaseUrl(endpoint?: string): string {
|
||||
switch (endpoint) {
|
||||
case "coding-cn":
|
||||
return ZAI_CODING_CN_BASE_URL;
|
||||
case "global":
|
||||
return ZAI_GLOBAL_BASE_URL;
|
||||
case "cn":
|
||||
return ZAI_CN_BASE_URL;
|
||||
case "coding-global":
|
||||
return ZAI_CODING_GLOBAL_BASE_URL;
|
||||
default:
|
||||
return ZAI_GLOBAL_BASE_URL;
|
||||
}
|
||||
}
|
||||
|
||||
function buildZaiModelDefinition(params: {
|
||||
id: string;
|
||||
name?: string;
|
||||
reasoning?: boolean;
|
||||
cost?: ModelDefinitionConfig["cost"];
|
||||
contextWindow?: number;
|
||||
maxTokens?: number;
|
||||
}): ModelDefinitionConfig {
|
||||
const catalog = ZAI_MODEL_CATALOG[params.id as keyof typeof ZAI_MODEL_CATALOG];
|
||||
return {
|
||||
id: params.id,
|
||||
name: params.name ?? catalog?.name ?? `GLM ${params.id}`,
|
||||
reasoning: params.reasoning ?? catalog?.reasoning ?? true,
|
||||
input: ["text"],
|
||||
cost: params.cost ?? ZAI_DEFAULT_COST,
|
||||
contextWindow: params.contextWindow ?? 204800,
|
||||
maxTokens: params.maxTokens ?? 131072,
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
DEFAULT_MINIMAX_BASE_URL,
|
||||
MINIMAX_API_BASE_URL,
|
||||
MINIMAX_API_COST,
|
||||
MINIMAX_CN_API_BASE_URL,
|
||||
MINIMAX_HOSTED_COST,
|
||||
MINIMAX_HOSTED_MODEL_ID,
|
||||
MINIMAX_HOSTED_MODEL_REF,
|
||||
MINIMAX_LM_STUDIO_COST,
|
||||
MISTRAL_BASE_URL,
|
||||
MISTRAL_DEFAULT_COST,
|
||||
MISTRAL_DEFAULT_MODEL_ID,
|
||||
MISTRAL_DEFAULT_MODEL_REF,
|
||||
MODELSTUDIO_CN_BASE_URL,
|
||||
MODELSTUDIO_DEFAULT_COST,
|
||||
MODELSTUDIO_DEFAULT_MODEL_ID,
|
||||
MODELSTUDIO_DEFAULT_MODEL_REF,
|
||||
MODELSTUDIO_GLOBAL_BASE_URL,
|
||||
MOONSHOT_BASE_URL,
|
||||
MOONSHOT_CN_BASE_URL,
|
||||
MOONSHOT_DEFAULT_MODEL_ID,
|
||||
MOONSHOT_DEFAULT_MODEL_REF,
|
||||
QIANFAN_BASE_URL,
|
||||
QIANFAN_DEFAULT_MODEL_ID,
|
||||
QIANFAN_DEFAULT_MODEL_REF,
|
||||
XAI_BASE_URL,
|
||||
XAI_DEFAULT_COST,
|
||||
XAI_DEFAULT_MODEL_ID,
|
||||
XAI_DEFAULT_MODEL_REF,
|
||||
ZAI_CN_BASE_URL,
|
||||
ZAI_CODING_CN_BASE_URL,
|
||||
ZAI_CODING_GLOBAL_BASE_URL,
|
||||
ZAI_DEFAULT_COST,
|
||||
ZAI_DEFAULT_MODEL_ID,
|
||||
ZAI_GLOBAL_BASE_URL,
|
||||
KIMI_CODING_BASE_URL,
|
||||
KIMI_CODING_MODEL_ID,
|
||||
KIMI_CODING_MODEL_REF,
|
||||
KILOCODE_DEFAULT_CONTEXT_WINDOW,
|
||||
KILOCODE_DEFAULT_COST,
|
||||
KILOCODE_DEFAULT_MAX_TOKENS,
|
||||
KILOCODE_DEFAULT_MODEL_ID,
|
||||
buildMinimaxApiModelDefinition,
|
||||
buildMinimaxModelDefinition,
|
||||
buildMistralModelDefinition,
|
||||
buildModelStudioDefaultModelDefinition,
|
||||
buildModelStudioModelDefinition,
|
||||
buildXaiModelDefinition,
|
||||
buildZaiModelDefinition,
|
||||
resolveZaiBaseUrl,
|
||||
};
|
||||
|
||||
export function buildMoonshotModelDefinition(): ModelDefinitionConfig {
|
||||
return createMoonshotModelDefinition();
|
||||
}
|
||||
|
||||
export function buildKilocodeModelDefinition(): ModelDefinitionConfig {
|
||||
return {
|
||||
id: KILOCODE_DEFAULT_MODEL_ID,
|
||||
name: KILOCODE_DEFAULT_MODEL_NAME,
|
||||
reasoning: true,
|
||||
input: ["text", "image"],
|
||||
cost: KILOCODE_DEFAULT_COST,
|
||||
contextWindow: KILOCODE_DEFAULT_CONTEXT_WINDOW,
|
||||
maxTokens: KILOCODE_DEFAULT_MAX_TOKENS,
|
||||
};
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
ZAI_CODING_CN_BASE_URL,
|
||||
ZAI_CODING_GLOBAL_BASE_URL,
|
||||
ZAI_GLOBAL_BASE_URL,
|
||||
} from "./provider-model-definitions.js";
|
||||
} from "../../extensions/zai/api.js";
|
||||
|
||||
export type ZaiEndpointId = "global" | "cn" | "coding-global" | "coding-cn";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user