import { normalizeProviderId } from "../agents/provider-id.js"; import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js"; 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; } export function buildTokenProfileId(params: { provider: string; name: string }): string { const provider = normalizeProviderId(params.provider); const name = normalizeTokenProfileName(params.name); return `${provider}:${name}`; } 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; }