@theia/ai-ide 1.75.0-next.8 → 1.75.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 (509) hide show
  1. package/lib/browser/ai-allow-all-mode-chat-banner.js +2 -20
  2. package/lib/browser/ai-allow-all-mode-chat-banner.js.map +1 -1
  3. package/lib/browser/ai-configuration/agent-icon.d.ts +16 -0
  4. package/lib/browser/ai-configuration/agent-icon.d.ts.map +1 -0
  5. package/lib/browser/ai-configuration/agent-icon.js +38 -0
  6. package/lib/browser/ai-configuration/agent-icon.js.map +1 -0
  7. package/lib/browser/ai-configuration/ai-configuration-breadcrumbs-contribution.d.ts +36 -0
  8. package/lib/browser/ai-configuration/ai-configuration-breadcrumbs-contribution.d.ts.map +1 -0
  9. package/lib/browser/ai-configuration/ai-configuration-breadcrumbs-contribution.js +163 -0
  10. package/lib/browser/ai-configuration/ai-configuration-breadcrumbs-contribution.js.map +1 -0
  11. package/lib/browser/ai-configuration/ai-configuration-detail-widget.d.ts +50 -0
  12. package/lib/browser/ai-configuration/ai-configuration-detail-widget.d.ts.map +1 -0
  13. package/lib/browser/ai-configuration/ai-configuration-detail-widget.js +208 -0
  14. package/lib/browser/ai-configuration/ai-configuration-detail-widget.js.map +1 -0
  15. package/lib/browser/ai-configuration/ai-configuration-detail-widget.spec.d.ts +2 -0
  16. package/lib/browser/ai-configuration/ai-configuration-detail-widget.spec.d.ts.map +1 -0
  17. package/lib/browser/ai-configuration/ai-configuration-detail-widget.spec.js +139 -0
  18. package/lib/browser/ai-configuration/ai-configuration-detail-widget.spec.js.map +1 -0
  19. package/lib/browser/ai-configuration/ai-configuration-label-provider-contribution.d.ts +13 -0
  20. package/lib/browser/ai-configuration/ai-configuration-label-provider-contribution.d.ts.map +1 -0
  21. package/lib/browser/ai-configuration/ai-configuration-label-provider-contribution.js +48 -0
  22. package/lib/browser/ai-configuration/ai-configuration-label-provider-contribution.js.map +1 -0
  23. package/lib/browser/ai-configuration/ai-configuration-open-preference-renderer.d.ts +22 -0
  24. package/lib/browser/ai-configuration/ai-configuration-open-preference-renderer.d.ts.map +1 -0
  25. package/lib/browser/ai-configuration/ai-configuration-open-preference-renderer.js +72 -0
  26. package/lib/browser/ai-configuration/ai-configuration-open-preference-renderer.js.map +1 -0
  27. package/lib/browser/ai-configuration/ai-configuration-preference-ownership.spec.d.ts +2 -0
  28. package/lib/browser/ai-configuration/ai-configuration-preference-ownership.spec.d.ts.map +1 -0
  29. package/lib/browser/ai-configuration/ai-configuration-preference-ownership.spec.js +126 -0
  30. package/lib/browser/ai-configuration/ai-configuration-preference-ownership.spec.js.map +1 -0
  31. package/lib/browser/ai-configuration/ai-configuration-resource.d.ts +10 -0
  32. package/lib/browser/ai-configuration/ai-configuration-resource.d.ts.map +1 -0
  33. package/lib/browser/ai-configuration/{components/configuration-section.js → ai-configuration-resource.js} +11 -11
  34. package/lib/browser/ai-configuration/ai-configuration-resource.js.map +1 -0
  35. package/lib/browser/ai-configuration/ai-configuration-search-widget.d.ts +29 -0
  36. package/lib/browser/ai-configuration/ai-configuration-search-widget.d.ts.map +1 -0
  37. package/lib/browser/ai-configuration/ai-configuration-search-widget.js +106 -0
  38. package/lib/browser/ai-configuration/ai-configuration-search-widget.js.map +1 -0
  39. package/lib/browser/ai-configuration/ai-configuration-search.d.ts +18 -0
  40. package/lib/browser/ai-configuration/ai-configuration-search.d.ts.map +1 -0
  41. package/lib/browser/ai-configuration/ai-configuration-search.js +45 -0
  42. package/lib/browser/ai-configuration/ai-configuration-search.js.map +1 -0
  43. package/lib/browser/ai-configuration/ai-configuration-search.spec.d.ts +2 -0
  44. package/lib/browser/ai-configuration/ai-configuration-search.spec.d.ts.map +1 -0
  45. package/lib/browser/ai-configuration/ai-configuration-search.spec.js +79 -0
  46. package/lib/browser/ai-configuration/ai-configuration-search.spec.js.map +1 -0
  47. package/lib/browser/ai-configuration/ai-configuration-tree-model.d.ts +8 -0
  48. package/lib/browser/ai-configuration/ai-configuration-tree-model.d.ts.map +1 -0
  49. package/lib/browser/ai-configuration/{base/ai-configuration-base-widget.js → ai-configuration-tree-model.js} +11 -14
  50. package/lib/browser/ai-configuration/ai-configuration-tree-model.js.map +1 -0
  51. package/lib/browser/ai-configuration/ai-configuration-tree-nodes.d.ts +57 -0
  52. package/lib/browser/ai-configuration/ai-configuration-tree-nodes.d.ts.map +1 -0
  53. package/lib/browser/ai-configuration/ai-configuration-tree-nodes.js +134 -0
  54. package/lib/browser/ai-configuration/ai-configuration-tree-nodes.js.map +1 -0
  55. package/lib/browser/ai-configuration/ai-configuration-tree-nodes.spec.d.ts +2 -0
  56. package/lib/browser/ai-configuration/ai-configuration-tree-nodes.spec.d.ts.map +1 -0
  57. package/lib/browser/ai-configuration/ai-configuration-tree-nodes.spec.js +134 -0
  58. package/lib/browser/ai-configuration/ai-configuration-tree-nodes.spec.js.map +1 -0
  59. package/lib/browser/ai-configuration/ai-configuration-tree-widget.d.ts +96 -0
  60. package/lib/browser/ai-configuration/ai-configuration-tree-widget.d.ts.map +1 -0
  61. package/lib/browser/ai-configuration/ai-configuration-tree-widget.js +407 -0
  62. package/lib/browser/ai-configuration/ai-configuration-tree-widget.js.map +1 -0
  63. package/lib/browser/ai-configuration/ai-configuration-view-contribution.d.ts +38 -4
  64. package/lib/browser/ai-configuration/ai-configuration-view-contribution.d.ts.map +1 -1
  65. package/lib/browser/ai-configuration/ai-configuration-view-contribution.js +151 -19
  66. package/lib/browser/ai-configuration/ai-configuration-view-contribution.js.map +1 -1
  67. package/lib/browser/ai-configuration/ai-configuration-widget.d.ts +21 -23
  68. package/lib/browser/ai-configuration/ai-configuration-widget.d.ts.map +1 -1
  69. package/lib/browser/ai-configuration/ai-configuration-widget.js +102 -70
  70. package/lib/browser/ai-configuration/ai-configuration-widget.js.map +1 -1
  71. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.d.ts +56 -0
  72. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.d.ts.map +1 -0
  73. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.js +195 -0
  74. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.js.map +1 -0
  75. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.spec.d.ts +2 -0
  76. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.spec.d.ts.map +1 -0
  77. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.spec.js +140 -0
  78. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.spec.js.map +1 -0
  79. package/lib/browser/ai-configuration/categories/agent-chips.d.ts +15 -0
  80. package/lib/browser/ai-configuration/categories/agent-chips.d.ts.map +1 -0
  81. package/lib/browser/ai-configuration/categories/agent-chips.js +19 -0
  82. package/lib/browser/ai-configuration/categories/agent-chips.js.map +1 -0
  83. package/lib/browser/ai-configuration/categories/agent-detail-model.d.ts +37 -0
  84. package/lib/browser/ai-configuration/categories/agent-detail-model.d.ts.map +1 -0
  85. package/lib/browser/ai-configuration/categories/agent-detail-model.js +99 -0
  86. package/lib/browser/ai-configuration/categories/agent-detail-model.js.map +1 -0
  87. package/lib/browser/ai-configuration/categories/agent-detail-view.d.ts +28 -0
  88. package/lib/browser/ai-configuration/categories/agent-detail-view.d.ts.map +1 -0
  89. package/lib/browser/ai-configuration/categories/agent-detail-view.js +135 -0
  90. package/lib/browser/ai-configuration/categories/agent-detail-view.js.map +1 -0
  91. package/lib/browser/ai-configuration/categories/agents-configuration-category.d.ts +78 -0
  92. package/lib/browser/ai-configuration/categories/agents-configuration-category.d.ts.map +1 -0
  93. package/lib/browser/ai-configuration/categories/agents-configuration-category.js +352 -0
  94. package/lib/browser/ai-configuration/categories/agents-configuration-category.js.map +1 -0
  95. package/lib/browser/ai-configuration/categories/agents-configuration-category.spec.d.ts +2 -0
  96. package/lib/browser/ai-configuration/categories/agents-configuration-category.spec.d.ts.map +1 -0
  97. package/lib/browser/ai-configuration/categories/agents-configuration-category.spec.js +99 -0
  98. package/lib/browser/ai-configuration/categories/agents-configuration-category.spec.js.map +1 -0
  99. package/lib/browser/ai-configuration/categories/general-configuration-category.d.ts +93 -0
  100. package/lib/browser/ai-configuration/categories/general-configuration-category.d.ts.map +1 -0
  101. package/lib/browser/ai-configuration/categories/general-configuration-category.js +313 -0
  102. package/lib/browser/ai-configuration/categories/general-configuration-category.js.map +1 -0
  103. package/lib/browser/ai-configuration/categories/general-configuration-category.spec.d.ts +2 -0
  104. package/lib/browser/ai-configuration/categories/general-configuration-category.spec.d.ts.map +1 -0
  105. package/lib/browser/ai-configuration/categories/general-configuration-category.spec.js +213 -0
  106. package/lib/browser/ai-configuration/categories/general-configuration-category.spec.js.map +1 -0
  107. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.d.ts +53 -0
  108. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.d.ts.map +1 -0
  109. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.js +241 -0
  110. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.js.map +1 -0
  111. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.spec.d.ts +2 -0
  112. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.spec.d.ts.map +1 -0
  113. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.spec.js +75 -0
  114. package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.spec.js.map +1 -0
  115. package/lib/browser/ai-configuration/categories/models-configuration-category.d.ts +72 -0
  116. package/lib/browser/ai-configuration/categories/models-configuration-category.d.ts.map +1 -0
  117. package/lib/browser/ai-configuration/categories/models-configuration-category.js +227 -0
  118. package/lib/browser/ai-configuration/categories/models-configuration-category.js.map +1 -0
  119. package/lib/browser/ai-configuration/categories/models-configuration-category.spec.d.ts +2 -0
  120. package/lib/browser/ai-configuration/categories/models-configuration-category.spec.d.ts.map +1 -0
  121. package/lib/browser/ai-configuration/categories/models-configuration-category.spec.js +145 -0
  122. package/lib/browser/ai-configuration/categories/models-configuration-category.spec.js.map +1 -0
  123. package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.d.ts +114 -0
  124. package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.d.ts.map +1 -0
  125. package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.js +341 -0
  126. package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.js.map +1 -0
  127. package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.spec.d.ts +2 -0
  128. package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.spec.d.ts.map +1 -0
  129. package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.spec.js +199 -0
  130. package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.spec.js.map +1 -0
  131. package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.d.ts +84 -0
  132. package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.d.ts.map +1 -0
  133. package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.js +341 -0
  134. package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.js.map +1 -0
  135. package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.spec.d.ts +2 -0
  136. package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.spec.d.ts.map +1 -0
  137. package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.spec.js +184 -0
  138. package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.spec.js.map +1 -0
  139. package/lib/browser/ai-configuration/categories/token-usage-configuration-category.d.ts +38 -0
  140. package/lib/browser/ai-configuration/categories/token-usage-configuration-category.d.ts.map +1 -0
  141. package/lib/browser/ai-configuration/categories/token-usage-configuration-category.js +130 -0
  142. package/lib/browser/ai-configuration/categories/token-usage-configuration-category.js.map +1 -0
  143. package/lib/browser/ai-configuration/categories/token-usage-configuration-category.spec.d.ts +2 -0
  144. package/lib/browser/ai-configuration/categories/token-usage-configuration-category.spec.d.ts.map +1 -0
  145. package/lib/browser/ai-configuration/categories/token-usage-configuration-category.spec.js +51 -0
  146. package/lib/browser/ai-configuration/categories/token-usage-configuration-category.spec.js.map +1 -0
  147. package/lib/browser/ai-configuration/categories/tools-configuration-category.d.ts +60 -0
  148. package/lib/browser/ai-configuration/categories/tools-configuration-category.d.ts.map +1 -0
  149. package/lib/browser/ai-configuration/categories/tools-configuration-category.js +302 -0
  150. package/lib/browser/ai-configuration/categories/tools-configuration-category.js.map +1 -0
  151. package/lib/browser/ai-configuration/categories/tools-configuration-category.spec.d.ts +2 -0
  152. package/lib/browser/ai-configuration/categories/tools-configuration-category.spec.d.ts.map +1 -0
  153. package/lib/browser/ai-configuration/categories/tools-configuration-category.spec.js +111 -0
  154. package/lib/browser/ai-configuration/categories/tools-configuration-category.spec.js.map +1 -0
  155. package/lib/browser/ai-configuration/categories/variables-configuration-category.d.ts +72 -0
  156. package/lib/browser/ai-configuration/categories/variables-configuration-category.d.ts.map +1 -0
  157. package/lib/browser/ai-configuration/categories/variables-configuration-category.js +245 -0
  158. package/lib/browser/ai-configuration/categories/variables-configuration-category.js.map +1 -0
  159. package/lib/browser/ai-configuration/categories/variables-configuration-category.spec.d.ts +2 -0
  160. package/lib/browser/ai-configuration/categories/variables-configuration-category.spec.d.ts.map +1 -0
  161. package/lib/browser/ai-configuration/categories/variables-configuration-category.spec.js +131 -0
  162. package/lib/browser/ai-configuration/categories/variables-configuration-category.spec.js.map +1 -0
  163. package/lib/browser/ai-configuration/components/agent-notification-settings.d.ts +6 -2
  164. package/lib/browser/ai-configuration/components/agent-notification-settings.d.ts.map +1 -1
  165. package/lib/browser/ai-configuration/components/agent-notification-settings.js +15 -21
  166. package/lib/browser/ai-configuration/components/agent-notification-settings.js.map +1 -1
  167. package/lib/browser/ai-configuration/language-model-renderer.d.ts +25 -1
  168. package/lib/browser/ai-configuration/language-model-renderer.d.ts.map +1 -1
  169. package/lib/browser/ai-configuration/language-model-renderer.js +159 -63
  170. package/lib/browser/ai-configuration/language-model-renderer.js.map +1 -1
  171. package/lib/browser/ai-configuration/language-model-renderer.spec.d.ts +2 -0
  172. package/lib/browser/ai-configuration/language-model-renderer.spec.d.ts.map +1 -0
  173. package/lib/browser/ai-configuration/language-model-renderer.spec.js +93 -0
  174. package/lib/browser/ai-configuration/language-model-renderer.spec.js.map +1 -0
  175. package/lib/browser/ai-sessions-widget.js +12 -16
  176. package/lib/browser/ai-sessions-widget.js.map +1 -1
  177. package/lib/browser/app-tester-chat-agent.d.ts +2 -0
  178. package/lib/browser/app-tester-chat-agent.d.ts.map +1 -1
  179. package/lib/browser/app-tester-chat-agent.js +5 -0
  180. package/lib/browser/app-tester-chat-agent.js.map +1 -1
  181. package/lib/browser/architect-agent.d.ts +2 -0
  182. package/lib/browser/architect-agent.d.ts.map +1 -1
  183. package/lib/browser/architect-agent.js +5 -0
  184. package/lib/browser/architect-agent.js.map +1 -1
  185. package/lib/browser/architect-prompt-template.d.ts.map +1 -1
  186. package/lib/browser/architect-prompt-template.js +7 -0
  187. package/lib/browser/architect-prompt-template.js.map +1 -1
  188. package/lib/browser/chat-session-item.d.ts.map +1 -1
  189. package/lib/browser/chat-session-item.js +17 -30
  190. package/lib/browser/chat-session-item.js.map +1 -1
  191. package/lib/browser/chat-session-list-components.js +7 -30
  192. package/lib/browser/chat-session-list-components.js.map +1 -1
  193. package/lib/browser/chat-session-list-service.d.ts +2 -1
  194. package/lib/browser/chat-session-list-service.d.ts.map +1 -1
  195. package/lib/browser/chat-session-list-service.js +6 -1
  196. package/lib/browser/chat-session-list-service.js.map +1 -1
  197. package/lib/browser/chat-sessions-welcome-message-provider.js +3 -21
  198. package/lib/browser/chat-sessions-welcome-message-provider.js.map +1 -1
  199. package/lib/browser/code-reviewer-agent.d.ts +2 -0
  200. package/lib/browser/code-reviewer-agent.d.ts.map +1 -1
  201. package/lib/browser/code-reviewer-agent.js +5 -0
  202. package/lib/browser/code-reviewer-agent.js.map +1 -1
  203. package/lib/browser/coder-agent.d.ts +2 -0
  204. package/lib/browser/coder-agent.d.ts.map +1 -1
  205. package/lib/browser/coder-agent.js +6 -1
  206. package/lib/browser/coder-agent.js.map +1 -1
  207. package/lib/browser/context-file-validation-service-impl.spec.js +2 -0
  208. package/lib/browser/context-file-validation-service-impl.spec.js.map +1 -1
  209. package/lib/browser/create-skill-agent.d.ts +2 -0
  210. package/lib/browser/create-skill-agent.d.ts.map +1 -1
  211. package/lib/browser/create-skill-agent.js +5 -0
  212. package/lib/browser/create-skill-agent.js.map +1 -1
  213. package/lib/browser/explore-agent.d.ts +2 -0
  214. package/lib/browser/explore-agent.d.ts.map +1 -1
  215. package/lib/browser/explore-agent.js +5 -0
  216. package/lib/browser/explore-agent.js.map +1 -1
  217. package/lib/browser/file-changeset-functions.d.ts +7 -1
  218. package/lib/browser/file-changeset-functions.d.ts.map +1 -1
  219. package/lib/browser/file-changeset-functions.js +62 -20
  220. package/lib/browser/file-changeset-functions.js.map +1 -1
  221. package/lib/browser/file-changeset-functions.spec.js +130 -1
  222. package/lib/browser/file-changeset-functions.spec.js.map +1 -1
  223. package/lib/browser/frontend-module.d.ts.map +1 -1
  224. package/lib/browser/frontend-module.js +65 -59
  225. package/lib/browser/frontend-module.js.map +1 -1
  226. package/lib/browser/github-chat-agent.d.ts +2 -1
  227. package/lib/browser/github-chat-agent.d.ts.map +1 -1
  228. package/lib/browser/github-chat-agent.js +5 -0
  229. package/lib/browser/github-chat-agent.js.map +1 -1
  230. package/lib/browser/github-repo-variable-contribution.d.ts +2 -1
  231. package/lib/browser/github-repo-variable-contribution.d.ts.map +1 -1
  232. package/lib/browser/github-repo-variable-contribution.js +6 -1
  233. package/lib/browser/github-repo-variable-contribution.js.map +1 -1
  234. package/lib/browser/ide-chat-welcome-message-provider.d.ts.map +1 -1
  235. package/lib/browser/ide-chat-welcome-message-provider.js +31 -118
  236. package/lib/browser/ide-chat-welcome-message-provider.js.map +1 -1
  237. package/lib/browser/memory-capability-contribution.d.ts +8 -0
  238. package/lib/browser/memory-capability-contribution.d.ts.map +1 -0
  239. package/lib/browser/memory-capability-contribution.js +88 -0
  240. package/lib/browser/memory-capability-contribution.js.map +1 -0
  241. package/lib/browser/memory-capability-contribution.spec.d.ts +2 -0
  242. package/lib/browser/memory-capability-contribution.spec.d.ts.map +1 -0
  243. package/lib/browser/memory-capability-contribution.spec.js +74 -0
  244. package/lib/browser/memory-capability-contribution.spec.js.map +1 -0
  245. package/lib/browser/memory-directory-variable-contribution.d.ts +41 -0
  246. package/lib/browser/memory-directory-variable-contribution.d.ts.map +1 -0
  247. package/lib/browser/memory-directory-variable-contribution.js +107 -0
  248. package/lib/browser/memory-directory-variable-contribution.js.map +1 -0
  249. package/lib/browser/memory-directory-variable-contribution.spec.d.ts +2 -0
  250. package/lib/browser/memory-directory-variable-contribution.spec.d.ts.map +1 -0
  251. package/lib/browser/memory-directory-variable-contribution.spec.js +98 -0
  252. package/lib/browser/memory-directory-variable-contribution.spec.js.map +1 -0
  253. package/lib/browser/open-editors-hint-contribution.d.ts +7 -0
  254. package/lib/browser/open-editors-hint-contribution.d.ts.map +1 -0
  255. package/lib/browser/open-editors-hint-contribution.js +43 -0
  256. package/lib/browser/open-editors-hint-contribution.js.map +1 -0
  257. package/lib/browser/project-info-agent.d.ts +2 -0
  258. package/lib/browser/project-info-agent.d.ts.map +1 -1
  259. package/lib/browser/project-info-agent.js +5 -0
  260. package/lib/browser/project-info-agent.js.map +1 -1
  261. package/lib/browser/review/pr-review-agent.d.ts +2 -0
  262. package/lib/browser/review/pr-review-agent.d.ts.map +1 -1
  263. package/lib/browser/review/pr-review-agent.js +5 -0
  264. package/lib/browser/review/pr-review-agent.js.map +1 -1
  265. package/lib/browser/summarize-session-command-contribution.d.ts +2 -1
  266. package/lib/browser/summarize-session-command-contribution.d.ts.map +1 -1
  267. package/lib/browser/summarize-session-command-contribution.js +6 -1
  268. package/lib/browser/summarize-session-command-contribution.js.map +1 -1
  269. package/lib/browser/task-context-file-storage-service.d.ts.map +1 -1
  270. package/lib/browser/task-context-file-storage-service.js +1 -0
  271. package/lib/browser/task-context-file-storage-service.js.map +1 -1
  272. package/lib/browser/todo-tool-renderer.js +11 -19
  273. package/lib/browser/todo-tool-renderer.js.map +1 -1
  274. package/lib/browser/user-interaction-tool-renderer.js +39 -83
  275. package/lib/browser/user-interaction-tool-renderer.js.map +1 -1
  276. package/lib/browser/user-interaction-tool.d.ts +2 -0
  277. package/lib/browser/user-interaction-tool.d.ts.map +1 -1
  278. package/lib/browser/user-interaction-tool.js +7 -1
  279. package/lib/browser/user-interaction-tool.js.map +1 -1
  280. package/lib/browser/user-interaction-tool.spec.js +4 -2
  281. package/lib/browser/user-interaction-tool.spec.js.map +1 -1
  282. package/lib/browser/workspace-functions.d.ts +45 -7
  283. package/lib/browser/workspace-functions.d.ts.map +1 -1
  284. package/lib/browser/workspace-functions.js +108 -70
  285. package/lib/browser/workspace-functions.js.map +1 -1
  286. package/lib/browser/workspace-functions.spec.js +139 -9
  287. package/lib/browser/workspace-functions.spec.js.map +1 -1
  288. package/lib/browser/workspace-launch-provider.spec.js +3 -0
  289. package/lib/browser/workspace-launch-provider.spec.js.map +1 -1
  290. package/lib/browser/workspace-search-provider.d.ts.map +1 -1
  291. package/lib/browser/workspace-search-provider.js +4 -7
  292. package/lib/browser/workspace-search-provider.js.map +1 -1
  293. package/lib/browser/workspace-search-provider.spec.js +1 -2
  294. package/lib/browser/workspace-search-provider.spec.js.map +1 -1
  295. package/lib/browser/workspace-task-provider.spec.js +4 -0
  296. package/lib/browser/workspace-task-provider.spec.js.map +1 -1
  297. package/lib/common/coder-replace-prompt-template.d.ts +0 -2
  298. package/lib/common/coder-replace-prompt-template.d.ts.map +1 -1
  299. package/lib/common/coder-replace-prompt-template.js +10 -11
  300. package/lib/common/coder-replace-prompt-template.js.map +1 -1
  301. package/lib/common/command-chat-agents.d.ts +2 -1
  302. package/lib/common/command-chat-agents.d.ts.map +1 -1
  303. package/lib/common/command-chat-agents.js +6 -1
  304. package/lib/common/command-chat-agents.js.map +1 -1
  305. package/lib/common/open-editors-hint-fragment-id.d.ts +2 -0
  306. package/lib/common/open-editors-hint-fragment-id.d.ts.map +1 -0
  307. package/lib/{browser/ai-configuration/components/empty-state.js → common/open-editors-hint-fragment-id.js} +5 -11
  308. package/lib/common/open-editors-hint-fragment-id.js.map +1 -0
  309. package/lib/common/orchestrator-chat-agent.d.ts +2 -1
  310. package/lib/common/orchestrator-chat-agent.d.ts.map +1 -1
  311. package/lib/common/orchestrator-chat-agent.js +5 -0
  312. package/lib/common/orchestrator-chat-agent.js.map +1 -1
  313. package/lib/common/universal-chat-agent.d.ts +2 -0
  314. package/lib/common/universal-chat-agent.d.ts.map +1 -1
  315. package/lib/common/universal-chat-agent.js +5 -0
  316. package/lib/common/universal-chat-agent.js.map +1 -1
  317. package/lib/common/universal-prompt-template.d.ts.map +1 -1
  318. package/lib/common/universal-prompt-template.js +3 -0
  319. package/lib/common/universal-prompt-template.js.map +1 -1
  320. package/lib/common/workspace-preferences.js +2 -2
  321. package/lib/common/workspace-preferences.js.map +1 -1
  322. package/lib/common/workspace-search-provider-util.d.ts +2 -1
  323. package/lib/common/workspace-search-provider-util.d.ts.map +1 -1
  324. package/lib/common/workspace-search-provider-util.js +3 -2
  325. package/lib/common/workspace-search-provider-util.js.map +1 -1
  326. package/lib/common/workspace-search-provider-util.spec.d.ts +2 -0
  327. package/lib/common/workspace-search-provider-util.spec.d.ts.map +1 -0
  328. package/lib/common/workspace-search-provider-util.spec.js +55 -0
  329. package/lib/common/workspace-search-provider-util.spec.js.map +1 -0
  330. package/lib/node/github-repo-service-impl.d.ts +2 -0
  331. package/lib/node/github-repo-service-impl.d.ts.map +1 -1
  332. package/lib/node/github-repo-service-impl.js +7 -1
  333. package/lib/node/github-repo-service-impl.js.map +1 -1
  334. package/package.json +26 -25
  335. package/src/browser/ai-configuration/agent-icon.ts +37 -0
  336. package/src/browser/ai-configuration/ai-configuration-breadcrumbs-contribution.ts +164 -0
  337. package/src/browser/ai-configuration/ai-configuration-detail-widget.spec.ts +165 -0
  338. package/src/browser/ai-configuration/ai-configuration-detail-widget.tsx +237 -0
  339. package/src/browser/ai-configuration/ai-configuration-label-provider-contribution.ts +47 -0
  340. package/src/browser/ai-configuration/ai-configuration-open-preference-renderer.ts +64 -0
  341. package/src/browser/ai-configuration/ai-configuration-preference-ownership.spec.ts +135 -0
  342. package/src/browser/ai-configuration/{components/configuration-section.tsx → ai-configuration-resource.ts} +9 -19
  343. package/src/browser/ai-configuration/ai-configuration-search-widget.tsx +135 -0
  344. package/src/browser/ai-configuration/ai-configuration-search.spec.ts +91 -0
  345. package/src/browser/ai-configuration/ai-configuration-search.ts +43 -0
  346. package/src/browser/ai-configuration/{components/empty-state.tsx → ai-configuration-tree-model.ts} +7 -11
  347. package/src/browser/ai-configuration/ai-configuration-tree-nodes.spec.ts +150 -0
  348. package/src/browser/ai-configuration/ai-configuration-tree-nodes.ts +167 -0
  349. package/src/browser/ai-configuration/ai-configuration-tree-widget.tsx +457 -0
  350. package/src/browser/ai-configuration/ai-configuration-view-contribution.ts +156 -18
  351. package/src/browser/ai-configuration/ai-configuration-widget.tsx +107 -75
  352. package/src/browser/ai-configuration/categories/agent-capabilities-settings.spec.ts +161 -0
  353. package/src/browser/ai-configuration/categories/agent-capabilities-settings.tsx +340 -0
  354. package/src/browser/ai-configuration/categories/agent-chips.tsx +51 -0
  355. package/src/browser/ai-configuration/categories/agent-detail-model.ts +152 -0
  356. package/src/browser/ai-configuration/categories/agent-detail-view.tsx +329 -0
  357. package/src/browser/ai-configuration/categories/agents-configuration-category.spec.ts +119 -0
  358. package/src/browser/ai-configuration/categories/agents-configuration-category.tsx +431 -0
  359. package/src/browser/ai-configuration/categories/general-configuration-category.spec.ts +225 -0
  360. package/src/browser/ai-configuration/categories/general-configuration-category.tsx +465 -0
  361. package/src/browser/ai-configuration/categories/model-aliases-configuration-category.spec.ts +87 -0
  362. package/src/browser/ai-configuration/categories/model-aliases-configuration-category.tsx +286 -0
  363. package/src/browser/ai-configuration/categories/models-configuration-category.spec.ts +167 -0
  364. package/src/browser/ai-configuration/categories/models-configuration-category.tsx +264 -0
  365. package/src/browser/ai-configuration/categories/prompt-snippets-configuration-category.spec.ts +250 -0
  366. package/src/browser/ai-configuration/categories/prompt-snippets-configuration-category.tsx +438 -0
  367. package/src/browser/ai-configuration/categories/prompts-and-skills-configuration-category.spec.ts +226 -0
  368. package/src/browser/ai-configuration/categories/prompts-and-skills-configuration-category.tsx +419 -0
  369. package/src/browser/ai-configuration/categories/token-usage-configuration-category.spec.ts +57 -0
  370. package/src/browser/ai-configuration/categories/token-usage-configuration-category.tsx +185 -0
  371. package/src/browser/ai-configuration/categories/tools-configuration-category.spec.ts +130 -0
  372. package/src/browser/ai-configuration/categories/tools-configuration-category.tsx +421 -0
  373. package/src/browser/ai-configuration/categories/variables-configuration-category.spec.ts +154 -0
  374. package/src/browser/ai-configuration/categories/variables-configuration-category.tsx +322 -0
  375. package/src/browser/ai-configuration/components/agent-notification-settings.tsx +38 -33
  376. package/src/browser/ai-configuration/language-model-renderer.spec.ts +100 -0
  377. package/src/browser/ai-configuration/language-model-renderer.tsx +244 -100
  378. package/src/browser/app-tester-chat-agent.ts +5 -2
  379. package/src/browser/architect-agent.ts +5 -2
  380. package/src/browser/architect-prompt-template.ts +7 -0
  381. package/src/browser/chat-session-item.tsx +2 -4
  382. package/src/browser/chat-session-list-service.ts +6 -3
  383. package/src/browser/code-reviewer-agent.ts +5 -2
  384. package/src/browser/coder-agent.ts +7 -5
  385. package/src/browser/context-file-validation-service-impl.spec.ts +3 -2
  386. package/src/browser/create-skill-agent.ts +5 -2
  387. package/src/browser/explore-agent.ts +5 -2
  388. package/src/browser/file-changeset-functions.spec.ts +158 -5
  389. package/src/browser/file-changeset-functions.ts +61 -23
  390. package/src/browser/frontend-module.ts +76 -63
  391. package/src/browser/github-chat-agent.ts +5 -2
  392. package/src/browser/github-repo-variable-contribution.ts +6 -3
  393. package/src/browser/ide-chat-welcome-message-provider.tsx +11 -11
  394. package/src/browser/memory-capability-contribution.spec.ts +85 -0
  395. package/src/browser/memory-capability-contribution.ts +86 -0
  396. package/src/browser/memory-directory-variable-contribution.spec.ts +113 -0
  397. package/src/browser/memory-directory-variable-contribution.ts +113 -0
  398. package/src/browser/open-editors-hint-contribution.ts +38 -0
  399. package/src/browser/project-info-agent.ts +5 -2
  400. package/src/browser/review/pr-review-agent.ts +5 -2
  401. package/src/browser/style/ai-configuration-base.css +0 -6
  402. package/src/browser/style/ai-configuration-shell.css +416 -0
  403. package/src/browser/style/ai-configuration-table.css +2 -15
  404. package/src/browser/style/index.css +220 -276
  405. package/src/browser/summarize-session-command-contribution.ts +6 -3
  406. package/src/browser/task-context-file-storage-service.ts +5 -2
  407. package/src/browser/user-interaction-tool.spec.ts +5 -2
  408. package/src/browser/user-interaction-tool.ts +6 -2
  409. package/src/browser/workspace-functions.spec.ts +163 -10
  410. package/src/browser/workspace-functions.ts +121 -72
  411. package/src/browser/workspace-launch-provider.spec.ts +4 -1
  412. package/src/browser/workspace-search-provider.spec.ts +1 -2
  413. package/src/browser/workspace-search-provider.ts +4 -7
  414. package/src/browser/workspace-task-provider.spec.ts +5 -1
  415. package/src/common/coder-replace-prompt-template.ts +9 -9
  416. package/src/common/command-chat-agents.ts +6 -2
  417. package/src/{browser/ai-configuration/base/ai-configuration-base-widget.tsx → common/open-editors-hint-fragment-id.ts} +2 -22
  418. package/src/common/orchestrator-chat-agent.ts +5 -2
  419. package/src/common/universal-chat-agent.ts +5 -2
  420. package/src/common/universal-prompt-template.ts +3 -0
  421. package/src/common/workspace-preferences.ts +2 -2
  422. package/src/common/workspace-search-provider-util.spec.ts +61 -0
  423. package/src/common/workspace-search-provider-util.ts +3 -2
  424. package/src/node/github-repo-service-impl.ts +6 -2
  425. package/lib/browser/ai-configuration/agent-configuration-widget.d.ts +0 -72
  426. package/lib/browser/ai-configuration/agent-configuration-widget.d.ts.map +0 -1
  427. package/lib/browser/ai-configuration/agent-configuration-widget.js +0 -620
  428. package/lib/browser/ai-configuration/agent-configuration-widget.js.map +0 -1
  429. package/lib/browser/ai-configuration/agent-configuration-widget.spec.d.ts +0 -2
  430. package/lib/browser/ai-configuration/agent-configuration-widget.spec.d.ts.map +0 -1
  431. package/lib/browser/ai-configuration/agent-configuration-widget.spec.js +0 -56
  432. package/lib/browser/ai-configuration/agent-configuration-widget.spec.js.map +0 -1
  433. package/lib/browser/ai-configuration/base/ai-card-grid-configuration-widget.d.ts +0 -31
  434. package/lib/browser/ai-configuration/base/ai-card-grid-configuration-widget.d.ts.map +0 -1
  435. package/lib/browser/ai-configuration/base/ai-card-grid-configuration-widget.js +0 -55
  436. package/lib/browser/ai-configuration/base/ai-card-grid-configuration-widget.js.map +0 -1
  437. package/lib/browser/ai-configuration/base/ai-configuration-base-widget.d.ts +0 -13
  438. package/lib/browser/ai-configuration/base/ai-configuration-base-widget.d.ts.map +0 -1
  439. package/lib/browser/ai-configuration/base/ai-configuration-base-widget.js.map +0 -1
  440. package/lib/browser/ai-configuration/base/ai-hierarchical-configuration-widget.d.ts +0 -23
  441. package/lib/browser/ai-configuration/base/ai-hierarchical-configuration-widget.d.ts.map +0 -1
  442. package/lib/browser/ai-configuration/base/ai-hierarchical-configuration-widget.js +0 -60
  443. package/lib/browser/ai-configuration/base/ai-hierarchical-configuration-widget.js.map +0 -1
  444. package/lib/browser/ai-configuration/base/ai-list-detail-configuration-widget.d.ts +0 -55
  445. package/lib/browser/ai-configuration/base/ai-list-detail-configuration-widget.d.ts.map +0 -1
  446. package/lib/browser/ai-configuration/base/ai-list-detail-configuration-widget.js +0 -96
  447. package/lib/browser/ai-configuration/base/ai-list-detail-configuration-widget.js.map +0 -1
  448. package/lib/browser/ai-configuration/base/ai-table-configuration-widget.d.ts +0 -44
  449. package/lib/browser/ai-configuration/base/ai-table-configuration-widget.d.ts.map +0 -1
  450. package/lib/browser/ai-configuration/base/ai-table-configuration-widget.js +0 -66
  451. package/lib/browser/ai-configuration/base/ai-table-configuration-widget.js.map +0 -1
  452. package/lib/browser/ai-configuration/components/configuration-section.d.ts +0 -12
  453. package/lib/browser/ai-configuration/components/configuration-section.d.ts.map +0 -1
  454. package/lib/browser/ai-configuration/components/configuration-section.js.map +0 -1
  455. package/lib/browser/ai-configuration/components/empty-state.d.ts +0 -10
  456. package/lib/browser/ai-configuration/components/empty-state.d.ts.map +0 -1
  457. package/lib/browser/ai-configuration/components/empty-state.js.map +0 -1
  458. package/lib/browser/ai-configuration/components/expandable-section.d.ts +0 -13
  459. package/lib/browser/ai-configuration/components/expandable-section.d.ts.map +0 -1
  460. package/lib/browser/ai-configuration/components/expandable-section.js +0 -31
  461. package/lib/browser/ai-configuration/components/expandable-section.js.map +0 -1
  462. package/lib/browser/ai-configuration/model-aliases-configuration-widget.d.ts +0 -26
  463. package/lib/browser/ai-configuration/model-aliases-configuration-widget.d.ts.map +0 -1
  464. package/lib/browser/ai-configuration/model-aliases-configuration-widget.js +0 -198
  465. package/lib/browser/ai-configuration/model-aliases-configuration-widget.js.map +0 -1
  466. package/lib/browser/ai-configuration/prompt-fragments-configuration-widget.d.ts +0 -140
  467. package/lib/browser/ai-configuration/prompt-fragments-configuration-widget.d.ts.map +0 -1
  468. package/lib/browser/ai-configuration/prompt-fragments-configuration-widget.js +0 -508
  469. package/lib/browser/ai-configuration/prompt-fragments-configuration-widget.js.map +0 -1
  470. package/lib/browser/ai-configuration/skills-configuration-widget.d.ts +0 -29
  471. package/lib/browser/ai-configuration/skills-configuration-widget.d.ts.map +0 -1
  472. package/lib/browser/ai-configuration/skills-configuration-widget.js +0 -166
  473. package/lib/browser/ai-configuration/skills-configuration-widget.js.map +0 -1
  474. package/lib/browser/ai-configuration/skills-configuration-widget.spec.d.ts +0 -2
  475. package/lib/browser/ai-configuration/skills-configuration-widget.spec.d.ts.map +0 -1
  476. package/lib/browser/ai-configuration/skills-configuration-widget.spec.js +0 -191
  477. package/lib/browser/ai-configuration/skills-configuration-widget.spec.js.map +0 -1
  478. package/lib/browser/ai-configuration/template-settings-renderer.d.ts +0 -9
  479. package/lib/browser/ai-configuration/template-settings-renderer.d.ts.map +0 -1
  480. package/lib/browser/ai-configuration/template-settings-renderer.js +0 -78
  481. package/lib/browser/ai-configuration/template-settings-renderer.js.map +0 -1
  482. package/lib/browser/ai-configuration/token-usage-configuration-widget.d.ts +0 -20
  483. package/lib/browser/ai-configuration/token-usage-configuration-widget.d.ts.map +0 -1
  484. package/lib/browser/ai-configuration/token-usage-configuration-widget.js +0 -170
  485. package/lib/browser/ai-configuration/token-usage-configuration-widget.js.map +0 -1
  486. package/lib/browser/ai-configuration/tools-configuration-widget.d.ts +0 -52
  487. package/lib/browser/ai-configuration/tools-configuration-widget.d.ts.map +0 -1
  488. package/lib/browser/ai-configuration/tools-configuration-widget.js +0 -357
  489. package/lib/browser/ai-configuration/tools-configuration-widget.js.map +0 -1
  490. package/lib/browser/ai-configuration/variable-configuration-widget.d.ts +0 -22
  491. package/lib/browser/ai-configuration/variable-configuration-widget.d.ts.map +0 -1
  492. package/lib/browser/ai-configuration/variable-configuration-widget.js +0 -133
  493. package/lib/browser/ai-configuration/variable-configuration-widget.js.map +0 -1
  494. package/src/browser/ai-configuration/agent-configuration-widget.spec.ts +0 -71
  495. package/src/browser/ai-configuration/agent-configuration-widget.tsx +0 -928
  496. package/src/browser/ai-configuration/base/ai-card-grid-configuration-widget.tsx +0 -72
  497. package/src/browser/ai-configuration/base/ai-hierarchical-configuration-widget.tsx +0 -51
  498. package/src/browser/ai-configuration/base/ai-list-detail-configuration-widget.tsx +0 -140
  499. package/src/browser/ai-configuration/base/ai-table-configuration-widget.tsx +0 -107
  500. package/src/browser/ai-configuration/components/expandable-section.tsx +0 -51
  501. package/src/browser/ai-configuration/model-aliases-configuration-widget.tsx +0 -270
  502. package/src/browser/ai-configuration/prompt-fragments-configuration-widget.tsx +0 -736
  503. package/src/browser/ai-configuration/skills-configuration-widget.spec.ts +0 -248
  504. package/src/browser/ai-configuration/skills-configuration-widget.tsx +0 -229
  505. package/src/browser/ai-configuration/template-settings-renderer.tsx +0 -125
  506. package/src/browser/ai-configuration/token-usage-configuration-widget.tsx +0 -214
  507. package/src/browser/ai-configuration/tools-configuration-widget.tsx +0 -544
  508. package/src/browser/ai-configuration/variable-configuration-widget.tsx +0 -159
  509. package/src/browser/style/ai-configuration-cards.css +0 -60
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
19
+ let disableJSDOM = (0, jsdom_1.enableJSDOM)();
20
+ // @lumino/dragdrop (pulled in transitively via the file dialog service) extends the DragEvent DOM
21
+ // global at module load, which JSDOM does not provide; stub it so the import succeeds.
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ if (!global.DragEvent) {
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ global.DragEvent = class DragEvent extends global.Event {
26
+ };
27
+ }
28
+ const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
29
+ frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
30
+ const chai_1 = require("chai");
31
+ const client_1 = require("@theia/core/shared/react-dom/client");
32
+ const react_dom_1 = require("@theia/core/shared/react-dom");
33
+ const ai_configuration_category_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/ai-configuration-category");
34
+ const ai_ide_preferences_1 = require("../../../common/ai-ide-preferences");
35
+ const general_configuration_category_1 = require("./general-configuration-category");
36
+ disableJSDOM();
37
+ /** A preference id no category claims, so it renders through the General catch-all. */
38
+ const UNCLAIMED_PREF = 'ai-features.codeCompletion.enabled';
39
+ /**
40
+ * A category whose stub service is complete enough to render the whole page, so the tests can assert on
41
+ * the produced DOM rather than only on the render inputs.
42
+ */
43
+ function createRenderableCategory(enabled) {
44
+ const category = new general_configuration_category_1.GeneralConfigurationCategory();
45
+ const values = { [ai_ide_preferences_1.PREFERENCE_NAME_ENABLE_AI]: enabled };
46
+ const service = {
47
+ inspect: (preferenceId) => ({
48
+ value: values[preferenceId],
49
+ scopeValue: values[preferenceId],
50
+ defaultValue: undefined,
51
+ modified: false
52
+ }),
53
+ describe: (preferenceId) => ({ label: `label:${preferenceId}`, description: `description:${preferenceId}` }),
54
+ tags: () => [],
55
+ renderMarkdown: (markdown) => {
56
+ const element = document.createElement('span');
57
+ element.textContent = markdown;
58
+ return element;
59
+ },
60
+ controlFor: () => ({ type: 'boolean' }),
61
+ enumOptions: () => [],
62
+ aiFeaturePreferenceIds: () => [UNCLAIMED_PREF]
63
+ };
64
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
+ category.settingsRowService = service;
66
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
67
+ category.categoryRegistry = { getCategories: () => [] };
68
+ return category;
69
+ }
70
+ /** Renders the category's page into a detached container; the caller disposes it. */
71
+ function renderPage(category) {
72
+ const container = document.createElement('div');
73
+ document.body.appendChild(container);
74
+ const root = (0, client_1.createRoot)(container);
75
+ const ctx = { scope: 'user', navigate: () => { }, update: () => { } };
76
+ (0, react_dom_1.flushSync)(() => root.render(category.renderPage(ctx)));
77
+ return {
78
+ container,
79
+ dispose: () => {
80
+ (0, react_dom_1.flushSync)(() => root.unmount());
81
+ container.remove();
82
+ }
83
+ };
84
+ }
85
+ /** A stub settings-row service that echoes the preference id as its label and declares no enums. */
86
+ function createCategory() {
87
+ const category = new general_configuration_category_1.GeneralConfigurationCategory();
88
+ const service = {
89
+ describe: (preferenceId) => ({ label: `label:${preferenceId}` }),
90
+ enumOptions: () => [],
91
+ // No unclaimed preferences in this stub, so the catch-all contributes nothing.
92
+ aiFeaturePreferenceIds: () => []
93
+ };
94
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
95
+ category.settingsRowService = service;
96
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
97
+ category.categoryRegistry = { getCategories: () => [] };
98
+ return category;
99
+ }
100
+ describe('GeneralConfigurationCategory', () => {
101
+ before(() => {
102
+ disableJSDOM = (0, jsdom_1.enableJSDOM)();
103
+ // The config is stored on `window`, which the line above replaces, so the module-level `set` no
104
+ // longer applies. The hero reads `applicationName` from it while rendering.
105
+ try {
106
+ frontend_application_config_provider_1.FrontendApplicationConfigProvider.get();
107
+ }
108
+ catch {
109
+ frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
110
+ }
111
+ });
112
+ after(() => disableJSDOM());
113
+ it('declares the general single-page metadata', () => {
114
+ const category = createCategory();
115
+ (0, chai_1.expect)(category.id).to.equal(ai_configuration_category_1.AiConfigurationCategoryId.GENERAL);
116
+ (0, chai_1.expect)(category.kind).to.equal('single-page');
117
+ (0, chai_1.expect)(category.renderer).to.equal(category);
118
+ (0, chai_1.expect)(category.search).to.equal(category);
119
+ });
120
+ it('the catch-all surfaces every ai-features preference that no category claims (nothing is lost from the view)', () => {
121
+ const category = new general_configuration_category_1.GeneralConfigurationCategory();
122
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
123
+ category.settingsRowService = {
124
+ aiFeaturePreferenceIds: () => ['ai-features.chat.a', 'ai-features.foo.b', 'ai-features.bar.c']
125
+ };
126
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
127
+ category.categoryRegistry = {
128
+ getCategories: () => [
129
+ { renderer: { getOwnedPreferenceIds: () => ['ai-features.foo.b'] } },
130
+ { renderer: {} } // a category that owns nothing
131
+ ]
132
+ };
133
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
134
+ const unclaimed = category.unclaimedPreferenceIds();
135
+ (0, chai_1.expect)([...unclaimed].sort()).to.deep.equal(['ai-features.bar.c', 'ai-features.chat.a']);
136
+ });
137
+ it('indexes one search item per setting, deep-linking to the row', () => {
138
+ const category = createCategory();
139
+ const items = category.getSearchItems();
140
+ // master toggle (hero) + Chat (5)
141
+ (0, chai_1.expect)(items).to.have.lengthOf(6);
142
+ const enableAi = items.find(item => item.keywords?.startsWith('ai-features.AiEnable.enableAI'));
143
+ (0, chai_1.expect)(enableAi).to.not.equal(undefined);
144
+ // The master toggle authors its own title, so it does not fall back to the schema label.
145
+ (0, chai_1.expect)(enableAi.label).to.equal('Enable AI features');
146
+ (0, chai_1.expect)(enableAi.target).to.deep.equal({
147
+ categoryId: ai_configuration_category_1.AiConfigurationCategoryId.GENERAL,
148
+ highlight: { rowId: 'ai-features.AiEnable.enableAI' }
149
+ });
150
+ });
151
+ describe('rendered page', () => {
152
+ it('anchors every row its search index deep-links to', () => {
153
+ // The two halves of a deep link are produced independently: `getSearchItems` names a `rowId`
154
+ // and the page has to emit a matching `data-ai-config-row-id`. Nothing else ties them together,
155
+ // so a row indexed but not anchored (as the hero toggle was) silently never scrolls or flashes.
156
+ const category = createRenderableCategory(true);
157
+ const { container, dispose } = renderPage(category);
158
+ try {
159
+ const anchored = new Set(Array.from(container.querySelectorAll('[data-ai-config-row-id]'))
160
+ .map(element => element.getAttribute('data-ai-config-row-id')));
161
+ const deepLinked = category.getSearchItems()
162
+ .map(item => item.target.highlight?.rowId)
163
+ .filter((rowId) => rowId !== undefined);
164
+ (0, chai_1.expect)(deepLinked, 'the search index deep-links to no rows at all').to.not.be.empty;
165
+ const unanchored = deepLinked.filter(rowId => !anchored.has(rowId));
166
+ (0, chai_1.expect)(unanchored, `search items deep-link to rows the page never anchors: ${unanchored.join(', ')}`).to.be.empty;
167
+ }
168
+ finally {
169
+ dispose();
170
+ }
171
+ });
172
+ it('does not print the raw preference id next to the hero title', () => {
173
+ const category = createRenderableCategory(true);
174
+ const { container, dispose } = renderPage(category);
175
+ try {
176
+ const title = container.querySelector('.ai-configuration-hero .ai-settings-row-title');
177
+ (0, chai_1.expect)(title, 'the hero renders no title').to.exist;
178
+ (0, chai_1.expect)(title.textContent).to.not.contain('ai-features.');
179
+ }
180
+ finally {
181
+ dispose();
182
+ }
183
+ });
184
+ it('renders the catch-all rows read-only while AI features are off', () => {
185
+ // The gate note promises the settings below take effect once AI is enabled, so they must not be
186
+ // editable meanwhile. The catch-all rows are generated, so they do not inherit the hand-authored
187
+ // rows' `disabled` state unless it is plumbed through `AiSettingsRow`.
188
+ const off = createRenderableCategory(false);
189
+ const rendered = renderPage(off);
190
+ try {
191
+ const control = rendered.container.querySelector(`[data-ai-config-row-id="${UNCLAIMED_PREF}"] input`);
192
+ (0, chai_1.expect)(control, 'the catch-all row renders no control').to.exist;
193
+ (0, chai_1.expect)(control.disabled).to.equal(true);
194
+ }
195
+ finally {
196
+ rendered.dispose();
197
+ }
198
+ });
199
+ it('renders the catch-all rows editable once AI features are on', () => {
200
+ const on = createRenderableCategory(true);
201
+ const rendered = renderPage(on);
202
+ try {
203
+ const control = rendered.container.querySelector(`[data-ai-config-row-id="${UNCLAIMED_PREF}"] input`);
204
+ (0, chai_1.expect)(control, 'the catch-all row renders no control').to.exist;
205
+ (0, chai_1.expect)(control.disabled).to.equal(false);
206
+ }
207
+ finally {
208
+ rendered.dispose();
209
+ }
210
+ });
211
+ });
212
+ });
213
+ //# sourceMappingURL=general-configuration-category.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"general-configuration-category.spec.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/general-configuration-category.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { AgentService, AISettingsService } from '@theia/ai-core';
2
+ import { FrontendLanguageModelRegistry, LanguageModel } from '@theia/ai-core/lib/common/language-model';
3
+ import { LanguageModelAlias, LanguageModelAliasRegistry } from '@theia/ai-core/lib/common/language-model-alias';
4
+ import { Emitter, Event } from '@theia/core';
5
+ import { SelectOption } from '@theia/core/lib/browser/widgets/select-component';
6
+ import { DisposableCollection } from '@theia/core/lib/common';
7
+ import * as React from '@theia/core/shared/react';
8
+ import { AiConfigurationCategory, AiConfigurationItemStatus, AiConfigurationRenderContext, AiConfigurationSearchItem, AiConfigurationSearchProvider, AiConfigurationTreeItem } from '@theia/ai-core-ui/lib/browser/ai-configuration/ai-configuration-category';
9
+ import { CollectionCategoryRenderer } from '@theia/ai-core-ui/lib/browser/ai-configuration/renderers/collection-category-renderer';
10
+ /**
11
+ * The Model Aliases category: a `collection` porting the alias configuration onto the shared
12
+ * primitives. The per-item detail (selected model, priority list, resolved model, agents using
13
+ * the alias) is rendered synchronously from caches refreshed on the relevant service events.
14
+ */
15
+ export declare class ModelAliasesConfigurationCategory extends CollectionCategoryRenderer implements AiConfigurationCategory, AiConfigurationSearchProvider {
16
+ readonly id = "model-aliases";
17
+ readonly label: string;
18
+ readonly description: string;
19
+ readonly iconClass: string;
20
+ readonly order = 300;
21
+ readonly kind: "collection";
22
+ protected readonly languageModelAliasRegistry: LanguageModelAliasRegistry;
23
+ protected readonly languageModelRegistry: FrontendLanguageModelRegistry;
24
+ protected readonly aiSettingsService: AISettingsService;
25
+ protected readonly agentService: AgentService;
26
+ protected readonly onDidChangeEmitter: Emitter<void>;
27
+ readonly onDidChange: Event<void>;
28
+ protected readonly toDispose: DisposableCollection;
29
+ protected aliases: LanguageModelAlias[];
30
+ protected languageModels: LanguageModel[];
31
+ protected matchingAgentIdsForAlias: Map<string, string[]>;
32
+ protected resolvedModelForAlias: Map<string, LanguageModel | undefined>;
33
+ get renderer(): this;
34
+ getOwnedPreferenceIds(): string[];
35
+ get search(): AiConfigurationSearchProvider;
36
+ protected init(): void;
37
+ dispose(): void;
38
+ protected reload(): Promise<void>;
39
+ protected loadLanguageModels(): Promise<void>;
40
+ protected loadAliases(): Promise<void>;
41
+ protected loadMatchingAgents(): Promise<void>;
42
+ protected get categoryId(): string;
43
+ getTreeChildren(): AiConfigurationTreeItem[];
44
+ protected getAliasStatus(alias: LanguageModelAlias): AiConfigurationItemStatus;
45
+ protected renderItemSections(item: AiConfigurationTreeItem, ctx: AiConfigurationRenderContext): React.ReactNode;
46
+ protected renderSelectedModel(alias: LanguageModelAlias): React.ReactNode;
47
+ protected getModelOptions(): SelectOption[];
48
+ protected setSelectedModel(alias: LanguageModelAlias, value: string | undefined): void;
49
+ protected renderPriorityList(alias: LanguageModelAlias): React.ReactNode;
50
+ protected renderAgentsUsingAlias(alias: LanguageModelAlias, ctx: AiConfigurationRenderContext): React.ReactNode;
51
+ getSearchItems(): AiConfigurationSearchItem[];
52
+ }
53
+ //# sourceMappingURL=model-aliases-configuration-category.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-aliases-configuration-category.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/model-aliases-configuration-category.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelAliasesConfigurationCategory = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("@theia/core/shared/react/jsx-runtime");
6
+ // *****************************************************************************
7
+ // Copyright (C) 2026 EclipseSource and others.
8
+ //
9
+ // This program and the accompanying materials are made available under the
10
+ // terms of the Eclipse Public License v. 2.0 which is available at
11
+ // http://www.eclipse.org/legal/epl-2.0.
12
+ //
13
+ // This Source Code may also be made available under the following Secondary
14
+ // Licenses when the conditions for such availability set forth in the Eclipse
15
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
16
+ // with the GNU Classpath Exception which is available at
17
+ // https://www.gnu.org/software/classpath/license.html.
18
+ //
19
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
20
+ // *****************************************************************************
21
+ const ai_core_1 = require("@theia/ai-core");
22
+ const language_model_1 = require("@theia/ai-core/lib/common/language-model");
23
+ const language_model_alias_1 = require("@theia/ai-core/lib/common/language-model-alias");
24
+ const core_1 = require("@theia/core");
25
+ const browser_1 = require("@theia/core/lib/browser");
26
+ const common_1 = require("@theia/core/lib/common");
27
+ const inversify_1 = require("@theia/core/shared/inversify");
28
+ const ai_configuration_category_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/ai-configuration-category");
29
+ const collection_category_renderer_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/renderers/collection-category-renderer");
30
+ const ai_configuration_primitives_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-configuration-primitives");
31
+ const ai_configuration_controls_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-configuration-controls");
32
+ const agent_chips_1 = require("./agent-chips");
33
+ /** Sentinel option value representing "use the alias' default priority list" (no explicit model). */
34
+ const DEFAULT_LIST_VALUE = '';
35
+ /**
36
+ * The Model Aliases category: a `collection` porting the alias configuration onto the shared
37
+ * primitives. The per-item detail (selected model, priority list, resolved model, agents using
38
+ * the alias) is rendered synchronously from caches refreshed on the relevant service events.
39
+ */
40
+ let ModelAliasesConfigurationCategory = class ModelAliasesConfigurationCategory extends collection_category_renderer_1.CollectionCategoryRenderer {
41
+ constructor() {
42
+ super(...arguments);
43
+ this.id = ai_configuration_category_1.AiConfigurationCategoryId.MODEL_ALIASES;
44
+ this.label = core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/label', 'Model Aliases');
45
+ this.description = core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/description', 'Named references to a preferred model, so agents can target a role instead of a specific model.');
46
+ this.iconClass = (0, browser_1.codicon)('symbol-namespace');
47
+ this.order = ai_configuration_category_1.AiConfigurationCategoryOrder.MODEL_ALIASES;
48
+ this.kind = 'collection';
49
+ this.onDidChangeEmitter = new core_1.Emitter();
50
+ this.onDidChange = this.onDidChangeEmitter.event;
51
+ this.toDispose = new common_1.DisposableCollection(this.onDidChangeEmitter);
52
+ this.aliases = [];
53
+ this.languageModels = [];
54
+ this.matchingAgentIdsForAlias = new Map();
55
+ this.resolvedModelForAlias = new Map();
56
+ }
57
+ get renderer() {
58
+ return this;
59
+ }
60
+ getOwnedPreferenceIds() {
61
+ return [ai_core_1.LANGUAGE_MODEL_ALIASES_PREFERENCE];
62
+ }
63
+ get search() {
64
+ return this;
65
+ }
66
+ init() {
67
+ Promise.all([this.loadAliases(), this.loadLanguageModels()]).then(() => this.onDidChangeEmitter.fire());
68
+ this.languageModelAliasRegistry.ready.then(() => this.toDispose.push(this.languageModelAliasRegistry.onDidChange(() => this.reload())));
69
+ this.toDispose.pushAll([
70
+ this.languageModelRegistry.onChange(async () => {
71
+ await this.loadLanguageModels();
72
+ await this.loadAliases();
73
+ this.onDidChangeEmitter.fire();
74
+ }),
75
+ this.aiSettingsService.onDidChange(async () => {
76
+ await this.loadMatchingAgents();
77
+ this.onDidChangeEmitter.fire();
78
+ })
79
+ ]);
80
+ }
81
+ dispose() {
82
+ this.toDispose.dispose();
83
+ }
84
+ async reload() {
85
+ await this.loadAliases();
86
+ this.onDidChangeEmitter.fire();
87
+ }
88
+ async loadLanguageModels() {
89
+ this.languageModels = await this.languageModelRegistry.getLanguageModels();
90
+ }
91
+ async loadAliases() {
92
+ await this.languageModelAliasRegistry.ready;
93
+ this.aliases = this.languageModelAliasRegistry.getAliases().sort((a, b) => a.id.localeCompare(b.id));
94
+ await this.loadMatchingAgents();
95
+ this.resolvedModelForAlias = new Map();
96
+ for (const alias of this.aliases) {
97
+ this.resolvedModelForAlias.set(alias.id, await this.languageModelRegistry.getReadyLanguageModel(alias.id));
98
+ }
99
+ }
100
+ async loadMatchingAgents() {
101
+ const agents = this.agentService.getAllAgents();
102
+ const aliasMap = new Map();
103
+ for (const alias of this.aliases) {
104
+ const matchingAgentIds = [];
105
+ for (const agent of agents) {
106
+ const requirementSetting = await this.aiSettingsService.getAgentSettings(agent.id);
107
+ if (requirementSetting?.languageModelRequirements) {
108
+ if (requirementSetting.languageModelRequirements.find(requirement => requirement.identifier === alias.id)) {
109
+ matchingAgentIds.push(agent.id);
110
+ }
111
+ }
112
+ else if (agent.languageModelRequirements.some((requirement) => requirement.identifier === alias.id)) {
113
+ matchingAgentIds.push(agent.id);
114
+ }
115
+ }
116
+ aliasMap.set(alias.id, matchingAgentIds);
117
+ }
118
+ this.matchingAgentIdsForAlias = aliasMap;
119
+ }
120
+ get categoryId() {
121
+ return this.id;
122
+ }
123
+ getTreeChildren() {
124
+ return this.aliases.map(alias => ({
125
+ id: alias.id,
126
+ label: alias.id,
127
+ description: alias.description,
128
+ status: this.getAliasStatus(alias)
129
+ }));
130
+ }
131
+ getAliasStatus(alias) {
132
+ const resolved = this.resolvedModelForAlias.get(alias.id);
133
+ if (!resolved) {
134
+ return {
135
+ kind: 'error',
136
+ label: core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/noModel', 'No model'),
137
+ tooltip: core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/noResolvedModel', 'No model ready for this alias.')
138
+ };
139
+ }
140
+ const modelName = resolved.name ?? resolved.id;
141
+ if (resolved.status.status !== 'ready') {
142
+ return {
143
+ kind: 'warn',
144
+ label: core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/notReady', 'Not ready'),
145
+ tooltip: resolved.status.message
146
+ };
147
+ }
148
+ // Show what the alias actually resolves to rather than a generic "Ready", so the badge is informative.
149
+ return {
150
+ kind: 'on',
151
+ label: modelName,
152
+ tooltip: core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/resolvesTo', 'Resolves to {0}', modelName)
153
+ };
154
+ }
155
+ renderItemSections(item, ctx) {
156
+ const alias = this.aliases.find(candidate => candidate.id === item.id);
157
+ if (!alias) {
158
+ return undefined;
159
+ }
160
+ return (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [this.renderSelectedModel(alias), alias.selectedModelId === undefined && this.renderPriorityList(alias), this.renderAgentsUsingAlias(alias, ctx)] });
161
+ }
162
+ renderSelectedModel(alias) {
163
+ const options = this.getModelOptions();
164
+ const selected = alias.selectedModelId ?? DEFAULT_LIST_VALUE;
165
+ const isInvalid = !!alias.selectedModelId && !this.languageModels.some(model => model.id === alias.selectedModelId);
166
+ return (0, jsx_runtime_1.jsxs)(ai_configuration_primitives_1.AiConfigurationSection, { title: core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/selectedModelId', 'Selected Model'), children: [isInvalid && (0, jsx_runtime_1.jsx)("div", { className: 'ai-alias-invalid-model', children: core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/unavailableModel', 'Selected model is no longer available') }), (0, jsx_runtime_1.jsx)(ai_configuration_controls_1.AiEnumSelect, { ariaLabel: core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/selectedModelId', 'Selected Model'), value: isInvalid ? undefined : selected, invalid: isInvalid, options: options.map(option => ({ value: String(option.value ?? ''), label: option.label ?? String(option.value ?? ''), title: option.description })), onCommit: value => this.setSelectedModel(alias, value) })] });
167
+ }
168
+ getModelOptions() {
169
+ const options = [{
170
+ value: DEFAULT_LIST_VALUE,
171
+ label: core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/defaultList', '[Default list]')
172
+ }];
173
+ for (const model of [...this.languageModels].sort((a, b) => (a.name ?? a.id).localeCompare(b.name ?? b.id))) {
174
+ const ready = model.status.status === 'ready';
175
+ options.push({
176
+ value: model.id,
177
+ label: `${model.name ?? model.id} ${ready ? '✓' : '✗'}`,
178
+ description: !ready ? model.status.message : undefined
179
+ });
180
+ }
181
+ return options;
182
+ }
183
+ setSelectedModel(alias, value) {
184
+ const selectedModelId = value ? value : undefined;
185
+ this.languageModelAliasRegistry.ready.then(() => this.languageModelAliasRegistry.addAlias({ ...alias, selectedModelId }));
186
+ }
187
+ renderPriorityList(alias) {
188
+ const resolved = this.resolvedModelForAlias.get(alias.id);
189
+ 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.localize('theia/ai/core/modelAliasesConfiguration/priorityList', 'Priority List'), children: (0, jsx_runtime_1.jsx)("ol", { children: alias.defaultModelIds.map(modelId => {
190
+ const model = this.languageModels.find(candidate => candidate.id === modelId);
191
+ const ready = model?.status.status === 'ready';
192
+ return (0, jsx_runtime_1.jsxs)("li", { className: modelId === resolved?.id ? 'ai-alias-priority-item-resolved' : undefined, children: [modelId, " ", ready ? '✓' : '✗'] }, modelId);
193
+ }) }) }), (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationSection, { title: core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/evaluatesTo', 'Evaluates to'), children: resolved
194
+ ? (0, jsx_runtime_1.jsxs)("span", { children: [resolved.name ?? resolved.id, " ", resolved.status.status === 'ready' ? '✓' : '✗'] })
195
+ : (0, jsx_runtime_1.jsx)("span", { children: core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/noResolvedModel', 'No model ready for this alias.') }) })] });
196
+ }
197
+ renderAgentsUsingAlias(alias, ctx) {
198
+ const agentIds = this.matchingAgentIdsForAlias.get(alias.id) ?? [];
199
+ const agents = this.agentService.getAllAgents().filter(agent => agentIds.includes(agent.id));
200
+ return (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationSection, { title: core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/agents', 'Agents using this Alias'), children: agents.length > 0
201
+ ? (0, jsx_runtime_1.jsx)(agent_chips_1.AgentChips, { agents: agents, onOpenAgent: agentId => ctx.navigate({ categoryId: ai_configuration_category_1.AiConfigurationCategoryId.AGENTS, itemId: agentId }) })
202
+ : (0, jsx_runtime_1.jsx)("span", { children: core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/noAgents', 'No agents use this alias.') }) });
203
+ }
204
+ getSearchItems() {
205
+ const typeLabel = core_1.nls.localize('theia/ai/core/modelAliasesConfiguration/aliasTypeLabel', 'Model Alias');
206
+ return this.aliases.map(alias => ({
207
+ label: alias.id,
208
+ typeLabel,
209
+ categoryId: this.id,
210
+ target: { categoryId: this.id, itemId: alias.id },
211
+ keywords: alias.description ?? ''
212
+ }));
213
+ }
214
+ };
215
+ exports.ModelAliasesConfigurationCategory = ModelAliasesConfigurationCategory;
216
+ tslib_1.__decorate([
217
+ (0, inversify_1.inject)(language_model_alias_1.LanguageModelAliasRegistry),
218
+ tslib_1.__metadata("design:type", Object)
219
+ ], ModelAliasesConfigurationCategory.prototype, "languageModelAliasRegistry", void 0);
220
+ tslib_1.__decorate([
221
+ (0, inversify_1.inject)(language_model_1.LanguageModelRegistry),
222
+ tslib_1.__metadata("design:type", Object)
223
+ ], ModelAliasesConfigurationCategory.prototype, "languageModelRegistry", void 0);
224
+ tslib_1.__decorate([
225
+ (0, inversify_1.inject)(ai_core_1.AISettingsService),
226
+ tslib_1.__metadata("design:type", Object)
227
+ ], ModelAliasesConfigurationCategory.prototype, "aiSettingsService", void 0);
228
+ tslib_1.__decorate([
229
+ (0, inversify_1.inject)(ai_core_1.AgentService),
230
+ tslib_1.__metadata("design:type", Object)
231
+ ], ModelAliasesConfigurationCategory.prototype, "agentService", void 0);
232
+ tslib_1.__decorate([
233
+ (0, inversify_1.postConstruct)(),
234
+ tslib_1.__metadata("design:type", Function),
235
+ tslib_1.__metadata("design:paramtypes", []),
236
+ tslib_1.__metadata("design:returntype", void 0)
237
+ ], ModelAliasesConfigurationCategory.prototype, "init", null);
238
+ exports.ModelAliasesConfigurationCategory = ModelAliasesConfigurationCategory = tslib_1.__decorate([
239
+ (0, inversify_1.injectable)()
240
+ ], ModelAliasesConfigurationCategory);
241
+ //# sourceMappingURL=model-aliases-configuration-category.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-aliases-configuration-category.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/model-aliases-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,4CAAoG;AACpG,6EAAyJ;AACzJ,yFAAgH;AAChH,sCAAkD;AAClD,qDAAkD;AAElD,mDAA8D;AAC9D,4DAAiF;AAEjF,wHASkF;AAClF,wIAAmI;AACnI,uIAA+H;AAC/H,mIAAmH;AACnH,+CAA2C;AAE3C,qGAAqG;AACrG,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;;;GAIG;AAEI,IAAM,iCAAiC,GAAvC,MAAM,iCAAkC,SAAQ,yDAA0B;IAA1E;;QAEM,OAAE,GAAG,qDAAyB,CAAC,aAAa,CAAC;QAC7C,UAAK,GAAG,UAAG,CAAC,QAAQ,CAAC,+CAA+C,EAAE,eAAe,CAAC,CAAC;QACvF,gBAAW,GAAG,UAAG,CAAC,QAAQ,CAAC,qDAAqD,EACrF,iGAAiG,CAAC,CAAC;QAC9F,cAAS,GAAG,IAAA,iBAAO,EAAC,kBAAkB,CAAC,CAAC;QACxC,UAAK,GAAG,wDAA4B,CAAC,aAAa,CAAC;QACnD,SAAI,GAAG,YAAqB,CAAC;QAcnB,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;QAEvE,YAAO,GAAyB,EAAE,CAAC;QACnC,mBAAc,GAAoB,EAAE,CAAC;QACrC,6BAAwB,GAAG,IAAI,GAAG,EAAoB,CAAC;QACvD,0BAAqB,GAAG,IAAI,GAAG,EAAqC,CAAC;IA+MnF,CAAC;IA7MG,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qBAAqB;QACjB,OAAO,CAAC,2CAAiC,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC;IAChB,CAAC;IAGS,IAAI;QACV,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;QACxG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CACxF,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YACnB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;gBAC3C,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACnC,CAAC,CAAC;YACF,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;gBAC1C,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAChC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACnC,CAAC,CAAC;SACL,CAAC,CAAC;IACP,CAAC;IAED,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,MAAM;QAClB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAES,KAAK,CAAC,kBAAkB;QAC9B,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,CAAC;IAC/E,CAAC;IAES,KAAK,CAAC,WAAW;QACvB,MAAM,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,GAAG,EAAE,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/G,CAAC;IACL,CAAC;IAES,KAAK,CAAC,kBAAkB;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,gBAAgB,GAAa,EAAE,CAAC;YACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACzB,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACnF,IAAI,kBAAkB,EAAE,yBAAyB,EAAE,CAAC;oBAChD,IAAI,kBAAkB,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;wBACxG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACpC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,WAAqC,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC9H,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpC,CAAC;YACL,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC;IAC7C,CAAC;IAED,IAAc,UAAU;QACpB,OAAO,IAAI,CAAC,EAAE,CAAC;IACnB,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9B,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;SACF,CAAA,CAAC,CAAC;IAC1C,CAAC;IAES,cAAc,CAAC,KAAyB;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO;gBACH,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,iDAAiD,EAAE,UAAU,CAAC;gBAClF,OAAO,EAAE,UAAG,CAAC,QAAQ,CAAC,yDAAyD,EAAE,gCAAgC,CAAC;aACrH,CAAC;QACN,CAAC;QACD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC;QAC/C,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACrC,OAAO;gBACH,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,kDAAkD,EAAE,WAAW,CAAC;gBACpF,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;aACnC,CAAC;QACN,CAAC;QACD,uGAAuG;QACvG,OAAO;YACH,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,UAAG,CAAC,QAAQ,CAAC,oDAAoD,EAAE,iBAAiB,EAAE,SAAS,CAAC;SAC5G,CAAC;IACN,CAAC;IAES,kBAAkB,CAAC,IAA6B,EAAE,GAAiC;QACzF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,6DACF,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAC/B,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EACrE,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,IACzC,CAAC;IACR,CAAC;IAES,mBAAmB,CAAC,KAAyB;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,IAAI,kBAAkB,CAAC;QAC7D,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,CAAC;QACpH,OAAO,wBAAC,oDAAsB,IAAC,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,yDAAyD,EAAE,gBAAgB,CAAC,aAC1H,SAAS,IAAI,gCAAK,SAAS,EAAC,wBAAwB,YAChD,UAAG,CAAC,QAAQ,CAAC,0DAA0D,EAAE,uCAAuC,CAAC,GAChH,EACN,uBAAC,wCAAY,IACT,SAAS,EAAE,UAAG,CAAC,QAAQ,CAAC,yDAAyD,EAAE,gBAAgB,CAAC,EACpG,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EACvC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EACrJ,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,GACxD,IACmB,CAAC;IAC9B,CAAC;IAES,eAAe;QACrB,MAAM,OAAO,GAAmB,CAAC;gBAC7B,KAAK,EAAE,kBAAkB;gBACzB,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,qDAAqD,EAAE,gBAAgB,CAAC;aAC/F,CAAC,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC1G,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,KAAK,CAAC,EAAE;gBACf,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;gBACvD,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;aACzD,CAAC,CAAC;QACP,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAES,gBAAgB,CAAC,KAAyB,EAAE,KAAyB;QAC3E,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IAC9H,CAAC;IAES,kBAAkB,CAAC,KAAyB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,6DACH,uBAAC,oDAAsB,IAAC,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,sDAAsD,EAAE,eAAe,CAAC,YAChH,yCACK,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;4BACjC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;4BAC9E,MAAM,KAAK,GAAG,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC;4BAC/C,OAAO,gCAAkB,SAAS,EAAE,OAAO,KAAK,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,SAAS,aACvG,OAAO,OAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KADhB,OAAO,CAElB,CAAC;wBACV,CAAC,CAAC,GACD,GACgB,EACzB,uBAAC,oDAAsB,IAAC,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,qDAAqD,EAAE,cAAc,CAAC,YAC7G,QAAQ;wBACL,CAAC,CAAC,6CAAO,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,OAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAQ;wBAC9F,CAAC,CAAC,2CAAO,UAAG,CAAC,QAAQ,CAAC,yDAAyD,EAAE,gCAAgC,CAAC,GAAQ,GACzG,IAC1B,CAAC;IACR,CAAC;IAES,sBAAsB,CAAC,KAAyB,EAAE,GAAiC;QACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7F,OAAO,uBAAC,oDAAsB,IAAC,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,gDAAgD,EAAE,yBAAyB,CAAC,YAC1H,MAAM,CAAC,MAAM,GAAG,CAAC;gBACd,CAAC,CAAC,uBAAC,wBAAU,IAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,qDAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAI;gBACzI,CAAC,CAAC,2CAAO,UAAG,CAAC,QAAQ,CAAC,kDAAkD,EAAE,2BAA2B,CAAC,GAAQ,GAC7F,CAAC;IAC9B,CAAC;IAED,cAAc;QACV,MAAM,SAAS,GAAG,UAAG,CAAC,QAAQ,CAAC,wDAAwD,EAAE,aAAa,CAAC,CAAC;QACxG,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,EAAE;YACnB,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;YACjD,QAAQ,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;SACC,CAAA,CAAC,CAAC;IAC5C,CAAC;CACJ,CAAA;AA5OY,8EAAiC;AAWvB;IADlB,IAAA,kBAAM,EAAC,iDAA0B,CAAC;;qFACuC;AAGvD;IADlB,IAAA,kBAAM,EAAC,sCAAqB,CAAC;;gFAC0C;AAGrD;IADlB,IAAA,kBAAM,EAAC,2BAAiB,CAAC;;4EAC8B;AAGrC;IADlB,IAAA,kBAAM,EAAC,sBAAY,CAAC;;uEACyB;AAwBpC;IADT,IAAA,yBAAa,GAAE;;;;6DAiBf;4CA5DQ,iCAAiC;IAD7C,IAAA,sBAAU,GAAE;GACA,iCAAiC,CA4O7C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=model-aliases-configuration-category.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-aliases-configuration-category.spec.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/model-aliases-configuration-category.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
19
+ let disableJSDOM = (0, jsdom_1.enableJSDOM)();
20
+ const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
21
+ frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
22
+ const chai_1 = require("chai");
23
+ const ai_configuration_category_1 = require("@theia/ai-core-ui/lib/browser/ai-configuration/ai-configuration-category");
24
+ const model_aliases_configuration_category_1 = require("./model-aliases-configuration-category");
25
+ disableJSDOM();
26
+ function alias(id, description = '') {
27
+ return { id, description, defaultModelIds: [] };
28
+ }
29
+ function readyModel(id) {
30
+ return { id, status: { status: 'ready' } };
31
+ }
32
+ function unreadyModel(id) {
33
+ return { id, status: { status: 'unavailable', message: 'nope' } };
34
+ }
35
+ function createCategory(aliases, resolved) {
36
+ const category = new model_aliases_configuration_category_1.ModelAliasesConfigurationCategory();
37
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
+ category.aliases = aliases;
39
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+ category.resolvedModelForAlias = resolved;
41
+ return category;
42
+ }
43
+ describe('ModelAliasesConfigurationCategory', () => {
44
+ before(() => disableJSDOM = (0, jsdom_1.enableJSDOM)());
45
+ after(() => disableJSDOM());
46
+ it('declares the model-aliases collection metadata', () => {
47
+ const category = createCategory([], new Map());
48
+ (0, chai_1.expect)(category.id).to.equal(ai_configuration_category_1.AiConfigurationCategoryId.MODEL_ALIASES);
49
+ (0, chai_1.expect)(category.kind).to.equal('collection');
50
+ (0, chai_1.expect)(category.renderer).to.equal(category);
51
+ });
52
+ it('maps aliases to tree items with a resolved/warn/error status', () => {
53
+ const aliases = [alias('default/code', 'Coding'), alias('default/chat'), alias('broken')];
54
+ const resolved = new Map([
55
+ ['default/code', readyModel('m1')],
56
+ ['default/chat', unreadyModel('m2')],
57
+ ['broken', undefined]
58
+ ]);
59
+ const children = createCategory(aliases, resolved).getTreeChildren();
60
+ (0, chai_1.expect)(children.map(c => c.id)).to.deep.equal(['default/code', 'default/chat', 'broken']);
61
+ (0, chai_1.expect)(children[0].status?.kind).to.equal('on');
62
+ // A ready alias shows what it resolves to (the model), not a generic "Ready".
63
+ (0, chai_1.expect)(children[0].status?.label).to.equal('m1');
64
+ (0, chai_1.expect)(children[1].status?.kind).to.equal('warn');
65
+ (0, chai_1.expect)(children[2].status?.kind).to.equal('error');
66
+ });
67
+ it('indexes one search item per alias, navigating to the item', () => {
68
+ const category = createCategory([alias('default/code', 'Coding alias')], new Map());
69
+ const items = category.getSearchItems();
70
+ (0, chai_1.expect)(items).to.have.lengthOf(1);
71
+ (0, chai_1.expect)(items[0].target).to.deep.equal({ categoryId: ai_configuration_category_1.AiConfigurationCategoryId.MODEL_ALIASES, itemId: 'default/code' });
72
+ (0, chai_1.expect)(items[0].keywords).to.equal('Coding alias');
73
+ });
74
+ });
75
+ //# sourceMappingURL=model-aliases-configuration-category.spec.js.map