Skip to content

Формат id ​

Один формат для всіх первинних id в Agentfy, Bonsite, Securify, Shiffty і Store Deputy (рішення власника 2026-10-15). Ця сторінка — еталон: решта чотири продукти копіюють звідси модуль, тест-вектор і таблицю. Повний опис — в англійській версії.

<prefix>-<adjective>-<noun>-<suffix>
user-calm-rivers-k8m4p2d7n9x3

Нові id видаються лише в канонічному вигляді. Попередній формат кожного продукту приймається для вже виданих id (LEGACY_ID_FORMATS), але ніколи не генерується. Дані не переписуються.

ЧастинаПравило
prefixПовне ім'я моделі в kebab-case, до 32 символів, може містити -.
adjectiveСлово з adjectives human-id 4.1.3 (200).
nounСлово з nouns human-id 4.1.3 (300). Без verb/adverb.
suffixРівно 12 символів Crockford base32: 0123456789abcdefghjkmnpqrstvwxyz. 60 біт.
випадковістьcrypto.randomBytes; слова — відбраковка за маскою, суфікс — customRandom з nanoid 3.3.11.
унікальністьПервинний ключ; при конфлікті — повтор до 5 разів.

Порядок: adjective index(200) (1 байт, маска 255, < 200), noun index(300) (2 байти big-endian, маска 511, < 300), потім суфікс — nanoid customRandom (один запит 19 байт, читається з кінця, byte & 31, 12 символів).

Контрольний тест-вектор ​

Джерело віддає байти 0, 1, 2, … по черзі:

formatId('user', counter) === 'user-afraid-swans-nmkjhgfedcba'

Попередні формати за продуктами ​

ПродуктLEGACY_ID_FORMATS
Agentfy<prefix>-<adjective>-<noun>-<verb>-<20 Crockford>; голий UUID у нижньому регістрі
Bonsite3 слова + 20 Crockford
Securify2 слова + 12 hex
Shiffty2 слова з власного словника + 6 Crockford
Store Deputy2 слова + 12 [a-z0-9]