@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
@@ -22,7 +22,7 @@ import { open, OpenerService } from '@theia/core/lib/browser';
22
22
  import { Deferred } from '@theia/core/lib/common/promise-util';
23
23
  import { MEMORY_TEXT, MEMORY_TEXT_READONLY, ResourceProvider } from '@theia/core/lib/common/resource';
24
24
  import URI from '@theia/core/lib/common/uri';
25
- import { inject, injectable } from '@theia/core/shared/inversify';
25
+ import { inject, injectable, named } from '@theia/core/shared/inversify';
26
26
  import { EditorManager } from '@theia/editor/lib/browser';
27
27
  import { ScmService } from '@theia/scm/lib/browser/scm-service';
28
28
  import { WorkspaceFunctionScope } from './workspace-functions';
@@ -39,6 +39,7 @@ import {
39
39
  parseUserInteractionArgs,
40
40
  resolveContentRef
41
41
  } from '../common/user-interaction-tool';
42
+ import { ILogger } from '@theia/core';
42
43
 
43
44
  interface PendingInteraction {
44
45
  deferred: Deferred<string>;
@@ -181,6 +182,9 @@ export class UserInteractionTool implements ToolProvider {
181
182
  @inject(ResourceProvider)
182
183
  protected readonly resourceProvider: ResourceProvider;
183
184
 
185
+ @inject(ILogger) @named('ai-ide:UserInteractionTool')
186
+ protected readonly logger: ILogger;
187
+
184
188
  protected readonly pendingInteractions = new Map<string, PendingInteraction>();
185
189
 
186
190
  getTool(): ToolRequest {
@@ -299,7 +303,7 @@ export class UserInteractionTool implements ToolProvider {
299
303
  if (repo) {
300
304
  return repo.toUriAtRef(fileUri, ref.gitRef);
301
305
  }
302
- console.warn(`No SCM repository found to resolve gitRef '${ref.gitRef}' for '${ref.path}'`);
306
+ this.logger.warn(`No SCM repository found to resolve gitRef '${ref.gitRef}' for '${ref.path}'`);
303
307
  return undefined;
304
308
  }
305
309
  return fileUri;
@@ -20,8 +20,9 @@ import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/front
20
20
  FrontendApplicationConfigProvider.set({});
21
21
 
22
22
  import { expect } from 'chai';
23
- import { CancellationTokenSource, OS, PreferenceService } from '@theia/core';
23
+ import { CancellationTokenSource, OS, PreferenceService, ILogger } from '@theia/core';
24
24
  import {
25
+ AccessibleRootContribution,
25
26
  GetWorkspaceDirectoryStructure,
26
27
  FileContentFunction,
27
28
  GetWorkspaceFileList,
@@ -29,6 +30,7 @@ import {
29
30
  WorkspaceFunctionScope,
30
31
  FindFilesByPattern
31
32
  } from './workspace-functions';
33
+ import { bindRootContributionProvider } from '@theia/core/lib/common/contribution-provider';
32
34
  import { AiConfigurationService, ToolInvocationContext } from '@theia/ai-core';
33
35
  import { Container } from '@theia/core/shared/inversify';
34
36
  import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
@@ -41,6 +43,7 @@ import { MonacoTextModelService } from '@theia/monaco/lib/browser/monaco-text-mo
41
43
  import { MonacoWorkspace } from '@theia/monaco/lib/browser/monaco-workspace';
42
44
  import { FileSearchService } from '@theia/file-search/lib/common/file-search-service';
43
45
  import { Minimatch } from 'minimatch';
46
+ import { MockLogger } from '@theia/core/lib/common/test/mock-logger';
44
47
 
45
48
  const makeFileSearchService = (
46
49
  impl?: (searchPattern: string, options: FileSearchService.Options) => Promise<string[]>
@@ -164,6 +167,7 @@ describe('Workspace Functions Cancellation Tests', () => {
164
167
  } as unknown as MonacoTextModelService;
165
168
 
166
169
  // Register mocks in the container
170
+ container.bind(ILogger).to(MockLogger);
167
171
  container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
168
172
  container.bind(FileService).toConstantValue(mockFileService);
169
173
  container.bind(PreferenceService).toConstantValue(mockPreferenceService);
@@ -289,6 +293,7 @@ describe('FileContentFunction.getArgumentsShortLabel', () => {
289
293
  getTextDocument: () => undefined
290
294
  } as unknown as MonacoWorkspace;
291
295
 
296
+ container.bind(ILogger).to(MockLogger);
292
297
  container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
293
298
  container.bind(FileService).toConstantValue(mockFileService);
294
299
  container.bind(PreferenceService).toConstantValue(mockPreferenceService);
@@ -407,6 +412,7 @@ describe('FileContentFunction handler', () => {
407
412
  getTextDocument: () => undefined
408
413
  } as unknown as MonacoWorkspace;
409
414
 
415
+ container.bind(ILogger).to(MockLogger);
410
416
  container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
411
417
  container.bind(FileService).toConstantValue(mockFileService);
412
418
  container.bind(PreferenceService).toConstantValue(mockPreferenceService);
@@ -772,6 +778,7 @@ describe('FindFilesByPattern.getArgumentsShortLabel', () => {
772
778
  get: <T>(_path: string, defaultValue: T) => defaultValue
773
779
  };
774
780
 
781
+ container.bind(ILogger).to(MockLogger);
775
782
  container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
776
783
  container.bind(FileService).toConstantValue(mockFileService);
777
784
  container.bind(PreferenceService).toConstantValue(mockPreferenceService);
@@ -820,6 +827,15 @@ describe('FindFilesByPattern.findFiles', () => {
820
827
  before(() => { disableJSDOMInner = enableJSDOM(); });
821
828
  after(() => { disableJSDOMInner(); });
822
829
 
830
+ // External hits are rendered with `Path.fsPath()`, which branches on the backend OS, so the POSIX
831
+ // fixtures below pin it instead of inheriting the OS the tests happen to run on.
832
+ let originalIsWindows: boolean;
833
+ beforeEach(() => {
834
+ originalIsWindows = OS.backend.isWindows;
835
+ OS.backend.isWindows = false;
836
+ });
837
+ afterEach(() => { OS.backend.isWindows = originalIsWindows; });
838
+
823
839
  beforeEach(() => {
824
840
  container = new Container();
825
841
  searchResults = [];
@@ -855,6 +871,7 @@ describe('FindFilesByPattern.findFiles', () => {
855
871
 
856
872
  fileSearchService = makeFileSearchService(async () => searchResults);
857
873
 
874
+ container.bind(ILogger).to(MockLogger);
858
875
  container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
859
876
  container.bind(FileService).toConstantValue(mockFileService);
860
877
  container.bind(PreferenceService).toConstantValue(mockPreferenceService);
@@ -951,6 +968,19 @@ describe('FindFilesByPattern.findFiles', () => {
951
968
  expect(result.error).to.be.undefined;
952
969
  expect(result.files).to.deep.equal(['/external/data/x.ts']);
953
970
  });
971
+
972
+ describe('on Windows', () => {
973
+ // The tool promises the returned paths can be passed back to the file tools, so an external
974
+ // hit must be rendered as a native path and not as the URI-style `/c:/...`.
975
+ it('returns native paths for an allow-listed external searchRoot', async () => {
976
+ OS.backend.isWindows = true;
977
+ allowedExternal = ['C:\\external\\data'];
978
+ searchResults = ['file:///c%3A/external/data/x.ts'];
979
+ const result = JSON.parse(await call({ pattern: '**/*.ts', searchRoot: 'C:\\external\\data' }));
980
+ expect(result.error).to.be.undefined;
981
+ expect(result.files).to.deep.equal(['C:\\external\\data\\x.ts']);
982
+ });
983
+ });
954
984
  });
955
985
 
956
986
  describe('WorkspaceFunctionScope gitignore caching', () => {
@@ -992,6 +1022,7 @@ describe('WorkspaceFunctionScope gitignore caching', () => {
992
1022
  (path === 'ai-features.workspaceFunctions.considerGitIgnore' ? (true as unknown as T) : defaultValue)
993
1023
  };
994
1024
 
1025
+ container.bind(ILogger).to(MockLogger);
995
1026
  container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
996
1027
  container.bind(FileService).toConstantValue(mockFileService);
997
1028
  container.bind(PreferenceService).toConstantValue(mockPreferenceService);
@@ -1061,6 +1092,7 @@ describe('GetWorkspaceFileList resolves the target directory once', () => {
1061
1092
 
1062
1093
  const mockPreferenceService = { get: <T>(_path: string, def: T) => def };
1063
1094
 
1095
+ container.bind(ILogger).to(MockLogger);
1064
1096
  container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
1065
1097
  container.bind(FileService).toConstantValue(mockFileService);
1066
1098
  container.bind(PreferenceService).toConstantValue(mockPreferenceService);
@@ -1124,6 +1156,7 @@ describe('GetWorkspaceDirectoryStructure preserves empty folders', () => {
1124
1156
  (path === 'ai-features.workspaceFunctions.userExcludes' ? (['node_modules'] as unknown as T) : def)
1125
1157
  };
1126
1158
 
1159
+ container.bind(ILogger).to(MockLogger);
1127
1160
  container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
1128
1161
  container.bind(FileService).toConstantValue(mockFileService);
1129
1162
  container.bind(PreferenceService).toConstantValue(mockPreferenceService);
@@ -1195,6 +1228,7 @@ describe('FileContentFunction external paths', () => {
1195
1228
  onDidChangeTrust: () => ({ dispose: () => { /* noop */ } })
1196
1229
  } as unknown as AiConfigurationService;
1197
1230
 
1231
+ container.bind(ILogger).to(MockLogger);
1198
1232
  container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
1199
1233
  container.bind(FileService).toConstantValue(mockFileService);
1200
1234
  container.bind(PreferenceService).toConstantValue(mockPreferenceService);
@@ -1241,7 +1275,7 @@ describe('FileContentFunction external paths', () => {
1241
1275
  allowedPaths = ['/external/configs'];
1242
1276
  const result = await callTool('/external/configs/../secrets.txt');
1243
1277
  const parsed = JSON.parse(result);
1244
- expect(parsed.error).to.include('Invalid file path');
1278
+ expect(parsed.error).to.include('Invalid path');
1245
1279
  });
1246
1280
 
1247
1281
  it('expands ~ in allow-list entries', async () => {
@@ -1266,7 +1300,7 @@ describe('FileContentFunction external paths', () => {
1266
1300
  allowedPaths = ['/home/test/configs'];
1267
1301
  const result = await callTool('~/configs/../secrets.txt');
1268
1302
  const parsed = JSON.parse(result);
1269
- expect(parsed.error).to.include('Invalid file path');
1303
+ expect(parsed.error).to.include('Invalid path');
1270
1304
  });
1271
1305
 
1272
1306
  it('still allows workspace-relative paths', async () => {
@@ -1301,6 +1335,105 @@ describe('FileContentFunction external paths', () => {
1301
1335
  });
1302
1336
  });
1303
1337
 
1338
+ describe('WorkspaceFunctionScope accessible root contributions', () => {
1339
+ let container: Container;
1340
+ let fileContentFunction: FileContentFunction;
1341
+ let contributedRoots: URI[];
1342
+ let contributionFails: boolean;
1343
+ let rootQueries: number;
1344
+
1345
+ let disableJSDOMInner: () => void;
1346
+ before(() => { disableJSDOMInner = enableJSDOM(); });
1347
+ after(() => { disableJSDOMInner(); });
1348
+
1349
+ beforeEach(() => {
1350
+ container = new Container();
1351
+ container.bind(ILogger).to(MockLogger);
1352
+ contributedRoots = [];
1353
+ contributionFails = false;
1354
+ rootQueries = 0;
1355
+
1356
+ const mockWorkspaceService = {
1357
+ roots: [{ resource: new URI('file:///workspace') }],
1358
+ tryGetRoots: () => [{ resource: new URI('file:///workspace') }],
1359
+ onWorkspaceChanged: () => ({ dispose: () => { } })
1360
+ } as unknown as WorkspaceService;
1361
+
1362
+ const mockFileService = {
1363
+ exists: async () => true,
1364
+ resolve: async (uri: URI) => ({ isFile: true, isDirectory: false, size: 1024, resource: uri }),
1365
+ read: async (uri: URI) => ({ value: `content-of-${uri.path.toString()}` })
1366
+ } as unknown as FileService;
1367
+
1368
+ const contribution: AccessibleRootContribution = {
1369
+ getRoots: async () => {
1370
+ rootQueries++;
1371
+ if (contributionFails) {
1372
+ throw new Error('cannot resolve roots');
1373
+ }
1374
+ return contributedRoots;
1375
+ }
1376
+ };
1377
+
1378
+ container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
1379
+ container.bind(FileService).toConstantValue(mockFileService);
1380
+ container.bind(PreferenceService).toConstantValue({ get: <T>(_path: string, defaultValue: T) => defaultValue });
1381
+ container.bind(MonacoWorkspace).toConstantValue({ getTextDocument: () => undefined } as unknown as MonacoWorkspace);
1382
+ container.bind(AiConfigurationService).toConstantValue(makeTrustAwareReader());
1383
+ container.bind(EnvVariablesServer).toConstantValue(makeEnvVariablesServer());
1384
+ bindRootContributionProvider(container, AccessibleRootContribution);
1385
+ container.bind(AccessibleRootContribution).toConstantValue(contribution);
1386
+ container.bind(WorkspaceFunctionScope).toSelf();
1387
+ container.bind(FileContentFunction).toSelf();
1388
+
1389
+ fileContentFunction = container.get(FileContentFunction);
1390
+ });
1391
+
1392
+ const callTool = (file: string) =>
1393
+ fileContentFunction.getTool().handler(JSON.stringify({ file }), undefined) as Promise<string>;
1394
+
1395
+ it('allows a file under a contributed root although the allow-list is empty', async () => {
1396
+ contributedRoots = [new URI('file:///config/workspace-metadata/uuid/memory')];
1397
+ const result = await callTool('/config/workspace-metadata/uuid/memory/wiki/index.md');
1398
+ expect(result).to.equal('content-of-/config/workspace-metadata/uuid/memory/wiki/index.md');
1399
+ });
1400
+
1401
+ it('rejects a sibling that only shares the contributed root\'s prefix', async () => {
1402
+ contributedRoots = [new URI('file:///config/memory')];
1403
+ const parsed = JSON.parse(await callTool('/config/memory-other/wiki/index.md'));
1404
+ expect(parsed.error).to.include('not allowed');
1405
+ });
1406
+
1407
+ it('matches a contributed root that carries a trailing separator', async () => {
1408
+ contributedRoots = [new URI('file:///config/memory/')];
1409
+ const result = await callTool('/config/memory/wiki/index.md');
1410
+ expect(result).to.equal('content-of-/config/memory/wiki/index.md');
1411
+ });
1412
+
1413
+ it('re-queries the contributions, so a root that moves needs no invalidation', async () => {
1414
+ contributedRoots = [new URI('file:///config/first/memory')];
1415
+ expect(await callTool('/config/first/memory/notes.md')).to.match(/^content-of-/);
1416
+
1417
+ contributedRoots = [new URI('file:///config/second/memory')];
1418
+ expect(JSON.parse(await callTool('/config/first/memory/notes.md')).error).to.include('not allowed');
1419
+ expect(await callTool('/config/second/memory/notes.md')).to.match(/^content-of-/);
1420
+ expect(rootQueries).to.equal(3);
1421
+ });
1422
+
1423
+ it('keeps checking the other sources when a contribution fails', async () => {
1424
+ contributionFails = true;
1425
+ const parsed = JSON.parse(await callTool('/config/memory/wiki/index.md'));
1426
+ expect(parsed.error).to.include('not allowed');
1427
+ // The workspace itself is unaffected by the broken contribution.
1428
+ expect(await callTool('src/index.ts')).to.equal('content-of-/workspace/src/index.ts');
1429
+ });
1430
+
1431
+ it('is not consulted for paths inside the workspace', async () => {
1432
+ expect(await callTool('src/index.ts')).to.equal('content-of-/workspace/src/index.ts');
1433
+ expect(rootQueries).to.equal(0);
1434
+ });
1435
+ });
1436
+
1304
1437
  describe('GetWorkspaceFileList / GetWorkspaceDirectoryStructure with external paths', () => {
1305
1438
  let container: Container;
1306
1439
  let allowedPaths: string[];
@@ -1363,6 +1496,7 @@ describe('GetWorkspaceFileList / GetWorkspaceDirectoryStructure with external pa
1363
1496
  onDidChangeTrust: () => ({ dispose: () => { /* noop */ } })
1364
1497
  } as unknown as AiConfigurationService;
1365
1498
 
1499
+ container.bind(ILogger).to(MockLogger);
1366
1500
  container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
1367
1501
  container.bind(FileService).toConstantValue(mockFileService);
1368
1502
  container.bind(PreferenceService).toConstantValue(mockPreferenceService);
@@ -1427,6 +1561,15 @@ describe('FindFilesByPattern with searchRoot', () => {
1427
1561
  before(() => { disableJSDOMInner = enableJSDOM(); });
1428
1562
  after(() => { disableJSDOMInner(); });
1429
1563
 
1564
+ // External hits are rendered with `Path.fsPath()`, which branches on the backend OS, so the POSIX
1565
+ // fixtures below pin it instead of inheriting the OS the tests happen to run on.
1566
+ let originalIsWindows: boolean;
1567
+ beforeEach(() => {
1568
+ originalIsWindows = OS.backend.isWindows;
1569
+ OS.backend.isWindows = false;
1570
+ });
1571
+ afterEach(() => { OS.backend.isWindows = originalIsWindows; });
1572
+
1430
1573
  beforeEach(() => {
1431
1574
  container = new Container();
1432
1575
  allowedPaths = [];
@@ -1453,6 +1596,7 @@ describe('FindFilesByPattern with searchRoot', () => {
1453
1596
  onDidChangeTrust: () => ({ dispose: () => { /* noop */ } })
1454
1597
  } as unknown as AiConfigurationService;
1455
1598
 
1599
+ container.bind(ILogger).to(MockLogger);
1456
1600
  container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
1457
1601
  container.bind(FileService).toConstantValue(mockFileService);
1458
1602
  container.bind(PreferenceService).toConstantValue(mockPreferenceService);
@@ -1548,6 +1692,7 @@ describe('WorkspaceFunctionScope path-traversal hardening', () => {
1548
1692
  onDidChangeTrust: () => ({ dispose: () => { /* noop */ } })
1549
1693
  } as unknown as AiConfigurationService;
1550
1694
 
1695
+ container.bind(ILogger).to(MockLogger);
1551
1696
  container.bind(WorkspaceService).toConstantValue(mockWorkspaceService);
1552
1697
  container.bind(FileService).toConstantValue(mockFileService);
1553
1698
  container.bind(PreferenceService).toConstantValue(mockPreferenceService);
@@ -1683,18 +1828,16 @@ describe('WorkspaceFunctionScope path-traversal hardening', () => {
1683
1828
  });
1684
1829
  });
1685
1830
 
1686
- // Item 6 — `ensureWithinWorkspace` is the gate used by getFileDiagnostics
1687
- // for relative path inputs. A sibling that merely shares the workspace
1688
- // root's string prefix must not pass.
1831
+ // getFileDiagnostics goes through the same `resolveAccessiblePath` gate as every other tool, so a
1832
+ // sibling that merely shares the workspace root's string prefix must not pass.
1689
1833
  it('FileDiagnosticProvider rejects sibling-prefix path outside the workspace', async () => {
1690
1834
  const diag = container.get(FileDiagnosticProvider);
1691
1835
  const handler = diag.getTool().handler;
1692
- // Workspace root is file:///workspace/project. With a raw string-prefix
1693
- // check the resolved URI file:///workspace/project-other/file.txt
1694
- // would be (incorrectly) admitted.
1836
+ // Workspace root is file:///workspace/project, so file:///workspace/project-other/file.txt is
1837
+ // outside it — and a `..` segment is refused before it can even be resolved.
1695
1838
  const result = await handler(JSON.stringify({ file: '../project-other/file.txt' }), undefined);
1696
1839
  const parsed = JSON.parse(result as string);
1697
- expect(parsed.error).to.include('outside of the workspace');
1840
+ expect(parsed.error).to.include('Invalid path');
1698
1841
  });
1699
1842
  });
1700
1843
 
@@ -1714,6 +1857,7 @@ describe('WorkspaceFunctionScope Multi-Root Tests', () => {
1714
1857
 
1715
1858
  beforeEach(() => {
1716
1859
  container = new Container();
1860
+ container.bind(ILogger).to(MockLogger);
1717
1861
  });
1718
1862
 
1719
1863
  describe('getRootMapping', () => {
@@ -2035,6 +2179,13 @@ describe('WorkspaceFunctionScope Multi-Root Tests', () => {
2035
2179
  const result = workspaceScope.resolveRelativePath('app/src/index.ts');
2036
2180
  expect(result.toString()).to.equal('file:///workspace/a/app/src/index.ts');
2037
2181
  });
2182
+
2183
+ // The forms the external file change notice names files by: a root name for the mapped root, a uri for the other.
2184
+ it('resolves a uri for the unmapped root', async () => {
2185
+ workspaceScope = createScope(['file:///workspace/a/app', 'file:///workspace/b/app']);
2186
+ const unmapped = 'file:///workspace/b/app/src/index.ts';
2187
+ expect((await workspaceScope.resolveAccessiblePath(unmapped)).toString()).to.equal(unmapped);
2188
+ });
2038
2189
  });
2039
2190
  });
2040
2191
 
@@ -2068,6 +2219,7 @@ describe('WorkspaceFunctionScope Multi-Root Tests', () => {
2068
2219
  onWorkspaceChanged: () => ({ dispose: () => { } })
2069
2220
  } as unknown as WorkspaceService;
2070
2221
 
2222
+ container2.bind(ILogger).to(MockLogger);
2071
2223
  container2.bind(WorkspaceService).toConstantValue(mockWorkspaceServiceB);
2072
2224
  container2.bind(FileService).toConstantValue({} as FileService);
2073
2225
  container2.bind(PreferenceService).toConstantValue({ get: () => false });
@@ -2189,5 +2341,6 @@ describe('WorkspaceFunctionScope Multi-Root Tests', () => {
2189
2341
  expect(resolved.toString()).to.equal(fileUri.toString());
2190
2342
  }
2191
2343
  });
2344
+
2192
2345
  });
2193
2346
  });