@theia/ai-ide 1.76.0-next.7 → 1.76.0

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 (174) hide show
  1. package/lib/browser/ai-allow-all-mode-chat-banner.js +1 -1
  2. package/lib/browser/ai-allow-all-mode-chat-banner.js.map +1 -1
  3. package/lib/browser/ai-aware-scm-commit-widget.d.ts +27 -0
  4. package/lib/browser/ai-aware-scm-commit-widget.d.ts.map +1 -0
  5. package/lib/browser/ai-aware-scm-commit-widget.js +142 -0
  6. package/lib/browser/ai-aware-scm-commit-widget.js.map +1 -0
  7. package/lib/browser/ai-configuration/ai-configuration-detail-widget.d.ts +10 -4
  8. package/lib/browser/ai-configuration/ai-configuration-detail-widget.d.ts.map +1 -1
  9. package/lib/browser/ai-configuration/ai-configuration-detail-widget.js +12 -7
  10. package/lib/browser/ai-configuration/ai-configuration-detail-widget.js.map +1 -1
  11. package/lib/browser/ai-configuration/ai-configuration-detail-widget.spec.js +14 -14
  12. package/lib/browser/ai-configuration/ai-configuration-detail-widget.spec.js.map +1 -1
  13. package/lib/browser/ai-configuration/ai-configuration-tree-widget.d.ts +6 -0
  14. package/lib/browser/ai-configuration/ai-configuration-tree-widget.d.ts.map +1 -1
  15. package/lib/browser/ai-configuration/ai-configuration-tree-widget.js +9 -0
  16. package/lib/browser/ai-configuration/ai-configuration-tree-widget.js.map +1 -1
  17. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.d.ts.map +1 -1
  18. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.js +2 -1
  19. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.js.map +1 -1
  20. package/lib/browser/ai-configuration/categories/agent-chips.js +1 -1
  21. package/lib/browser/ai-configuration/categories/agent-chips.js.map +1 -1
  22. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.d.ts +8 -0
  23. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.d.ts.map +1 -1
  24. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.js +27 -8
  25. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.js.map +1 -1
  26. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.spec.js +38 -2
  27. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.spec.js.map +1 -1
  28. package/lib/browser/ai-configuration/categories/models-configuration-category.d.ts +13 -2
  29. package/lib/browser/ai-configuration/categories/models-configuration-category.d.ts.map +1 -1
  30. package/lib/browser/ai-configuration/categories/models-configuration-category.js +41 -2
  31. package/lib/browser/ai-configuration/categories/models-configuration-category.js.map +1 -1
  32. package/lib/browser/ai-configuration/categories/models-configuration-category.spec.js +32 -2
  33. package/lib/browser/ai-configuration/categories/models-configuration-category.spec.js.map +1 -1
  34. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.d.ts +26 -0
  35. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.d.ts.map +1 -0
  36. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.js +212 -0
  37. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.js.map +1 -0
  38. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.spec.d.ts +2 -0
  39. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.spec.d.ts.map +1 -0
  40. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.spec.js +423 -0
  41. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.spec.js.map +1 -0
  42. package/lib/browser/ai-configuration/language-model-renderer.d.ts.map +1 -1
  43. package/lib/browser/ai-configuration/language-model-renderer.js +10 -3
  44. package/lib/browser/ai-configuration/language-model-renderer.js.map +1 -1
  45. package/lib/browser/ai-getting-started-commands.d.ts +10 -0
  46. package/lib/browser/ai-getting-started-commands.d.ts.map +1 -0
  47. package/lib/browser/ai-getting-started-commands.js +34 -0
  48. package/lib/browser/ai-getting-started-commands.js.map +1 -0
  49. package/lib/browser/ai-getting-started-contribution.d.ts +20 -0
  50. package/lib/browser/ai-getting-started-contribution.d.ts.map +1 -0
  51. package/lib/browser/ai-getting-started-contribution.js +70 -0
  52. package/lib/browser/ai-getting-started-contribution.js.map +1 -0
  53. package/lib/browser/ai-getting-started-walkthrough.d.ts +41 -0
  54. package/lib/browser/ai-getting-started-walkthrough.d.ts.map +1 -0
  55. package/lib/browser/ai-getting-started-walkthrough.js +225 -0
  56. package/lib/browser/ai-getting-started-walkthrough.js.map +1 -0
  57. package/lib/browser/ai-getting-started-walkthrough.spec.d.ts +2 -0
  58. package/lib/browser/ai-getting-started-walkthrough.spec.d.ts.map +1 -0
  59. package/lib/browser/ai-getting-started-walkthrough.spec.js +124 -0
  60. package/lib/browser/ai-getting-started-walkthrough.spec.js.map +1 -0
  61. package/lib/browser/ai-walkthrough-context-keys.d.ts +55 -0
  62. package/lib/browser/ai-walkthrough-context-keys.d.ts.map +1 -0
  63. package/lib/browser/ai-walkthrough-context-keys.js +145 -0
  64. package/lib/browser/ai-walkthrough-context-keys.js.map +1 -0
  65. package/lib/browser/ai-walkthrough-context-keys.spec.d.ts +2 -0
  66. package/lib/browser/ai-walkthrough-context-keys.spec.d.ts.map +1 -0
  67. package/lib/browser/ai-walkthrough-context-keys.spec.js +166 -0
  68. package/lib/browser/ai-walkthrough-context-keys.spec.js.map +1 -0
  69. package/lib/browser/chat-session-item.js +2 -2
  70. package/lib/browser/chat-session-item.js.map +1 -1
  71. package/lib/browser/commit-message-agent.d.ts +31 -0
  72. package/lib/browser/commit-message-agent.d.ts.map +1 -0
  73. package/lib/browser/commit-message-agent.js +99 -0
  74. package/lib/browser/commit-message-agent.js.map +1 -0
  75. package/lib/browser/commit-message-agent.spec.d.ts +2 -0
  76. package/lib/browser/commit-message-agent.spec.d.ts.map +1 -0
  77. package/lib/browser/commit-message-agent.spec.js +82 -0
  78. package/lib/browser/commit-message-agent.spec.js.map +1 -0
  79. package/lib/browser/commit-message-command-contribution.d.ts +15 -0
  80. package/lib/browser/commit-message-command-contribution.d.ts.map +1 -0
  81. package/lib/browser/commit-message-command-contribution.js +73 -0
  82. package/lib/browser/commit-message-command-contribution.js.map +1 -0
  83. package/lib/browser/commit-message-commands.d.ts +5 -0
  84. package/lib/browser/commit-message-commands.d.ts.map +1 -0
  85. package/lib/browser/commit-message-commands.js +28 -0
  86. package/lib/browser/commit-message-commands.js.map +1 -0
  87. package/lib/browser/commit-message-prompt-template.d.ts +11 -0
  88. package/lib/browser/commit-message-prompt-template.d.ts.map +1 -0
  89. package/lib/browser/commit-message-prompt-template.js +63 -0
  90. package/lib/browser/commit-message-prompt-template.js.map +1 -0
  91. package/lib/browser/commit-message-runner.d.ts +41 -0
  92. package/lib/browser/commit-message-runner.d.ts.map +1 -0
  93. package/lib/browser/commit-message-runner.js +143 -0
  94. package/lib/browser/commit-message-runner.js.map +1 -0
  95. package/lib/browser/commit-message-runner.spec.d.ts +2 -0
  96. package/lib/browser/commit-message-runner.spec.d.ts.map +1 -0
  97. package/lib/browser/commit-message-runner.spec.js +206 -0
  98. package/lib/browser/commit-message-runner.spec.js.map +1 -0
  99. package/lib/browser/frontend-module.d.ts.map +1 -1
  100. package/lib/browser/frontend-module.js +25 -0
  101. package/lib/browser/frontend-module.js.map +1 -1
  102. package/lib/browser/git-changes-tool.d.ts +73 -0
  103. package/lib/browser/git-changes-tool.d.ts.map +1 -0
  104. package/lib/browser/git-changes-tool.js +217 -0
  105. package/lib/browser/git-changes-tool.js.map +1 -0
  106. package/lib/browser/git-changes-tool.spec.d.ts +2 -0
  107. package/lib/browser/git-changes-tool.spec.d.ts.map +1 -0
  108. package/lib/browser/git-changes-tool.spec.js +167 -0
  109. package/lib/browser/git-changes-tool.spec.js.map +1 -0
  110. package/lib/browser/ide-chat-welcome-message-provider.d.ts +26 -28
  111. package/lib/browser/ide-chat-welcome-message-provider.d.ts.map +1 -1
  112. package/lib/browser/ide-chat-welcome-message-provider.js +61 -151
  113. package/lib/browser/ide-chat-welcome-message-provider.js.map +1 -1
  114. package/lib/browser/review/pr-review-capability-contribution.js +1 -1
  115. package/lib/browser/review/pr-review-capability-contribution.js.map +1 -1
  116. package/lib/browser/user-interaction-tool-renderer.d.ts +6 -0
  117. package/lib/browser/user-interaction-tool-renderer.d.ts.map +1 -1
  118. package/lib/browser/user-interaction-tool-renderer.js +36 -7
  119. package/lib/browser/user-interaction-tool-renderer.js.map +1 -1
  120. package/lib/browser/user-interaction-tool.d.ts +23 -1
  121. package/lib/browser/user-interaction-tool.d.ts.map +1 -1
  122. package/lib/browser/user-interaction-tool.js +56 -17
  123. package/lib/browser/user-interaction-tool.js.map +1 -1
  124. package/lib/browser/user-interaction-tool.spec.js +151 -2
  125. package/lib/browser/user-interaction-tool.spec.js.map +1 -1
  126. package/lib/common/command-prompt-template.js +1 -1
  127. package/lib/common/user-interaction-tool.d.ts +19 -1
  128. package/lib/common/user-interaction-tool.d.ts.map +1 -1
  129. package/lib/common/user-interaction-tool.js +100 -29
  130. package/lib/common/user-interaction-tool.js.map +1 -1
  131. package/lib/common/user-interaction-tool.spec.js +215 -174
  132. package/lib/common/user-interaction-tool.spec.js.map +1 -1
  133. package/package.json +26 -25
  134. package/src/browser/ai-allow-all-mode-chat-banner.tsx +2 -2
  135. package/src/browser/ai-aware-scm-commit-widget.tsx +153 -0
  136. package/src/browser/ai-configuration/ai-configuration-detail-widget.spec.ts +14 -14
  137. package/src/browser/ai-configuration/ai-configuration-detail-widget.tsx +12 -7
  138. package/src/browser/ai-configuration/ai-configuration-tree-widget.tsx +8 -0
  139. package/src/browser/ai-configuration/categories/agent-capabilities-settings.tsx +7 -8
  140. package/src/browser/ai-configuration/categories/agent-chips.tsx +1 -1
  141. package/src/browser/ai-configuration/categories/model-aliases-configuration-category.spec.ts +40 -2
  142. package/src/browser/ai-configuration/categories/model-aliases-configuration-category.tsx +31 -10
  143. package/src/browser/ai-configuration/categories/models-configuration-category.spec.ts +47 -2
  144. package/src/browser/ai-configuration/categories/models-configuration-category.tsx +52 -5
  145. package/src/browser/ai-configuration/categories/provider-model-discovery-section.spec.tsx +451 -0
  146. package/src/browser/ai-configuration/categories/provider-model-discovery-section.tsx +341 -0
  147. package/src/browser/ai-configuration/language-model-renderer.tsx +11 -3
  148. package/src/browser/ai-getting-started-commands.ts +33 -0
  149. package/src/browser/ai-getting-started-contribution.ts +64 -0
  150. package/src/browser/ai-getting-started-walkthrough.spec.ts +146 -0
  151. package/src/browser/ai-getting-started-walkthrough.ts +249 -0
  152. package/src/browser/ai-walkthrough-context-keys.spec.ts +209 -0
  153. package/src/browser/ai-walkthrough-context-keys.ts +147 -0
  154. package/src/browser/chat-session-item.tsx +2 -2
  155. package/src/browser/commit-message-agent.spec.ts +97 -0
  156. package/src/browser/commit-message-agent.ts +113 -0
  157. package/src/browser/commit-message-command-contribution.ts +67 -0
  158. package/src/browser/commit-message-commands.ts +25 -0
  159. package/src/browser/commit-message-prompt-template.ts +65 -0
  160. package/src/browser/commit-message-runner.spec.ts +266 -0
  161. package/src/browser/commit-message-runner.ts +163 -0
  162. package/src/browser/frontend-module.ts +27 -0
  163. package/src/browser/git-changes-tool.spec.ts +200 -0
  164. package/src/browser/git-changes-tool.ts +239 -0
  165. package/src/browser/ide-chat-welcome-message-provider.tsx +93 -230
  166. package/src/browser/review/pr-review-capability-contribution.ts +1 -1
  167. package/src/browser/style/commit-message-overlay.css +64 -0
  168. package/src/browser/style/index.css +4 -42
  169. package/src/browser/user-interaction-tool-renderer.tsx +38 -8
  170. package/src/browser/user-interaction-tool.spec.ts +201 -2
  171. package/src/browser/user-interaction-tool.ts +69 -18
  172. package/src/common/command-prompt-template.ts +1 -1
  173. package/src/common/user-interaction-tool.spec.ts +217 -161
  174. package/src/common/user-interaction-tool.ts +127 -32
@@ -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.localizeByDefault('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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-model-discovery-section.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/provider-model-discovery-section.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=provider-model-discovery-section.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-model-discovery-section.spec.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/provider-model-discovery-section.spec.tsx"],"names":[],"mappings":""}