@theia/ai-ide 1.76.0-next.4 → 1.76.0-next.42

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.
Files changed (111) hide show
  1. package/lib/browser/ai-configuration/ai-configuration-detail-widget.d.ts +10 -4
  2. package/lib/browser/ai-configuration/ai-configuration-detail-widget.d.ts.map +1 -1
  3. package/lib/browser/ai-configuration/ai-configuration-detail-widget.js +12 -7
  4. package/lib/browser/ai-configuration/ai-configuration-detail-widget.js.map +1 -1
  5. package/lib/browser/ai-configuration/ai-configuration-detail-widget.spec.js +14 -14
  6. package/lib/browser/ai-configuration/ai-configuration-detail-widget.spec.js.map +1 -1
  7. package/lib/browser/ai-configuration/ai-configuration-tree-widget.d.ts +6 -0
  8. package/lib/browser/ai-configuration/ai-configuration-tree-widget.d.ts.map +1 -1
  9. package/lib/browser/ai-configuration/ai-configuration-tree-widget.js +9 -0
  10. package/lib/browser/ai-configuration/ai-configuration-tree-widget.js.map +1 -1
  11. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.d.ts.map +1 -1
  12. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.js +2 -1
  13. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.js.map +1 -1
  14. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.d.ts +8 -0
  15. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.d.ts.map +1 -1
  16. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.js +27 -8
  17. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.js.map +1 -1
  18. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.spec.js +38 -2
  19. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.spec.js.map +1 -1
  20. package/lib/browser/ai-configuration/categories/models-configuration-category.d.ts +13 -2
  21. package/lib/browser/ai-configuration/categories/models-configuration-category.d.ts.map +1 -1
  22. package/lib/browser/ai-configuration/categories/models-configuration-category.js +41 -2
  23. package/lib/browser/ai-configuration/categories/models-configuration-category.js.map +1 -1
  24. package/lib/browser/ai-configuration/categories/models-configuration-category.spec.js +32 -2
  25. package/lib/browser/ai-configuration/categories/models-configuration-category.spec.js.map +1 -1
  26. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.d.ts +26 -0
  27. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.d.ts.map +1 -0
  28. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.js +212 -0
  29. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.js.map +1 -0
  30. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.spec.d.ts +2 -0
  31. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.spec.d.ts.map +1 -0
  32. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.spec.js +423 -0
  33. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.spec.js.map +1 -0
  34. package/lib/browser/ai-configuration/language-model-renderer.d.ts.map +1 -1
  35. package/lib/browser/ai-configuration/language-model-renderer.js +10 -3
  36. package/lib/browser/ai-configuration/language-model-renderer.js.map +1 -1
  37. package/lib/browser/ai-getting-started-commands.d.ts +10 -0
  38. package/lib/browser/ai-getting-started-commands.d.ts.map +1 -0
  39. package/lib/browser/ai-getting-started-commands.js +34 -0
  40. package/lib/browser/ai-getting-started-commands.js.map +1 -0
  41. package/lib/browser/ai-getting-started-contribution.d.ts +20 -0
  42. package/lib/browser/ai-getting-started-contribution.d.ts.map +1 -0
  43. package/lib/browser/ai-getting-started-contribution.js +70 -0
  44. package/lib/browser/ai-getting-started-contribution.js.map +1 -0
  45. package/lib/browser/ai-getting-started-walkthrough.d.ts +41 -0
  46. package/lib/browser/ai-getting-started-walkthrough.d.ts.map +1 -0
  47. package/lib/browser/ai-getting-started-walkthrough.js +225 -0
  48. package/lib/browser/ai-getting-started-walkthrough.js.map +1 -0
  49. package/lib/browser/ai-getting-started-walkthrough.spec.d.ts +2 -0
  50. package/lib/browser/ai-getting-started-walkthrough.spec.d.ts.map +1 -0
  51. package/lib/browser/ai-getting-started-walkthrough.spec.js +124 -0
  52. package/lib/browser/ai-getting-started-walkthrough.spec.js.map +1 -0
  53. package/lib/browser/ai-walkthrough-context-keys.d.ts +55 -0
  54. package/lib/browser/ai-walkthrough-context-keys.d.ts.map +1 -0
  55. package/lib/browser/ai-walkthrough-context-keys.js +145 -0
  56. package/lib/browser/ai-walkthrough-context-keys.js.map +1 -0
  57. package/lib/browser/ai-walkthrough-context-keys.spec.d.ts +2 -0
  58. package/lib/browser/ai-walkthrough-context-keys.spec.d.ts.map +1 -0
  59. package/lib/browser/ai-walkthrough-context-keys.spec.js +166 -0
  60. package/lib/browser/ai-walkthrough-context-keys.spec.js.map +1 -0
  61. package/lib/browser/frontend-module.d.ts.map +1 -1
  62. package/lib/browser/frontend-module.js +8 -0
  63. package/lib/browser/frontend-module.js.map +1 -1
  64. package/lib/browser/ide-chat-welcome-message-provider.d.ts +26 -28
  65. package/lib/browser/ide-chat-welcome-message-provider.d.ts.map +1 -1
  66. package/lib/browser/ide-chat-welcome-message-provider.js +61 -151
  67. package/lib/browser/ide-chat-welcome-message-provider.js.map +1 -1
  68. package/lib/browser/user-interaction-tool-renderer.d.ts +6 -0
  69. package/lib/browser/user-interaction-tool-renderer.d.ts.map +1 -1
  70. package/lib/browser/user-interaction-tool-renderer.js +36 -7
  71. package/lib/browser/user-interaction-tool-renderer.js.map +1 -1
  72. package/lib/browser/user-interaction-tool.d.ts +23 -1
  73. package/lib/browser/user-interaction-tool.d.ts.map +1 -1
  74. package/lib/browser/user-interaction-tool.js +56 -17
  75. package/lib/browser/user-interaction-tool.js.map +1 -1
  76. package/lib/browser/user-interaction-tool.spec.js +151 -2
  77. package/lib/browser/user-interaction-tool.spec.js.map +1 -1
  78. package/lib/common/command-prompt-template.js +1 -1
  79. package/lib/common/user-interaction-tool.d.ts +19 -1
  80. package/lib/common/user-interaction-tool.d.ts.map +1 -1
  81. package/lib/common/user-interaction-tool.js +100 -29
  82. package/lib/common/user-interaction-tool.js.map +1 -1
  83. package/lib/common/user-interaction-tool.spec.js +215 -174
  84. package/lib/common/user-interaction-tool.spec.js.map +1 -1
  85. package/package.json +26 -25
  86. package/src/browser/ai-configuration/ai-configuration-detail-widget.spec.ts +14 -14
  87. package/src/browser/ai-configuration/ai-configuration-detail-widget.tsx +12 -7
  88. package/src/browser/ai-configuration/ai-configuration-tree-widget.tsx +8 -0
  89. package/src/browser/ai-configuration/categories/agent-capabilities-settings.tsx +7 -8
  90. package/src/browser/ai-configuration/categories/model-aliases-configuration-category.spec.ts +40 -2
  91. package/src/browser/ai-configuration/categories/model-aliases-configuration-category.tsx +31 -10
  92. package/src/browser/ai-configuration/categories/models-configuration-category.spec.ts +47 -2
  93. package/src/browser/ai-configuration/categories/models-configuration-category.tsx +52 -5
  94. package/src/browser/ai-configuration/categories/provider-model-discovery-section.spec.tsx +451 -0
  95. package/src/browser/ai-configuration/categories/provider-model-discovery-section.tsx +341 -0
  96. package/src/browser/ai-configuration/language-model-renderer.tsx +11 -3
  97. package/src/browser/ai-getting-started-commands.ts +33 -0
  98. package/src/browser/ai-getting-started-contribution.ts +64 -0
  99. package/src/browser/ai-getting-started-walkthrough.spec.ts +146 -0
  100. package/src/browser/ai-getting-started-walkthrough.ts +249 -0
  101. package/src/browser/ai-walkthrough-context-keys.spec.ts +209 -0
  102. package/src/browser/ai-walkthrough-context-keys.ts +147 -0
  103. package/src/browser/frontend-module.ts +9 -0
  104. package/src/browser/ide-chat-welcome-message-provider.tsx +93 -230
  105. package/src/browser/style/index.css +1 -41
  106. package/src/browser/user-interaction-tool-renderer.tsx +38 -8
  107. package/src/browser/user-interaction-tool.spec.ts +201 -2
  108. package/src/browser/user-interaction-tool.ts +69 -18
  109. package/src/common/command-prompt-template.ts +1 -1
  110. package/src/common/user-interaction-tool.spec.ts +217 -161
  111. package/src/common/user-interaction-tool.ts +127 -32
