mirror of https://github.com/openclaw/openclaw.git
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import type { OpenClawConfig } from "../config/config.js";
|
|
import { normalizeSecretInputString, resolveSecretInputRef } from "../config/types.secrets.js";
|
|
import { resolveSecretRefString } from "../secrets/resolve.js";
|
|
|
|
type SecretDefaults = NonNullable<OpenClawConfig["secrets"]>["defaults"];
|
|
|
|
function formatSecretResolutionError(error: unknown): string {
|
|
if (error instanceof Error && error.message.trim().length > 0) {
|
|
return error.message;
|
|
}
|
|
return String(error);
|
|
}
|
|
|
|
export async function resolveSetupSecretInputString(params: {
|
|
config: OpenClawConfig;
|
|
value: unknown;
|
|
path: string;
|
|
defaults?: SecretDefaults;
|
|
env?: NodeJS.ProcessEnv;
|
|
}): Promise<string | undefined> {
|
|
const defaults = params.defaults ?? params.config.secrets?.defaults;
|
|
const { ref } = resolveSecretInputRef({
|
|
value: params.value,
|
|
defaults,
|
|
});
|
|
if (ref) {
|
|
try {
|
|
return await resolveSecretRefString(ref, {
|
|
config: params.config,
|
|
env: params.env ?? process.env,
|
|
});
|
|
} catch (error) {
|
|
throw new Error(
|
|
`${params.path}: failed to resolve SecretRef "${ref.source}:${ref.provider}:${ref.id}": ${formatSecretResolutionError(error)}`,
|
|
{ cause: error },
|
|
);
|
|
}
|
|
}
|
|
|
|
return normalizeSecretInputString(params.value);
|
|
}
|