2026-02-03 19:57:37 +08:00
|
|
|
import { resolveEnvApiKey } from "../agents/model-auth.js";
|
|
|
|
|
import {
|
|
|
|
|
formatApiKeyPreview,
|
|
|
|
|
normalizeApiKeyInput,
|
|
|
|
|
validateApiKeyInput,
|
|
|
|
|
} from "./auth-choice.api-key.js";
|
2026-02-21 15:04:28 +01:00
|
|
|
import type { ApplyAuthChoiceParams, ApplyAuthChoiceResult } from "./auth-choice.apply.js";
|
2026-02-03 19:57:37 +08:00
|
|
|
import { applyPrimaryModel } from "./model-picker.js";
|
2026-02-21 15:09:42 -08:00
|
|
|
import { applyAuthProfileConfig, setVolcengineApiKey } from "./onboard-auth.js";
|
2026-02-03 19:57:37 +08:00
|
|
|
|
|
|
|
|
/** Default model for Volcano Engine auth onboarding. */
|
|
|
|
|
export const VOLCENGINE_DEFAULT_MODEL = "volcengine-plan/ark-code-latest";
|
|
|
|
|
|
|
|
|
|
export async function applyAuthChoiceVolcengine(
|
|
|
|
|
params: ApplyAuthChoiceParams,
|
|
|
|
|
): Promise<ApplyAuthChoiceResult | null> {
|
|
|
|
|
if (params.authChoice !== "volcengine-api-key") {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const envKey = resolveEnvApiKey("volcengine");
|
|
|
|
|
if (envKey) {
|
|
|
|
|
const useExisting = await params.prompter.confirm({
|
|
|
|
|
message: `Use existing VOLCANO_ENGINE_API_KEY (${envKey.source}, ${formatApiKeyPreview(envKey.apiKey)})?`,
|
|
|
|
|
initialValue: true,
|
|
|
|
|
});
|
|
|
|
|
if (useExisting) {
|
2026-02-21 15:09:42 -08:00
|
|
|
await setVolcengineApiKey(envKey.apiKey, params.agentDir);
|
|
|
|
|
const configWithAuth = applyAuthProfileConfig(params.config, {
|
|
|
|
|
profileId: "volcengine:default",
|
|
|
|
|
provider: "volcengine",
|
|
|
|
|
mode: "api_key",
|
2026-02-03 19:57:37 +08:00
|
|
|
});
|
2026-02-21 15:09:42 -08:00
|
|
|
const configWithModel = applyPrimaryModel(configWithAuth, VOLCENGINE_DEFAULT_MODEL);
|
2026-02-03 19:57:37 +08:00
|
|
|
return {
|
|
|
|
|
config: configWithModel,
|
|
|
|
|
agentModelOverride: VOLCENGINE_DEFAULT_MODEL,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let key: string | undefined;
|
|
|
|
|
if (params.opts?.volcengineApiKey) {
|
|
|
|
|
key = params.opts.volcengineApiKey;
|
|
|
|
|
} else {
|
|
|
|
|
key = await params.prompter.text({
|
|
|
|
|
message: "Enter Volcano Engine API Key",
|
|
|
|
|
validate: validateApiKeyInput,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const trimmed = normalizeApiKeyInput(String(key));
|
2026-02-21 15:09:42 -08:00
|
|
|
await setVolcengineApiKey(trimmed, params.agentDir);
|
|
|
|
|
const configWithAuth = applyAuthProfileConfig(params.config, {
|
|
|
|
|
profileId: "volcengine:default",
|
|
|
|
|
provider: "volcengine",
|
|
|
|
|
mode: "api_key",
|
2026-02-03 19:57:37 +08:00
|
|
|
});
|
2026-02-21 15:09:42 -08:00
|
|
|
const configWithModel = applyPrimaryModel(configWithAuth, VOLCENGINE_DEFAULT_MODEL);
|
2026-02-03 19:57:37 +08:00
|
|
|
return {
|
|
|
|
|
config: configWithModel,
|
|
|
|
|
agentModelOverride: VOLCENGINE_DEFAULT_MODEL,
|
|
|
|
|
};
|
|
|
|
|
}
|