80 lines
2.6 KiB
TypeScript
80 lines
2.6 KiB
TypeScript
import { resolveManifestProviderApiKeyChoice } from "../plugins/provider-auth-choices.js";
|
|
import {
|
|
createAuthChoiceDefaultModelApplierForMutableState,
|
|
normalizeSecretInputModeInput,
|
|
normalizeTokenProviderInput,
|
|
} from "./auth-choice.apply-helpers.js";
|
|
import { applyLiteLlmApiKeyProvider } from "./auth-choice.apply.api-key-providers.js";
|
|
import type { ApplyAuthChoiceParams, ApplyAuthChoiceResult } from "./auth-choice.apply.js";
|
|
import type { AuthChoice } from "./onboard-types.js";
|
|
|
|
const CORE_API_KEY_TOKEN_PROVIDER_AUTH_CHOICES: Partial<Record<string, AuthChoice>> = {
|
|
litellm: "litellm-api-key",
|
|
};
|
|
|
|
export function normalizeApiKeyTokenProviderAuthChoice(params: {
|
|
authChoice: AuthChoice;
|
|
tokenProvider?: string;
|
|
config?: ApplyAuthChoiceParams["config"];
|
|
workspaceDir?: string;
|
|
env?: NodeJS.ProcessEnv;
|
|
}): AuthChoice {
|
|
if (params.authChoice !== "apiKey" || !params.tokenProvider) {
|
|
return params.authChoice;
|
|
}
|
|
const normalizedTokenProvider = normalizeTokenProviderInput(params.tokenProvider);
|
|
if (!normalizedTokenProvider) {
|
|
return params.authChoice;
|
|
}
|
|
return (
|
|
(resolveManifestProviderApiKeyChoice({
|
|
providerId: normalizedTokenProvider,
|
|
config: params.config,
|
|
workspaceDir: params.workspaceDir,
|
|
env: params.env,
|
|
})?.choiceId as AuthChoice | undefined) ??
|
|
CORE_API_KEY_TOKEN_PROVIDER_AUTH_CHOICES[normalizedTokenProvider] ??
|
|
params.authChoice
|
|
);
|
|
}
|
|
|
|
export async function applyAuthChoiceApiProviders(
|
|
params: ApplyAuthChoiceParams,
|
|
): Promise<ApplyAuthChoiceResult | null> {
|
|
let nextConfig = params.config;
|
|
let agentModelOverride: string | undefined;
|
|
const applyProviderDefaultModel = createAuthChoiceDefaultModelApplierForMutableState(
|
|
params,
|
|
() => nextConfig,
|
|
(config) => (nextConfig = config),
|
|
() => agentModelOverride,
|
|
(model) => (agentModelOverride = model),
|
|
);
|
|
|
|
const authChoice = normalizeApiKeyTokenProviderAuthChoice({
|
|
authChoice: params.authChoice,
|
|
tokenProvider: params.opts?.tokenProvider,
|
|
config: params.config,
|
|
env: process.env,
|
|
});
|
|
const normalizedTokenProvider = normalizeTokenProviderInput(params.opts?.tokenProvider);
|
|
const requestedSecretInputMode = normalizeSecretInputModeInput(params.opts?.secretInputMode);
|
|
|
|
const litellmResult = await applyLiteLlmApiKeyProvider({
|
|
params,
|
|
authChoice,
|
|
config: nextConfig,
|
|
setConfig: (config) => (nextConfig = config),
|
|
getConfig: () => nextConfig,
|
|
normalizedTokenProvider,
|
|
requestedSecretInputMode,
|
|
applyProviderDefaultModel,
|
|
getAgentModelOverride: () => agentModelOverride,
|
|
});
|
|
if (litellmResult) {
|
|
return litellmResult;
|
|
}
|
|
|
|
return null;
|
|
}
|