Skip to content

Пример: registry-test

Расширение @artiroute/registry-testsmoke-test всех registry и UI slot точек хоста.

Путь: packages/extensions/registry-test/

Назначение

После изменений в extension host (новые regions, registry bridges, shims) запустите registry-test и визуально проверьте, что placeholders появляются везде.

Не используйте как шаблон production extension — это intentionally verbose coverage test.

Что покрывает

app.uiSlots — все 32 regions

regions.mjs / regions.ts экспортируют UI_SLOT_REGIONS. Setup регистрирует RegionPlaceholder в каждый region:

ts
for (const region of UI_SLOT_REGIONS) {
  uiSlots.register(regionRegistryKey(region), {
    region,
    component: RegionPlaceholder,
  });
}

Итерируемые реестры

RegistryKey
app.sidebarregistry-test
app.routesregistry-test
app.widgetsregistry-test-widget
app.dashboardWidgetsregistry-test-dashboard
app.projectTabsregistry-test-tab
app.settingsTabsregistry-test-settings
app.artifactTypesregistry-test-doc
app.dialogsregistry-test-dialog
app.spaceCreatePanelsregistry-test.demo
app.spaceTypeViewsregistry-test.demo
ai.artifactTypesregistry-test-doc
ai.artifactDriversregistry-test-doc

Platform Core demo (backend)

packages/extensions/registry-test/src/backend/index.ts:

FeatureDemo
Entity fieldregistry-test.demoFlag on space, filterable
Space roleregistry-test.demoReviewer (implies viewer)
Space abilityregistry-test.demoAction
Entity hookartifact:beforeCreate — abort if name __registry_test_abort__
Space typeregistry-test.demo via registerSpaceType
Space hookspace:afterCreate — logs spaceTypeId and extensionPayload
Create panelapp.spaceCreatePanels for registry-test.demo
Runtime bannerapp.spaceTypeViews banner for registry-test.demo

Проверка hook: создайте artifact с именем __registry_test_abort__ — ожидается ошибка REGISTRY_TEST_ABORT.

Проверка space types: создайте Space типа «Registry Test Demo», включите demo payload в panel — в backend log появится afterCreate с payload.

AI: minimal driver

minimal-driver.ts:

  • buildSessionContent{ text: draftText }
  • createTools(){} (empty)
  • Host plain-text fallback добавляет read/replace tools

Полезно для проверки AI pipeline без копирования project-notes text-driver.

Manifest extendsRegistries

Один блок покрывает все UI slot keys:

js
{
  registryId: 'app.uiSlots',
  keys: UI_SLOT_REGIONS.map(regionRegistryKey),
}

Проверка

bash
pnpm build:extensions && pnpm install:extensions
pnpm frontend:dev
pnpm ai:dev
  1. Sidebar «Registry Test»
  2. Dashboard widget placeholder
  3. Project workspace tab + widget
  4. Settings tab
  5. Artifact type registry-test-doc + AI generation
  6. Colored placeholders в UI slots на соответствующих экранах

Bundle size note

После catch-all host subpath shims frontend bundle registry-test ~13 KB (was ~82 KB when PrimeVue was bundled).

См. Host-модули.

AI workspace для командных материалов и знаний