@theia/ai-ide 1.75.0-next.43 → 1.75.0-next.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,7 @@
1
1
  import { Agent, AgentService } from '@theia/ai-core';
2
2
  import { SkillService } from '@theia/ai-core/lib/browser/skill-service';
3
+ import { AgentPluginUiBridge, InstalledAgentPluginInfo } from '@theia/ai-core/lib/browser/agent-plugin-ui-bridge';
4
+ import { SkillRegistryUiBridge } from '@theia/ai-core/lib/browser/skill-registry-ui-bridge';
3
5
  import { Skill } from '@theia/ai-core/lib/common/skill';
4
6
  import { PromptFragment, PromptService } from '@theia/ai-core/lib/common/prompt-service';
5
7
  import { Emitter, Event, ILogger } from '@theia/core';
@@ -11,6 +13,7 @@ import { AiConfigurationCategory, AiConfigurationRenderContext, AiConfigurationS
11
13
  import { SinglePageCategoryRenderer } from '@theia/ai-core-ui/lib/browser/ai-configuration/renderers/single-page-category-renderer';
12
14
  import { AiSettingsRowService } from '@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-settings-row-service';
13
15
  import { CollapsibleRow } from '@theia/ai-core-ui/lib/browser/ai-configuration/components/collapsible-list';
16
+ import { AiConfigurationOrigin } from '@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-configuration-origin-badge';
14
17
  /**
15
18
  * The "Skills & Slash Commands" category: a `single-page` category that lists skills (file-based
16
19
  * `SKILL.md` units) and slash commands (prompt fragments with command metadata) as filterable,
@@ -31,6 +34,8 @@ export declare class PromptsAndSkillsConfigurationCategory extends SinglePageCat
31
34
  protected readonly settingsRowService: AiSettingsRowService;
32
35
  protected readonly clipboardService: ClipboardService;
33
36
  protected readonly logger: ILogger;
37
+ protected readonly agentPluginUiBridge?: AgentPluginUiBridge;
38
+ protected readonly skillRegistryUiBridge?: SkillRegistryUiBridge;
34
39
  protected readonly onDidChangeEmitter: Emitter<void>;
35
40
  readonly onDidChange: Event<void>;
36
41
  protected readonly toDispose: DisposableCollection;
@@ -61,6 +66,19 @@ export declare class PromptsAndSkillsConfigurationCategory extends SinglePageCat
61
66
  protected getSkillCapableAgents(): Agent[];
62
67
  protected templateSurfacesSkills(fragmentId: string, visited: Set<string>): boolean;
63
68
  protected openSkill(skill: Skill): void;
69
+ /**
70
+ * The registry entry a skill was installed from, or the Agent Plugin that contributed it - never
71
+ * both: the registry installs a skill into a root of its own, a plugin ships it inside the plugin.
72
+ * Empty for a workspace or configured skill, which is the common case, and always empty without
73
+ * `@theia/ai-registry`, which binds both bridges.
74
+ */
75
+ protected getSkillOrigins(skill: Skill): AiConfigurationOrigin[] | undefined;
76
+ /**
77
+ * The Agent Plugin a skill was contributed by, or `undefined` for a skill from a built-in root - the
78
+ * common case - and for a qualifier belonging to no installed plugin: a bare qualifier is worth neither
79
+ * a label nor a reveal action. Always `undefined` without `@theia/ai-registry`, which binds the bridge.
80
+ */
81
+ protected getOwningPlugin(skill: Skill): InstalledAgentPluginInfo | undefined;
64
82
  getSearchItems(): AiConfigurationSearchItem[];
65
83
  }
66
84
  //# sourceMappingURL=prompts-and-skills-configuration-category.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts-and-skills-configuration-category.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/prompts-and-skills-configuration-category.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts-and-skills-configuration-category.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/prompts-and-skills-configuration-category.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAC;AAClH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAA8B,cAAc,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACrH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAY,MAAM,aAAa,CAAC;AAChE,OAAO,EAAiB,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EACH,uBAAuB,EAGvB,4BAA4B,EAC5B,yBAAyB,EACzB,6BAA6B,EAChC,MAAM,0EAA0E,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wFAAwF,CAAC;AAOpI,OAAO,EAAE,oBAAoB,EAAE,MAAM,mFAAmF,CAAC;AACzH,OAAO,EAGH,cAAc,EAEjB,MAAM,4EAA4E,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yFAAyF,CAAC;AAMhI;;;;;GAKG;AACH,qBACa,qCAAsC,SAAQ,0BAA2B,YAAW,uBAAuB,EAAE,6BAA6B;IAEnJ,QAAQ,CAAC,EAAE,wBAAgD;IAC3D,QAAQ,CAAC,KAAK,SAA+F;IAC7G,QAAQ,CAAC,WAAW,SACyH;IAC7I,QAAQ,CAAC,SAAS,SAA2B;IAC7C,QAAQ,CAAC,KAAK,OAAmD;IACjE,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IAGvC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAG9C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAG9C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IAG5D,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGnC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAG7D,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAEjE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,gBAAuB;IAC5D,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAiC;IAClE,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAAqD;IAEjF,SAAS,CAAC,eAAe,EAAE,KAAK,EAAE,CAAM;IACxC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,CAAM;IAC/B,SAAS,CAAC,aAAa,EAAE,cAAc,EAAE,CAAM;IAE/C,IAAI,QAAQ,IAAI,IAAI,CAEnB;IAED,qBAAqB,IAAI,MAAM,EAAE;IAIjC,IAAI,MAAM,IAAI,6BAA6B,CAE1C;IAGD,SAAS,CAAC,IAAI,IAAI,IAAI;IA6BtB,OAAO,IAAI,IAAI;IAIf,SAAS,CAAC,UAAU,IAAI,IAAI;IAI5B,SAAS,CAAC,UAAU,IAAI,IAAI;IAK5B,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAOnC,+EAA+E;IAC/E,SAAS,CAAC,SAAS,GAAI,OAAO,MAAM,KAAG,IAAI,CAIzC;IAEF,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,KAAK,EAAE;IAO/D,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,4BAA4B,GAAG,KAAK,CAAC,SAAS;IA0C5E,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc;IA+CrD,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,cAAc;IAwC1G,2GAA2G;IAC3G,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IASpD;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,IAAI,KAAK,EAAE;IAO1C,SAAS,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO;IAuBnF,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIvC;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,qBAAqB,EAAE,GAAG,SAAS;IAY5E;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,wBAAwB,GAAG,SAAS;IAK7E,cAAc,IAAI,yBAAyB,EAAE;CAyBhD"}
