mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
refactor: rename bailian to modelstudio and fix review issues
- Rename provider ID, constants, functions, CLI flags, and types from "bailian" to "modelstudio" to match the official English name "Alibaba Cloud Model Studio". - Fix P2 bug: global endpoint variant now always overwrites baseUrl instead of silently preserving a stale CN URL. - Fix P1 bug: add modelstudio entry to PROVIDER_ENV_VARS so secret-input-mode=ref no longer throws. - Move Model Studio imports to top of onboard-auth.config-core.ts. - Remove unused BAILIAN_BASE_URL export. Made-with: Cursor
This commit is contained in:
committed by
Peter Steinberger
parent
77a35025e8
commit
95eaa08781
@@ -160,8 +160,8 @@ export function registerOnboardCommand(program: Command) {
|
|||||||
zaiApiKey: opts.zaiApiKey as string | undefined,
|
zaiApiKey: opts.zaiApiKey as string | undefined,
|
||||||
xiaomiApiKey: opts.xiaomiApiKey as string | undefined,
|
xiaomiApiKey: opts.xiaomiApiKey as string | undefined,
|
||||||
qianfanApiKey: opts.qianfanApiKey as string | undefined,
|
qianfanApiKey: opts.qianfanApiKey as string | undefined,
|
||||||
bailianApiKeyCn: opts.bailianApiKeyCn as string | undefined,
|
modelstudioApiKeyCn: opts.modelstudioApiKeyCn as string | undefined,
|
||||||
bailianApiKey: opts.bailianApiKey as string | undefined,
|
modelstudioApiKey: opts.modelstudioApiKey as string | undefined,
|
||||||
minimaxApiKey: opts.minimaxApiKey as string | undefined,
|
minimaxApiKey: opts.minimaxApiKey as string | undefined,
|
||||||
syntheticApiKey: opts.syntheticApiKey as string | undefined,
|
syntheticApiKey: opts.syntheticApiKey as string | undefined,
|
||||||
veniceApiKey: opts.veniceApiKey as string | undefined,
|
veniceApiKey: opts.veniceApiKey as string | undefined,
|
||||||
|
|||||||
@@ -120,10 +120,10 @@ const AUTH_CHOICE_GROUP_DEFS: {
|
|||||||
choices: ["qianfan-api-key"],
|
choices: ["qianfan-api-key"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "bailian",
|
value: "modelstudio",
|
||||||
label: "Alibaba Bailian",
|
label: "Alibaba Cloud Model Studio",
|
||||||
hint: "Coding Plan API key (CN / Global)",
|
hint: "Coding Plan API key (CN / Global)",
|
||||||
choices: ["bailian-api-key-cn", "bailian-api-key"],
|
choices: ["modelstudio-api-key-cn", "modelstudio-api-key"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "copilot",
|
value: "copilot",
|
||||||
@@ -305,12 +305,12 @@ const BASE_AUTH_CHOICE_OPTIONS: ReadonlyArray<AuthChoiceOption> = [
|
|||||||
},
|
},
|
||||||
{ value: "qianfan-api-key", label: "Qianfan API key" },
|
{ value: "qianfan-api-key", label: "Qianfan API key" },
|
||||||
{
|
{
|
||||||
value: "bailian-api-key-cn",
|
value: "modelstudio-api-key-cn",
|
||||||
label: "Coding Plan API Key for China (subscription)",
|
label: "Coding Plan API Key for China (subscription)",
|
||||||
hint: "Endpoint: coding.dashscope.aliyuncs.com",
|
hint: "Endpoint: coding.dashscope.aliyuncs.com",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "bailian-api-key",
|
value: "modelstudio-api-key",
|
||||||
label: "Coding Plan API Key for Global/Intl (subscription)",
|
label: "Coding Plan API Key for Global/Intl (subscription)",
|
||||||
hint: "Endpoint: coding-intl.dashscope.aliyuncs.com",
|
hint: "Endpoint: coding-intl.dashscope.aliyuncs.com",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -76,12 +76,12 @@ import {
|
|||||||
setXiaomiApiKey,
|
setXiaomiApiKey,
|
||||||
setZaiApiKey,
|
setZaiApiKey,
|
||||||
ZAI_DEFAULT_MODEL_REF,
|
ZAI_DEFAULT_MODEL_REF,
|
||||||
BAILIAN_DEFAULT_MODEL_REF,
|
MODELSTUDIO_DEFAULT_MODEL_REF,
|
||||||
applyBailianConfig,
|
applyModelStudioConfig,
|
||||||
applyBailianConfigCn,
|
applyModelStudioConfigCn,
|
||||||
applyBailianProviderConfig,
|
applyModelStudioProviderConfig,
|
||||||
applyBailianProviderConfigCn,
|
applyModelStudioProviderConfigCn,
|
||||||
setBailianApiKey,
|
setModelStudioApiKey,
|
||||||
} from "./onboard-auth.js";
|
} from "./onboard-auth.js";
|
||||||
import type { AuthChoice, SecretInputMode } from "./onboard-types.js";
|
import type { AuthChoice, SecretInputMode } from "./onboard-types.js";
|
||||||
import { OPENCODE_ZEN_DEFAULT_MODEL } from "./opencode-zen-model-default.js";
|
import { OPENCODE_ZEN_DEFAULT_MODEL } from "./opencode-zen-model-default.js";
|
||||||
@@ -301,43 +301,43 @@ const SIMPLE_API_KEY_PROVIDER_FLOWS: Partial<Record<AuthChoice, SimpleApiKeyProv
|
|||||||
applyProviderConfig: applyKilocodeProviderConfig,
|
applyProviderConfig: applyKilocodeProviderConfig,
|
||||||
noteDefault: KILOCODE_DEFAULT_MODEL_REF,
|
noteDefault: KILOCODE_DEFAULT_MODEL_REF,
|
||||||
},
|
},
|
||||||
"bailian-api-key-cn": {
|
"modelstudio-api-key-cn": {
|
||||||
provider: "bailian",
|
provider: "modelstudio",
|
||||||
profileId: "bailian:default",
|
profileId: "modelstudio:default",
|
||||||
expectedProviders: ["bailian"],
|
expectedProviders: ["modelstudio"],
|
||||||
envLabel: "BAILIAN_API_KEY",
|
envLabel: "MODELSTUDIO_API_KEY",
|
||||||
promptMessage: "Enter Alibaba Bailian Coding Plan API key (China)",
|
promptMessage: "Enter Alibaba Cloud Model Studio Coding Plan API key (China)",
|
||||||
setCredential: setBailianApiKey,
|
setCredential: setModelStudioApiKey,
|
||||||
defaultModel: BAILIAN_DEFAULT_MODEL_REF,
|
defaultModel: MODELSTUDIO_DEFAULT_MODEL_REF,
|
||||||
applyDefaultConfig: applyBailianConfigCn,
|
applyDefaultConfig: applyModelStudioConfigCn,
|
||||||
applyProviderConfig: applyBailianProviderConfigCn,
|
applyProviderConfig: applyModelStudioProviderConfigCn,
|
||||||
noteDefault: BAILIAN_DEFAULT_MODEL_REF,
|
noteDefault: MODELSTUDIO_DEFAULT_MODEL_REF,
|
||||||
noteMessage: [
|
noteMessage: [
|
||||||
"Get your API key at: https://bailian.console.aliyun.com/",
|
"Get your API key at: https://bailian.console.aliyun.com/",
|
||||||
"Endpoint: coding.dashscope.aliyuncs.com",
|
"Endpoint: coding.dashscope.aliyuncs.com",
|
||||||
"Models: qwen3.5-plus, glm-4.7, kimi-k2.5, MiniMax-M2.5, etc.",
|
"Models: qwen3.5-plus, glm-4.7, kimi-k2.5, MiniMax-M2.5, etc.",
|
||||||
].join("\n"),
|
].join("\n"),
|
||||||
noteTitle: "Alibaba Bailian Coding Plan (China)",
|
noteTitle: "Alibaba Cloud Model Studio Coding Plan (China)",
|
||||||
normalize: (value) => String(value ?? "").trim(),
|
normalize: (value) => String(value ?? "").trim(),
|
||||||
validate: (value) => (String(value ?? "").trim() ? undefined : "Required"),
|
validate: (value) => (String(value ?? "").trim() ? undefined : "Required"),
|
||||||
},
|
},
|
||||||
"bailian-api-key": {
|
"modelstudio-api-key": {
|
||||||
provider: "bailian",
|
provider: "modelstudio",
|
||||||
profileId: "bailian:default",
|
profileId: "modelstudio:default",
|
||||||
expectedProviders: ["bailian"],
|
expectedProviders: ["modelstudio"],
|
||||||
envLabel: "BAILIAN_API_KEY",
|
envLabel: "MODELSTUDIO_API_KEY",
|
||||||
promptMessage: "Enter Alibaba Bailian Coding Plan API key (Global/Intl)",
|
promptMessage: "Enter Alibaba Cloud Model Studio Coding Plan API key (Global/Intl)",
|
||||||
setCredential: setBailianApiKey,
|
setCredential: setModelStudioApiKey,
|
||||||
defaultModel: BAILIAN_DEFAULT_MODEL_REF,
|
defaultModel: MODELSTUDIO_DEFAULT_MODEL_REF,
|
||||||
applyDefaultConfig: applyBailianConfig,
|
applyDefaultConfig: applyModelStudioConfig,
|
||||||
applyProviderConfig: applyBailianProviderConfig,
|
applyProviderConfig: applyModelStudioProviderConfig,
|
||||||
noteDefault: BAILIAN_DEFAULT_MODEL_REF,
|
noteDefault: MODELSTUDIO_DEFAULT_MODEL_REF,
|
||||||
noteMessage: [
|
noteMessage: [
|
||||||
"Get your API key at: https://bailian.console.aliyun.com/",
|
"Get your API key at: https://bailian.console.aliyun.com/",
|
||||||
"Endpoint: coding-intl.dashscope.aliyuncs.com",
|
"Endpoint: coding-intl.dashscope.aliyuncs.com",
|
||||||
"Models: qwen3.5-plus, glm-4.7, kimi-k2.5, MiniMax-M2.5, etc.",
|
"Models: qwen3.5-plus, glm-4.7, kimi-k2.5, MiniMax-M2.5, etc.",
|
||||||
].join("\n"),
|
].join("\n"),
|
||||||
noteTitle: "Alibaba Bailian Coding Plan (Global/Intl)",
|
noteTitle: "Alibaba Cloud Model Studio Coding Plan (Global/Intl)",
|
||||||
normalize: (value) => String(value ?? "").trim(),
|
normalize: (value) => String(value ?? "").trim(),
|
||||||
validate: (value) => (String(value ?? "").trim() ? undefined : "Required"),
|
validate: (value) => (String(value ?? "").trim() ? undefined : "Required"),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ import {
|
|||||||
buildZaiModelDefinition,
|
buildZaiModelDefinition,
|
||||||
buildMoonshotModelDefinition,
|
buildMoonshotModelDefinition,
|
||||||
buildXaiModelDefinition,
|
buildXaiModelDefinition,
|
||||||
|
buildModelStudioModelDefinition,
|
||||||
MISTRAL_BASE_URL,
|
MISTRAL_BASE_URL,
|
||||||
MISTRAL_DEFAULT_MODEL_ID,
|
MISTRAL_DEFAULT_MODEL_ID,
|
||||||
QIANFAN_BASE_URL,
|
QIANFAN_BASE_URL,
|
||||||
@@ -79,6 +80,9 @@ import {
|
|||||||
resolveZaiBaseUrl,
|
resolveZaiBaseUrl,
|
||||||
XAI_BASE_URL,
|
XAI_BASE_URL,
|
||||||
XAI_DEFAULT_MODEL_ID,
|
XAI_DEFAULT_MODEL_ID,
|
||||||
|
MODELSTUDIO_CN_BASE_URL,
|
||||||
|
MODELSTUDIO_GLOBAL_BASE_URL,
|
||||||
|
MODELSTUDIO_DEFAULT_MODEL_REF,
|
||||||
} from "./onboard-auth.models.js";
|
} from "./onboard-auth.models.js";
|
||||||
|
|
||||||
export function applyZaiProviderConfig(
|
export function applyZaiProviderConfig(
|
||||||
@@ -574,21 +578,15 @@ export function applyQianfanConfig(cfg: OpenClawConfig): OpenClawConfig {
|
|||||||
return applyAgentDefaultModelPrimary(next, QIANFAN_DEFAULT_MODEL_REF);
|
return applyAgentDefaultModelPrimary(next, QIANFAN_DEFAULT_MODEL_REF);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Alibaba Cloud Model Studio (Bailian) Coding Plan
|
// Alibaba Cloud Model Studio Coding Plan
|
||||||
import {
|
|
||||||
BAILIAN_CN_BASE_URL,
|
|
||||||
BAILIAN_GLOBAL_BASE_URL,
|
|
||||||
BAILIAN_DEFAULT_MODEL_REF,
|
|
||||||
buildBailianModelDefinition,
|
|
||||||
} from "./onboard-auth.models.js";
|
|
||||||
|
|
||||||
function applyBailianProviderConfigWithBaseUrl(
|
function applyModelStudioProviderConfigWithBaseUrl(
|
||||||
cfg: OpenClawConfig,
|
cfg: OpenClawConfig,
|
||||||
baseUrl: string,
|
baseUrl: string,
|
||||||
): OpenClawConfig {
|
): OpenClawConfig {
|
||||||
const models = { ...cfg.agents?.defaults?.models };
|
const models = { ...cfg.agents?.defaults?.models };
|
||||||
|
|
||||||
const bailianModelIds = [
|
const modelStudioModelIds = [
|
||||||
"qwen3.5-plus",
|
"qwen3.5-plus",
|
||||||
"qwen3-max-2026-01-23",
|
"qwen3-max-2026-01-23",
|
||||||
"qwen3-coder-next",
|
"qwen3-coder-next",
|
||||||
@@ -598,30 +596,30 @@ function applyBailianProviderConfigWithBaseUrl(
|
|||||||
"glm-4.7",
|
"glm-4.7",
|
||||||
"kimi-k2.5",
|
"kimi-k2.5",
|
||||||
];
|
];
|
||||||
for (const modelId of bailianModelIds) {
|
for (const modelId of modelStudioModelIds) {
|
||||||
const modelRef = `bailian/${modelId}`;
|
const modelRef = `modelstudio/${modelId}`;
|
||||||
if (!models[modelRef]) {
|
if (!models[modelRef]) {
|
||||||
models[modelRef] = {};
|
models[modelRef] = {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
models[BAILIAN_DEFAULT_MODEL_REF] = {
|
models[MODELSTUDIO_DEFAULT_MODEL_REF] = {
|
||||||
...models[BAILIAN_DEFAULT_MODEL_REF],
|
...models[MODELSTUDIO_DEFAULT_MODEL_REF],
|
||||||
alias: models[BAILIAN_DEFAULT_MODEL_REF]?.alias ?? "Qwen",
|
alias: models[MODELSTUDIO_DEFAULT_MODEL_REF]?.alias ?? "Qwen",
|
||||||
};
|
};
|
||||||
|
|
||||||
const providers = { ...cfg.models?.providers };
|
const providers = { ...cfg.models?.providers };
|
||||||
const existingProvider = providers.bailian;
|
const existingProvider = providers.modelstudio;
|
||||||
const existingModels = Array.isArray(existingProvider?.models) ? existingProvider.models : [];
|
const existingModels = Array.isArray(existingProvider?.models) ? existingProvider.models : [];
|
||||||
|
|
||||||
const defaultModels = [
|
const defaultModels = [
|
||||||
buildBailianModelDefinition({ id: "qwen3.5-plus" }),
|
buildModelStudioModelDefinition({ id: "qwen3.5-plus" }),
|
||||||
buildBailianModelDefinition({ id: "qwen3-max-2026-01-23" }),
|
buildModelStudioModelDefinition({ id: "qwen3-max-2026-01-23" }),
|
||||||
buildBailianModelDefinition({ id: "qwen3-coder-next" }),
|
buildModelStudioModelDefinition({ id: "qwen3-coder-next" }),
|
||||||
buildBailianModelDefinition({ id: "qwen3-coder-plus" }),
|
buildModelStudioModelDefinition({ id: "qwen3-coder-plus" }),
|
||||||
buildBailianModelDefinition({ id: "MiniMax-M2.5" }),
|
buildModelStudioModelDefinition({ id: "MiniMax-M2.5" }),
|
||||||
buildBailianModelDefinition({ id: "glm-5" }),
|
buildModelStudioModelDefinition({ id: "glm-5" }),
|
||||||
buildBailianModelDefinition({ id: "glm-4.7" }),
|
buildModelStudioModelDefinition({ id: "glm-4.7" }),
|
||||||
buildBailianModelDefinition({ id: "kimi-k2.5" }),
|
buildModelStudioModelDefinition({ id: "kimi-k2.5" }),
|
||||||
];
|
];
|
||||||
|
|
||||||
const mergedModels = [...existingModels];
|
const mergedModels = [...existingModels];
|
||||||
@@ -640,7 +638,7 @@ function applyBailianProviderConfigWithBaseUrl(
|
|||||||
const resolvedApiKey = typeof existingApiKey === "string" ? existingApiKey : undefined;
|
const resolvedApiKey = typeof existingApiKey === "string" ? existingApiKey : undefined;
|
||||||
const normalizedApiKey = resolvedApiKey?.trim();
|
const normalizedApiKey = resolvedApiKey?.trim();
|
||||||
|
|
||||||
providers.bailian = {
|
providers.modelstudio = {
|
||||||
...existingProviderRest,
|
...existingProviderRest,
|
||||||
baseUrl,
|
baseUrl,
|
||||||
api: "openai-completions",
|
api: "openai-completions",
|
||||||
@@ -651,23 +649,20 @@ function applyBailianProviderConfigWithBaseUrl(
|
|||||||
return applyOnboardAuthAgentModelsAndProviders(cfg, { agentModels: models, providers });
|
return applyOnboardAuthAgentModelsAndProviders(cfg, { agentModels: models, providers });
|
||||||
}
|
}
|
||||||
|
|
||||||
export function applyBailianProviderConfig(cfg: OpenClawConfig): OpenClawConfig {
|
export function applyModelStudioProviderConfig(cfg: OpenClawConfig): OpenClawConfig {
|
||||||
const existingBaseUrl = cfg.models?.providers?.bailian?.baseUrl;
|
return applyModelStudioProviderConfigWithBaseUrl(cfg, MODELSTUDIO_GLOBAL_BASE_URL);
|
||||||
const resolvedBaseUrl =
|
|
||||||
typeof existingBaseUrl === "string" ? existingBaseUrl : BAILIAN_GLOBAL_BASE_URL;
|
|
||||||
return applyBailianProviderConfigWithBaseUrl(cfg, resolvedBaseUrl);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function applyBailianProviderConfigCn(cfg: OpenClawConfig): OpenClawConfig {
|
export function applyModelStudioProviderConfigCn(cfg: OpenClawConfig): OpenClawConfig {
|
||||||
return applyBailianProviderConfigWithBaseUrl(cfg, BAILIAN_CN_BASE_URL);
|
return applyModelStudioProviderConfigWithBaseUrl(cfg, MODELSTUDIO_CN_BASE_URL);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function applyBailianConfig(cfg: OpenClawConfig): OpenClawConfig {
|
export function applyModelStudioConfig(cfg: OpenClawConfig): OpenClawConfig {
|
||||||
const next = applyBailianProviderConfig(cfg);
|
const next = applyModelStudioProviderConfig(cfg);
|
||||||
return applyAgentDefaultModelPrimary(next, BAILIAN_DEFAULT_MODEL_REF);
|
return applyAgentDefaultModelPrimary(next, MODELSTUDIO_DEFAULT_MODEL_REF);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function applyBailianConfigCn(cfg: OpenClawConfig): OpenClawConfig {
|
export function applyModelStudioConfigCn(cfg: OpenClawConfig): OpenClawConfig {
|
||||||
const next = applyBailianProviderConfigCn(cfg);
|
const next = applyModelStudioProviderConfigCn(cfg);
|
||||||
return applyAgentDefaultModelPrimary(next, BAILIAN_DEFAULT_MODEL_REF);
|
return applyAgentDefaultModelPrimary(next, MODELSTUDIO_DEFAULT_MODEL_REF);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export { CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF } from "../agents/cloudflare-ai
|
|||||||
export {
|
export {
|
||||||
MISTRAL_DEFAULT_MODEL_REF,
|
MISTRAL_DEFAULT_MODEL_REF,
|
||||||
XAI_DEFAULT_MODEL_REF,
|
XAI_DEFAULT_MODEL_REF,
|
||||||
BAILIAN_DEFAULT_MODEL_REF,
|
MODELSTUDIO_DEFAULT_MODEL_REF,
|
||||||
} from "./onboard-auth.models.js";
|
} from "./onboard-auth.models.js";
|
||||||
export { KILOCODE_DEFAULT_MODEL_REF };
|
export { KILOCODE_DEFAULT_MODEL_REF };
|
||||||
|
|
||||||
@@ -476,14 +476,14 @@ export function setQianfanApiKey(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setBailianApiKey(
|
export function setModelStudioApiKey(
|
||||||
key: SecretInput,
|
key: SecretInput,
|
||||||
agentDir?: string,
|
agentDir?: string,
|
||||||
options?: ApiKeyStorageOptions,
|
options?: ApiKeyStorageOptions,
|
||||||
) {
|
) {
|
||||||
upsertAuthProfile({
|
upsertAuthProfile({
|
||||||
profileId: "bailian:default",
|
profileId: "modelstudio:default",
|
||||||
credential: buildApiKeyCredential("bailian", key, undefined, options),
|
credential: buildApiKeyCredential("modelstudio", key, undefined, options),
|
||||||
agentDir: resolveAuthAgentDir(agentDir),
|
agentDir: resolveAuthAgentDir(agentDir),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -225,20 +225,19 @@ export function buildKilocodeModelDefinition(): ModelDefinitionConfig {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Alibaba Cloud Model Studio (Bailian) Coding Plan
|
// Alibaba Cloud Model Studio Coding Plan
|
||||||
export const BAILIAN_CN_BASE_URL = "https://coding.dashscope.aliyuncs.com/v1";
|
export const MODELSTUDIO_CN_BASE_URL = "https://coding.dashscope.aliyuncs.com/v1";
|
||||||
export const BAILIAN_GLOBAL_BASE_URL = "https://coding-intl.dashscope.aliyuncs.com/v1";
|
export const MODELSTUDIO_GLOBAL_BASE_URL = "https://coding-intl.dashscope.aliyuncs.com/v1";
|
||||||
export const BAILIAN_BASE_URL = BAILIAN_CN_BASE_URL;
|
export const MODELSTUDIO_DEFAULT_MODEL_ID = "qwen3.5-plus";
|
||||||
export const BAILIAN_DEFAULT_MODEL_ID = "qwen3.5-plus";
|
export const MODELSTUDIO_DEFAULT_MODEL_REF = `modelstudio/${MODELSTUDIO_DEFAULT_MODEL_ID}`;
|
||||||
export const BAILIAN_DEFAULT_MODEL_REF = `bailian/${BAILIAN_DEFAULT_MODEL_ID}`;
|
export const MODELSTUDIO_DEFAULT_COST = {
|
||||||
export const BAILIAN_DEFAULT_COST = {
|
|
||||||
input: 0,
|
input: 0,
|
||||||
output: 0,
|
output: 0,
|
||||||
cacheRead: 0,
|
cacheRead: 0,
|
||||||
cacheWrite: 0,
|
cacheWrite: 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
const BAILIAN_MODEL_CATALOG = {
|
const MODELSTUDIO_MODEL_CATALOG = {
|
||||||
"qwen3.5-plus": {
|
"qwen3.5-plus": {
|
||||||
name: "qwen3.5-plus",
|
name: "qwen3.5-plus",
|
||||||
reasoning: false,
|
reasoning: false,
|
||||||
@@ -297,9 +296,9 @@ const BAILIAN_MODEL_CATALOG = {
|
|||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
type BailianCatalogId = keyof typeof BAILIAN_MODEL_CATALOG;
|
type ModelStudioCatalogId = keyof typeof MODELSTUDIO_MODEL_CATALOG;
|
||||||
|
|
||||||
export function buildBailianModelDefinition(params: {
|
export function buildModelStudioModelDefinition(params: {
|
||||||
id: string;
|
id: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
reasoning?: boolean;
|
reasoning?: boolean;
|
||||||
@@ -308,7 +307,7 @@ export function buildBailianModelDefinition(params: {
|
|||||||
contextWindow?: number;
|
contextWindow?: number;
|
||||||
maxTokens?: number;
|
maxTokens?: number;
|
||||||
}): ModelDefinitionConfig {
|
}): ModelDefinitionConfig {
|
||||||
const catalog = BAILIAN_MODEL_CATALOG[params.id as BailianCatalogId];
|
const catalog = MODELSTUDIO_MODEL_CATALOG[params.id as ModelStudioCatalogId];
|
||||||
return {
|
return {
|
||||||
id: params.id,
|
id: params.id,
|
||||||
name: params.name ?? catalog?.name ?? params.id,
|
name: params.name ?? catalog?.name ?? params.id,
|
||||||
@@ -316,14 +315,14 @@ export function buildBailianModelDefinition(params: {
|
|||||||
input:
|
input:
|
||||||
(params.input as ("text" | "image")[]) ??
|
(params.input as ("text" | "image")[]) ??
|
||||||
([...(catalog?.input ?? ["text"])] as ("text" | "image")[]),
|
([...(catalog?.input ?? ["text"])] as ("text" | "image")[]),
|
||||||
cost: params.cost ?? BAILIAN_DEFAULT_COST,
|
cost: params.cost ?? MODELSTUDIO_DEFAULT_COST,
|
||||||
contextWindow: params.contextWindow ?? catalog?.contextWindow ?? 262144,
|
contextWindow: params.contextWindow ?? catalog?.contextWindow ?? 262144,
|
||||||
maxTokens: params.maxTokens ?? catalog?.maxTokens ?? 65536,
|
maxTokens: params.maxTokens ?? catalog?.maxTokens ?? 65536,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function buildBailianDefaultModelDefinition(): ModelDefinitionConfig {
|
export function buildModelStudioDefaultModelDefinition(): ModelDefinitionConfig {
|
||||||
return buildBailianModelDefinition({
|
return buildModelStudioModelDefinition({
|
||||||
id: BAILIAN_DEFAULT_MODEL_ID,
|
id: MODELSTUDIO_DEFAULT_MODEL_ID,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,10 +39,10 @@ export {
|
|||||||
applyXiaomiProviderConfig,
|
applyXiaomiProviderConfig,
|
||||||
applyZaiConfig,
|
applyZaiConfig,
|
||||||
applyZaiProviderConfig,
|
applyZaiProviderConfig,
|
||||||
applyBailianConfig,
|
applyModelStudioConfig,
|
||||||
applyBailianConfigCn,
|
applyModelStudioConfigCn,
|
||||||
applyBailianProviderConfig,
|
applyModelStudioProviderConfig,
|
||||||
applyBailianProviderConfigCn,
|
applyModelStudioProviderConfigCn,
|
||||||
KILOCODE_BASE_URL,
|
KILOCODE_BASE_URL,
|
||||||
} from "./onboard-auth.config-core.js";
|
} from "./onboard-auth.config-core.js";
|
||||||
export {
|
export {
|
||||||
@@ -88,7 +88,7 @@ export {
|
|||||||
setVolcengineApiKey,
|
setVolcengineApiKey,
|
||||||
setZaiApiKey,
|
setZaiApiKey,
|
||||||
setXaiApiKey,
|
setXaiApiKey,
|
||||||
setBailianApiKey,
|
setModelStudioApiKey,
|
||||||
writeOAuthCredentials,
|
writeOAuthCredentials,
|
||||||
HUGGINGFACE_DEFAULT_MODEL_REF,
|
HUGGINGFACE_DEFAULT_MODEL_REF,
|
||||||
VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF,
|
VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF,
|
||||||
@@ -97,7 +97,7 @@ export {
|
|||||||
TOGETHER_DEFAULT_MODEL_REF,
|
TOGETHER_DEFAULT_MODEL_REF,
|
||||||
MISTRAL_DEFAULT_MODEL_REF,
|
MISTRAL_DEFAULT_MODEL_REF,
|
||||||
XAI_DEFAULT_MODEL_REF,
|
XAI_DEFAULT_MODEL_REF,
|
||||||
BAILIAN_DEFAULT_MODEL_REF,
|
MODELSTUDIO_DEFAULT_MODEL_REF,
|
||||||
} from "./onboard-auth.credentials.js";
|
} from "./onboard-auth.credentials.js";
|
||||||
export {
|
export {
|
||||||
buildKilocodeModelDefinition,
|
buildKilocodeModelDefinition,
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ type AuthChoiceFlagOptions = Pick<
|
|||||||
| "xaiApiKey"
|
| "xaiApiKey"
|
||||||
| "litellmApiKey"
|
| "litellmApiKey"
|
||||||
| "qianfanApiKey"
|
| "qianfanApiKey"
|
||||||
| "bailianApiKeyCn"
|
| "modelstudioApiKeyCn"
|
||||||
| "bailianApiKey"
|
| "modelstudioApiKey"
|
||||||
| "volcengineApiKey"
|
| "volcengineApiKey"
|
||||||
| "byteplusApiKey"
|
| "byteplusApiKey"
|
||||||
| "customBaseUrl"
|
| "customBaseUrl"
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ import {
|
|||||||
applyCloudflareAiGatewayConfig,
|
applyCloudflareAiGatewayConfig,
|
||||||
applyKilocodeConfig,
|
applyKilocodeConfig,
|
||||||
applyQianfanConfig,
|
applyQianfanConfig,
|
||||||
applyBailianConfig,
|
applyModelStudioConfig,
|
||||||
applyBailianConfigCn,
|
applyModelStudioConfigCn,
|
||||||
applyKimiCodeConfig,
|
applyKimiCodeConfig,
|
||||||
applyMinimaxApiConfig,
|
applyMinimaxApiConfig,
|
||||||
applyMinimaxApiConfigCn,
|
applyMinimaxApiConfigCn,
|
||||||
@@ -39,7 +39,7 @@ import {
|
|||||||
setCloudflareAiGatewayConfig,
|
setCloudflareAiGatewayConfig,
|
||||||
setByteplusApiKey,
|
setByteplusApiKey,
|
||||||
setQianfanApiKey,
|
setQianfanApiKey,
|
||||||
setBailianApiKey,
|
setModelStudioApiKey,
|
||||||
setGeminiApiKey,
|
setGeminiApiKey,
|
||||||
setKilocodeApiKey,
|
setKilocodeApiKey,
|
||||||
setKimiCodingApiKey,
|
setKimiCodingApiKey,
|
||||||
@@ -501,13 +501,13 @@ export async function applyNonInteractiveAuthChoice(params: {
|
|||||||
return applyQianfanConfig(nextConfig);
|
return applyQianfanConfig(nextConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (authChoice === "bailian-api-key-cn") {
|
if (authChoice === "modelstudio-api-key-cn") {
|
||||||
const resolved = await resolveApiKey({
|
const resolved = await resolveApiKey({
|
||||||
provider: "bailian",
|
provider: "modelstudio",
|
||||||
cfg: baseConfig,
|
cfg: baseConfig,
|
||||||
flagValue: opts.bailianApiKeyCn,
|
flagValue: opts.modelstudioApiKeyCn,
|
||||||
flagName: "--bailian-api-key-cn",
|
flagName: "--modelstudio-api-key-cn",
|
||||||
envVar: "BAILIAN_API_KEY",
|
envVar: "MODELSTUDIO_API_KEY",
|
||||||
runtime,
|
runtime,
|
||||||
});
|
});
|
||||||
if (!resolved) {
|
if (!resolved) {
|
||||||
@@ -515,26 +515,26 @@ export async function applyNonInteractiveAuthChoice(params: {
|
|||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
!(await maybeSetResolvedApiKey(resolved, (value) =>
|
!(await maybeSetResolvedApiKey(resolved, (value) =>
|
||||||
setBailianApiKey(value, undefined, apiKeyStorageOptions),
|
setModelStudioApiKey(value, undefined, apiKeyStorageOptions),
|
||||||
))
|
))
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
nextConfig = applyAuthProfileConfig(nextConfig, {
|
nextConfig = applyAuthProfileConfig(nextConfig, {
|
||||||
profileId: "bailian:default",
|
profileId: "modelstudio:default",
|
||||||
provider: "bailian",
|
provider: "modelstudio",
|
||||||
mode: "api_key",
|
mode: "api_key",
|
||||||
});
|
});
|
||||||
return applyBailianConfigCn(nextConfig);
|
return applyModelStudioConfigCn(nextConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (authChoice === "bailian-api-key") {
|
if (authChoice === "modelstudio-api-key") {
|
||||||
const resolved = await resolveApiKey({
|
const resolved = await resolveApiKey({
|
||||||
provider: "bailian",
|
provider: "modelstudio",
|
||||||
cfg: baseConfig,
|
cfg: baseConfig,
|
||||||
flagValue: opts.bailianApiKey,
|
flagValue: opts.modelstudioApiKey,
|
||||||
flagName: "--bailian-api-key",
|
flagName: "--modelstudio-api-key",
|
||||||
envVar: "BAILIAN_API_KEY",
|
envVar: "MODELSTUDIO_API_KEY",
|
||||||
runtime,
|
runtime,
|
||||||
});
|
});
|
||||||
if (!resolved) {
|
if (!resolved) {
|
||||||
@@ -542,17 +542,17 @@ export async function applyNonInteractiveAuthChoice(params: {
|
|||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
!(await maybeSetResolvedApiKey(resolved, (value) =>
|
!(await maybeSetResolvedApiKey(resolved, (value) =>
|
||||||
setBailianApiKey(value, undefined, apiKeyStorageOptions),
|
setModelStudioApiKey(value, undefined, apiKeyStorageOptions),
|
||||||
))
|
))
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
nextConfig = applyAuthProfileConfig(nextConfig, {
|
nextConfig = applyAuthProfileConfig(nextConfig, {
|
||||||
profileId: "bailian:default",
|
profileId: "modelstudio:default",
|
||||||
provider: "bailian",
|
provider: "modelstudio",
|
||||||
mode: "api_key",
|
mode: "api_key",
|
||||||
});
|
});
|
||||||
return applyBailianConfig(nextConfig);
|
return applyModelStudioConfig(nextConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (authChoice === "openai-api-key") {
|
if (authChoice === "openai-api-key") {
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ type OnboardProviderAuthOptionKey = keyof Pick<
|
|||||||
| "xaiApiKey"
|
| "xaiApiKey"
|
||||||
| "litellmApiKey"
|
| "litellmApiKey"
|
||||||
| "qianfanApiKey"
|
| "qianfanApiKey"
|
||||||
| "bailianApiKeyCn"
|
| "modelstudioApiKeyCn"
|
||||||
| "bailianApiKey"
|
| "modelstudioApiKey"
|
||||||
| "volcengineApiKey"
|
| "volcengineApiKey"
|
||||||
| "byteplusApiKey"
|
| "byteplusApiKey"
|
||||||
>;
|
>;
|
||||||
@@ -187,18 +187,18 @@ export const ONBOARD_PROVIDER_AUTH_FLAGS: ReadonlyArray<OnboardProviderAuthFlag>
|
|||||||
description: "QIANFAN API key",
|
description: "QIANFAN API key",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
optionKey: "bailianApiKeyCn",
|
optionKey: "modelstudioApiKeyCn",
|
||||||
authChoice: "bailian-api-key-cn",
|
authChoice: "modelstudio-api-key-cn",
|
||||||
cliFlag: "--bailian-api-key-cn",
|
cliFlag: "--modelstudio-api-key-cn",
|
||||||
cliOption: "--bailian-api-key-cn <key>",
|
cliOption: "--modelstudio-api-key-cn <key>",
|
||||||
description: "Alibaba Bailian Coding Plan API key (China)",
|
description: "Alibaba Cloud Model Studio Coding Plan API key (China)",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
optionKey: "bailianApiKey",
|
optionKey: "modelstudioApiKey",
|
||||||
authChoice: "bailian-api-key",
|
authChoice: "modelstudio-api-key",
|
||||||
cliFlag: "--bailian-api-key",
|
cliFlag: "--modelstudio-api-key",
|
||||||
cliOption: "--bailian-api-key <key>",
|
cliOption: "--modelstudio-api-key <key>",
|
||||||
description: "Alibaba Bailian Coding Plan API key (Global/Intl)",
|
description: "Alibaba Cloud Model Studio Coding Plan API key (Global/Intl)",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
optionKey: "volcengineApiKey",
|
optionKey: "volcengineApiKey",
|
||||||
|
|||||||
@@ -49,8 +49,8 @@ export type AuthChoice =
|
|||||||
| "volcengine-api-key"
|
| "volcengine-api-key"
|
||||||
| "byteplus-api-key"
|
| "byteplus-api-key"
|
||||||
| "qianfan-api-key"
|
| "qianfan-api-key"
|
||||||
| "bailian-api-key-cn"
|
| "modelstudio-api-key-cn"
|
||||||
| "bailian-api-key"
|
| "modelstudio-api-key"
|
||||||
| "custom-api-key"
|
| "custom-api-key"
|
||||||
| "skip";
|
| "skip";
|
||||||
export type AuthChoiceGroupId =
|
export type AuthChoiceGroupId =
|
||||||
@@ -77,7 +77,7 @@ export type AuthChoiceGroupId =
|
|||||||
| "together"
|
| "together"
|
||||||
| "huggingface"
|
| "huggingface"
|
||||||
| "qianfan"
|
| "qianfan"
|
||||||
| "bailian"
|
| "modelstudio"
|
||||||
| "xai"
|
| "xai"
|
||||||
| "volcengine"
|
| "volcengine"
|
||||||
| "byteplus"
|
| "byteplus"
|
||||||
@@ -138,8 +138,8 @@ export type OnboardOptions = {
|
|||||||
volcengineApiKey?: string;
|
volcengineApiKey?: string;
|
||||||
byteplusApiKey?: string;
|
byteplusApiKey?: string;
|
||||||
qianfanApiKey?: string;
|
qianfanApiKey?: string;
|
||||||
bailianApiKeyCn?: string;
|
modelstudioApiKeyCn?: string;
|
||||||
bailianApiKey?: string;
|
modelstudioApiKey?: string;
|
||||||
customBaseUrl?: string;
|
customBaseUrl?: string;
|
||||||
customApiKey?: string;
|
customApiKey?: string;
|
||||||
customModelId?: string;
|
customModelId?: string;
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ export const PROVIDER_ENV_VARS: Record<string, readonly string[]> = {
|
|||||||
xai: ["XAI_API_KEY"],
|
xai: ["XAI_API_KEY"],
|
||||||
mistral: ["MISTRAL_API_KEY"],
|
mistral: ["MISTRAL_API_KEY"],
|
||||||
kilocode: ["KILOCODE_API_KEY"],
|
kilocode: ["KILOCODE_API_KEY"],
|
||||||
|
modelstudio: ["MODELSTUDIO_API_KEY"],
|
||||||
volcengine: ["VOLCANO_ENGINE_API_KEY"],
|
volcengine: ["VOLCANO_ENGINE_API_KEY"],
|
||||||
byteplus: ["BYTEPLUS_API_KEY"],
|
byteplus: ["BYTEPLUS_API_KEY"],
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user