Пример: registry-test
Расширение @artiroute/registry-test — smoke-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,
});
}Итерируемые реестры
| Registry | Key |
|---|---|
app.sidebar | registry-test |
app.routes | registry-test |
app.widgets | registry-test-widget |
app.dashboardWidgets | registry-test-dashboard |
app.projectTabs | registry-test-tab |
app.settingsTabs | registry-test-settings |
app.artifactTypes | registry-test-doc |
app.dialogs | registry-test-dialog |
app.spaceCreatePanels | registry-test.demo |
app.spaceTypeViews | registry-test.demo |
ai.artifactTypes | registry-test-doc |
ai.artifactDrivers | registry-test-doc |
Platform Core demo (backend)
packages/extensions/registry-test/src/backend/index.ts:
| Feature | Demo |
|---|---|
| Entity field | registry-test.demoFlag on space, filterable |
| Space role | registry-test.demoReviewer (implies viewer) |
| Space ability | registry-test.demoAction |
| Entity hook | artifact:beforeCreate — abort if name __registry_test_abort__ |
| Space type | registry-test.demo via registerSpaceType |
| Space hook | space:afterCreate — logs spaceTypeId and extensionPayload |
| Create panel | app.spaceCreatePanels for registry-test.demo |
| Runtime banner | app.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- Sidebar «Registry Test»
- Dashboard widget placeholder
- Project workspace tab + widget
- Settings tab
- Artifact type
registry-test-doc+ AI generation - 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-модули.