@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,113 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 EclipseSource GmbH.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import {
18
+ AIVariable, AIVariableContext, AIVariableContribution, AIVariableResolutionRequest, AIVariableResolver, AIVariableService, ResolvedAIVariable
19
+ } from '@theia/ai-core/lib/common';
20
+ import { MaybePromise, URI, nls } from '@theia/core';
21
+ import { inject, injectable } from '@theia/core/shared/inversify';
22
+ import { WorkspaceMetadataStorageService, WorkspaceMetadataStore } from '@theia/workspace/lib/browser/metadata-storage';
23
+ import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
24
+ import { AccessibleRootContribution } from './workspace-functions';
25
+
26
+ /** Key under which the memory directory is requested from the workspace metadata storage. */
27
+ export const MEMORY_METADATA_STORE_KEY = 'memory';
28
+
29
+ export const MEMORY_DIRECTORY_VARIABLE: AIVariable = {
30
+ id: 'memory-directory',
31
+ name: 'memoryDirectory',
32
+ description: nls.localize('theia/ai/ide/memoryDirectoryVariable/description',
33
+ 'The absolute path of the directory in which the agent keeps its memory for the current workspace.')
34
+ };
35
+
36
+ /**
37
+ * Resolves the memory directory of the current workspace and makes it reachable for the AI workspace
38
+ * tools. The directory is the workspace's metadata store, so every workspace has its own memory and none
39
+ * of it ends up in the user's repository.
40
+ *
41
+ * Its path is generated and changes with the workspace, which is why it is contributed as an accessible
42
+ * root instead of being configured in `ai-features.workspaceFunctions.allowedExternalPaths`: the user
43
+ * cannot name a path they do not know, and prompts learn it from {@link MEMORY_DIRECTORY_VARIABLE}.
44
+ *
45
+ * A window without a workspace has no metadata store and therefore no memory. The variable then resolves
46
+ * to nothing and no directory is made accessible.
47
+ */
48
+ @injectable()
49
+ export class MemoryDirectoryVariableContribution implements AIVariableContribution, AIVariableResolver, AccessibleRootContribution {
50
+
51
+ @inject(WorkspaceMetadataStorageService)
52
+ protected readonly metadataStorageService: WorkspaceMetadataStorageService;
53
+
54
+ @inject(WorkspaceService)
55
+ protected readonly workspaceService: WorkspaceService;
56
+
57
+ protected store: WorkspaceMetadataStore | undefined;
58
+ protected ensuredLocation: string | undefined;
59
+
60
+ registerVariables(service: AIVariableService): void {
61
+ service.registerResolver(MEMORY_DIRECTORY_VARIABLE, this);
62
+ }
63
+
64
+ canResolve(request: AIVariableResolutionRequest, context: AIVariableContext): MaybePromise<number> {
65
+ return request.variable.name === MEMORY_DIRECTORY_VARIABLE.name ? 1 : 0;
66
+ }
67
+
68
+ async resolve(request: AIVariableResolutionRequest, context: AIVariableContext): Promise<ResolvedAIVariable | undefined> {
69
+ if (request.variable.name !== MEMORY_DIRECTORY_VARIABLE.name) {
70
+ return undefined;
71
+ }
72
+ const store = await this.getStore();
73
+ if (!store) {
74
+ return undefined;
75
+ }
76
+ // Resolving the variable means a prompt is about to send the agent to this directory, so create
77
+ // it now: listing an empty memory is a clearer answer than a missing path.
78
+ if (this.ensuredLocation !== store.location.toString()) {
79
+ await store.ensureExists();
80
+ this.ensuredLocation = store.location.toString();
81
+ }
82
+ return { variable: request.variable, value: store.location.path.fsPath() };
83
+ }
84
+
85
+ async getRoots(): Promise<URI[]> {
86
+ const store = await this.getStore();
87
+ return store ? [store.location] : [];
88
+ }
89
+
90
+ /**
91
+ * The memory store of the current workspace, or undefined when there is no workspace to store
92
+ * memory for. The store instance is kept because it tracks the workspace itself: its `location`
93
+ * follows a workspace change, so nothing has to be invalidated when the workspace is replaced.
94
+ *
95
+ * Closing a workspace is the exception: the store cannot compute a location without one, so it
96
+ * keeps the location of the closed workspace. Whether a workspace is open is therefore checked on
97
+ * every call rather than only when the store is created.
98
+ */
99
+ protected async getStore(): Promise<WorkspaceMetadataStore | undefined> {
100
+ if (this.workspaceService.tryGetRoots().length === 0) {
101
+ return undefined;
102
+ }
103
+ try {
104
+ if (!this.store) {
105
+ this.store = await this.metadataStorageService.getOrCreateStore(MEMORY_METADATA_STORE_KEY);
106
+ }
107
+ return this.store;
108
+ } catch (error) {
109
+ // No workspace is open: memory is unavailable rather than shared between unrelated windows.
110
+ return undefined;
111
+ }
112
+ }
113
+ }
@@ -0,0 +1,38 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 EclipseSource GmbH.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { FrontendApplicationContribution } from '@theia/core/lib/browser';
18
+ import { inject, injectable } from '@theia/core/shared/inversify';
19
+ import { PromptService } from '@theia/ai-core/lib/common';
20
+ import { OPEN_EDITORS_HINT_FRAGMENT_ID } from '../common/open-editors-hint-fragment-id';
21
+
22
+ @injectable()
23
+ export class OpenEditorsHintContribution implements FrontendApplicationContribution {
24
+
25
+ @inject(PromptService)
26
+ protected readonly promptService: PromptService;
27
+
28
+ onStart(): void {
29
+ this.promptService.addBuiltInPromptFragment({
30
+ id: OPEN_EDITORS_HINT_FRAGMENT_ID,
31
+ template: `## Open Editors
32
+ The following files are currently open in the user's editor. This is provided as contextual information only \
33
+ — these files may or may not be relevant to the current request. Do not assume they are related unless the user explicitly refers to them.
34
+
35
+ {{openEditors}}`
36
+ });
37
+ }
38
+ }
@@ -15,13 +15,16 @@
15
15
  // *****************************************************************************
