Skip to content

Фазы реализации

Чеклист по документам в этом разделе. Тестовые расширения можно ломать по контракту без миграции requiresRegistries.

Фаза A — Контракт манифеста (SDK)

  • [x] extensionApi: "1", парсинг major и мягкая проверка при загрузке — 08-extension-api-versioning.md
  • [x] Тестовые vite: extensionApi: '1' вместо ^1.0.0
  • [x] extendsRegistries, удалён requiresRegistries
  • [x] flattenExtendsRegistries в SDK
  • [x] applyValidatedRyntContributesToManifest при discovery и в пресете @rynt/extension-build
  • [x] Документация маркетплейса и справочник реестров в launcher-docs

Фаза B — Резолв (SDK + клиент)

  • [x] Резолвер: index, semver deps, implied deps, интеграция при старте лаунчера
  • [x] hasRegistryEntry / resolveRegistrySlot / getRegistryEntryRow
  • [x] Показ ошибок графа в UI настроек — extensionLoadErrors + Callout в ExtensionsManageDialog

Детали: 03-launcher-resolution.md.

Фаза C — Типы маркетплейса (SDK)

  • [x] Subpath @rynt/sdk/extension-marketplace04-sdk-shared-types.md
  • [x] Zod-схемы рядом с типами
  • [x] createExtensionMarketplaceClient

Фаза D — Сервис

  • [x] Backend каталога + Postgres + migrations
  • [x] UNIQUE (registry_id, registry_key) — 05-marketplace-service.md
  • [x] UNIQUE (registry_id) на declarations
  • [x] REST handlers + auth на POST (MVP Bearer)

Фаза E — UI лаунчера

  • [x] ExtensionMarketplaceDialog + useExtensionMarketplaceDialog06-launcher-ui.md
  • [x] installExtensionFromMarketplaceUrl
  • [x] ExtensionRegistrySlotButton в SDK + provide из App
  • [x] Пилот: чаты / тип сообщения — ExtensionRegistrySlotButton в Message.vue
  • [x] Кнопка «Каталог» из ExtensionsManageDialog
  • [x] Автообновление расширений по manifest.version (08-extension-api-versioning.md) — проверка при старте лаунчера, настройка extensionsAutoUpdate, UI pending updates в «Управление расширениями»

Порядок

text
A → B → C → D → E

C можно параллелить с B после фиксации типов в A.

Вне scope v1

  • Publish UI в лаунчере (только API сервиса + Bearer)
  • Redis-кэш каталога
  • Автоматическая проверка manifest ↔ runtime register (только dev warning)
  • Поддержка wildcard-ключей в extendsRegistries