Маркетплейс расширений и реестры
Рабочая документация первой версии API: именованные реестры, манифест, резолв в лаунчере, REST-сервис каталога, SDK и UI.
Документы
| Файл | Содержание |
|---|---|
| 01-registry-model.md | Модель реестров, роли host / расширений, runtime store |
| 02-manifest-contract.md | declaresRegistries, extendsRegistries, extensionDependencies (без requiresRegistries) |
| 03-launcher-resolution.md | Резолв зависимостей, implied deps, локальный индекс слотов |
| 04-sdk-shared-types.md | Общие TypeScript-типы REST и пейлоадов (@rynt/sdk/extension-marketplace) |
| 05-marketplace-service.md | Postgres, REST, уникальность слота (registryId, key) при публикации |
| 06-launcher-ui.md | Глобальный диалог маркетплейса, кнопка слота, управление расширениями |
| 07-implementation-phases.md | Порядок работ по пакетам |
| 08-extension-api-versioning.md | extensionApi: "1", мягкая проверка, автообновление пакетов |
| 09-developer-portal.md | ЛК разработчика, S3, модерация |
| 10-listing-metadata.md | Иконка, автор, TipTap-описание listing |
Принципы v1
- Манифест описывает, какие реестры расширение создаёт и какие пополняет (с явными
keys). - Лаунчер при загрузке строит граф и порядок
setup; в runtime допускает несколько записей на один(registryId, key)(последняя побеждает / все видны вentries()— без жёсткого запрета). - Сервис маркетплейса при публикации запрещает дубли слота: один
(registryId, registryKey)→ одно расширение в каталоге. - Типы API живут в SDK отдельным export; лаунчер и сервис импортируют один контракт.
- UI маркетплейса — глобальный диалог (открывается из любого места), не только встроенная страница настроек.
- Extension API — целая версия
"1", проверка мягкая; версия пакета (semver) — для каталога и автообновления расширений.
npm-пакеты для авторов
- Реестры и загрузка:
@rynt/sdk/extension - Типы маркетплейса:
@rynt/sdk/extension-marketplace - Сборка
.ryntextension:@rynt/extension-build