From 983bac7afacd1ea813a171c24e0ff2057893ff6e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 27 Apr 2026 09:16:34 +0100 Subject: [PATCH] fix(plugins): keep registry lookup types acyclic --- docs/.i18n/glossary.zh-CN.json | 12 ++++++++++++ src/plugins/activation-planner.test.ts | 2 +- src/plugins/plugin-registry-contributions.ts | 18 +++++++++++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/docs/.i18n/glossary.zh-CN.json b/docs/.i18n/glossary.zh-CN.json index f48391bc82f..a62ac11e1da 100644 --- a/docs/.i18n/glossary.zh-CN.json +++ b/docs/.i18n/glossary.zh-CN.json @@ -379,6 +379,10 @@ "source": "Plugin SDK", "target": "插件 SDK" }, + { + "source": "Plugins", + "target": "插件" + }, { "source": "Building plugins", "target": "构建插件" @@ -439,6 +443,14 @@ "source": "Migrate", "target": "迁移" }, + { + "source": "Migrating", + "target": "迁移" + }, + { + "source": "Migrating from Hermes", + "target": "从 Hermes 迁移" + }, { "source": "Migration", "target": "迁移" diff --git a/src/plugins/activation-planner.test.ts b/src/plugins/activation-planner.test.ts index ce72e58ce5c..372b0709754 100644 --- a/src/plugins/activation-planner.test.ts +++ b/src/plugins/activation-planner.test.ts @@ -4,7 +4,7 @@ const mocks = vi.hoisted(() => ({ loadPluginManifestRegistryForPluginRegistry: vi.fn(), })); -vi.mock("./plugin-registry.js", () => ({ +vi.mock("./plugin-registry-contributions.js", () => ({ loadPluginManifestRegistryForPluginRegistry: (...args: unknown[]) => mocks.loadPluginManifestRegistryForPluginRegistry(...args), })); diff --git a/src/plugins/plugin-registry-contributions.ts b/src/plugins/plugin-registry-contributions.ts index 0e0c9a20fb0..324af2b606b 100644 --- a/src/plugins/plugin-registry-contributions.ts +++ b/src/plugins/plugin-registry-contributions.ts @@ -12,7 +12,6 @@ import type { PluginManifestRecord, PluginManifestRegistry, } from "./manifest-registry.js"; -import type { PluginLookUpTable } from "./plugin-lookup-table.js"; import type { PluginOrigin } from "./plugin-origin.types.js"; import { loadPluginRegistrySnapshot, @@ -20,6 +19,23 @@ import { type PluginRegistrySnapshot, } from "./plugin-registry-snapshot.js"; +export type PluginLookUpTable = { + index: PluginRegistrySnapshot; + manifestRegistry: PluginManifestRegistry; + plugins: readonly PluginManifestRecord[]; + normalizePluginId: (pluginId: string) => string; + owners: { + channels: ReadonlyMap; + channelConfigs: ReadonlyMap; + providers: ReadonlyMap; + modelCatalogProviders: ReadonlyMap; + cliBackends: ReadonlyMap; + setupProviders: ReadonlyMap; + commandAliases: ReadonlyMap; + contracts: ReadonlyMap; + }; +}; + export type PluginRegistryContributionOptions = LoadPluginRegistryParams & { includeDisabled?: boolean; lookUpTable?: PluginLookUpTable;