mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-24 11:25:50 -06:00
42 lines
1.6 KiB
TypeScript
42 lines
1.6 KiB
TypeScript
// Resolves provider auth tokens from plugin-owned auth configuration.
|
|
import { normalizeProviderId } from "@openclaw/model-catalog-core/provider-id";
|
|
import { normalizeLowercaseStringOrEmpty } from "@openclaw/normalization-core/string-coerce";
|
|
|
|
export const ANTHROPIC_SETUP_TOKEN_PREFIX = "sk-ant-oat01-";
|
|
const ANTHROPIC_SETUP_TOKEN_MIN_LENGTH = 80;
|
|
const DEFAULT_TOKEN_PROFILE_NAME = "default";
|
|
|
|
function normalizeTokenProfileName(raw: string): string {
|
|
const trimmed = raw.trim();
|
|
if (!trimmed) {
|
|
return DEFAULT_TOKEN_PROFILE_NAME;
|
|
}
|
|
const slug = normalizeLowercaseStringOrEmpty(trimmed)
|
|
.replace(/[^a-z0-9._-]+/g, "-")
|
|
.replace(/-+/g, "-")
|
|
.replace(/^-+|-+$/g, "");
|
|
return slug || DEFAULT_TOKEN_PROFILE_NAME;
|
|
}
|
|
|
|
/** @deprecated Provider-owned setup helper; do not use from third-party plugins. */
|
|
export function buildTokenProfileId(params: { provider: string; name: string }): string {
|
|
const provider = normalizeProviderId(params.provider);
|
|
const name = normalizeTokenProfileName(params.name);
|
|
return `${provider}:${name}`;
|
|
}
|
|
|
|
/** @deprecated Anthropic provider-owned setup helper; do not use from third-party plugins. */
|
|
export function validateAnthropicSetupToken(raw: string): string | undefined {
|
|
const trimmed = raw.trim();
|
|
if (!trimmed) {
|
|
return "Required";
|
|
}
|
|
if (!trimmed.startsWith(ANTHROPIC_SETUP_TOKEN_PREFIX)) {
|
|
return `Expected token starting with ${ANTHROPIC_SETUP_TOKEN_PREFIX}`;
|
|
}
|
|
if (trimmed.length < ANTHROPIC_SETUP_TOKEN_MIN_LENGTH) {
|
|
return "Token looks too short; paste the full setup-token";
|
|
}
|
|
return undefined;
|
|
}
|