@@ -22,6 +22,9 @@ const ai_core_1 = require("@theia/ai-core");
22
22
  const common_1 = require("@theia/ai-core/lib/common");
23
23
  const ai_core_preferences_1 = require("@theia/ai-core/lib/common/ai-core-preferences");
24
24
  const skill_service_1 = require("@theia/ai-core/lib/browser/skill-service");
25
+ const agent_plugin_ui_bridge_1 = require("@theia/ai-core/lib/browser/agent-plugin-ui-bridge");
26
+ const skill_registry_ui_bridge_1 = require("@theia/ai-core/lib/browser/skill-registry-ui-bridge");
27
+ const skill_1 = require("@theia/ai-core/lib/common/skill");
25
28
  const prompt_service_1 = require("@theia/ai-core/lib/common/prompt-service");
26
29
  const core_1 = require("@theia/core");
27
30
  const browser_1 = require("@theia/core/lib/browser");
@@ -34,6 +37,7 @@ const ai_configuration_primitives_1 = require("@theia/ai-core-ui/lib/browser/ai-
34
37
  const ai_settings_row_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-settings-row");
35
38
  const ai_settings_row_service_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-settings-row-service");
36
39
  const collapsible_list_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/components/collapsible-list");
40
+ const ai_configuration_origin_badge_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-configuration-origin-badge");
37
41
  const agent_chips_1 = require("./agent-chips");
38
42
  const SKILL_ROW_PREFIX = 'skill:';
39
43
  const COMMAND_ROW_PREFIX = 'cmd:';
@@ -92,6 +96,14 @@ let PromptsAndSkillsConfigurationCategory = class PromptsAndSkillsConfigurationC
92
96
  }),
93
97
  this.settingsRowService.onPreferenceChanged(() => this.onDidChangeEmitter.fire())
94
98
  ]);
99
+ if (this.agentPluginUiBridge) {
100
+ // The plugin names come from the bridge, so installing one changes this page even when the skills do not.
101
+ this.toDispose.push(this.agentPluginUiBridge.onDidChange(() => this.onDidChangeEmitter.fire()));
102
+ }
103
+ if (this.skillRegistryUiBridge) {
104
+ // Likewise: linking or unlinking a skill folder changes its provenance, not the skill itself.
105
+ this.toDispose.push(this.skillRegistryUiBridge.onDidChange(() => this.onDidChangeEmitter.fire()));
106
+ }
95
107
  }
96
108
  dispose() {
97
109
  this.toDispose.dispose();
@@ -100,7 +112,8 @@ let PromptsAndSkillsConfigurationCategory = class PromptsAndSkillsConfigurationC
100
112
  this.availableAgents = this.agentService.getAllAgents();
101
113
  }
102
114
  loadSkills() {
103
- this.skills = this.skillService.getSkills().sort((a, b) => a.name.localeCompare(b.name));
115
+ // Sorted and keyed by the qualified name: it is what the model addresses and the only name unique across roots.
116
+ this.skills = this.skillService.getSkills().sort((a, b) => a.qualifiedName.localeCompare(b.qualifiedName));
104
117
  }
