38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { normalizeProviderId } from "../agents/model-selection.js";
|
|
|
|
export const ANTHROPIC_SETUP_TOKEN_PREFIX = "sk-ant-oat01-";
|
|
export const ANTHROPIC_SETUP_TOKEN_MIN_LENGTH = 80;
|
|
export const DEFAULT_TOKEN_PROFILE_NAME = "default";
|
|
|
|
export function normalizeTokenProfileName(raw: string): string {
|
|
const trimmed = raw.trim();
|
|
if (!trimmed) return DEFAULT_TOKEN_PROFILE_NAME;
|
|
const slug = trimmed
|
|
.toLowerCase()
|
|
.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;
|
|
}
|