


























@@ -9,10 +9,14 @@ vi.mock("./manifest-registry.js", () => ({
99}));
10101111let resolveManifestActivationPluginIds: typeof import("./activation-planner.js").resolveManifestActivationPluginIds;
12+let resolveManifestActivationPlan: typeof import("./activation-planner.js").resolveManifestActivationPlan;
13+let PLUGIN_COMPAT_REASON: typeof import("./compat-reasons.js").PLUGIN_COMPAT_REASON;
12141315describe("resolveManifestActivationPluginIds", () => {
1416beforeAll(async () => {
15-({ resolveManifestActivationPluginIds } = await import("./activation-planner.js"));
17+({ resolveManifestActivationPluginIds, resolveManifestActivationPlan } =
18+await import("./activation-planner.js"));
19+({ PLUGIN_COMPAT_REASON } = await import("./compat-reasons.js"));
1620});
17211822beforeEach(() => {
@@ -70,6 +74,20 @@ describe("resolveManifestActivationPluginIds", () => {
7074},
7175origin: "workspace",
7276},
77+{
78+id: "legacy-activation-only",
79+providers: [],
80+activation: {
81+onProviders: ["legacy-provider"],
82+onChannels: ["legacy-channel"],
83+onCapabilities: ["tool"],
84+},
85+channels: [],
86+cliBackends: [],
87+skills: [],
88+hooks: [],
89+origin: "workspace",
90+},
7391],
7492diagnostics: [],
7593});
@@ -168,7 +186,7 @@ describe("resolveManifestActivationPluginIds", () => {
168186capability: "tool",
169187},
170188}),
171-).toEqual(["demo-channel"]);
189+).toEqual(["demo-channel", "legacy-activation-only"]);
172190173191expect(
174192resolveManifestActivationPluginIds({
@@ -191,4 +209,96 @@ describe("resolveManifestActivationPluginIds", () => {
191209}),
192210).toEqual([]);
193211});
212+213+it("reports legacy activation field compat reasons without changing plugin-id resolution", () => {
214+expect(
215+resolveManifestActivationPlan({
216+trigger: {
217+kind: "command",
218+command: "demo-tools",
219+},
220+}),
221+).toEqual({
222+pluginIds: ["demo-channel"],
223+entries: [
224+{
225+pluginId: "demo-channel",
226+reasons: ["command:demo-tools"],
227+compatReasons: [PLUGIN_COMPAT_REASON.legacyActivationField],
228+},
229+],
230+compatReasons: {
231+"demo-channel": [PLUGIN_COMPAT_REASON.legacyActivationField],
232+},
233+});
234+235+expect(
236+resolveManifestActivationPlan({
237+trigger: {
238+kind: "provider",
239+provider: "legacy-provider",
240+},
241+}).compatReasons,
242+).toEqual({
243+"legacy-activation-only": [PLUGIN_COMPAT_REASON.legacyActivationField],
244+});
245+246+expect(
247+resolveManifestActivationPluginIds({
248+trigger: {
249+kind: "provider",
250+provider: "legacy-provider",
251+},
252+}),
253+).toEqual(["legacy-activation-only"]);
254+});
255+256+it("does not report compat reasons for stable ownership metadata", () => {
257+expect(
258+resolveManifestActivationPlan({
259+trigger: {
260+kind: "provider",
261+provider: "openai",
262+},
263+}),
264+).toEqual({
265+pluginIds: ["openai"],
266+entries: [
267+{
268+pluginId: "openai",
269+reasons: ["provider:openai"],
270+compatReasons: [],
271+},
272+],
273+compatReasons: {},
274+});
275+});
276+277+it("reports legacy activation capability hints separately from stable capabilities", () => {
278+expect(
279+resolveManifestActivationPlan({
280+trigger: {
281+kind: "capability",
282+capability: "tool",
283+},
284+}),
285+).toEqual({
286+pluginIds: ["demo-channel", "legacy-activation-only"],
287+entries: [
288+{
289+pluginId: "demo-channel",
290+reasons: ["capability:tool"],
291+compatReasons: [],
292+},
293+{
294+pluginId: "legacy-activation-only",
295+reasons: ["capability:tool"],
296+compatReasons: [PLUGIN_COMPAT_REASON.legacyActivationField],
297+},
298+],
299+compatReasons: {
300+"legacy-activation-only": [PLUGIN_COMPAT_REASON.legacyActivationField],
301+},
302+});
303+});
194304});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。