105
118
  loadSlashCommands() {
106
119
  // Skills are surfaced as synthetic `skill-command-*` fragments; they are shown as skills, not duplicated here.
@@ -139,16 +152,19 @@ let PromptsAndSkillsConfigurationCategory = class PromptsAndSkillsConfigurationC
139
152
  buildSkillRow(skill) {
140
153
  const tools = skill.allowedTools ?? [];
141
154
  const metadata = skill.metadata ? Object.entries(skill.metadata) : [];
155
+ const plugin = this.getOwningPlugin(skill);
156
+ const origins = this.getSkillOrigins(skill);
142
157
  const pills = [];
143
158
  if (tools.length > 0) {
144
159
  pills.push(core_1.nls.localizeByDefault('{0} tools', tools.length));
145
160
  }
146
161
  return {
147
- id: SKILL_ROW_PREFIX + skill.name,
148
- title: skill.name,
162
+ id: SKILL_ROW_PREFIX + skill.qualifiedName,
163
+ title: skill.qualifiedName,
149
164
  description: skill.description,
150
165
  pills,
151
- filterText: `${skill.name} ${skill.description ?? ''}`.toLocaleLowerCase(),
166
+ origins,
167
+ filterText: `${skill.qualifiedName} ${skill.description ?? ''} ${plugin?.name ?? ''}`.toLocaleLowerCase(),
152
168
  actions: (0, jsx_runtime_1.jsx)(collapsible_list_1.CollapsibleRowAction, { iconClass: (0, browser_1.codicon)('edit'), label: core_1.nls.localize('theia/ai/ide/skillsConfiguration/openSkillFile', 'Open SKILL.md'), onActivate: () => this.openSkill(skill) }),
153
169
  body: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationValueRow, { label: core_1.nls.localizeByDefault('Location'), value: skill.location, onCopy: this.copyValue }), (skill.license || skill.compatibility || metadata.length > 0) && (0, jsx_runtime_1.jsxs)("div", { className: 'ai-variable-section', children: [(0, jsx_runtime_1.jsx)("div", { className: 'ai-variable-section-label', children: core_1.nls.localize('theia/ai/ide/skillsConfiguration/frontmatter', 'Frontmatter') }), skill.license && (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationValueRow, { label: core_1.nls.localizeByDefault('License'), value: skill.license, onCopy: this.copyValue }), skill.compatibility && (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationValueRow, { label: core_1.nls.localize('theia/ai/ide/skillsConfiguration/compatibility', 'Compatibility'), value: skill.compatibility, onCopy: this.copyValue }), metadata.map(([key, value]) => (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationValueRow, { label: key, value: value, onCopy: this.copyValue }, key))] }), (0, jsx_runtime_1.jsxs)("div", { className: 'ai-variable-section', children: [(0, jsx_runtime_1.jsx)("div", { className: 'ai-variable-section-label', children: core_1.nls.localizeByDefault('Allowed tools') }), tools.length === 0
154
170
  ? (0, jsx_runtime_1.jsx)("div", { className: 'ai-variable-section-note', children: core_1.nls.localize('theia/ai/ide/skillsConfiguration/noAllowedTools', 'No allowed tools declared. The skill may use any tool the agent already has.') })
@@ -221,17 +237,44 @@ let PromptsAndSkillsConfigurationCategory = class PromptsAndSkillsConfigurationC
221
237
  openSkill(skill) {
222
238
  (0, browser_1.open)(this.openerService, core_1.URI.fromFilePath(skill.location));
223
239
  }
240
+ /**
241
+ * The registry entry a skill was installed from, or the Agent Plugin that contributed it - never
242
+ * both: the registry installs a skill into a root of its own, a plugin ships it inside the plugin.
243
+ * Empty for a workspace or configured skill, which is the common case, and always empty without
244
+ * `@theia/ai-registry`, which binds both bridges.
245
+ */
246
+ getSkillOrigins(skill) {
247
+ const plugin = this.getOwningPlugin(skill);
248
+ if (plugin) {
249
+ return [ai_configuration_origin_badge_1.AiConfigurationOrigin.agentPlugin(plugin, () => this.agentPluginUiBridge?.revealPlugin(plugin.pluginId))];
250
+ }
251
+ const entryId = this.skillRegistryUiBridge?.getRegistryEntryId(skill);
252
+ if (entryId) {
253
+ return [ai_configuration_origin_badge_1.AiConfigurationOrigin.registry(entryId, () => this.skillRegistryUiBridge?.revealSkill(entryId))];
254
+ }
255
+ return undefined;
256
+ }
257
+ /**
258
+ * The Agent Plugin a skill was contributed by, or `undefined` for a skill from a built-in root - the
259
+ * common case - and for a qualifier belonging to no installed plugin: a bare qualifier is worth neither
260
+ * a label nor a reveal action. Always `undefined` without `@theia/ai-registry`, which binds the bridge.
261
+ */
262
+ getOwningPlugin(skill) {
263
+ const qualifier = skill_1.Skill.qualifierOf(skill);
264
+ return qualifier ? this.agentPluginUiBridge?.getPluginByQualifier(qualifier) : undefined;
265
+ }
224
266
  getSearchItems() {
225
267
  const items = [];
226
268
  const skillLabel = core_1.nls.localizeByDefault('Skill');
227
269
  const slashCommandLabel = core_1.nls.localize('theia/ai/ide/skillsConfiguration/slashCommandsSectionHeader', 'Slash Commands');
228
270
  for (const skill of this.skills) {
229
271
  items.push({
230
- label: skill.name,
272
+ label: skill.qualifiedName,
231
273
  typeLabel: skillLabel,
232
274
  categoryId: this.id,
233
- target: { categoryId: this.id, highlight: { rowId: SKILL_ROW_PREFIX + skill.name } },
234
- keywords: skill.description ?? ''
275
+ target: { categoryId: this.id, highlight: { rowId: SKILL_ROW_PREFIX + skill.qualifiedName } },
276
+ // The unqualified name too: a skill contributed by a plugin is still looked up by the name in its SKILL.md.
277
+ keywords: `${skill.name} ${skill.description ?? ''}`
235
278
  });
236
279
  }
237
280
  for (const command of this.slashCommands) {
@@ -276,6 +319,16 @@ tslib_1.__decorate([
276
319
  (0, inversify_1.named)('ai-ide:PromptsAndSkillsConfigurationCategory'),
277
320
  tslib_1.__metadata("design:type", Object)
278
321
  ], PromptsAndSkillsConfigurationCategory.prototype, "logger", void 0);
322
+ tslib_1.__decorate([
323
+ (0, inversify_1.inject)(agent_plugin_ui_bridge_1.AgentPluginUiBridge),
324
+ (0, inversify_1.optional)(),
325
+ tslib_1.__metadata("design:type", Object)
326
+ ], PromptsAndSkillsConfigurationCategory.prototype, "agentPluginUiBridge", void 0);
327
+ tslib_1.__decorate([
328
+ (0, inversify_1.inject)(skill_registry_ui_bridge_1.SkillRegistryUiBridge),
329
+ (0, inversify_1.optional)(),
330
+ tslib_1.__metadata("design:type", Object)
331
+ ], PromptsAndSkillsConfigurationCategory.prototype, "skillRegistryUiBridge", void 0);
279
332
  tslib_1.__decorate([
280
333
  (0, inversify_1.postConstruct)(),
281
334
  tslib_1.__metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"prompts-and-skills-configuration-category.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/prompts-and-skills-configuration-category.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts-and-skills-configuration-category.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/prompts-and-skills-configuration-category.tsx"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ let disableJSDOM = (0, jsdom_1.enableJSDOM)();
20
20
  const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
21
21
  frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
22
22
  const chai_1 = require("chai");
23
+ const core_1 = require("@theia/core");
23
24
  const ai_configuration_category_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/ai-configuration-category");
24
25
  const prompts_and_skills_configuration_category_1 = require("./prompts-and-skills-configuration-category");
25
26
  disableJSDOM();
@@ -34,13 +35,52 @@ describe('PromptsAndSkillsConfigurationCategory', () => {
34
35
  category.slashCommands = slashCommands;
35
36
  return category;
36
37
  }
38
+ /** Leaves the bridge unbound when `installedPlugins` is omitted, i.e. a product without `@theia/ai-registry`. */
39
+ function categoryWithPlugins(skills, installedPlugins, revealed = []) {
40
+ const category = categoryWith(skills, []);
41
+ if (installedPlugins) {
42
+ const bridge = {
43
+ getPlugin: pluginId => installedPlugins.find(plugin => plugin.pluginId === pluginId),
44
+ getPluginByQualifier: qualifier => installedPlugins.find(plugin => plugin.qualifier === qualifier),
45
+ revealPlugin: pluginId => { revealed.push(pluginId); },
46
+ onDidChange: core_1.Event.None
47
+ };
48
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
+ category.agentPluginUiBridge = bridge;
50
+ }
51
+ return category;
52
+ }
53
+ /**
54
+ * Leaves the bridge unbound when `managed` is omitted. `managed` maps a skill location to the
55
+ * registry entry it was installed from, which is how the real bridge keys them.
56
+ */
57
+ function categoryWithRegistrySkills(skills, managed, revealed = []) {
58
+ const category = categoryWith(skills, []);
59
+ if (managed) {
60
+ const bridge = {
61
+ getRegistryEntryId: forSkill => managed[forSkill.location],
62
+ revealSkill: skillId => { revealed.push(skillId); },
63
+ onDidChange: core_1.Event.None
64
+ };
65
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
66
+ category.skillRegistryUiBridge = bridge;
67
+ }
68
+ return category;
69
+ }
70
+ function skillRow(category, forSkill) {
71
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
72
+ return category.buildSkillRow(forSkill);
73
+ }
74
+ function skill(overrides) {
75
+ return { name: 'query-builder', qualifiedName: 'query-builder', description: 'Build SQL', location: '/skills/query-builder/SKILL.md', ...overrides };
76
+ }
37
77
  it('declares the skills and slash commands single-page metadata', () => {
38
78
  const category = new prompts_and_skills_configuration_category_1.PromptsAndSkillsConfigurationCategory();
39
79
  (0, chai_1.expect)(category.id).to.equal(ai_configuration_category_1.AiConfigurationCategoryId.PROMPTS_AND_SKILLS);
40
80
  (0, chai_1.expect)(category.kind).to.equal('single-page');
41
81
  });
42
82
  it('indexes skills and slash commands for search, highlighting their rows', () => {
43
- const category = categoryWith([{ name: 'refactor', description: 'do it', location: '/s' }], [{ id: 'cmd', commandName: 'go', commandDescription: 'run' }]);
83
+ const category = categoryWith([{ name: 'refactor', qualifiedName: 'refactor', description: 'do it', location: '/s' }], [{ id: 'cmd', commandName: 'go', commandDescription: 'run' }]);
44
84
  const items = category.getSearchItems();
45
85
  const byType = (typeIncludes) => items.filter(i => i.typeLabel.toLowerCase().includes(typeIncludes));
46
86
  (0, chai_1.expect)(byType('skill')).to.have.lengthOf(1);
@@ -64,5 +104,81 @@ describe('PromptsAndSkillsConfigurationCategory', () => {
64
104
  const commands = category.slashCommands;
65
105
  (0, chai_1.expect)(commands.map(command => command.id)).to.deep.equal(['remember']);
66
106
  });
107
+ describe('Agent Plugin provenance', () => {
108
+ const bigquery = { pluginId: 'io.example/bq', name: 'BigQuery Data Analytics', qualifier: 'bigquery' };
109
+ const contributed = skill({ qualifiedName: 'bigquery:query-builder', location: '/plugins/bigquery/skills/query-builder/SKILL.md' });
110
+ it('keys and titles a skill row by its qualified name, which is what the model addresses', () => {
111
+ const row = skillRow(categoryWithPlugins([contributed], [bigquery]), contributed);
112
+ (0, chai_1.expect)(row.id).to.equal('skill:bigquery:query-builder');
113
+ (0, chai_1.expect)(row.title).to.equal('bigquery:query-builder');
114
+ });
115
+ it('labels a contributed skill with the shared origin badge naming the plugin that supplied it', () => {
116
+ const row = skillRow(categoryWithPlugins([contributed], [bigquery]), contributed);
117
+ // The same descriptor the MCP page builds, so both pages render one badge rather than two designs.
118
+ (0, chai_1.expect)(row.origins?.map(origin => origin.label)).to.deep.equal(['via BigQuery Data Analytics']);
119
+ // Filterable by the plugin name too, so a plugin's skills can be listed together.
120
+ (0, chai_1.expect)(row.filterText).to.contain('bigquery data analytics');
121
+ });
122
+ it('reveals the owning plugin when the origin badge is activated', () => {
123
+ const revealed = [];
124
+ const row = skillRow(categoryWithPlugins([contributed], [bigquery], revealed), contributed);
125
+ // Activated directly: rendering the badge as a button is `AiConfigurationOriginBadge`'s
126
+ // contract, tested where it lives; what belongs here is where this page's badge leads.
127
+ row.origins[0].activate();
128
+ (0, chai_1.expect)(revealed).to.deep.equal([bigquery.pluginId]);
129
+ });
130
+ it('keeps the provenance out of the pills, which state what the skill is rather than where it came from', () => {
131
+ const row = skillRow(categoryWithPlugins([contributed], [bigquery]), contributed);
132
+ (0, chai_1.expect)(row.pills?.some(pill => pill.startsWith('via '))).to.not.equal(true);
133
+ });
134
+ it('labels nothing for a skill from a built-in root, which is the common case', () => {
135
+ const own = skill({});
136
+ (0, chai_1.expect)(skillRow(categoryWithPlugins([own], [bigquery]), own).origins).to.equal(undefined);
137
+ });
138
+ it('labels nothing rather than a bare qualifier when the qualifier belongs to no installed plugin', () => {
139
+ const row = skillRow(categoryWithPlugins([contributed], []), contributed);
140
+ (0, chai_1.expect)(row.origins).to.equal(undefined);
141
+ (0, chai_1.expect)(row.title).to.equal('bigquery:query-builder');
142
+ });
143
+ it('labels nothing when no bridge is bound, i.e. without `@theia/ai-registry`', () => {
144
+ (0, chai_1.expect)(skillRow(categoryWithPlugins([contributed], undefined), contributed).origins).to.equal(undefined);
145
+ });
146
+ });
147
+ describe('AI registry provenance', () => {
148
+ const installed = skill({ location: '/home/alex/.agents/skills/query-builder/SKILL.md' });
149
+ const entryId = 'io.github.acme/query-builder';
150
+ it('labels a registry-installed skill with the shared "From registry" badge', () => {
151
+ const row = skillRow(categoryWithRegistrySkills([installed], { [installed.location]: entryId }), installed);
152
+ (0, chai_1.expect)(row.origins?.map(origin => origin.label)).to.deep.equal(['From registry']);
153
+ (0, chai_1.expect)(row.origins[0].tooltip).to.contain(entryId);
154
+ });
155
+ it('reveals the registry entry when the badge is activated', () => {
156
+ const revealed = [];
157
+ const row = skillRow(categoryWithRegistrySkills([installed], { [installed.location]: entryId }, revealed), installed);
158
+ row.origins[0].activate();
159
+ (0, chai_1.expect)(revealed).to.deep.equal([entryId]);
160
+ });
161
+ it('labels nothing for a skill in a directory the user controls', () => {
162
+ const own = skill({ location: '/workspace/.agents/skills/query-builder/SKILL.md' });
163
+ (0, chai_1.expect)(skillRow(categoryWithRegistrySkills([own], { [installed.location]: entryId }), own).origins).to.equal(undefined);
164
+ });
165
+ it('labels nothing when no bridge is bound, i.e. without `@theia/ai-registry`', () => {
166
+ (0, chai_1.expect)(skillRow(categoryWithRegistrySkills([installed], undefined), installed).origins).to.equal(undefined);
167
+ });
168
+ it('credits the plugin, not the registry, for a skill a plugin contributed', () => {
169
+ // A plugin ships its skills inside the plugin, so the two origins cannot both apply; were the
170
+ // registry consulted anyway, a stale name collision would show a skill as coming from both.
171
+ const bigquery = { pluginId: 'io.example/bq', name: 'BigQuery', qualifier: 'bigquery' };
172
+ const contributed = skill({ qualifiedName: 'bigquery:query-builder', location: '/plugins/bigquery/skills/query-builder/SKILL.md' });
173
+ const category = categoryWithPlugins([contributed], [bigquery]);
174
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
175
+ category.skillRegistryUiBridge = {
176
+ getRegistryEntryId: () => entryId,
177
+ revealSkill: () => { },
178
+ onDidChange: core_1.Event.None
179
+ };
180
+ (0, chai_1.expect)(skillRow(category, contributed).origins?.map(origin => origin.label)).to.deep.equal(['via BigQuery']);
181
+ });
182
+ });
67
183
  });
68
184
  //# sourceMappingURL=prompts-and-skills-configuration-category.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts-and-skills-configuration-category.spec.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/prompts-and-skills-configuration-category.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts-and-skills-configuration-category.spec.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/prompts-and-skills-configuration-category.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/ai-ide",
3
- "version": "1.75.0-next.43+8b231a49646",
3
+ "version": "1.75.0-next.46+eb558223a",
4
4
  "description": "AI IDE Agents Extension",
5
5
  "license": "EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0",
6
6
  "repository": {
@@ -15,26 +15,26 @@
15
15
  "theia-extension"
16
16
  ],
17
17
  "dependencies": {
18
- "@theia/ai-chat": "1.75.0-next.43+8b231a49646",
19
- "@theia/ai-chat-ui": "1.75.0-next.43+8b231a49646",
20
- "@theia/ai-core": "1.75.0-next.43+8b231a49646",
21
- "@theia/ai-core-ui": "1.75.0-next.43+8b231a49646",
22
- "@theia/ai-mcp": "1.75.0-next.43+8b231a49646",
23
- "@theia/ai-terminal": "1.75.0-next.43+8b231a49646",
24
- "@theia/core": "1.75.0-next.43+8b231a49646",
25
- "@theia/debug": "1.75.0-next.43+8b231a49646",
26
- "@theia/editor": "1.75.0-next.43+8b231a49646",
27
- "@theia/file-search": "1.75.0-next.43+8b231a49646",
28
- "@theia/filesystem": "1.75.0-next.43+8b231a49646",
29
- "@theia/markers": "1.75.0-next.43+8b231a49646",
30
- "@theia/monaco": "1.75.0-next.43+8b231a49646",
31
- "@theia/navigator": "1.75.0-next.43+8b231a49646",
32
- "@theia/preferences": "1.75.0-next.43+8b231a49646",
33
- "@theia/scm": "1.75.0-next.43+8b231a49646",
34
- "@theia/search-in-workspace": "1.75.0-next.43+8b231a49646",
35
- "@theia/task": "1.75.0-next.43+8b231a49646",
36
- "@theia/terminal": "1.75.0-next.43+8b231a49646",
37
- "@theia/workspace": "1.75.0-next.43+8b231a49646",
18
+ "@theia/ai-chat": "1.75.0-next.46+eb558223a",
19
+ "@theia/ai-chat-ui": "1.75.0-next.46+eb558223a",
20
+ "@theia/ai-core": "1.75.0-next.46+eb558223a",
21
+ "@theia/ai-core-ui": "1.75.0-next.46+eb558223a",
22
+ "@theia/ai-mcp": "1.75.0-next.46+eb558223a",
23
+ "@theia/ai-terminal": "1.75.0-next.46+eb558223a",
24
+ "@theia/core": "1.75.0-next.46+eb558223a",
25
+ "@theia/debug": "1.75.0-next.46+eb558223a",
26
+ "@theia/editor": "1.75.0-next.46+eb558223a",
27
+ "@theia/file-search": "1.75.0-next.46+eb558223a",
28
+ "@theia/filesystem": "1.75.0-next.46+eb558223a",
29
+ "@theia/markers": "1.75.0-next.46+eb558223a",
30
+ "@theia/monaco": "1.75.0-next.46+eb558223a",
31
+ "@theia/navigator": "1.75.0-next.46+eb558223a",
32
+ "@theia/preferences": "1.75.0-next.46+eb558223a",
33
+ "@theia/scm": "1.75.0-next.46+eb558223a",
34
+ "@theia/search-in-workspace": "1.75.0-next.46+eb558223a",
35
+ "@theia/task": "1.75.0-next.46+eb558223a",
36
+ "@theia/terminal": "1.75.0-next.46+eb558223a",
37
+ "@theia/workspace": "1.75.0-next.46+eb558223a",
38
38
  "date-fns": "^4.4.0",
39
39
  "ignore": "^6.0.2",
40
40
  "js-yaml": "^4.3.1",
@@ -46,8 +46,8 @@
46
46
  "access": "public"
47
47
  },
48
48
  "devDependencies": {
49
- "@theia/cli": "1.75.0-next.43+8b231a49646",
50
- "@theia/test": "1.75.0-next.43+8b231a49646"
49
+ "@theia/cli": "1.75.0-next.46+eb558223a",
50
+ "@theia/test": "1.75.0-next.46+eb558223a"
51
51
  },
52
52
  "theiaExtensions": [
53
53
  {
@@ -71,5 +71,5 @@
71
71
  "nyc": {
72
72
  "extends": "../../configs/nyc.json"
73
73
  },
74
- "gitHead": "8b231a49646069eab30d7ef31d047ae718def49d"
74
+ "gitHead": "eb558223aae4b1ebf0a64deeb51741032cb8ea50"
75
75
  }
@@ -21,13 +21,20 @@ import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/front
21
21
  FrontendApplicationConfigProvider.set({});
22
22
 
23
23
  import { expect } from 'chai';
24
+ import { Event } from '@theia/core';
24
25
  import { PromptFragment } from '@theia/ai-core/lib/common/prompt-service';
25
26
  import { Skill } from '@theia/ai-core/lib/common/skill';
27
+ import { AgentPluginUiBridge, InstalledAgentPluginInfo } from '@theia/ai-core/lib/browser/agent-plugin-ui-bridge';
28
+ import { SkillRegistryUiBridge } from '@theia/ai-core/lib/browser/skill-registry-ui-bridge';
26
29
  import { AiConfigurationCategoryId } from '@theia/ai-core-ui/lib/browser/ai-configuration/ai-configuration-category';
30
+ import { CollapsibleRow } from '@theia/ai-core-ui/lib/browser/ai-configuration/components/collapsible-list';
27
31
  import { PromptsAndSkillsConfigurationCategory } from './prompts-and-skills-configuration-category';
28
32
 
29
33
  disableJSDOM();
30
34
 
35
+ /** A plugin as the bridge knows it, plus the qualifier its contributed skill root carries. */
36
+ type InstalledPlugin = InstalledAgentPluginInfo & { qualifier: string };
37
+
31
38
  describe('PromptsAndSkillsConfigurationCategory', () => {
32
39
 
33
40
  before(() => disableJSDOM = enableJSDOM());
@@ -42,6 +49,51 @@ describe('PromptsAndSkillsConfigurationCategory', () => {
42
49
  return category;
43
50
  }
44
51
 
52
+ /** Leaves the bridge unbound when `installedPlugins` is omitted, i.e. a product without `@theia/ai-registry`. */
53
+ function categoryWithPlugins(skills: Skill[], installedPlugins: InstalledPlugin[] | undefined, revealed: string[] = []): PromptsAndSkillsConfigurationCategory {
54
+ const category = categoryWith(skills, []);
55
+ if (installedPlugins) {
56
+ const bridge: AgentPluginUiBridge = {
57
+ getPlugin: pluginId => installedPlugins.find(plugin => plugin.pluginId === pluginId),
58
+ getPluginByQualifier: qualifier => installedPlugins.find(plugin => plugin.qualifier === qualifier),
59
+ revealPlugin: pluginId => { revealed.push(pluginId); },
60
+ onDidChange: Event.None
61
+ };
62
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
+ (category as any).agentPluginUiBridge = bridge;
64
+ }
65
+ return category;
66
+ }
67
+
68
+ /**
69
+ * Leaves the bridge unbound when `managed` is omitted. `managed` maps a skill location to the
70
+ * registry entry it was installed from, which is how the real bridge keys them.
71
+ */
72
+ function categoryWithRegistrySkills(
73
+ skills: Skill[], managed: Record<string, string> | undefined, revealed: string[] = []
74
+ ): PromptsAndSkillsConfigurationCategory {
75
+ const category = categoryWith(skills, []);
76
+ if (managed) {
77
+ const bridge: SkillRegistryUiBridge = {
78
+ getRegistryEntryId: forSkill => managed[forSkill.location],
79
+ revealSkill: skillId => { revealed.push(skillId); },
80
+ onDidChange: Event.None
81
+ };
82
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
+ (category as any).skillRegistryUiBridge = bridge;
84
+ }
85
+ return category;
86
+ }
87
+
88
+ function skillRow(category: PromptsAndSkillsConfigurationCategory, forSkill: Skill): CollapsibleRow {
89
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
90
+ return (category as any).buildSkillRow(forSkill) as CollapsibleRow;
91
+ }
92
+
93
+ function skill(overrides: Partial<Skill>): Skill {
94
+ return { name: 'query-builder', qualifiedName: 'query-builder', description: 'Build SQL', location: '/skills/query-builder/SKILL.md', ...overrides } as Skill;
95
+ }
96
+
45
97
  it('declares the skills and slash commands single-page metadata', () => {
46
98
  const category = new PromptsAndSkillsConfigurationCategory();
47
99
  expect(category.id).to.equal(AiConfigurationCategoryId.PROMPTS_AND_SKILLS);
@@ -50,7 +102,7 @@ describe('PromptsAndSkillsConfigurationCategory', () => {
50
102
 
51
103
  it('indexes skills and slash commands for search, highlighting their rows', () => {
52
104
  const category = categoryWith(
53
- [{ name: 'refactor', description: 'do it', location: '/s' } as unknown as Skill],
105
+ [{ name: 'refactor', qualifiedName: 'refactor', description: 'do it', location: '/s' } as unknown as Skill],
54
106
  [{ id: 'cmd', commandName: 'go', commandDescription: 'run' } as unknown as PromptFragment]
55
107
  );
56
108
  const items = category.getSearchItems();
@@ -78,4 +130,97 @@ describe('PromptsAndSkillsConfigurationCategory', () => {
78
130
  const commands = (category as any).slashCommands as PromptFragment[];
79
131
  expect(commands.map(command => command.id)).to.deep.equal(['remember']);
80
132
  });
133
+
134
+ describe('Agent Plugin provenance', () => {
135
+
136
+ const bigquery: InstalledPlugin = { pluginId: 'io.example/bq', name: 'BigQuery Data Analytics', qualifier: 'bigquery' };
137
+ const contributed = skill({ qualifiedName: 'bigquery:query-builder', location: '/plugins/bigquery/skills/query-builder/SKILL.md' });
138
+
139
+ it('keys and titles a skill row by its qualified name, which is what the model addresses', () => {
140
+ const row = skillRow(categoryWithPlugins([contributed], [bigquery]), contributed);
141
+ expect(row.id).to.equal('skill:bigquery:query-builder');
142
+ expect(row.title).to.equal('bigquery:query-builder');
143
+ });
144
+
145
+ it('labels a contributed skill with the shared origin badge naming the plugin that supplied it', () => {
146
+ const row = skillRow(categoryWithPlugins([contributed], [bigquery]), contributed);
147
+ // The same descriptor the MCP page builds, so both pages render one badge rather than two designs.
148
+ expect(row.origins?.map(origin => origin.label)).to.deep.equal(['via BigQuery Data Analytics']);
149
+ // Filterable by the plugin name too, so a plugin's skills can be listed together.
150
+ expect(row.filterText).to.contain('bigquery data analytics');
151
+ });
152
+
153
+ it('reveals the owning plugin when the origin badge is activated', () => {
154
+ const revealed: string[] = [];
155
+ const row = skillRow(categoryWithPlugins([contributed], [bigquery], revealed), contributed);
156
+ // Activated directly: rendering the badge as a button is `AiConfigurationOriginBadge`'s
157
+ // contract, tested where it lives; what belongs here is where this page's badge leads.
158
+ row.origins![0].activate!();
159
+ expect(revealed).to.deep.equal([bigquery.pluginId]);
160
+ });
161
+
162
+ it('keeps the provenance out of the pills, which state what the skill is rather than where it came from', () => {
163
+ const row = skillRow(categoryWithPlugins([contributed], [bigquery]), contributed);
164
+ expect(row.pills?.some(pill => pill.startsWith('via '))).to.not.equal(true);
165
+ });
166
+
167
+ it('labels nothing for a skill from a built-in root, which is the common case', () => {
168
+ const own = skill({});
169
+ expect(skillRow(categoryWithPlugins([own], [bigquery]), own).origins).to.equal(undefined);
170
+ });
171
+
172
+ it('labels nothing rather than a bare qualifier when the qualifier belongs to no installed plugin', () => {
173
+ const row = skillRow(categoryWithPlugins([contributed], []), contributed);
174
+ expect(row.origins).to.equal(undefined);
175
+ expect(row.title).to.equal('bigquery:query-builder');
176
+ });
177
+
178
+ it('labels nothing when no bridge is bound, i.e. without `@theia/ai-registry`', () => {
179
+ expect(skillRow(categoryWithPlugins([contributed], undefined), contributed).origins).to.equal(undefined);
180
+ });
181
+ });
182
+
183
+ describe('AI registry provenance', () => {
184
+
185
+ const installed = skill({ location: '/home/alex/.agents/skills/query-builder/SKILL.md' });
186
+ const entryId = 'io.github.acme/query-builder';
187
+
188
+ it('labels a registry-installed skill with the shared "From registry" badge', () => {
189
+ const row = skillRow(categoryWithRegistrySkills([installed], { [installed.location]: entryId }), installed);
190
+ expect(row.origins?.map(origin => origin.label)).to.deep.equal(['From registry']);
191
+ expect(row.origins![0].tooltip).to.contain(entryId);
192
+ });
193
+
194
+ it('reveals the registry entry when the badge is activated', () => {
195
+ const revealed: string[] = [];
196
+ const row = skillRow(categoryWithRegistrySkills([installed], { [installed.location]: entryId }, revealed), installed);
197
+ row.origins![0].activate!();
198
+ expect(revealed).to.deep.equal([entryId]);
199
+ });
200
+
201
+ it('labels nothing for a skill in a directory the user controls', () => {
202
+ const own = skill({ location: '/workspace/.agents/skills/query-builder/SKILL.md' });
203
+ expect(skillRow(categoryWithRegistrySkills([own], { [installed.location]: entryId }), own).origins).to.equal(undefined);
204
+ });
205
+
206
+ it('labels nothing when no bridge is bound, i.e. without `@theia/ai-registry`', () => {
207
+ expect(skillRow(categoryWithRegistrySkills([installed], undefined), installed).origins).to.equal(undefined);
208
+ });
209
+
210
+ it('credits the plugin, not the registry, for a skill a plugin contributed', () => {
211
+ // A plugin ships its skills inside the plugin, so the two origins cannot both apply; were the
212
+ // registry consulted anyway, a stale name collision would show a skill as coming from both.
213
+ const bigquery: InstalledPlugin = { pluginId: 'io.example/bq', name: 'BigQuery', qualifier: 'bigquery' };
214
+ const contributed = skill({ qualifiedName: 'bigquery:query-builder', location: '/plugins/bigquery/skills/query-builder/SKILL.md' });
215
+ const category = categoryWithPlugins([contributed], [bigquery]);
216
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
217
+ (category as any).skillRegistryUiBridge = {
218
+ getRegistryEntryId: () => entryId,
219
+ revealSkill: () => { },
220
+ onDidChange: Event.None
221
+ } satisfies SkillRegistryUiBridge;
222
+
223
+ expect(skillRow(category, contributed).origins?.map(origin => origin.label)).to.deep.equal(['via BigQuery']);
224
+ });
225
+ });
81
226
  });
@@ -18,13 +18,15 @@ import { Agent, AgentService } from '@theia/ai-core';
18
18
  import { GENERIC_CAPABILITIES_SKILLS_PROMPT_ID, matchVariablesRegEx, parseCapabilitiesFromTemplate } from '@theia/ai-core/lib/common';
19
19
  import { PREFERENCE_NAME_SKILL_DIRECTORIES } from '@theia/ai-core/lib/common/ai-core-preferences';
20
20
  import { SkillService } from '@theia/ai-core/lib/browser/skill-service';
21
+ import { AgentPluginUiBridge, InstalledAgentPluginInfo } from '@theia/ai-core/lib/browser/agent-plugin-ui-bridge';
22
+ import { SkillRegistryUiBridge } from '@theia/ai-core/lib/browser/skill-registry-ui-bridge';
21
23
  import { Skill } from '@theia/ai-core/lib/common/skill';
22
24
  import { isCustomizedPromptFragment, PromptFragment, PromptService } from '@theia/ai-core/lib/common/prompt-service';
23
25
  import { Emitter, Event, ILogger, nls, URI } from '@theia/core';
24
26
  import { codicon, open, OpenerService } from '@theia/core/lib/browser';
25
27
  import { ClipboardService } from '@theia/core/lib/browser/clipboard-service';
26
28
  import { DisposableCollection } from '@theia/core/lib/common';
27
- import { inject, injectable, named, postConstruct } from '@theia/core/shared/inversify';
29
+ import { inject, injectable, named, optional, postConstruct } from '@theia/core/shared/inversify';
28
30
  import * as React from '@theia/core/shared/react';
29
31
  import {
30
32
  AiConfigurationCategory,
@@ -48,6 +50,7 @@ import {
48
50
  CollapsibleRow,
49
51
  CollapsibleRowAction
50
52
  } from '@theia/ai-core-ui/lib/browser/ai-configuration/components/collapsible-list';
53
+ import { AiConfigurationOrigin } from '@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-configuration-origin-badge';
51
54
  import { AgentChips } from './agent-chips';
52
55
 
53
56
  const SKILL_ROW_PREFIX = 'skill:';
@@ -91,6 +94,12 @@ export class PromptsAndSkillsConfigurationCategory extends SinglePageCategoryRen
91
94
  @inject(ILogger) @named('ai-ide:PromptsAndSkillsConfigurationCategory')
92
95
  protected readonly logger: ILogger;
93
96
 
97
+ @inject(AgentPluginUiBridge) @optional()
98
+ protected readonly agentPluginUiBridge?: AgentPluginUiBridge;
99
+
100
+ @inject(SkillRegistryUiBridge) @optional()
101
+ protected readonly skillRegistryUiBridge?: SkillRegistryUiBridge;
102
+
94
103
  protected readonly onDidChangeEmitter = new Emitter<void>();
95
104
  readonly onDidChange: Event<void> = this.onDidChangeEmitter.event;
96
105
  protected readonly toDispose = new DisposableCollection(this.onDidChangeEmitter);
@@ -131,6 +140,14 @@ export class PromptsAndSkillsConfigurationCategory extends SinglePageCategoryRen
131
140
  }),
132
141
  this.settingsRowService.onPreferenceChanged(() => this.onDidChangeEmitter.fire())
133
142
  ]);
143
+ if (this.agentPluginUiBridge) {
144
+ // The plugin names come from the bridge, so installing one changes this page even when the skills do not.
145
+ this.toDispose.push(this.agentPluginUiBridge.onDidChange(() => this.onDidChangeEmitter.fire()));
146
+ }
147
+ if (this.skillRegistryUiBridge) {
148
+ // Likewise: linking or unlinking a skill folder changes its provenance, not the skill itself.
149
+ this.toDispose.push(this.skillRegistryUiBridge.onDidChange(() => this.onDidChangeEmitter.fire()));
150
+ }
134
151
  }
135
152
 
136
153
  dispose(): void {
@@ -142,7 +159,8 @@ export class PromptsAndSkillsConfigurationCategory extends SinglePageCategoryRen
142
159
  }
143
160
 
144
161
  protected loadSkills(): void {
145
- this.skills = this.skillService.getSkills().sort((a, b) => a.name.localeCompare(b.name));
162
+ // Sorted and keyed by the qualified name: it is what the model addresses and the only name unique across roots.
163
+ this.skills = this.skillService.getSkills().sort((a, b) => a.qualifiedName.localeCompare(b.qualifiedName));
146
164
  }
147
165
 
148
166
  protected loadSlashCommands(): void {
@@ -211,16 +229,19 @@ export class PromptsAndSkillsConfigurationCategory extends SinglePageCategoryRen
211
229
  protected buildSkillRow(skill: Skill): CollapsibleRow {
212
230
  const tools = skill.allowedTools ?? [];
213
231
  const metadata = skill.metadata ? Object.entries(skill.metadata) : [];
232
+ const plugin = this.getOwningPlugin(skill);
233
+ const origins = this.getSkillOrigins(skill);
214
234
  const pills: string[] = [];
215
235
  if (tools.length > 0) {
216
236
  pills.push(nls.localizeByDefault('{0} tools', tools.length));
217
237
  }
218
238
  return {
219
- id: SKILL_ROW_PREFIX + skill.name,
220
- title: skill.name,
239
+ id: SKILL_ROW_PREFIX + skill.qualifiedName,
240
+ title: skill.qualifiedName,
221
241
  description: skill.description,
222
242
  pills,
223
- filterText: `${skill.name} ${skill.description ?? ''}`.toLocaleLowerCase(),
243
+ origins,
244
+ filterText: `${skill.qualifiedName} ${skill.description ?? ''} ${plugin?.name ?? ''}`.toLocaleLowerCase(),
224
245
  actions: <CollapsibleRowAction
225
246
  iconClass={codicon('edit')}
226
247
  label={nls.localize('theia/ai/ide/skillsConfiguration/openSkillFile', 'Open SKILL.md')}
@@ -341,17 +362,46 @@ export class PromptsAndSkillsConfigurationCategory extends SinglePageCategoryRen
341
362
  open(this.openerService, URI.fromFilePath(skill.location));
342
363
  }
343
364
 
365
+ /**
366
+ * The registry entry a skill was installed from, or the Agent Plugin that contributed it - never
367
+ * both: the registry installs a skill into a root of its own, a plugin ships it inside the plugin.
368
+ * Empty for a workspace or configured skill, which is the common case, and always empty without
369
+ * `@theia/ai-registry`, which binds both bridges.
370
+ */
371
+ protected getSkillOrigins(skill: Skill): AiConfigurationOrigin[] | undefined {
372
+ const plugin = this.getOwningPlugin(skill);
373
+ if (plugin) {
374
+ return [AiConfigurationOrigin.agentPlugin(plugin, () => this.agentPluginUiBridge?.revealPlugin(plugin.pluginId))];
375
+ }
376
+ const entryId = this.skillRegistryUiBridge?.getRegistryEntryId(skill);
377
+ if (entryId) {
378
+ return [AiConfigurationOrigin.registry(entryId, () => this.skillRegistryUiBridge?.revealSkill(entryId))];
379
+ }
380
+ return undefined;
381
+ }
382
+
383
+ /**
384
+ * The Agent Plugin a skill was contributed by, or `undefined` for a skill from a built-in root - the
385
+ * common case - and for a qualifier belonging to no installed plugin: a bare qualifier is worth neither
386
+ * a label nor a reveal action. Always `undefined` without `@theia/ai-registry`, which binds the bridge.
387
+ */
388
+ protected getOwningPlugin(skill: Skill): InstalledAgentPluginInfo | undefined {
389
+ const qualifier = Skill.qualifierOf(skill);
390
+ return qualifier ? this.agentPluginUiBridge?.getPluginByQualifier(qualifier) : undefined;
391
+ }
392
+
344
393
  getSearchItems(): AiConfigurationSearchItem[] {
345
394
  const items: AiConfigurationSearchItem[] = [];
346
395
  const skillLabel = nls.localizeByDefault('Skill');
347
396
  const slashCommandLabel = nls.localize('theia/ai/ide/skillsConfiguration/slashCommandsSectionHeader', 'Slash Commands');
348
397
  for (const skill of this.skills) {
349
398
  items.push({
350
- label: skill.name,
399
+ label: skill.qualifiedName,
351
400
  typeLabel: skillLabel,
352
401
  categoryId: this.id,
353
- target: { categoryId: this.id, highlight: { rowId: SKILL_ROW_PREFIX + skill.name } },
354
- keywords: skill.description ?? ''
402
+ target: { categoryId: this.id, highlight: { rowId: SKILL_ROW_PREFIX + skill.qualifiedName } },
403
+ // The unqualified name too: a skill contributed by a plugin is still looked up by the name in its SKILL.md.
404
+ keywords: `${skill.name} ${skill.description ?? ''}`
355
405
  });
356
406
  }
357
407
  for (const command of this.slashCommands) {