Files
Moltbot/src/commands/auth-choice.apply.byteplus.ts

47 lines
1.7 KiB
TypeScript

import { normalizeApiKeyInput, validateApiKeyInput } from "./auth-choice.api-key.js";
import {
ensureApiKeyFromOptionEnvOrPrompt,
normalizeSecretInputModeInput,
} from "./auth-choice.apply-helpers.js";
import type { ApplyAuthChoiceParams, ApplyAuthChoiceResult } from "./auth-choice.apply.js";
import { applyPrimaryModel } from "./model-picker.js";
import { applyAuthProfileConfig, setByteplusApiKey } from "./onboard-auth.js";
/** Default model for BytePlus auth onboarding. */
export const BYTEPLUS_DEFAULT_MODEL = "byteplus-plan/ark-code-latest";
export async function applyAuthChoiceBytePlus(
params: ApplyAuthChoiceParams,
): Promise<ApplyAuthChoiceResult | null> {
if (params.authChoice !== "byteplus-api-key") {
return null;
}
const requestedSecretInputMode = normalizeSecretInputModeInput(params.opts?.secretInputMode);
await ensureApiKeyFromOptionEnvOrPrompt({
token: params.opts?.byteplusApiKey,
tokenProvider: "byteplus",
secretInputMode: requestedSecretInputMode,
config: params.config,
expectedProviders: ["byteplus"],
provider: "byteplus",
envLabel: "BYTEPLUS_API_KEY",
promptMessage: "Enter BytePlus API key",
normalize: normalizeApiKeyInput,
validate: validateApiKeyInput,
prompter: params.prompter,
setCredential: async (apiKey, mode) =>
setByteplusApiKey(apiKey, params.agentDir, { secretInputMode: mode }),
});
const configWithAuth = applyAuthProfileConfig(params.config, {
profileId: "byteplus:default",
provider: "byteplus",
mode: "api_key",
});
const configWithModel = applyPrimaryModel(configWithAuth, BYTEPLUS_DEFAULT_MODEL);
return {
config: configWithModel,
agentModelOverride: BYTEPLUS_DEFAULT_MODEL,
};
}