Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
1.6 kB · 54 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455/** * Tagged ID encoding compatible with the API's tagged_id.py format. * * Produces IDs like "user_01PaGUP2rbg1XDh7Z9W1CEpd" from a UUID string. * The format is: {tag}_{version}{base58(uuid_as_128bit_int)} * * This must stay in sync with api/api/common/utils/tagged_id.py. */
const BASE_58_CHARS = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'const VERSION = '01'// ceil(128 / log2(58)) = 22const ENCODED_LENGTH = 22
/** * Encode a 128-bit unsigned integer as a fixed-length base58 string. */function base58Encode(n: bigint): string { const base = BigInt(BASE_58_CHARS.length) const result = new Array<string>(ENCODED_LENGTH).fill(BASE_58_CHARS[0]!) let i = ENCODED_LENGTH - 1 let value = n while (value > 0n) { const rem = Number(value % base) result[i] = BASE_58_CHARS[rem]! value = value / base i-- } return result.join('')}
/** * Parse a UUID string (with or without hyphens) into a 128-bit bigint. */function uuidToBigInt(uuid: string): bigint { const hex = uuid.replace(/-/g, '') if (hex.length !== 32) { throw new Error(`Invalid UUID hex length: ${hex.length}`) } return BigInt('0x' + hex)}
/** * Convert an account UUID to a tagged ID in the API's format. * * @param tag - The tag prefix (e.g. "user", "org") * @param uuid - A UUID string (with or without hyphens) * @returns Tagged ID string like "user_01PaGUP2rbg1XDh7Z9W1CEpd" */export function toTaggedId(tag: string, uuid: string): string { const n = uuidToBigInt(uuid) return `${tag}_${VERSION}${base58Encode(n)}`}