16
16
  import { AbstractStreamParsingChatAgent } from '@theia/ai-chat';
17
17
  import { LanguageModelRequirement } from '@theia/ai-core';
18
- import { injectable } from '@theia/core/shared/inversify';
18
+ import { inject, injectable, named } from '@theia/core/shared/inversify';
19
19
  import { projectInfoSystemVariants, projectInfoTemplateVariants } from '../common/project-info-prompt-template';
20
- import { nls } from '@theia/core';
20
+ import { ILogger, nls } from '@theia/core';
21
21
 
22
22
  @injectable()
23
23
  export class ProjectInfoAgent extends AbstractStreamParsingChatAgent {
24
24
 
25
+ @inject(ILogger) @named('ai-ide:ProjectInfoAgent')
26
+ protected override readonly logger: ILogger;
27
+
25
28
  name = 'ProjectInfo';
26
29
  id = 'ProjectInfo';
27
30
  languageModelRequirements: LanguageModelRequirement[] = [{
@@ -16,14 +16,17 @@
16
16
 
17
17
  import { AbstractStreamParsingChatAgent } from '@theia/ai-chat';
18
18
  import { LanguageModelRequirement } from '@theia/ai-core/lib/common';
19
- import { nls } from '@theia/core';
20
- import { injectable } from '@theia/core/shared/inversify';
19
+ import { ILogger, nls } from '@theia/core';
20
+ import { inject, injectable, named } from '@theia/core/shared/inversify';
21
21
  import { PR_REVIEW_SYSTEM_PROMPT_ID, prReviewSystemPrompt } from './pr-review-prompt-template';
22
22
 
23
23
  export const PRReviewAgentId = 'pr-reviewer';
24
24
 
25
25
  @injectable()
26
26
  export class PRReviewAgent extends AbstractStreamParsingChatAgent {
27
+ @inject(ILogger) @named('ai-ide:PRReviewAgent')
28
+ protected override readonly logger: ILogger;
29
+
27
30
  id = PRReviewAgentId;
28
31
  name = 'PR Reviewer';
29
32
  languageModelRequirements: LanguageModelRequirement[] = [{
@@ -49,12 +49,6 @@
49
49
  padding: var(--theia-ui-padding) 0;
50
50
  }
51
51
 
52
- .ai-configuration-section-content ul,
53
- .ai-configuration-section-content ol {
54
- padding-left: calc(var(--theia-ui-padding) * 2);
55
- margin: 0 var(--theia-ui-padding) 0;
56
- }
57
-
58
52
  /* Expandable section styling */
59
53
  .ai-expandable-section {
60
54
  margin-bottom: var(--theia-ui-padding);
@@ -0,0 +1,416 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2026 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+
17
+ .ai-configuration-shell {
18
+ height: 100%;
19
+ width: 100%;
20
+ overflow: hidden;
21
+ background-color: var(--theia-editor-background);
22
+ }
23
+
24
+ /* Body split */
25
+ .ai-configuration-body {
26
+ min-height: 0;
27
+ }
28
+
29
+ /* Tree column: search box + category tree */
30
+ .ai-configuration-tree-column {
31
+ display: flex;
32
+ flex-direction: column;
33
+ min-height: 0;
34
+ /* Floor the tree width so it never collapses to nothing when the view is docked narrow. Lumino's
35
+ SplitPanel reads this CSS min-width as the child's minimum size. */
36
+ min-width: 180px;
37
+ border-right: var(--theia-border-width) solid var(--theia-widget-border);
38
+ /* Match the Settings UI: no separate panel colour, share the editor background. */
39
+ background-color: var(--theia-editor-background);
40
+ }
41
+
42
+ /* Search box + deep-results dropdown */
43
+ .ai-configuration-search {
44
+ flex: 0 0 auto;
45
+ }
46
+
47
+ .ai-configuration-search-wrap {
48
+ position: relative;
49
+ display: flex;
50
+ align-items: center;
51
+ padding: var(--theia-ui-padding) calc(var(--theia-ui-padding) * 1.5);
52
+ }
53
+
54
+ .ai-configuration-search-icon {
55
+ position: absolute;
56
+ left: calc(var(--theia-ui-padding) * 1.5 + 6px);
57
+ color: var(--theia-descriptionForeground);
58
+ pointer-events: none;
59
+ }
60
+
61
+ .ai-configuration-search-input {
62
+ width: 100%;
63
+ padding-left: 24px;
64
+ /* Room for the clear button on the right. */
65
+ padding-right: 24px;
66
+ /* A visible resting border: `input.border` is undefined in many themes (so `.theia-input` renders no
67
+ visible border), which made the box hard to spot. Fall back to the widget border, like the Settings UI. */
68
+ border: var(--theia-border-width) solid var(--theia-input-border, var(--theia-widget-border));
69
+ }
70
+
71
+ .ai-configuration-search-input:focus {
72
+ border-color: var(--theia-focusBorder);
73
+ }
74
+
75
+ /* Clear (x) button inside the search box, shown only while there is a query. */
76
+ .ai-configuration-search-clear {
77
+ position: absolute;
78
+ right: calc(var(--theia-ui-padding) * 1.5 + 4px);
79
+ display: inline-flex;
80
+ align-items: center;
81
+ justify-content: center;
82
+ width: 18px;
83
+ height: 18px;
84
+ padding: 0;
85
+ border: none;
86
+ background: none;
87
+ border-radius: 3px;
88
+ color: var(--theia-descriptionForeground);
89
+ cursor: pointer;
90
+ }
91
+
92
+ .ai-configuration-search-clear:hover {
93
+ color: var(--theia-foreground);
94
+ background: var(--theia-list-hoverBackground);
95
+ }
96
+
97
+ .ai-configuration-search-clear:focus-visible {
98
+ outline: 1px solid var(--theia-focusBorder);
99
+ }
100
+
101
+ /* Expand/Collapse All controls, directly under the search input. */
102
+ .ai-configuration-tree-toolbar {
103
+ flex: 0 0 auto;
104
+ display: flex;
105
+ justify-content: flex-end;
106
+ gap: calc(var(--theia-ui-padding) / 2);
107
+ padding: 0 calc(var(--theia-ui-padding) * 1.5) calc(var(--theia-ui-padding) / 2);
108
+ }
109
+
110
+ .ai-configuration-tree-toolbar-button {
111
+ display: inline-flex;
112
+ align-items: center;
113
+ justify-content: center;
114
+ border: none;
115
+ background: none;
116
+ color: var(--theia-icon-foreground);
117
+ cursor: pointer;
118
+ padding: 2px;
119
+ border-radius: 3px;
120
+ }
121
+
122
+ .ai-configuration-tree-toolbar-button:hover {
123
+ background-color: var(--theia-toolbar-hoverBackground, var(--theia-list-hoverBackground));
124
+ }
125
+
126
+ .ai-configuration-tree-toolbar-button:focus-visible {
127
+ outline: 1px solid var(--theia-focusBorder);
128
+ }
129
+
130
+ .ai-configuration-search-results {
131
+ position: absolute;
132
+ top: calc(100% - var(--theia-ui-padding) / 2);
133
+ left: calc(var(--theia-ui-padding) * 1.5);
134
+ right: calc(var(--theia-ui-padding) * 1.5);
135
+ z-index: 900;
136
+ max-height: 380px;
137
+ overflow-y: auto;
138
+ padding: calc(var(--theia-ui-padding) / 2);
139
+ background-color: var(--theia-editorWidget-background);
140
+ border: var(--theia-border-width) solid var(--theia-dropdown-border, var(--theia-widget-border));
141
+ border-radius: 4px;
142
+ box-shadow: 0 6px 18px var(--theia-widget-shadow);
143
+ }
144
+
145
+ .ai-configuration-search-result {
146
+ display: flex;
147
+ align-items: center;
148
+ gap: var(--theia-ui-padding);
149
+ padding: calc(var(--theia-ui-padding) / 2) var(--theia-ui-padding);
150
+ border-radius: 3px;
151
+ cursor: pointer;
152
+ }
153
+
154
+ .ai-configuration-search-result:hover,
155
+ .ai-configuration-search-result.focused {
156
+ background-color: var(--theia-list-activeSelectionBackground);
157
+ color: var(--theia-list-activeSelectionForeground);
158
+ }
159
+
160
+ .ai-configuration-search-result-type {
161
+ flex: none;
162
+ padding: 0 calc(var(--theia-ui-padding) / 2);
163
+ border: var(--theia-border-width) solid var(--theia-badge-background);
164
+ border-radius: 8px;
165
+ font-size: var(--theia-ui-font-size0);
166
+ color: var(--theia-descriptionForeground);
167
+ white-space: nowrap;
168
+ }
169
+
170
+ .ai-configuration-search-result-label {
171
+ overflow: hidden;
172
+ text-overflow: ellipsis;
173
+ white-space: nowrap;
174
+ }
175
+
176
+ .ai-configuration-search-result-label b {
177
+ color: var(--theia-textLink-foreground);
178
+ font-weight: 600;
179
+ }
180
+
181
+ .ai-configuration-search-result-category {
182
+ margin-left: auto;
183
+ flex: none;
184
+ color: var(--theia-descriptionForeground);
185
+ font-size: var(--theia-ui-font-size0);
186
+ }
187
+
188
+ .ai-configuration-search-result:hover .ai-configuration-search-result-category,
189
+ .ai-configuration-search-result.focused .ai-configuration-search-result-category {
190
+ color: inherit;
191
+ }
192
+
193
+ .ai-configuration-search-empty {
194
+ padding: var(--theia-ui-padding);
195
+ color: var(--theia-descriptionForeground);
196
+ font-size: var(--theia-ui-font-size1);
197
+ text-align: center;
198
+ }
199
+
200
+ /* Category tree */
201
+ .ai-configuration-tree {
202
+ flex: 1 1 0;
203
+ min-height: 0;
204
+ overflow: auto;
205
+ background-color: transparent;
206
+ /* Keep the tree off the side-bar edge, mirroring the Settings UI gutter. */
207
+ padding: 0 var(--theia-ui-padding);
208
+ }
209
+
210
+ /*
211
+ * Tree icons share the neutral tree foreground. `!important` is required because core's symbol-icon.css
212
+ * colours `.codicon-symbol-*` (and friends) through a selector that includes a `:not(#id)` clause, giving
213
+ * it higher specificity than any plain class selector here — without this such icons render tinted. A
214
+ * fixed 16px box reserves the icon gutter even for nodes without an icon (categories, non-agent items), so
215
+ * labels stay aligned, and centres the glyph so differently-sized codicons all occupy the same width.
216
+ */
217
+ .ai-configuration-tree .ai-configuration-tree-node-icon {
218
+ display: inline-flex;
219
+ align-items: center;
220
+ justify-content: center;
221
+ flex: 0 0 16px;
222
+ width: 16px;
223
+ height: 16px;
224
+ font-size: 16px;
225
+ margin-right: var(--theia-ui-padding);
226
+ color: var(--theia-icon-foreground) !important;
227
+ }
228
+
229
+ /* Selected node: the icon tracks the label colour. When the tree is focused the selected label uses the
230
+ active-selection foreground (e.g. white in the light theme); when selected but not focused it uses the
231
+ (neutral) inactive-selection foreground. Mirror both so the icon never stays white on an unfocused tree. */
232
+ .ai-configuration-tree .theia-TreeNode.theia-mod-selected .ai-configuration-tree-node-icon {
233
+ color: var(--theia-list-inactiveSelectionForeground, var(--theia-foreground)) !important;
234
+ }
235
+
236
+ .ai-configuration-tree.theia-Tree:focus-within .theia-TreeNode.theia-mod-selected .ai-configuration-tree-node-icon {
237
+ color: var(--theia-list-activeSelectionForeground) !important;
238
+ }
239
+
240
+ /* Shared trailing slot for a row's decoration: the item state dot and a category's action button occupy the
241
+ same box, so a dot and a `+` on neighbouring rows are centred on the same vertical line. `flex: none` keeps
242
+ the slot from being squeezed by a long label, which would otherwise clip the dot to an ellipse. */
243
+ .ai-configuration-tree .ai-configuration-tree-node-decoration {
244
+ display: inline-flex;
245
+ align-items: center;
246
+ justify-content: center;
247
+ flex: none;
248
+ box-sizing: border-box;
249
+ width: 20px;
250
+ height: 20px;
251
+ /* Zero the native button padding so the action's hover background is a snug square. */
252
+ padding: 0;
253
+ margin-left: var(--theia-ui-padding);
254
+ }
255
+
256
+ /* A category's inline "create item" action (add an agent, add an MCP server). Hidden until the row is
257
+ hovered or the button itself is focused, so the tree stays quiet while remaining keyboard reachable. */
258
+ .ai-configuration-tree .ai-configuration-tree-node-action {
259
+ border: none;
260
+ background: none;
261
+ color: var(--theia-icon-foreground);
262
+ cursor: pointer;
263
+ border-radius: 3px;
264
+ visibility: hidden;
265
+ }
266
+
267
+ .ai-configuration-tree .theia-TreeNode:hover .ai-configuration-tree-node-action,
268
+ .ai-configuration-tree .ai-configuration-tree-node-action:focus-visible {
269
+ visibility: visible;
270
+ }
271
+
272
+ .ai-configuration-tree .ai-configuration-tree-node-action:hover {
273
+ background: var(--theia-list-hoverBackground);
274
+ }
275
+
276
+ .ai-configuration-tree .ai-configuration-tree-node-action:focus-visible {
277
+ outline: 1px solid var(--theia-focusBorder);
278
+ }
279
+
280
+ /* Selected node: the action tracks the label colour, as the node icon does. */
281
+ .ai-configuration-tree .theia-TreeNode.theia-mod-selected .ai-configuration-tree-node-action {
282
+ color: var(--theia-list-inactiveSelectionForeground, var(--theia-foreground));
283
+ }
284
+
285
+ .ai-configuration-tree.theia-Tree:focus-within .theia-TreeNode.theia-mod-selected .ai-configuration-tree-node-action {
286
+ color: var(--theia-list-activeSelectionForeground);
287
+ }
288
+
289
+ /* "Contributed by extensions" group header: a real section divider (top rule + breathing room + an
290
+ uppercase caption) rather than a faint floating row. Non-interactive (no hover/selection). */
291
+ .ai-configuration-tree-separator {
292
+ margin-top: calc(var(--theia-ui-padding) * 1.5);
293
+ border-top: var(--theia-border-width) solid var(--theia-widget-border);
294
+ pointer-events: none;
295
+ height: auto;
296
+ }
297
+
298
+ .ai-configuration-tree-separator .theia-TreeNodeContent {
299
+ color: var(--theia-descriptionForeground);
300
+ font-size: var(--theia-ui-font-size0);
301
+ font-weight: 600;
302
+ text-transform: uppercase;
303
+ letter-spacing: 0.05em;
304
+ cursor: default;
305
+ padding-top: var(--theia-ui-padding);
306
+ }
307
+
308
+ /* In-pane category header (icon + name), aligned with the centred page column below it. */
309
+ .ai-configuration-category-header {
310
+ max-width: 860px;
311
+ margin: 0 auto calc(var(--theia-ui-padding) * 2);
312
+ }
313
+
314
+ /* Detail pane */
315
+ .ai-configuration-detail-widget {
316
+ height: 100%;
317
+ overflow: hidden;
318
+ background-color: var(--theia-editor-background);
319
+ }
320
+
321
+ .ai-configuration-detail-container {
322
+ display: flex;
323
+ flex-direction: column;
324
+ height: 100%;
325
+ }
326
+
327
+ .ai-configuration-detail-breadcrumb {
328
+ display: flex;
329
+ align-items: center;
330
+ gap: calc(var(--theia-ui-padding) / 2);
331
+ padding: var(--theia-ui-padding) calc(var(--theia-ui-padding) * 2);
332
+ border-bottom: var(--theia-border-width) solid var(--theia-widget-border);
333
+ font-size: var(--theia-ui-font-size1);
334
+ }
335
+
336
+ .ai-configuration-detail-breadcrumb-segment {
337
+ display: inline-flex;
338
+ align-items: center;
339
+ gap: calc(var(--theia-ui-padding) / 2);
340
+ }
341
+
342
+ .ai-configuration-detail-breadcrumb-icon {
343
+ color: var(--theia-icon-foreground);
344
+ }
345
+
346
+ .ai-configuration-detail-breadcrumb-separator {
347
+ color: var(--theia-descriptionForeground);
348
+ }
349
+
350
+ .ai-configuration-detail-scope-banner {
351
+ display: flex;
352
+ align-items: center;
353
+ gap: var(--theia-ui-padding);
354
+ padding: var(--theia-ui-padding) calc(var(--theia-ui-padding) * 2);
355
+ background-color: var(--theia-editorInfo-background, var(--theia-editorWidget-background));
356
+ border-bottom: var(--theia-border-width) solid var(--theia-widget-border);
357
+ }
358
+
359
+ .ai-configuration-detail-body {
360
+ flex: 1;
361
+ min-height: 0;
362
+ overflow: auto;
363
+ /* The larger left padding reserves room for the setting rows' left gutter (gear + modified indicator),
364
+ which hangs in the margin left of the aligned content, so it is never clipped or jammed against the
365
+ pane edge. */
366
+ padding: calc(var(--theia-ui-padding) * 2) calc(var(--theia-ui-padding) * 3) calc(var(--theia-ui-padding) * 2) calc(var(--theia-ui-padding) * 6);
367
+ }
368
+
369
+ /* In-view cross-reference links (e.g. an agent linking to a model alias) act as buttons. */
370
+ .ai-configuration-detail-body a {
371
+ cursor: pointer;
372
+ }
373
+
374
+ .ai-configuration-detail-placeholder {
375
+ display: flex;
376
+ align-items: center;
377
+ justify-content: center;
378
+ height: 100%;
379
+ padding: calc(var(--theia-ui-padding) * 2);
380
+ color: var(--theia-descriptionForeground);
381
+ font-style: italic;
382
+ text-align: center;
383
+ }
384
+
385
+ /* Deep-search / navigation highlight flash.
386
+ The ring matters as much as the background: a collapsible list row paints its header on top of the row
387
+ element that carries this animation, so a background-only flash is invisible on exactly the rows a
388
+ cross-page link (an agent capability pointing at its snippet, say) tends to target. `box-shadow` draws
389
+ outside that header and does not affect layout, so the flash reads on every row shape. */
390
+ .ai-configuration-row-flash {
391
+ animation: ai-configuration-flash 1.2s ease-out;
392
+ }
393
+
394
+ @keyframes ai-configuration-flash {
395
+ 0% {
396
+ background-color: var(--theia-list-hoverBackground);
397
+ box-shadow: 0 0 0 2px var(--theia-focusBorder);
398
+ }
399
+ 100% {
400
+ background-color: transparent;
401
+ box-shadow: 0 0 0 2px transparent;
402
+ }
403
+ }
404
+
405
+ /* High contrast: as in `ai-configuration-components.css`, these states only tint a background, and the
406
+ high-contrast themes define neither `list.hoverBackground` nor `list.activeSelectionBackground`. The ring
407
+ uses `contrastActiveBorder`, which exists only there, so other themes are untouched. The focused search
408
+ result is included because keyboard navigation through the results would otherwise leave no trace. */
409
+ .ai-configuration-search-clear:hover,
410
+ .ai-configuration-tree-toolbar-button:hover,
411
+ .ai-configuration-search-result:hover,
412
+ .ai-configuration-search-result.focused,
413
+ .ai-configuration-tree .ai-configuration-tree-node-action:hover {
414
+ outline: 1px dotted var(--theia-contrastActiveBorder, transparent);
415
+ outline-offset: -1px;
416
+ }
@@ -43,13 +43,14 @@
43
43
  font-weight: 600;
44
44
  border-bottom: var(--theia-border-width) solid var(--theia-widget-border);
45
45
  color: var(--theia-foreground);
46
+ /* Opaque background so the sticky header hides the rows scrolling underneath instead of overlapping them. */
47
+ background-color: var(--theia-editor-background);
46
48
  }
47
49
 
48
50
  .ai-configuration-table td {
49
51
  padding: calc(var(--theia-ui-padding) / 2) var(--theia-ui-padding);
50
52
  border-bottom: var(--theia-border-width) solid var(--theia-widget-border);
51
53
  color: var(--theia-foreground);
52
- vertical-align: top;
53
54
  }
54
55
 
55
56
  .ai-configuration-table .skill-description-column,
@@ -122,17 +123,3 @@
122
123
  flex-wrap: wrap;
123
124
  gap: calc(var(--theia-ui-padding) / 2);
124
125
  }
125
-
126
- .ai-slash-commands-section .agent-chip {
127
- display: inline-flex;
128
- align-items: center;
129
- justify-content: center;
130
- background-color: var(--theia-button-background);
131
- color: var(--theia-editor-background);
132
- gap: calc(var(--theia-ui-padding) / 2);
133
- padding: calc(var(--theia-ui-padding) / 3) calc(var(--theia-ui-padding) / 1.5);
134
- border-radius: 1em;
135
- font-size: var(--theia-ui-font-size0);
136
- font-weight: 500;
137
- white-space: nowrap;
138
- }