From db45906aa1196d6044df4b1556357f4f61375f04 Mon Sep 17 00:00:00 2001 From: aramissennyeydd Date: Mon, 10 Nov 2025 14:36:49 -0500 Subject: [PATCH] move to alpha Signed-off-by: aramissennyeydd --- .changeset/old-cats-shake.md | 2 +- packages/backend-defaults/package.json | 4 -- packages/backend-defaults/report-alpha.api.md | 8 ++++ .../backend-defaults/report-discovery.api.md | 6 --- .../report-rootSystemMetadata.api.md | 40 ------------------- .../backend-defaults/src/CreateBackend.ts | 6 --- .../RootSystemMetadataService.test.ts | 3 +- .../entrypoints/rootSystemMetadata/index.ts | 0 .../lib/DefaultRootSystemMetadataService.ts | 6 ++- .../rootSystemMetadataServiceFactory.ts | 3 +- packages/backend-defaults/src/alpha/index.ts | 1 + .../entrypoints/discovery/HostDiscovery.ts | 4 +- packages/backend-plugin-api/report.api.md | 19 --------- .../RootSystemMetadataService.ts | 0 .../backend-plugin-api/src/alpha/index.ts | 14 +++++-- packages/backend-plugin-api/src/alpha/refs.ts | 11 +++++ .../src/services/definitions/coreServices.ts | 11 ----- .../src/services/definitions/index.ts | 4 -- packages/backend-test-utils/report.api.md | 14 ------- .../src/services/mockServices.ts | 26 ------------ .../src/wiring/TestBackend.ts | 1 - packages/backend/src/index.ts | 2 + packages/backend/src/systemMetadataPlugin.ts | 3 +- 23 files changed, 45 insertions(+), 143 deletions(-) delete mode 100644 packages/backend-defaults/report-rootSystemMetadata.api.md rename packages/backend-defaults/src/{ => alpha}/entrypoints/rootSystemMetadata/RootSystemMetadataService.test.ts (96%) rename packages/backend-defaults/src/{ => alpha}/entrypoints/rootSystemMetadata/index.ts (100%) rename packages/backend-defaults/src/{ => alpha}/entrypoints/rootSystemMetadata/lib/DefaultRootSystemMetadataService.ts (94%) rename packages/backend-defaults/src/{ => alpha}/entrypoints/rootSystemMetadata/rootSystemMetadataServiceFactory.ts (91%) rename packages/backend-plugin-api/src/{services/definitions => alpha}/RootSystemMetadataService.ts (100%) diff --git a/.changeset/old-cats-shake.md b/.changeset/old-cats-shake.md index 367e7f2062..5738f6cf86 100644 --- a/.changeset/old-cats-shake.md +++ b/.changeset/old-cats-shake.md @@ -3,4 +3,4 @@ '@backstage/backend-plugin-api': minor --- -Adds a new experimental `SystemMetadataService` for tracking the collection of Backstage instances that may be deployed at any one time. +Adds a new experimental `RootSystemMetadataService` for tracking the collection of Backstage instances that may be deployed at any one time. It currently offers a single API, `getInstalledPlugins` that returns a list of installed plugins based on config you have set up in `discovery.endpoints` as well as the plugins installed on the instance you're calling the API with. It does not handle wildcard values or fallback values. The intention is for this plugin to provide plugin authors with a simple interface to fetch a trustworthy list of all installed plugins. diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 1ebd5de801..042b9497b9 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -33,7 +33,6 @@ "./permissions": "./src/entrypoints/permissions/index.ts", "./rootConfig": "./src/entrypoints/rootConfig/index.ts", "./rootHealth": "./src/entrypoints/rootHealth/index.ts", - "./rootSystemMetadata": "./src/entrypoints/rootSystemMetadata/index.ts", "./rootHttpRouter": "./src/entrypoints/rootHttpRouter/index.ts", "./rootLifecycle": "./src/entrypoints/rootLifecycle/index.ts", "./rootLogger": "./src/entrypoints/rootLogger/index.ts", @@ -86,9 +85,6 @@ "rootHealth": [ "src/entrypoints/rootHealth/index.ts" ], - "rootSystemMetadata": [ - "src/entrypoints/rootSystemMetadata/index.ts" - ], "rootHttpRouter": [ "src/entrypoints/rootHttpRouter/index.ts" ], diff --git a/packages/backend-defaults/report-alpha.api.md b/packages/backend-defaults/report-alpha.api.md index 34f2d1066b..c6316780e5 100644 --- a/packages/backend-defaults/report-alpha.api.md +++ b/packages/backend-defaults/report-alpha.api.md @@ -6,6 +6,7 @@ import { ActionsRegistryService } from '@backstage/backend-plugin-api/alpha'; import { ActionsService } from '@backstage/backend-plugin-api/alpha'; import { InstanceMetadataService } from '@backstage/backend-plugin-api/alpha'; +import { RootSystemMetadataService } from '@backstage/backend-plugin-api/alpha'; import { ServiceFactory } from '@backstage/backend-plugin-api'; // @public (undocumented) @@ -29,5 +30,12 @@ export const instanceMetadataServiceFactory: ServiceFactory< 'singleton' >; +// @alpha +export const rootSystemMetadataServiceFactory: ServiceFactory< + RootSystemMetadataService, + 'root', + 'singleton' +>; + // (No @packageDocumentation comment for this package) ``` diff --git a/packages/backend-defaults/report-discovery.api.md b/packages/backend-defaults/report-discovery.api.md index 260e04a8a3..8617d7d212 100644 --- a/packages/backend-defaults/report-discovery.api.md +++ b/packages/backend-defaults/report-discovery.api.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts -import { Config } from '@backstage/config'; import { DiscoveryService } from '@backstage/backend-plugin-api'; import { LoggerService } from '@backstage/backend-plugin-api'; import { RootConfigService } from '@backstage/backend-plugin-api'; @@ -28,11 +27,6 @@ export class HostDiscovery implements DiscoveryService { // (undocumented) getExternalBaseUrl(pluginId: string): Promise; // (undocumented) - getInstanceAddress(config: Config): { - internal: string; - external: string; - }; - // (undocumented) listResolutions(): Promise< Map< string, diff --git a/packages/backend-defaults/report-rootSystemMetadata.api.md b/packages/backend-defaults/report-rootSystemMetadata.api.md deleted file mode 100644 index f871282826..0000000000 --- a/packages/backend-defaults/report-rootSystemMetadata.api.md +++ /dev/null @@ -1,40 +0,0 @@ -## API Report File for "@backstage/backend-defaults" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts -import { LoggerService } from '@backstage/backend-plugin-api'; -import { RootConfigService } from '@backstage/backend-plugin-api'; -import { RootInstanceMetadataService } from '@backstage/backend-plugin-api'; -import { RootSystemMetadataService } from '@backstage/backend-plugin-api'; -import { RootSystemMetadataServicePluginInfo } from '@backstage/backend-plugin-api'; -import { ServiceFactory } from '@backstage/backend-plugin-api'; - -// @alpha (undocumented) -export class DefaultRootSystemMetadataService - implements RootSystemMetadataService -{ - constructor(options: { - logger: LoggerService; - config: RootConfigService; - instanceMetadata: RootInstanceMetadataService; - }); - // (undocumented) - static create(pluginEnv: { - logger: LoggerService; - config: RootConfigService; - instanceMetadata: RootInstanceMetadataService; - }): DefaultRootSystemMetadataService; - // (undocumented) - getInstalledPlugins(): Promise; -} - -// @alpha -export const rootSystemMetadataServiceFactory: ServiceFactory< - RootSystemMetadataService, - 'root', - 'singleton' ->; - -// (No @packageDocumentation comment for this package) -``` diff --git a/packages/backend-defaults/src/CreateBackend.ts b/packages/backend-defaults/src/CreateBackend.ts index 4b85464640..4b201fded3 100644 --- a/packages/backend-defaults/src/CreateBackend.ts +++ b/packages/backend-defaults/src/CreateBackend.ts @@ -39,8 +39,6 @@ import { actionsRegistryServiceFactory, actionsServiceFactory, } from '@backstage/backend-defaults/alpha'; -import { instanceMetadataServiceFactory } from './alpha/entrypoints/instanceMetadata/instanceMetadataServiceFactory'; -import { rootSystemMetadataServiceFactory } from './entrypoints/rootSystemMetadata'; export const defaultServiceFactories = [ auditorServiceFactory, @@ -63,14 +61,10 @@ export const defaultServiceFactories = [ userInfoServiceFactory, urlReaderServiceFactory, eventsServiceFactory, - rootSystemMetadataServiceFactory, // alpha services actionsRegistryServiceFactory, actionsServiceFactory, - - // Unexported alpha services kept around for compatibility reasons - instanceMetadataServiceFactory, ]; /** diff --git a/packages/backend-defaults/src/entrypoints/rootSystemMetadata/RootSystemMetadataService.test.ts b/packages/backend-defaults/src/alpha/entrypoints/rootSystemMetadata/RootSystemMetadataService.test.ts similarity index 96% rename from packages/backend-defaults/src/entrypoints/rootSystemMetadata/RootSystemMetadataService.test.ts rename to packages/backend-defaults/src/alpha/entrypoints/rootSystemMetadata/RootSystemMetadataService.test.ts index a440828362..13da5ae3c0 100644 --- a/packages/backend-defaults/src/entrypoints/rootSystemMetadata/RootSystemMetadataService.test.ts +++ b/packages/backend-defaults/src/alpha/entrypoints/rootSystemMetadata/RootSystemMetadataService.test.ts @@ -23,6 +23,7 @@ import { import Router from 'express-promise-router'; import request from 'supertest'; import { rootSystemMetadataServiceFactory } from './rootSystemMetadataServiceFactory'; +import { rootSystemMetadataServiceRef } from '@backstage/backend-plugin-api/alpha'; describe('SystemMetadataService', () => { describe('returns plugins from config', () => { @@ -31,7 +32,7 @@ describe('SystemMetadataService', () => { register(reg) { reg.registerInit({ deps: { - systemMetadata: coreServices.rootSystemMetadata, + systemMetadata: rootSystemMetadataServiceRef, rootHttpRouter: coreServices.rootHttpRouter, }, init: async ({ systemMetadata, rootHttpRouter }) => { diff --git a/packages/backend-defaults/src/entrypoints/rootSystemMetadata/index.ts b/packages/backend-defaults/src/alpha/entrypoints/rootSystemMetadata/index.ts similarity index 100% rename from packages/backend-defaults/src/entrypoints/rootSystemMetadata/index.ts rename to packages/backend-defaults/src/alpha/entrypoints/rootSystemMetadata/index.ts diff --git a/packages/backend-defaults/src/entrypoints/rootSystemMetadata/lib/DefaultRootSystemMetadataService.ts b/packages/backend-defaults/src/alpha/entrypoints/rootSystemMetadata/lib/DefaultRootSystemMetadataService.ts similarity index 94% rename from packages/backend-defaults/src/entrypoints/rootSystemMetadata/lib/DefaultRootSystemMetadataService.ts rename to packages/backend-defaults/src/alpha/entrypoints/rootSystemMetadata/lib/DefaultRootSystemMetadataService.ts index be1ab6b818..69bd676fe7 100644 --- a/packages/backend-defaults/src/entrypoints/rootSystemMetadata/lib/DefaultRootSystemMetadataService.ts +++ b/packages/backend-defaults/src/alpha/entrypoints/rootSystemMetadata/lib/DefaultRootSystemMetadataService.ts @@ -18,10 +18,12 @@ import { LoggerService, RootConfigService, RootInstanceMetadataService, +} from '@backstage/backend-plugin-api'; +import { HostDiscovery } from '../../../../entrypoints/discovery'; +import { RootSystemMetadataService, RootSystemMetadataServicePluginInfo, -} from '@backstage/backend-plugin-api'; -import { HostDiscovery } from '../../discovery'; +} from '@backstage/backend-plugin-api/alpha'; /** * @alpha diff --git a/packages/backend-defaults/src/entrypoints/rootSystemMetadata/rootSystemMetadataServiceFactory.ts b/packages/backend-defaults/src/alpha/entrypoints/rootSystemMetadata/rootSystemMetadataServiceFactory.ts similarity index 91% rename from packages/backend-defaults/src/entrypoints/rootSystemMetadata/rootSystemMetadataServiceFactory.ts rename to packages/backend-defaults/src/alpha/entrypoints/rootSystemMetadata/rootSystemMetadataServiceFactory.ts index 62cd8bf3bc..5ee93d03d5 100644 --- a/packages/backend-defaults/src/entrypoints/rootSystemMetadata/rootSystemMetadataServiceFactory.ts +++ b/packages/backend-defaults/src/alpha/entrypoints/rootSystemMetadata/rootSystemMetadataServiceFactory.ts @@ -19,6 +19,7 @@ import { createServiceFactory, } from '@backstage/backend-plugin-api'; import { DefaultRootSystemMetadataService } from './lib/DefaultRootSystemMetadataService'; +import { rootSystemMetadataServiceRef } from '@backstage/backend-plugin-api/alpha'; /** * Metadata about an entire Backstage system, a collection of Backstage instances. @@ -26,7 +27,7 @@ import { DefaultRootSystemMetadataService } from './lib/DefaultRootSystemMetadat * @alpha */ export const rootSystemMetadataServiceFactory = createServiceFactory({ - service: coreServices.rootSystemMetadata, + service: rootSystemMetadataServiceRef, deps: { logger: coreServices.rootLogger, config: coreServices.rootConfig, diff --git a/packages/backend-defaults/src/alpha/index.ts b/packages/backend-defaults/src/alpha/index.ts index da63aef9de..c17e0e71cb 100644 --- a/packages/backend-defaults/src/alpha/index.ts +++ b/packages/backend-defaults/src/alpha/index.ts @@ -16,3 +16,4 @@ export { actionsRegistryServiceFactory } from './entrypoints/actionsRegistry'; export { actionsServiceFactory } from './entrypoints/actions'; +export { rootSystemMetadataServiceFactory } from './entrypoints/rootSystemMetadata'; diff --git a/packages/backend-defaults/src/entrypoints/discovery/HostDiscovery.ts b/packages/backend-defaults/src/entrypoints/discovery/HostDiscovery.ts index bb2e002b0d..34b521b310 100644 --- a/packages/backend-defaults/src/entrypoints/discovery/HostDiscovery.ts +++ b/packages/backend-defaults/src/entrypoints/discovery/HostDiscovery.ts @@ -214,7 +214,7 @@ export class HostDiscovery implements DiscoveryService { return _targets; } - getInstanceAddress(config: Config) { + #getInstanceAddress(config: Config) { const backendBaseUrl = trimEnd(config.getString('backend.baseUrl'), '/'); const { @@ -248,7 +248,7 @@ export class HostDiscovery implements DiscoveryService { } #updateFallbackResolvers(config: Config) { - const { internal, external } = this.getInstanceAddress(config); + const { internal, external } = this.#getInstanceAddress(config); this.#internalFallbackResolver = this.#makeResolver( `${internal}/api/{{pluginId}}`, diff --git a/packages/backend-plugin-api/report.api.md b/packages/backend-plugin-api/report.api.md index 17a407a4eb..c46ed254c8 100644 --- a/packages/backend-plugin-api/report.api.md +++ b/packages/backend-plugin-api/report.api.md @@ -237,11 +237,6 @@ export namespace coreServices { 'root', 'singleton' >; - const rootSystemMetadata: ServiceRef< - RootSystemMetadataService, - 'root', - 'singleton' - >; } // @public @@ -633,20 +628,6 @@ export interface RootServiceFactoryOptions< service: ServiceRef; } -// @public (undocumented) -export interface RootSystemMetadataService { - // (undocumented) - getInstalledPlugins: () => Promise< - ReadonlyArray - >; -} - -// @public (undocumented) -export interface RootSystemMetadataServicePluginInfo { - // (undocumented) - readonly pluginId: string; -} - // @public export interface SchedulerService { createScheduledTaskRunner( diff --git a/packages/backend-plugin-api/src/services/definitions/RootSystemMetadataService.ts b/packages/backend-plugin-api/src/alpha/RootSystemMetadataService.ts similarity index 100% rename from packages/backend-plugin-api/src/services/definitions/RootSystemMetadataService.ts rename to packages/backend-plugin-api/src/alpha/RootSystemMetadataService.ts diff --git a/packages/backend-plugin-api/src/alpha/index.ts b/packages/backend-plugin-api/src/alpha/index.ts index 815b0ac8f9..f61e2bbaf1 100644 --- a/packages/backend-plugin-api/src/alpha/index.ts +++ b/packages/backend-plugin-api/src/alpha/index.ts @@ -14,6 +14,11 @@ * limitations under the License. */ +export type { + RootSystemMetadataServicePluginInfo, + RootSystemMetadataService, +} from './RootSystemMetadataService'; + export type { ActionsRegistryService, ActionsRegistryActionOptions, @@ -22,11 +27,12 @@ export type { export type { ActionsService, ActionsServiceAction } from './ActionsService'; -export { actionsRegistryServiceRef, actionsServiceRef } from './refs'; - -import { createServiceRef } from '@backstage/backend-plugin-api'; - export type { BackstageInstance, SystemMetadataService, } from './services/definitions/SystemMetadataService'; +export { + actionsRegistryServiceRef, + actionsServiceRef, + rootSystemMetadataServiceRef, +} from './refs'; diff --git a/packages/backend-plugin-api/src/alpha/refs.ts b/packages/backend-plugin-api/src/alpha/refs.ts index cfbb215615..a890271364 100644 --- a/packages/backend-plugin-api/src/alpha/refs.ts +++ b/packages/backend-plugin-api/src/alpha/refs.ts @@ -45,3 +45,14 @@ export const actionsRegistryServiceRef = createServiceRef< >({ id: 'alpha.core.actionsRegistry', }); + +/** + * Read information about your current Backstage deployment. + * @alpha + */ +export const rootSystemMetadataServiceRef = createServiceRef< + import('./RootSystemMetadataService').RootSystemMetadataService +>({ + id: 'alpha.core.rootSystemMetadata', + scope: 'root', +}); diff --git a/packages/backend-plugin-api/src/services/definitions/coreServices.ts b/packages/backend-plugin-api/src/services/definitions/coreServices.ts index e5ad69e871..887b05ee4e 100644 --- a/packages/backend-plugin-api/src/services/definitions/coreServices.ts +++ b/packages/backend-plugin-api/src/services/definitions/coreServices.ts @@ -289,15 +289,4 @@ export namespace coreServices { id: 'core.rootInstanceMetadata', scope: 'root', }); - - /** - * Read information about your current Backstage deployment. - * @public - */ - export const rootSystemMetadata = createServiceRef< - import('./RootSystemMetadataService').RootSystemMetadataService - >({ - id: 'core.rootSystemMetadata', - scope: 'root', - }); } diff --git a/packages/backend-plugin-api/src/services/definitions/index.ts b/packages/backend-plugin-api/src/services/definitions/index.ts index d12395b636..6bcee4b043 100644 --- a/packages/backend-plugin-api/src/services/definitions/index.ts +++ b/packages/backend-plugin-api/src/services/definitions/index.ts @@ -72,10 +72,6 @@ export type { SchedulerServiceTaskScheduleDefinition, SchedulerServiceTaskScheduleDefinitionConfig, } from './SchedulerService'; -export type { - RootSystemMetadataServicePluginInfo, - RootSystemMetadataService, -} from './RootSystemMetadataService'; export type { UrlReaderService, UrlReaderServiceReadTreeOptions, diff --git a/packages/backend-test-utils/report.api.md b/packages/backend-test-utils/report.api.md index bfa46a3725..0dd46c30ac 100644 --- a/packages/backend-test-utils/report.api.md +++ b/packages/backend-test-utils/report.api.md @@ -38,7 +38,6 @@ import { RootHttpRouterService } from '@backstage/backend-plugin-api'; import { RootInstanceMetadataService } from '@backstage/backend-plugin-api'; import { RootLifecycleService } from '@backstage/backend-plugin-api'; import { RootLoggerService } from '@backstage/backend-plugin-api'; -import { RootSystemMetadataService } from '@backstage/backend-plugin-api'; import { SchedulerService } from '@backstage/backend-plugin-api'; import { ServiceFactory } from '@backstage/backend-plugin-api'; import { ServiceRef } from '@backstage/backend-plugin-api'; @@ -383,19 +382,6 @@ export namespace mockServices { ) => ServiceMock; } // (undocumented) - export function rootSystemMetadata(): RootSystemMetadataService; - // (undocumented) - export namespace rootSystemMetadata { - const factory: () => ServiceFactory< - RootSystemMetadataService, - 'root', - 'singleton' | 'multiton' - >; - const mock: ( - partialImpl?: Partial | undefined, - ) => ServiceMock; - } - // (undocumented) export function scheduler(): SchedulerService; // (undocumented) export namespace scheduler { diff --git a/packages/backend-test-utils/src/services/mockServices.ts b/packages/backend-test-utils/src/services/mockServices.ts index 0c19bf40ca..d37c82fa6c 100644 --- a/packages/backend-test-utils/src/services/mockServices.ts +++ b/packages/backend-test-utils/src/services/mockServices.ts @@ -43,8 +43,6 @@ import { UserInfoService, coreServices, createServiceFactory, - RootLoggerService, - RootSystemMetadataService, } from '@backstage/backend-plugin-api'; import { ConfigReader } from '@backstage/config'; import { EventsService, eventsServiceRef } from '@backstage/plugin-events-node'; @@ -574,28 +572,4 @@ export namespace mockServices { rootInstanceMetadata, ); } - - export function rootSystemMetadata(): RootSystemMetadataService { - return { - getInstalledPlugins: () => Promise.resolve([]), - }; - } - export namespace rootSystemMetadata { - /** - * Creates a functional mock factory for the - * {@link @backstage/backend-plugin-api#coreServices.systemMetadata}. - */ - export const factory = simpleFactoryWithOptions( - coreServices.rootSystemMetadata, - rootSystemMetadata, - ); - /** - * Creates a mock of the - * {@link @backstage/backend-events-node#systemMetadata}, optionally - * with some given method implementations. - */ - export const mock = simpleMock(coreServices.rootSystemMetadata, () => ({ - getInstalledPlugins: jest.fn(), - })); - } } diff --git a/packages/backend-test-utils/src/wiring/TestBackend.ts b/packages/backend-test-utils/src/wiring/TestBackend.ts index 3dc1472fba..cdfa1fc695 100644 --- a/packages/backend-test-utils/src/wiring/TestBackend.ts +++ b/packages/backend-test-utils/src/wiring/TestBackend.ts @@ -88,7 +88,6 @@ export const defaultServiceFactories = [ mockServices.userInfo.factory(), mockServices.urlReader.factory(), mockServices.events.factory(), - mockServices.rootSystemMetadata.factory(), // Alpha services actionsRegistryServiceMock.factory(), diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 8f8fd106d6..b4d2862d6f 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -15,6 +15,7 @@ */ import { createBackend } from '@backstage/backend-defaults'; +import { rootSystemMetadataServiceFactory } from '@backstage/backend-defaults/alpha'; import { coreServices, createBackendFeatureLoader, @@ -70,6 +71,7 @@ backend.add(import('@backstage/plugin-techdocs-backend')); backend.add(import('@backstage/plugin-signals-backend')); backend.add(import('@backstage/plugin-notifications-backend')); backend.add(import('./systemMetadataPlugin')); +backend.add(rootSystemMetadataServiceFactory); backend.add(import('@backstage/plugin-events-backend-module-google-pubsub')); backend.add(import('@backstage/plugin-mcp-actions-backend')); diff --git a/packages/backend/src/systemMetadataPlugin.ts b/packages/backend/src/systemMetadataPlugin.ts index 434e708073..df74962d6f 100644 --- a/packages/backend/src/systemMetadataPlugin.ts +++ b/packages/backend/src/systemMetadataPlugin.ts @@ -18,6 +18,7 @@ import { coreServices, createBackendPlugin, } from '@backstage/backend-plugin-api'; +import { rootSystemMetadataServiceRef } from '@backstage/backend-plugin-api/alpha'; import Router from 'express-promise-router'; /** @@ -29,7 +30,7 @@ export default createBackendPlugin({ register: reg => { reg.registerInit({ deps: { - systemMetadata: coreServices.rootSystemMetadata, + systemMetadata: rootSystemMetadataServiceRef, rootHttpRouter: coreServices.rootHttpRouter, }, async init({ systemMetadata, rootHttpRouter }) {