mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-24 08:21:39 +00:00
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import type { WizardPrompter } from "../wizard/prompts.js";
|
|
import type { SecretInputMode } from "./provider-auth-types.js";
|
|
|
|
export type SecretInputModePromptCopy = {
|
|
modeMessage?: string;
|
|
plaintextLabel?: string;
|
|
plaintextHint?: string;
|
|
refLabel?: string;
|
|
refHint?: string;
|
|
};
|
|
|
|
export async function resolveSecretInputModeForEnvSelection(params: {
|
|
prompter: Pick<WizardPrompter, "select">;
|
|
explicitMode?: SecretInputMode;
|
|
copy?: SecretInputModePromptCopy;
|
|
}): Promise<SecretInputMode> {
|
|
if (params.explicitMode) {
|
|
return params.explicitMode;
|
|
}
|
|
if (typeof params.prompter.select !== "function") {
|
|
return "plaintext";
|
|
}
|
|
const selected = await params.prompter.select<SecretInputMode>({
|
|
message: params.copy?.modeMessage ?? "How do you want to provide this API key?",
|
|
initialValue: "plaintext",
|
|
options: [
|
|
{
|
|
value: "plaintext",
|
|
label: params.copy?.plaintextLabel ?? "Paste API key now",
|
|
hint: params.copy?.plaintextHint ?? "Stores the key directly in OpenClaw config",
|
|
},
|
|
{
|
|
value: "ref",
|
|
label: params.copy?.refLabel ?? "Use external secret provider",
|
|
hint:
|
|
params.copy?.refHint ??
|
|
"Stores a reference to env or configured external secret providers",
|
|
},
|
|
],
|
|
});
|
|
return selected === "ref" ? "ref" : "plaintext";
|
|
}
|