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:
pomelo-nwu
2026-03-09 13:56:32 +08:00
committed by Peter Steinberger
parent 77a35025e8
commit 95eaa08781
12 changed files with 134 additions and 139 deletions

View File

@@ -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,

View File

@@ -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",
}, },

View File

@@ -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"),
}, },

View File

@@ -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);
} }

View File

@@ -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),
}); });
} }

View File

@@ -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,
}); });
} }

View File

@@ -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,

View File

@@ -30,8 +30,8 @@ type AuthChoiceFlagOptions = Pick<
| "xaiApiKey" | "xaiApiKey"
| "litellmApiKey" | "litellmApiKey"
| "qianfanApiKey" | "qianfanApiKey"
| "bailianApiKeyCn" | "modelstudioApiKeyCn"
| "bailianApiKey" | "modelstudioApiKey"
| "volcengineApiKey" | "volcengineApiKey"
| "byteplusApiKey" | "byteplusApiKey"
| "customBaseUrl" | "customBaseUrl"

View File

@@ -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") {

View File

@@ -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",

View File

@@ -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;

View File

@@ -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"],
}; };