@@ -26,8 +26,8 @@ disableJSDOM();
26
26
  function alias(id, description = '') {
27
27
  return { id, description, defaultModelIds: [] };
28
28
  }
29
- function readyModel(id) {
30
- return { id, status: { status: 'ready' } };
29
+ function readyModel(id, released) {
30
+ return { id, released, status: { status: 'ready' } };
31
31
  }
32
32
  function unreadyModel(id) {
33
33
  return { id, status: { status: 'unavailable', message: 'nope' } };
@@ -64,6 +64,42 @@ describe('ModelAliasesConfigurationCategory', () => {
64
64
  (0, chai_1.expect)(children[1].status?.kind).to.equal('warn');
65
65
  (0, chai_1.expect)(children[2].status?.kind).to.equal('error');
66
66
  });
67
+ it('divides the models per provider, newest first, after the default-list entry', () => {
68
+ const category = createCategory([], new Map());
69
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ category.languageModels = [
71
+ readyModel('openai/gpt-5.5', Date.parse('2025-08-01')),
72
+ readyModel('anthropic/claude-haiku-4-5', Date.parse('2025-10-01')),
73
+ readyModel('openai/gpt-5.6-sol', Date.parse('2026-02-01')),
74
+ readyModel('anthropic/claude-opus-5', Date.parse('2026-04-01'))
75
+ ];
76
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
77
+ const options = category.getModelOptions();
78
+ (0, chai_1.expect)(options[0].value).to.equal('');
79
+ // A rule between the providers rather than a heading: the select draws separators as plain lines.
80
+ (0, chai_1.expect)(options.slice(1).map(option => option.separator ? '---' : option.value)).to.deep.equal([
81
+ '---',
82
+ 'anthropic/claude-opus-5',
83
+ 'anthropic/claude-haiku-4-5',
84
+ '---',
85
+ 'openai/gpt-5.6-sol',
86
+ 'openai/gpt-5.5'
87
+ ]);
88
+ });
89
+ it('keeps the provider rules when mapping the options onto the select', () => {
90
+ const category = createCategory([], new Map());
91
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
92
+ const mapped = category.toEnumOptions([
93
+ { value: 'a', label: 'A', description: 'first' },
94
+ { separator: true },
95
+ { value: 'b' }
96
+ ]);
97
+ // A rule that loses its `separator` becomes a selectable entry with no label that clears the alias.
98
+ (0, chai_1.expect)(mapped.map(option => option.separator ? '---' : option.value)).to.deep.equal(['a', '---', 'b']);
99
+ (0, chai_1.expect)(mapped[0].title).to.equal('first');
100
+ // Without a label of its own, an option falls back to its value rather than rendering empty.
101
+ (0, chai_1.expect)(mapped[2].label).to.equal('b');
102
+ });
67
103
  it('indexes one search item per alias, navigating to the item', () => {
68
104
  const category = createCategory([alias('default/code', 'Coding alias')], new Map());
69
105
  const items = category.getSearchItems();
@@ -1 +1 @@
1
- {"version":3,"file":"model-aliases-configuration-category.spec.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/model-aliases-configuration-category.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-aliases-configuration-category.spec.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/model-aliases-configuration-category.spec.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
- import { Emitter, Event } from '@theia/core';
1
+ import { CommandService, Emitter, Event } from '@theia/core';
2
2
  import { DisposableCollection } from '@theia/core/lib/common';
3
3
  import * as React from '@theia/core/shared/react';
4
4
  import { AiConfigurationCategory, AiConfigurationRenderContext, AiConfigurationSearchItem, AiConfigurationSearchProvider, AiConfigurationTreeItem } from '@theia/ai-core-ui/lib/browser/ai-configuration/ai-configuration-category';
5
5
  import { AiSettingsRowService } from '@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-settings-row-service';
6
6
  import { CollectionCategoryRenderer } from '@theia/ai-core-ui/lib/browser/ai-configuration/renderers/collection-category-renderer';
7
+ import { LanguageModel, LanguageModelRegistry } from '@theia/ai-core/lib/common';
8
+ import { FavoriteModelsService, ModelDiscoveryStatusService } from '@theia/ai-core/lib/browser';
7
9
  interface ModelsSection {
8
10
  readonly id: string;
9
11
  readonly title: string;
@@ -28,14 +30,21 @@ export declare class ModelsConfigurationCategory extends CollectionCategoryRende
28
30
  readonly order = 200;
29
31
  readonly kind: "collection";
30
32
  protected readonly settingsRowService: AiSettingsRowService;
33
+ protected readonly discoveryStatus: ModelDiscoveryStatusService;
34
+ protected readonly favoriteModels: FavoriteModelsService;
35
+ protected readonly commandService: CommandService;
36
+ protected readonly languageModelRegistry: LanguageModelRegistry;
31
37
  protected readonly onDidChangeEmitter: Emitter<void>;
32
38
  readonly onDidChange: Event<void>;
33
39
  protected readonly toDispose: DisposableCollection;
40
+ /** Registered models, kept in sync so the provider detail can list them synchronously while rendering. */
41
+ protected models: LanguageModel[];
34
42
  get renderer(): this;
35
43
  protected get categoryId(): string;
36
44
  getOwnedPreferenceIds(): string[];
37
45
  get search(): AiConfigurationSearchProvider;
38
46
  protected init(): void;
47
+ protected updateModels(): Promise<void>;
39
48
  dispose(): void;
40
49
  /**
41
50
  * One tree child per discovered provider (the cross-provider model settings stay in the overview).
@@ -46,8 +55,10 @@ export declare class ModelsConfigurationCategory extends CollectionCategoryRende
46
55
  protected getEmptyMessage(): string;
47
56
  /** Shown above the provider cards: the cross-provider model settings, when any are registered. */
48
57
  protected renderCategorySettings(ctx: AiConfigurationRenderContext): React.ReactNode;
49
- /** Provider detail (node selected): that provider's settings. */
58
+ /** Provider detail (node selected): that provider's settings, followed by its model discovery. */
50
59
  protected renderItemSections(item: AiConfigurationTreeItem, ctx: AiConfigurationRenderContext): React.ReactNode;
60
+ /** Only providers that participate in dynamic model discovery contribute this section. */
61
+ protected renderModelDiscovery(providerId: string): React.ReactNode;
51
62
  protected renderPreferenceRow(ctx: AiConfigurationRenderContext, preferenceId: string): React.ReactNode;
52
63
  /** Discovers the model-settings and provider sections from the registered preference schema. */
53
64
  protected getSections(): ModelsSection[];
@@ -1 +1 @@
1
- {"version":3,"file":"models-configuration-category.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/models-configuration-category.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAO,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EACH,uBAAuB,EAGvB,4BAA4B,EAC5B,yBAAyB,EACzB,6BAA6B,EAC7B,uBAAuB,EAC1B,MAAM,0EAA0E,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mFAAmF,CAAC;AAEzH,OAAO,EAAE,0BAA0B,EAAE,MAAM,uFAAuF,CAAC;AAYnI,UAAU,aAAa;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;;;;;GAUG;AACH,qBACa,2BAA4B,SAAQ,0BAA2B,YAAW,uBAAuB,EAAE,6BAA6B;IAEzI,QAAQ,CAAC,EAAE,YAAoC;IAC/C,QAAQ,CAAC,KAAK,SAAoF;IAClG,QAAQ,CAAC,WAAW,SAC0D;IAC9E,QAAQ,CAAC,SAAS,SAAoB;IACtC,QAAQ,CAAC,KAAK,OAAuC;IACrD,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IAGtC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IAE5D,SAAS,CAAC,QAAQ,CAAC,kBAAkB,gBAAuB;IAC5D,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAiC;IAClE,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAAqD;IAEjF,IAAI,QAAQ,IAAI,IAAI,CAEnB;IAED,SAAS,KAAK,UAAU,IAAI,MAAM,CAEjC;IAED,qBAAqB,IAAI,MAAM,EAAE;IAIjC,IAAI,MAAM,IAAI,6BAA6B,CAE1C;IAGD,SAAS,CAAC,IAAI,IAAI,IAAI;IAItB,OAAO,IAAI,IAAI;IAIf;;;OAGG;IACH,eAAe,IAAI,uBAAuB,EAAE;IAQ5C,cAAuB,iBAAiB,IAAI,MAAM,CAEjD;cAEkB,eAAe,IAAI,MAAM;IAI5C,kGAAkG;cAC/E,sBAAsB,CAAC,GAAG,EAAE,4BAA4B,GAAG,KAAK,CAAC,SAAS;IAO7F,iEAAiE;IACjE,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,4BAA4B,GAAG,KAAK,CAAC,SAAS;IAU/G,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,4BAA4B,EAAE,YAAY,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS;IAWvG,gGAAgG;IAChG,SAAS,CAAC,WAAW,IAAI,aAAa,EAAE;IA+CxC;;;;;OAKG;IACH,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM;IAU/E,kHAAkH;IAClH,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAIjD,kGAAkG;IAClG,SAAS,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAQxD,0FAA0F;IAC1F,SAAS,CAAC,uBAAuB,IAAI,aAAa,GAAG,SAAS;IAI9D,qFAAqF;IACrF,SAAS,CAAC,mBAAmB,IAAI,aAAa,EAAE;IAIhD,cAAc,IAAI,yBAAyB,EAAE;CAqBhD"}
1
+ {"version":3,"file":"models-configuration-category.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/models-configuration-category.tsx"],"names":[],"mappings":"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"}
@@ -27,6 +27,9 @@ const ai_settings_row_service_1 = require("@theia/ai-core-ui/lib/browser/ai-conf
27
27
  const ai_configuration_primitives_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-configuration-primitives");
28
28
  const collection_category_renderer_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/renderers/collection-category-renderer");
29
29
  const ai_settings_row_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-settings-row");
30
+ const common_2 = require("@theia/ai-core/lib/common");
31
+ const browser_2 = require("@theia/ai-core/lib/browser");
32
+ const provider_model_discovery_section_1 = require("./provider-model-discovery-section");
30
33
  /** Prefix shared by every AI preference. */
31
34
  const AI_FEATURES_PREFIX = 'ai-features.';
32
35
  /** Id of the cross-provider "Model Settings" section (kept in the overview, not a provider node). */
@@ -56,6 +59,8 @@ let ModelsConfigurationCategory = class ModelsConfigurationCategory extends coll
56
59
  this.onDidChangeEmitter = new core_1.Emitter();
57
60
  this.onDidChange = this.onDidChangeEmitter.event;
58
61
  this.toDispose = new common_1.DisposableCollection(this.onDidChangeEmitter);
62
+ /** Registered models, kept in sync so the provider detail can list them synchronously while rendering. */
63
+ this.models = [];
59
64
  }
60
65
  get renderer() {
61
66
  return this;
@@ -71,6 +76,13 @@ let ModelsConfigurationCategory = class ModelsConfigurationCategory extends coll
71
76
  }
72
77
  init() {
73
78
  this.toDispose.push(this.settingsRowService.onPreferenceChanged(() => this.onDidChangeEmitter.fire()));
79
+ this.toDispose.push(this.discoveryStatus.onDidChange(() => this.onDidChangeEmitter.fire()));
80
+ this.toDispose.push(this.languageModelRegistry.onChange(() => this.updateModels()));
81
+ this.updateModels();
82
+ }
83
+ async updateModels() {
84
+ this.models = await this.languageModelRegistry.getLanguageModels();
85
+ this.onDidChangeEmitter.fire();
74
86
  }
75
87
  dispose() {
76
88
  this.toDispose.dispose();
@@ -97,13 +109,24 @@ let ModelsConfigurationCategory = class ModelsConfigurationCategory extends coll
97
109
  const modelSettings = this.getModelSettingsSection();
98
110
  return modelSettings && (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationSection, { title: modelSettings.title, children: modelSettings.preferenceIds.map(preferenceId => this.renderPreferenceRow(ctx, preferenceId)) });
99
111
  }
100
- /** Provider detail (node selected): that provider's settings. */
112
+ /** Provider detail (node selected): that provider's settings, followed by its model discovery. */
101
113
  renderItemSections(item, ctx) {
102
114
  const section = this.getProviderSections().find(candidate => candidate.id === item.id);
103
115
  if (!section) {
104
116
  return undefined;
105
117
  }
106
- return (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationSection, { title: core_1.nls.localizeByDefault('Settings'), children: section.preferenceIds.map(preferenceId => this.renderPreferenceRow(ctx, preferenceId)) });
118
+ return (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationSection, { title: core_1.nls.localizeByDefault('Settings'), children: section.preferenceIds.map(preferenceId => this.renderPreferenceRow(ctx, preferenceId)) }), this.renderModelDiscovery(item.id)] });
119
+ }
120
+ /** Only providers that participate in dynamic model discovery contribute this section. */
121
+ renderModelDiscovery(providerId) {
122
+ const status = this.discoveryStatus.getStatus(providerId);
123
+ if (!status) {
124
+ return undefined;
125
+ }
126
+ // A provider's registered model ids may carry a prefix that differs from its preference segment
127
+ // (e.g. the `openAiOfficial` block registers `openai/…` models).
128
+ const prefix = `${status.modelIdPrefix ?? providerId}/`;
129
+ return (0, jsx_runtime_1.jsx)(provider_model_discovery_section_1.ProviderModelDiscoverySection, { status: status, models: this.models.filter(model => model.id.startsWith(prefix)), favorites: this.favoriteModels, onRefresh: () => this.discoveryStatus.refresh(providerId), onAction: action => this.commandService.executeCommand(action.commandId, ...(action.args ?? [])) });
107
130
  }
108
131
  renderPreferenceRow(ctx, preferenceId) {
109
132
  return (0, jsx_runtime_1.jsx)(ai_settings_row_1.AiSettingsRow, { service: this.settingsRowService, preferenceId: preferenceId, scope: ctx.scope, control: this.settingsRowService.controlFor(preferenceId), onDidChange: () => ctx.update() }, preferenceId);
@@ -215,6 +238,22 @@ tslib_1.__decorate([
215
238
  (0, inversify_1.inject)(ai_settings_row_service_1.AiSettingsRowService),
216
239
  tslib_1.__metadata("design:type", ai_settings_row_service_1.AiSettingsRowService)
217
240
  ], ModelsConfigurationCategory.prototype, "settingsRowService", void 0);
241
+ tslib_1.__decorate([
242
+ (0, inversify_1.inject)(browser_2.ModelDiscoveryStatusService),
243
+ tslib_1.__metadata("design:type", browser_2.ModelDiscoveryStatusService)
244
+ ], ModelsConfigurationCategory.prototype, "discoveryStatus", void 0);
245
+ tslib_1.__decorate([
246
+ (0, inversify_1.inject)(browser_2.FavoriteModelsService),
247
+ tslib_1.__metadata("design:type", browser_2.FavoriteModelsService)
248
+ ], ModelsConfigurationCategory.prototype, "favoriteModels", void 0);
249
+ tslib_1.__decorate([
250
+ (0, inversify_1.inject)(core_1.CommandService),
251
+ tslib_1.__metadata("design:type", Object)
252
+ ], ModelsConfigurationCategory.prototype, "commandService", void 0);
253
+ tslib_1.__decorate([
254
+ (0, inversify_1.inject)(common_2.LanguageModelRegistry),
255
+ tslib_1.__metadata("design:type", Object)
256
+ ], ModelsConfigurationCategory.prototype, "languageModelRegistry", void 0);
218
257
  tslib_1.__decorate([
219
258
  (0, inversify_1.postConstruct)(),
220
259
  tslib_1.__metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"models-configuration-category.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/models-configuration-category.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models-configuration-category.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/models-configuration-category.tsx"],"names":[],"mappings":";;;;;AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAEhF,sCAAkE;AAClE,qDAAkD;AAClD,mDAA8D;AAC9D,4DAAiF;AAEjF,wHAQkF;AAClF,+HAAyH;AACzH,uIAA+H;AAC/H,wIAAmI;AACnI,+GAA0G;AAC1G,sDAAiF;AACjF,wDAAgG;AAChG,yFAAmF;AAEnF,4CAA4C;AAC5C,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAE1C,qGAAqG;AACrG,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAE3C,yEAAyE;AACzE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAS,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC;AAQhF;;;;;;;;;;GAUG;AAEI,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,yDAA0B;IAApE;;QAEM,OAAE,GAAG,qDAAyB,CAAC,MAAM,CAAC;QACtC,UAAK,GAAG,UAAG,CAAC,QAAQ,CAAC,4CAA4C,EAAE,oBAAoB,CAAC,CAAC;QACzF,gBAAW,GAAG,UAAG,CAAC,QAAQ,CAAC,8CAA8C,EAC9E,wEAAwE,CAAC,CAAC;QACrE,cAAS,GAAG,IAAA,iBAAO,EAAC,OAAO,CAAC,CAAC;QAC7B,UAAK,GAAG,wDAA4B,CAAC,MAAM,CAAC;QAC5C,SAAI,GAAG,YAAqB,CAAC;QAiBnB,uBAAkB,GAAG,IAAI,cAAO,EAAQ,CAAC;QACnD,gBAAW,GAAgB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAC/C,cAAS,GAAG,IAAI,6BAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEjF,0GAA0G;QAChG,WAAM,GAAoB,EAAE,CAAC;IAuN3C,CAAC;IArNG,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAc,UAAU;QACpB,OAAO,IAAI,CAAC,EAAE,CAAC;IACnB,CAAC;IAED,qBAAqB;QACjB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC;IAChB,CAAC;IAGS,IAAI;QACV,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAES,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,CAAC;QACnE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,eAAe;QACX,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC9C,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,IAAI,CAAC,SAAS;SACO,CAAA,CAAC,CAAC;IAC1C,CAAC;IAED,IAAuB,iBAAiB;QACpC,OAAO,UAAG,CAAC,QAAQ,CAAC,4CAA4C,EAAE,WAAW,CAAC,CAAC;IACnF,CAAC;IAEkB,eAAe;QAC9B,OAAO,UAAG,CAAC,QAAQ,CAAC,8CAA8C,EAAE,4CAA4C,CAAC,CAAC;IACtH,CAAC;IAED,kGAAkG;IAC/E,sBAAsB,CAAC,GAAiC;QACvE,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACrD,OAAO,aAAa,IAAI,uBAAC,oDAAsB,IAAC,KAAK,EAAE,aAAa,CAAC,KAAK,YACrE,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,GACxE,CAAC;IAC9B,CAAC;IAED,kGAAkG;IACxF,kBAAkB,CAAC,IAA6B,EAAE,GAAiC;QACzF,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,6DACH,uBAAC,oDAAsB,IAAC,KAAK,EAAE,UAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,YAC3D,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,GAClE,EACxB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,IACpC,CAAC;IACR,CAAC;IAED,0FAA0F;IAChF,oBAAoB,CAAC,UAAkB;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,gGAAgG;QAChG,iEAAiE;QACjE,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,IAAI,UAAU,GAAG,CAAC;QACxD,OAAO,uBAAC,gEAA6B,IACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAChE,SAAS,EAAE,IAAI,CAAC,cAAc,EAC9B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EACzD,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAClG,CAAC;IACP,CAAC;IAES,mBAAmB,CAAC,GAAiC,EAAE,YAAoB;QACjF,OAAO,uBAAC,+BAAa,IAEjB,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAChC,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,YAAY,CAAC,EACzD,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAL1B,YAAY,CAMnB,CAAC;IACP,CAAC;IAED,gGAAgG;IACtF,WAAW;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;QAErE,kGAAkG;QAClG,kGAAkG;QAClG,kGAAkG;QAClG,gGAAgG;QAChG,6DAA6D;QAC7D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC3C,KAAK,MAAM,YAAY,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,YAAY,CAAC,EAAE,CAAC;gBAClE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;YACvD,CAAC;QACL,CAAC;QAED,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC/C,KAAK,MAAM,YAAY,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC7C,IAAI,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrC,CAAC;iBAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC5C,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACzB,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,iBAAiB;gBACrB,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,gDAAgD,EAAE,gBAAgB,CAAC;gBACvF,aAAa,EAAE,aAAa;aAC/B,CAAC,CAAC;QACP,CAAC;QACD,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1F,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC;YACrD,aAAa;SACS,CAAA,CAAC,CAAC;QAC5B,+FAA+F;QAC/F,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9E,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACO,gBAAgB,CAAC,UAAkB,EAAE,aAAuB;QAClE,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAC1E,IAAI,QAAQ,EAAE,CAAC;gBACX,OAAO,QAAQ,CAAC;YACpB,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,kHAAkH;IACxG,SAAS,CAAC,YAAoB;QACpC,OAAO,YAAY,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,kGAAkG;IACxF,kBAAkB,CAAC,UAAkB;QAC3C,MAAM,MAAM,GAAG,UAAU;aACpB,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;aACtC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;aACtB,IAAI,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,0FAA0F;IAChF,uBAAuB;QAC7B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,iBAAiB,CAAC,CAAC;IAChF,CAAC;IAED,qFAAqF;IAC3E,mBAAmB;QACzB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,iBAAiB,CAAC,CAAC;IAClF,CAAC;IAED,cAAc;QACV,MAAM,YAAY,GAAG,UAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACxC,sFAAsF;YACtF,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,KAAK,iBAAiB,CAAC;YACpD,OAAO,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;gBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACjE,OAAO;oBACH,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,YAAY;oBACtC,SAAS,EAAE,YAAY;oBACvB,UAAU,EAAE,IAAI,CAAC,EAAE;oBACnB,MAAM,EAAE;wBACJ,UAAU,EAAE,IAAI,CAAC,EAAE;wBACnB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;wBAC3C,SAAS,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;qBACrC;oBACD,QAAQ,EAAE,GAAG,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;iBACX,CAAC;YAC1C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AArPY,kEAA2B;AAWjB;IADlB,IAAA,kBAAM,EAAC,8CAAoB,CAAC;sCACU,8CAAoB;uEAAC;AAGzC;IADlB,IAAA,kBAAM,EAAC,qCAA2B,CAAC;sCACA,qCAA2B;oEAAC;AAG7C;IADlB,IAAA,kBAAM,EAAC,+BAAqB,CAAC;sCACK,+BAAqB;mEAAC;AAGtC;IADlB,IAAA,kBAAM,EAAC,qBAAc,CAAC;;mEAC2B;AAG/B;IADlB,IAAA,kBAAM,EAAC,8BAAqB,CAAC;;0EACkC;AA0BtD;IADT,IAAA,yBAAa,GAAE;;;;uDAMf;sCAtDQ,2BAA2B;IADvC,IAAA,sBAAU,GAAE;GACA,2BAA2B,CAqPvC"}
@@ -56,7 +56,7 @@ describe('ModelsConfigurationCategory', () => {
56
56
  'ai-features.modelSettings.requestSettings',
57
57
  'ai-features.reasoning.defaults',
58
58
  'ai-features.anthropic.AnthropicApiKey',
59
- 'ai-features.anthropic.AnthropicModels',
59
+ 'ai-features.anthropic.serverSideCompaction',
60
60
  'ai-features.google.apiKey',
61
61
  // must be ignored: owned by other categories / unrelated
62
62
  'ai-features.chat.pinChatAgent',
@@ -71,7 +71,7 @@ describe('ModelsConfigurationCategory', () => {
71
71
  const sections = category.getSections();
72
72
  (0, chai_1.expect)(sections.map(s => s.id)).to.deep.equal(['model-settings', 'anthropic', 'google']);
73
73
  (0, chai_1.expect)(sections[0].preferenceIds).to.have.members(['ai-features.modelSettings.requestSettings', 'ai-features.reasoning.defaults']);
74
- (0, chai_1.expect)(sections[1].preferenceIds).to.deep.equal(['ai-features.anthropic.AnthropicApiKey', 'ai-features.anthropic.AnthropicModels']);
74
+ (0, chai_1.expect)(sections[1].preferenceIds).to.deep.equal(['ai-features.anthropic.AnthropicApiKey', 'ai-features.anthropic.serverSideCompaction']);
75
75
  (0, chai_1.expect)(sections[2].preferenceIds).to.deep.equal(['ai-features.google.apiKey']);
76
76
  });
77
77
  it('does not treat the agent settings store as a provider', () => {
@@ -141,5 +141,35 @@ describe('ModelsConfigurationCategory', () => {
141
141
  highlight: { rowId: 'ai-features.anthropic.AnthropicApiKey' }
142
142
  });
143
143
  });
144
+ describe('model discovery section', () => {
145
+ function withDiscovery(statuses, modelIds) {
146
+ const category = createCategory([]);
147
+ const service = {
148
+ getStatus: (providerId) => statuses.find(status => status.providerId === providerId)
149
+ };
150
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
151
+ category.discoveryStatus = service;
152
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
153
+ category.models = modelIds.map(id => ({ id }));
154
+ return category;
155
+ }
156
+ function discoveredModelIds(category, providerId) {
157
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
158
+ const rendered = category.renderModelDiscovery(providerId);
159
+ return rendered && rendered.props.models.map(model => model.id);
160
+ }
161
+ it('renders nothing for a provider that does not participate in discovery', () => {
162
+ const category = withDiscovery([], ['anthropic/claude-opus-5']);
163
+ (0, chai_1.expect)(discoveredModelIds(category, 'anthropic')).to.equal(undefined);
164
+ });
165
+ it('lists the provider\'s own models, keyed by the provider id', () => {
166
+ const category = withDiscovery([{ providerId: 'anthropic', label: 'Anthropic', state: 'ready' }], ['anthropic/claude-opus-5', 'google/gemini-3.1-pro', 'anthropic-custom/foo']);
167
+ (0, chai_1.expect)(discoveredModelIds(category, 'anthropic')).to.deep.equal(['anthropic/claude-opus-5']);
168
+ });
169
+ it('honours a model-id prefix that differs from the provider id', () => {
170
+ const category = withDiscovery([{ providerId: 'openAiOfficial', label: 'OpenAI', modelIdPrefix: 'openai', state: 'ready' }], ['openai/gpt-5.5', 'openAiOfficial/gpt-5.5', 'openai-custom/local']);
171
+ (0, chai_1.expect)(discoveredModelIds(category, 'openAiOfficial')).to.deep.equal(['openai/gpt-5.5']);
172
+ });
173
+ });
144
174
  });
145
175
  //# sourceMappingURL=models-configuration-category.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"models-configuration-category.spec.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/models-configuration-category.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models-configuration-category.spec.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/models-configuration-category.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import * as React from '@theia/core/shared/react';
2
+ import { LanguageModel } from '@theia/ai-core/lib/common';
3
+ import { FavoriteModelsService } from '@theia/ai-core/lib/browser';
4
+ import { ModelDiscoveryAction, ModelDiscoveryStatus } from '@theia/ai-core/lib/common/model-discovery-status';
5
+ export interface ProviderModelDiscoverySectionProps {
6
+ readonly status: ModelDiscoveryStatus;
7
+ /** The provider's currently registered models. */
8
+ readonly models: LanguageModel[];
9
+ /** Decides which models the pickers offer, and takes the user's checks. */
10
+ readonly favorites: FavoriteModelsService;
11
+ readonly onRefresh: () => void;
12
+ /** Runs what the provider offers to do about the current state, e.g. signing in to GitHub Copilot. */
13
+ readonly onAction: (action: ModelDiscoveryAction) => void;
14
+ }
15
+ /**
16
+ * Renders a provider's model-discovery state (fetching / ready / cached / error / no credentials /
17
+ * awaiting consent / manual), a manual refresh, and the discovered models, below the provider's
18
+ * settings in the Models category. This is the provider-level surface that per-model status cannot
19
+ * give: fetching progress and failure of the list call itself.
20
+ *
21
+ * The list holds everything the provider offers, one entry per release included, which is more than
22
+ * a model picker can carry. Which of them the pickers offer is shown and controlled here, by the
23
+ * star on each row.
24
+ */
25
+ export declare const ProviderModelDiscoverySection: React.FC<ProviderModelDiscoverySectionProps>;
26
+ //# sourceMappingURL=provider-model-discovery-section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-model-discovery-section.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/provider-model-discovery-section.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAA0B,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAmB,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAc/H,MAAM,WAAW,kCAAkC;IAC/C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;IAC/B,sGAAsG;IACtG,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC7D;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAAC,kCAAkC,CA6EtF,CAAC"}
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviderModelDiscoverySection = void 0;
4
+ const jsx_runtime_1 = require("@theia/core/shared/react/jsx-runtime");
5
+ // *****************************************************************************
6
+ // Copyright (C) 2026 EclipseSource and others.
7
+ //
8
+ // This program and the accompanying materials are made available under the
9
+ // terms of the Eclipse Public License v. 2.0 which is available at
10
+ // http://www.eclipse.org/legal/epl-2.0.
11
+ //
12
+ // This Source Code may also be made available under the following Secondary
13
+ // Licenses when the conditions for such availability set forth in the Eclipse
14
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
15
+ // with the GNU Classpath Exception which is available at
16
+ // https://www.gnu.org/software/classpath/license.html.
17
+ //
18
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
19
+ // *****************************************************************************
20
+ const core_1 = require("@theia/core");
21
+ const browser_1 = require("@theia/core/lib/browser");
22
+ const React = require("@theia/core/shared/react");
23
+ const date_fns_1 = require("date-fns");
24
+ const common_1 = require("@theia/ai-core/lib/common");
25
+ const ai_configuration_primitives_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-configuration-primitives");
26
+ const ai_configuration_item_row_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-configuration-item-row");
27
+ /**
28
+ * Number of models from which the list gets a filter. Below it, scanning the list is faster than
29
+ * typing; above it — OpenAI reports dozens — it is not.
30
+ */
31
+ const FILTER_THRESHOLD = 8;
32
+ /**
33
+ * Renders a provider's model-discovery state (fetching / ready / cached / error / no credentials /
34
+ * awaiting consent / manual), a manual refresh, and the discovered models, below the provider's
35
+ * settings in the Models category. This is the provider-level surface that per-model status cannot
36
+ * give: fetching progress and failure of the list call itself.
37
+ *
38
+ * The list holds everything the provider offers, one entry per release included, which is more than
39
+ * a model picker can carry. Which of them the pickers offer is shown and controlled here, by the
40
+ * star on each row.
41
+ */
42
+ const ProviderModelDiscoverySection = ({ status, models, favorites, onRefresh, onAction }) => {
43
+ const [filter, setFilter] = React.useState('');
44
+ const [favoritesOnly, setFavoritesOnly] = React.useState(false);
45
+ // Re-render when a star is set anywhere, and when a discovery changes what is featured.
46
+ const [favoritesRevision, setFavoritesRevision] = React.useState(0);
47
+ React.useEffect(() => {
48
+ const listener = favorites.onDidChange(() => setFavoritesRevision(revision => revision + 1));
49
+ return () => listener.dispose();
50
+ }, [favorites]);
51
+ const fetching = status.state === 'fetching';
52
+ const modelIdPrefix = status.modelIdPrefix ?? status.providerId;
53
+ const overridden = favorites.hasOverrides(modelIdPrefix);
54
+ // Without a credential there is nothing to ask the provider; refreshing would only report the same
55
+ // state back. The setting or the sign-in above the list is what moves this on.
56
+ const refreshable = status.state !== 'no-credentials' && status.state !== 'awaiting-consent';
57
+ // Newest first: a provider's recent models are what a list this long is scrolled for. Models whose
58
+ // provider reports no release date (Gemini reports none) fall back to alphabetical order.
59
+ const rows = React.useMemo(() => models
60
+ .slice()
61
+ .sort(common_1.compareModelsByRecency)
62
+ // `favoritesRevision` is not read here: it is what re-runs this when a star or the featured set changes.
63
+ .map(model => describeModel(model, status.discovered, favorites))
64
+ // The provider's current line-up first, newest first within each part. A list this long is read
65
+ // from the top, and the models the picker starts with are what it is usually opened for. The sort
66
+ // is stable, so it only lifts them past the older ones without disturbing the order.
67
+ .sort((left, right) => Number(right.featured) - Number(left.featured)), [models, status.discovered, favorites, favoritesRevision]);
68
+ const matches = React.useMemo(() => rows.filter(row => (!favoritesOnly || row.favorite) && matchesFilter(row, filter)), [rows, filter, favoritesOnly]);
69
+ const favoritesOnlyLabel = favoritesOnly
70
+ ? core_1.nls.localize('theia/ai/ide/modelsConfiguration/showAllModels', 'Show all discovered models')
71
+ : core_1.nls.localize('theia/ai/ide/modelsConfiguration/showCheckedModels', 'Show only the models the AI chat input\'s model picker shows');
72
+ const filterToggles = [{
73
+ iconClass: (0, browser_1.codicon)('pass'),
74
+ title: favoritesOnlyLabel,
75
+ active: favoritesOnly,
76
+ onToggle: () => setFavoritesOnly(!favoritesOnly)
77
+ }];
78
+ return (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationSection, { title: core_1.nls.localize('theia/ai/ide/modelsConfiguration/discovery', 'Model Discovery'), count: rows.length > 0 ? rows.length : undefined, subtitle: sectionSubtitle(status, rows.length, rows.filter(row => row.favorite).length), actions: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationStatusBadge, { status: discoveryStatusBadge(status) }), (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationIconButton, { iconClass: (0, browser_1.codicon)(fetching ? 'sync' : 'refresh'), title: refreshable
79
+ ? core_1.nls.localize('theia/ai/ide/modelsConfiguration/refresh', 'Refresh the model list')
80
+ : status.message ?? core_1.nls.localize('theia/ai/ide/modelsConfiguration/refreshUnavailable', 'Nothing to refresh until the provider has a credential'), busy: fetching, disabled: fetching || !refreshable, onClick: onRefresh }), (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationIconButton, { iconClass: (0, browser_1.codicon)('discard'), title: overridden
81
+ ? core_1.nls.localize('theia/ai/ide/modelsConfiguration/resetShown', 'Reset to defaults')
82
+ : core_1.nls.localize('theia/ai/ide/modelsConfiguration/resetShownUnavailable', 'Already at the defaults'), disabled: !overridden, onClick: () => favorites.resetToDefaults(modelIdPrefix) })] }), children: (0, jsx_runtime_1.jsx)(DiscoveryBody, { status: status, rows: rows, matches: matches, filter: filter, onFilterChange: setFilter, filterToggles: filterToggles, favorites: favorites, onRefresh: onRefresh, onAction: onAction }) });
83
+ };
84
+ exports.ProviderModelDiscoverySection = ProviderModelDiscoverySection;
85
+ /**
86
+ * The line under the section title. A manually configured list says so, since that is why no discovery
87
+ * ran; otherwise it states once — rather than leaving it to the tooltip of each of forty rows — that
88
+ * the checks are about the chat input alone. An agent's model and a model alias are picked from every
89
+ * discovered model, on their own pages.
90
+ */
91
+ function sectionSubtitle(status, rowCount, shownCount) {
92
+ if (status.state === 'overridden') {
93
+ return status.message;
94
+ }
95
+ // The ratio is the overview a list this long cannot give by itself, and it says what the checks mean.
96
+ return rowCount > 0
97
+ ? core_1.nls.localize('theia/ai/ide/modelsConfiguration/shownExplanation', '{0} of {1} shown in the AI chat input\'s model picker', shownCount, rowCount)
98
+ : undefined;
99
+ }
100
+ function describeModel(model, discovered, favorites) {
101
+ // Registered ids carry the `<provider>/` prefix; what the provider reported does not.
102
+ const id = model.id.substring(model.id.indexOf('/') + 1);
103
+ const reported = discovered?.find(candidate => candidate.id === id);
104
+ return {
105
+ id,
106
+ qualifiedId: model.id,
107
+ label: reported?.label ?? model.name,
108
+ description: reported?.description,
109
+ released: model.released ?? reported?.released,
110
+ ready: model.status.status === 'ready',
111
+ statusMessage: model.status.message,
112
+ favorite: favorites.isFavorite(model.id),
113
+ featured: favorites.isFeatured(model.id)
114
+ };
115
+ }
116
+ function matchesFilter(row, filter) {
117
+ const query = filter.trim().toLowerCase();
118
+ return query.length === 0
119
+ || row.id.toLowerCase().includes(query)
120
+ || (row.label?.toLowerCase().includes(query) ?? false);
121
+ }
122
+ const DiscoveryBody = ({ status, rows, matches, filter, onFilterChange, filterToggles, favorites, onRefresh, onAction }) => {
123
+ // The provider's API-key and consent settings sit on the same page, right above this section — but
124
+ // a provider whose credential is a sign-in rather than a setting names the command that gets one.
125
+ if (status.state === 'no-credentials' || status.state === 'awaiting-consent') {
126
+ return (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationEmptyState, { message: status.message ?? '', iconClass: (0, browser_1.codicon)('key'), action: status.action && (0, jsx_runtime_1.jsx)("button", { className: 'theia-button main', onClick: () => onAction(status.action), children: status.action.label }) });
127
+ }
128
+ const retry = (0, jsx_runtime_1.jsx)("button", { className: 'theia-button main', onClick: onRefresh, children: core_1.nls.localizeByDefault('Retry') });
129
+ const refresh = (0, jsx_runtime_1.jsx)("button", { className: 'theia-button main', onClick: onRefresh, children: core_1.nls.localizeByDefault('Refresh') });
130
+ return (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [status.state === 'error' && (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationCallout, { message: status.message ?? '', action: retry }), status.state === 'ready' && status.fromCache && status.message && (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationCallout, { message: status.message, action: refresh }), rows.length === 0
131
+ ? (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationEmptyState, { message: core_1.nls.localize('theia/ai/ide/modelsConfiguration/noModels', 'No models discovered yet.'), iconClass: (0, browser_1.codicon)('cloud') })
132
+ : (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [rows.length > FILTER_THRESHOLD && (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationFilterInput, { value: filter, onChange: onFilterChange, placeholder: core_1.nls.localize('theia/ai/ide/modelsConfiguration/filterModels', 'Filter models'), toggles: filterToggles }), matches.length === 0
133
+ ? (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationEmptyState, { message: core_1.nls.localizeByDefault('No results found') })
134
+ : (0, jsx_runtime_1.jsx)(ModelRows, { rows: matches, favorites: favorites })] })] });
135
+ };
136
+ const ModelRows = ({ rows, favorites }) => (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: rows.map(row => (0, jsx_runtime_1.jsx)(ai_configuration_item_row_1.AiConfigurationItemRow, {
137
+ // The id is the heading on every row, whatever the provider reports: it is what agents, aliases
138
+ // and settings reference, and OpenAI reports nothing else, so heading it with the name where
139
+ // there is one would give each provider a differently shaped list.
140
+ label: row.id,
141
+ // Kept on the row whether the model is checked or not: it says that this is one of the
142
+ // provider's current models, which is why the picker starts with it and stays true after
143
+ // someone unchecks it.
144
+ tags: row.featured
145
+ ? [{
146
+ label: core_1.nls.localizeByDefault('Default'),
147
+ title: core_1.nls.localize('theia/ai/ide/modelsConfiguration/defaultModel', 'One of the newest models of this provider, which the AI chat input\'s model picker shows unless it is hidden here')
148
+ }]
149
+ : undefined, description: modelRowDescription(row),
150
+ // Every model in this list is ready as long as the provider has a key, which it has whenever the
151
+ // list is shown at all. Only the exception is worth a badge.
152
+ status: row.ready ? undefined : notReadyBadge(row), trailing: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [row.released !== undefined && (0, jsx_runtime_1.jsx)("span", { className: 'ai-configuration-item-row-detail', children: core_1.nls.localize('theia/ai/ide/modelsConfiguration/released', 'released {0}', (0, date_fns_1.formatDistanceToNow)(row.released, { addSuffix: true })) }), (0, jsx_runtime_1.jsx)(ShowInChatButton, { row: row, favorites: favorites })] }) }, row.id)) });
153
+ /**
154
+ * Whether the AI chat input's model picker shows this model: a checked circle when it does, an empty
155
+ * one when it does not. Nothing else is affected — an agent's model and a model alias are picked from
156
+ * every discovered model, on their own pages.
157
+ *
158
+ * What a model released tomorrow is shown by is the `Default` badge on its row, not a check made
159
+ * here; unchecking one of those is what says otherwise, and that is all that is stored.
160
+ */
161
+ const ShowInChatButton = ({ row, favorites }) => {
162
+ const title = row.favorite
163
+ ? core_1.nls.localize('theia/ai/ide/modelsConfiguration/hideModel', 'Hide this model from the AI chat input\'s model picker')
164
+ : core_1.nls.localize('theia/ai/ide/modelsConfiguration/showModel', 'Show this model in the AI chat input\'s model picker');
165
+ return (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationIconButton, { iconClass: (0, browser_1.codicon)(row.favorite ? 'pass' : 'circle-large'), title: title, onClick: () => favorites.toggleFavorite(row.qualifiedId) });
166
+ };
167
+ /** What the provider reports about the model, if anything: its name, its description, or both. */
168
+ function modelRowDescription(row) {
169
+ const parts = [row.label, row.description].filter(part => part !== undefined);
170
+ return parts.length > 0 ? parts.join(' · ') : undefined;
171
+ }
172
+ function notReadyBadge(row) {
173
+ return {
174
+ kind: 'warn',
175
+ label: core_1.nls.localize('theia/ai/ide/modelsConfiguration/modelNotReady', 'Not ready'),
176
+ tooltip: row.statusMessage
177
+ };
178
+ }
179
+ /** Maps the discovery state onto the shared status badge, so it reads like every other badge in the view. */
180
+ function discoveryStatusBadge(status) {
181
+ const badge = genericStatusBadge(status);
182
+ // A provider whose credential is not an API key says so itself; the state alone cannot know.
183
+ return status.stateLabel ? { ...badge, label: status.stateLabel } : badge;
184
+ }
185
+ function genericStatusBadge(status) {
186
+ switch (status.state) {
187
+ case 'no-credentials':
188
+ return { kind: 'warn', label: core_1.nls.localize('theia/ai/ide/modelsConfiguration/noKey', 'No API key'), tooltip: status.message };
189
+ case 'awaiting-consent':
190
+ return { kind: 'warn', label: core_1.nls.localize('theia/ai/ide/modelsConfiguration/awaitingConsent', 'Awaiting consent'), tooltip: status.message };
191
+ case 'fetching':
192
+ return { kind: 'off', label: core_1.nls.localize('theia/ai/ide/modelsConfiguration/fetching', 'Fetching…'), tooltip: status.message };
193
+ case 'error':
194
+ return { kind: 'error', label: core_1.nls.localizeByDefault('Error'), tooltip: status.message };
195
+ case 'overridden':
196
+ return { kind: 'off', label: core_1.nls.localizeByDefault('Manual'), tooltip: status.message };
197
+ case 'ready':
198
+ if (status.fromCache) {
199
+ return { kind: 'warn', label: core_1.nls.localize('theia/ai/ide/modelsConfiguration/cached', 'Cached'), tooltip: status.message };
200
+ }
201
+ return {
202
+ kind: 'on',
203
+ label: status.lastFetch
204
+ ? core_1.nls.localize('theia/ai/ide/modelsConfiguration/updated', 'Updated {0}', (0, date_fns_1.formatDistanceToNow)(status.lastFetch, { addSuffix: true }))
205
+ : core_1.nls.localize('theia/ai/ide/modelsConfiguration/ready', 'Ready'),
206
+ tooltip: status.message
207
+ };
208
+ default:
209
+ return { kind: 'off', label: core_1.nls.localizeByDefault('Idle'), tooltip: status.message };
210
+ }
211
+ }
212
+ //# sourceMappingURL=provider-model-discovery-section.js.map