@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
@@ -1,736 +0,0 @@
1
- // *****************************************************************************
2
- // Copyright (C) 2025 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 { nls } from '@theia/core';
18
- import { ConfirmDialog, ReactWidget, codicon } from '@theia/core/lib/browser';
19
- import { inject, injectable, postConstruct } from '@theia/core/shared/inversify';
20
- import {
21
- CustomizedPromptFragment,
22
- PromptFragment,
23
- isCustomizedPromptFragment,
24
- isBasePromptFragment,
25
- PromptService,
26
- BasePromptFragment
27
- } from '@theia/ai-core/lib/common/prompt-service';
28
- import * as React from '@theia/core/shared/react';
29
- import { AgentService } from '@theia/ai-core/lib/common/agent-service';
30
- import { Agent } from '@theia/ai-core/lib/common/agent';
31
- import { CustomizationSource } from '@theia/ai-core/lib/browser/frontend-prompt-customization-service';
32
- import { isChatAgent } from '@theia/ai-chat/';
33
-
34
- /**
35
- * Widget for configuring AI prompt fragments and prompt variant sets.
36
- * Allows users to view, create, edit, and manage various types of prompt
37
- * fragments including their customizations and variants.
38
- */
39
- @injectable()
40
- export class AIPromptFragmentsConfigurationWidget extends ReactWidget {
41
-
42
- static readonly ID = 'ai-prompt-fragments-configuration';
43
- static readonly LABEL = nls.localize('theia/ai/core/promptFragmentsConfiguration/label', 'Prompt Fragments');
44
-
45
- /**
46
- * Stores all available prompt fragments by ID
47
- */
48
- protected promptFragmentMap: Map<string, PromptFragment[]> = new Map<string, PromptFragment[]>();
49
-
50
- /**
51
- * Stores prompt variant sets and their variant IDs
52
- */
53
- protected promptVariantsMap: Map<string, string[]> = new Map<string, string[]>();
54
-
55
- /**
56
- * Currently active prompt fragments
57
- */
58
- protected activePromptFragments: PromptFragment[] = [];
59
-
60
- /**
61
- * Tracks expanded state of prompt fragment sections in the UI
62
- */
63
- protected expandedPromptFragmentIds: Set<string> = new Set();
64
-
65
- /**
66
- * Tracks expanded state of prompt content display
67
- */
68
- protected expandedPromptFragmentTemplates: Set<string> = new Set();
69
-
70
- /**
71
- * Tracks expanded state of prompt variant set sections
72
- */
73
- protected expandedPromptVariantSetIds: Set<string> = new Set();
74
-
75
- /**
76
- * All available agents that may use prompts
77
- */
78
- protected availableAgents: Agent[] = [];
79
-
80
- /**
81
- * Maps prompt variant set IDs to their resolved variant IDs
82
- */
83
- protected effectiveVariantIds: Map<string, string | undefined> = new Map();
84
-
85
- /**
86
- * Maps prompt variant set IDs to their default variant IDs
87
- */
88
- protected defaultVariantIds: Map<string, string | undefined> = new Map();
89
-
90
- /**
91
- * Maps prompt variant set IDs to their user selected variant IDs
92
- */
93
- protected userSelectedVariantIds: Map<string, string | undefined> = new Map();
94
-
95
- @inject(PromptService) protected promptService: PromptService;
96
- @inject(AgentService) protected agentService: AgentService;
97
-
98
- @postConstruct()
99
- protected init(): void {
100
- this.id = AIPromptFragmentsConfigurationWidget.ID;
101
- this.title.label = AIPromptFragmentsConfigurationWidget.LABEL;
102
- this.title.caption = AIPromptFragmentsConfigurationWidget.LABEL;
103
- this.title.closable = true;
104
- this.addClass('ai-configuration-tab-content');
105
- this.loadPromptFragments();
106
- this.loadAgents();
107
-
108
- this.toDispose.pushAll([
109
- this.promptService.onPromptsChange(() => {
110
- this.loadPromptFragments();
111
- }),
112
- this.agentService.onDidChangeAgents(() => {
113
- this.loadAgents();
114
- })
115
- ]);
116
- }
117
-
118
- /**
119
- * Loads all prompt fragments and prompt variant sets from the prompt service.
120
- * Preserves UI expansion states and updates variant information.
121
- */
122
- protected loadPromptFragments(): void {
123
- this.promptFragmentMap = this.promptService.getAllPromptFragments();
124
- this.promptVariantsMap = this.promptService.getPromptVariantSets();
125
- this.activePromptFragments = this.promptService.getActivePromptFragments();
126
-
127
- // Preserve expansion state when reloading
128
- const existingExpandedFragmentIds = new Set(this.expandedPromptFragmentIds);
129
- const existingExpandedPromptVariantIds = new Set(this.expandedPromptVariantSetIds);
130
- const existingExpandedTemplates = new Set(this.expandedPromptFragmentTemplates);
131
-
132
- if (existingExpandedFragmentIds.size > 0) {
133
- // Keep existing expansion state but remove entries for fragments that no longer exist
134
- this.expandedPromptFragmentIds = new Set(
135
- Array.from(existingExpandedFragmentIds).filter(id => this.promptFragmentMap.has(id))
136
- );
137
- }
138
-
139
- if (existingExpandedPromptVariantIds.size === 0) {
140
- // Start with variant sets collapsed by default
141
- this.expandedPromptVariantSetIds = new Set();
142
- } else {
143
- // Keep existing expansion state but remove entries for prompt variant sets that no longer exist
144
- this.expandedPromptVariantSetIds = new Set(
145
- Array.from(existingExpandedPromptVariantIds).filter(id => this.promptVariantsMap.has(id))
146
- );
147
- }
148
-
149
- // For templates, preserve existing expanded states - don't expand by default
150
- this.expandedPromptFragmentTemplates = new Set(
151
- Array.from(existingExpandedTemplates).filter(id => {
152
- const [fragmentId] = id.split('_');
153
- return this.promptFragmentMap.has(fragmentId);
154
- })
155
- );
156
-
157
- // Update variant information (selected/default/effective) for prompt variant sets
158
- for (const promptVariantSetId of this.promptVariantsMap.keys()) {
159
- const effectiveId = this.promptService.getEffectiveVariantId(promptVariantSetId);
160
- const defaultId = this.promptService.getDefaultVariantId(promptVariantSetId);
161
- const selectedId = this.promptService.getSelectedVariantId(promptVariantSetId) ?? defaultId;
162
- this.userSelectedVariantIds.set(promptVariantSetId, selectedId);
163
- this.effectiveVariantIds.set(promptVariantSetId, effectiveId);
164
- this.defaultVariantIds.set(promptVariantSetId, defaultId);
165
- }
166
-
167
- this.update();
168
- }
169
-
170
- /**
171
- * Loads all available agents from the agent service
172
- */
173
- protected loadAgents(): void {
174
- this.availableAgents = this.agentService.getAllAgents();
175
- this.update();
176
- }
177
-
178
- /**
179
- * Finds agents that use a specific prompt variant set
180
- * @param promptVariantSetId ID of the prompt variant set to match
181
- * @returns Array of agents that use the prompt variant set
182
- */
183
- protected getAgentsUsingPromptVariantId(promptVariantSetId: string): Agent[] {
184
- return this.availableAgents.filter((agent: Agent) =>
185
- agent.prompts.find(promptVariantSet => promptVariantSet.id === promptVariantSetId)
186
- );
187
- }
188
-
189
- protected togglePromptVariantSetExpansion = (promptVariantSetId: string): void => {
190
- if (this.expandedPromptVariantSetIds.has(promptVariantSetId)) {
191
- this.expandedPromptVariantSetIds.delete(promptVariantSetId);
192
- } else {
193
- this.expandedPromptVariantSetIds.add(promptVariantSetId);
194
- }
195
- this.update();
196
- };
197
-
198
- protected togglePromptFragmentExpansion = (promptFragmentId: string): void => {
199
- if (this.expandedPromptFragmentIds.has(promptFragmentId)) {
200
- this.expandedPromptFragmentIds.delete(promptFragmentId);
201
- } else {
202
- this.expandedPromptFragmentIds.add(promptFragmentId);
203
- }
204
- this.update();
205
- };
206
-
207
- protected toggleTemplateExpansion = (fragmentKey: string, event: React.MouseEvent): void => {
208
- event.stopPropagation();
209
- if (this.expandedPromptFragmentTemplates.has(fragmentKey)) {
210
- this.expandedPromptFragmentTemplates.delete(fragmentKey);
211
- } else {
212
- this.expandedPromptFragmentTemplates.add(fragmentKey);
213
- }
214
- this.update();
215
- };
216
-
217
- /**
218
- * Call the edit action for the provided customized prompt fragment
219
- * @param promptFragment Fragment to edit
220
- * @param event Mouse event
221
- */
222
- protected editPromptCustomization = (promptFragment: CustomizedPromptFragment, event: React.MouseEvent): void => {
223
- event.stopPropagation();
224
- this.promptService.editCustomization(promptFragment.id, promptFragment.customizationId);
225
- };
226
-
227
- /**
228
- * Determines if a prompt fragment is currently the active one for its ID
229
- * @param promptFragment The prompt fragment to check
230
- * @returns True if this prompt fragment is the active customization
231
- */
232
- protected isActiveCustomization(promptFragment: PromptFragment): boolean {
233
- const activePromptFragment = this.activePromptFragments.find(activePrompt => activePrompt.id === promptFragment.id);
234
- if (!activePromptFragment) {
235
- return false;
236
- }
237
-
238
- if (isCustomizedPromptFragment(activePromptFragment) && isCustomizedPromptFragment(promptFragment)) {
239
- return (
240
- activePromptFragment.id === promptFragment.id &&
241
- activePromptFragment.template === promptFragment.template &&
242
- activePromptFragment.customizationId === promptFragment.customizationId &&
243
- activePromptFragment.priority === promptFragment.priority
244
- );
245
- }
246
-
247
- if (isBasePromptFragment(activePromptFragment) && isBasePromptFragment(promptFragment)) {
248
- return (
249
- activePromptFragment.id === promptFragment.id &&
250
- activePromptFragment.template === promptFragment.template
251
- );
252
- }
253
-
254
- return false;
255
- }
256
-
257
- /**
258
- * Resets a prompt fragment to use a specific customization (with confirmation dialog)
259
- * @param customization customization to reset to
260
- * @param event Mouse event
261
- */
262
- protected resetToPromptFragment = async (customization: PromptFragment, event: React.MouseEvent): Promise<void> => {
263
- event.stopPropagation();
264
-
265
- if (isCustomizedPromptFragment(customization)) {
266
- // Get the customization type to show in the confirmation dialog
267
- const type = await this.promptService.getCustomizationType(customization.id, customization.customizationId);
268
-
269
- const dialog = new ConfirmDialog({
270
- title: nls.localize('theia/ai/core/promptFragmentsConfiguration/resetToCustomizationDialogTitle', 'Reset to Customization'),
271
- msg: nls.localize('theia/ai/core/promptFragmentsConfiguration/resetToCustomizationDialogMsg',
272
- 'Are you sure you want to reset the prompt fragment "{0}" to use the {1} customization? This will remove all higher-priority customizations.',
273
- customization.id, type),
274
- ok: nls.localizeByDefault('Reset'),
275
- cancel: nls.localizeByDefault('Cancel')
276
- });
277
-
278
- const shouldReset = await dialog.open();
279
- if (shouldReset) {
280
- await this.promptService.resetToCustomization(customization.id, customization.customizationId);
281
- }
282
- } else {
283
- const dialog = new ConfirmDialog({
284
- title: nls.localize('theia/ai/core/promptFragmentsConfiguration/resetToBuiltInDialogTitle', 'Reset to Built-in'),
285
- msg: nls.localize('theia/ai/core/promptFragmentsConfiguration/resetToBuiltInDialogMsg',
286
- 'Are you sure you want to reset the prompt fragment "{0}" to its built-in version? This will remove all customizations.', customization.id),
287
- ok: nls.localizeByDefault('Reset'),
288
- cancel: nls.localizeByDefault('Cancel')
289
- });
290
-
291
- const shouldReset = await dialog.open();
292
- if (shouldReset) {
293
- await this.promptService.resetToBuiltIn(customization.id);
294
- }
295
- }
296
- };
297
-
298
- /**
299
- * Creates a new customization for a built-in prompt fragment
300
- * @param promptFragment Built-in prompt fragment to customize
301
- * @param event Mouse event
302
- */
303
- protected createPromptFragmentCustomization = (promptFragment: BasePromptFragment, event: React.MouseEvent): void => {
304
- event.stopPropagation();
305
- this.promptService.createBuiltInCustomization(promptFragment.id);
306
- };
307
-
308
- /**
309
- * Deletes a customization with confirmation dialog
310
- * @param customization Customized prompt fragment to delete
311
- * @param event Mouse event
312
- */
313
- protected deletePromptFragmentCustomization = async (customization: CustomizedPromptFragment, event: React.MouseEvent): Promise<void> => {
314
- event.stopPropagation();
315
-
316
- // First get the customization type and description to show in the confirmation dialog
317
- const type = await this.promptService.getCustomizationType(customization.id, customization.customizationId) || '';
318
- const description = await this.promptService.getCustomizationDescription(customization.id, customization.customizationId) || '';
319
-
320
- const dialog = new ConfirmDialog({
321
- title: nls.localize('theia/ai/core/promptFragmentsConfiguration/removeCustomizationDialogTitle', 'Remove Customization'),
322
- msg: description ?
323
- nls.localize('theia/ai/core/promptFragmentsConfiguration/removeCustomizationWithDescDialogMsg',
324
- 'Are you sure you want to remove the {0} customization for prompt fragment "{1}" ({2})?', type, customization.id, description) :
325
- nls.localize('theia/ai/core/promptFragmentsConfiguration/removeCustomizationDialogMsg',
326
- 'Are you sure you want to remove the {0} customization for prompt fragment "{1}"?', type, customization.id),
327
- ok: nls.localizeByDefault('Remove'),
328
- cancel: nls.localizeByDefault('Cancel')
329
- });
330
-
331
- const shouldDelete = await dialog.open();
332
- if (shouldDelete) {
333
- await this.promptService.removeCustomization(customization.id, customization.customizationId);
334
- }
335
- };
336
-
337
- /**
338
- * Removes all prompt customizations (resets to built-in versions) with confirmation
339
- */
340
- protected removeAllCustomizations = async (): Promise<void> => {
341
- const dialog = new ConfirmDialog({
342
- title: nls.localize('theia/ai/core/promptFragmentsConfiguration/resetAllCustomizationsDialogTitle', 'Reset All Customizations'),
343
- msg: nls.localize('theia/ai/core/promptFragmentsConfiguration/resetAllCustomizationsDialogMsg',
344
- 'Are you sure you want to reset all prompt fragments to their built-in versions? This will remove all customizations.'),
345
- ok: nls.localize('theia/ai/core/promptFragmentsConfiguration/resetAllButton', 'Reset All'),
346
- cancel: nls.localizeByDefault('Cancel')
347
- });
348
-
349
- const shouldReset = await dialog.open();
350
- if (shouldReset) {
351
- this.promptService.resetAllToBuiltIn();
352
- }
353
- };
354
-
355
- /**
356
- * Main render method for the widget
357
- * @returns Complete UI for the configuration widget
358
- */
359
- protected render(): React.ReactNode {
360
- const nonSystemPromptFragments = this.getNonPromptVariantSetFragments();
361
-
362
- return (
363
- <div className='ai-prompt-fragments-configuration'>
364
- <div className="prompt-fragments-header">
365
- <h2>{nls.localize('theia/ai/core/promptFragmentsConfiguration/headerTitle', 'Prompt Fragments')}</h2>
366
- <div className="global-actions">
367
- <button
368
- className="global-action-button"
369
- onClick={this.removeAllCustomizations}
370
- title={nls.localize('theia/ai/core/promptFragmentsConfiguration/resetAllCustomizationsTitle', 'Reset all customizations')}
371
- >
372
- {nls.localize('theia/ai/core/promptFragmentsConfiguration/resetAllPromptFragments',
373
- 'Reset all prompt fragments')} <span className={codicon('clear-all')}></span>
374
- </button>
375
- </div>
376
- </div>
377
-
378
- <div className="prompt-variants-container">
379
- <h3 className="section-header">{nls.localize('theia/ai/core/promptFragmentsConfiguration/promptVariantsHeader', 'Prompt Variant Sets')}</h3>
380
- {Array.from(this.promptVariantsMap.entries()).sort((a, b) => a[0].localeCompare(b[0])).map(([promptVariantSetId, variantIds]) =>
381
- this.renderPromptVariantSet(promptVariantSetId, variantIds)
382
- )}
383
- </div>
384
-
385
- {nonSystemPromptFragments.size > 0 && <div className="prompt-fragments-container">
386
- <h3 className="section-header">{nls.localize('theia/ai/core/promptFragmentsConfiguration/otherPromptFragmentsHeader', 'Other Prompt Fragments')}</h3>
387
- {Array.from(nonSystemPromptFragments.entries()).sort((a, b) => a[0].localeCompare(b[0])).map(([promptFragmentId, fragments]) =>
388
- this.renderPromptFragment(promptFragmentId, fragments)
389
- )}
390
- </div>}
391
-
392
- {this.promptFragmentMap.size === 0 && (
393
- <div className="no-fragments">
394
- <p>{nls.localize('theia/ai/core/promptFragmentsConfiguration/noFragmentsAvailable', 'No prompt fragments available.')}</p>
395
- </div>
396
- )}
397
- </div>
398
- );
399
- }
400
-
401
- /**
402
- * Renders a prompt variant set with its variants
403
- * @param promptVariantSetId ID of the prompt variant set
404
- * @param variantIds Array of variant IDs
405
- * @returns React node for the prompt variant set group
406
- */
407
- protected renderPromptVariantSet(promptVariantSetId: string, variantIds: string[]): React.ReactNode {
408
- const isSectionExpanded = this.expandedPromptVariantSetIds.has(promptVariantSetId);
409
-
410
- // Get selected, effective, and default variant IDs from our class properties
411
- const selectedVariantId = this.userSelectedVariantIds.get(promptVariantSetId);
412
- const effectiveVariantId = this.effectiveVariantIds.get(promptVariantSetId);
413
- const defaultVariantId = this.defaultVariantIds.get(promptVariantSetId);
414
-
415
- // Get variant fragments grouped by ID
416
- const variantGroups = new Map<string, PromptFragment[]>();
417
-
418
- // First, collect all actual fragments for each variant ID
419
- for (const variantId of variantIds) {
420
- if (this.promptFragmentMap.has(variantId)) {
421
- variantGroups.set(variantId, this.promptFragmentMap.get(variantId)!);
422
- }
423
- }
424
-
425
- const relatedAgents = this.getAgentsUsingPromptVariantId(promptVariantSetId);
426
-
427
- // Determine warning/error state
428
- let variantSetMessage: React.ReactNode | undefined = undefined;
429
- if (effectiveVariantId === undefined) {
430
- // Error: effectiveId is undefined, so nothing works
431
- variantSetMessage = (
432
- <div className="prompt-variant-error">
433
- <span className="codicon codicon-error"></span>
434
- {nls.localize('theia/ai/core/promptFragmentsConfiguration/variantSetError',
435
- 'The selected variant does not exist and no default could be found. Please check your configuration.')}
436
- </div>
437
- );
438
- } else {
439
- const needsWarning = selectedVariantId ? effectiveVariantId !== selectedVariantId : effectiveVariantId !== defaultVariantId;
440
- if (needsWarning) {
441
- // Warning: selectedId is set but does not exist, so default is used
442
- variantSetMessage = (
443
- <div className="prompt-variant-warning">
444
- <span className="codicon codicon-warning"></span>
445
- {nls.localize('theia/ai/core/promptFragmentsConfiguration/variantSetWarning',
446
- 'The selected variant does not exist. The default variant is being used instead.')}
447
- </div>
448
- );
449
- }
450
- }
451
-
452
- return (
453
- <div className="prompt-fragment-section" key={`variant-${promptVariantSetId}`}>
454
- <div
455
- className={`prompt-fragment-header ${isSectionExpanded ? 'expanded' : ''}`}
456
- onClick={() => this.togglePromptVariantSetExpansion(promptVariantSetId)}
457
- >
458
- <div className="prompt-fragment-title">
459
- <span className="expansion-icon">{isSectionExpanded ? '▼' : '▶'}</span>
460
- <h2>{promptVariantSetId}</h2>
461
- </div>
462
- {relatedAgents.length > 0 && (
463
- <div className="agent-chips-container">
464
- {relatedAgents.map(agent => (
465
- <span key={agent.id} className="agent-chip"
466
- title={nls.localize('theia/ai/core/promptFragmentsConfiguration/usedByAgentTitle', 'Used by agent: {0}', agent.name)}
467
- onClick={e => e.stopPropagation()}>
468
- <span className={(isChatAgent(agent) && agent.iconClass) ? agent.iconClass : codicon('copilot')}></span>
469
- {agent.name}
470
- </span>
471
- ))}
472
- </div>
473
- )}
474
- </div>
475
- {isSectionExpanded && (
476
- <div className="prompt-fragment-body">
477
- {variantSetMessage}
478
- <div className="prompt-fragment-description">
479
- <p>{nls.localize('theia/ai/core/promptFragmentsConfiguration/variantsOfSystemPrompt', 'Variants of this prompt variant set:')}</p>
480
- </div>
481
- {Array.from(variantGroups.entries()).map(([variantId, fragments]) => {
482
- const isVariantExpanded = this.expandedPromptFragmentIds.has(variantId);
483
-
484
- return (
485
- <div key={variantId} className={`prompt-fragment-section ${selectedVariantId === variantId ? 'selected-variant' : ''}`}>
486
- <div
487
- className={`prompt-fragment-header ${isVariantExpanded ? 'expanded' : ''}`}
488
- onClick={() => this.togglePromptFragmentExpansion(variantId)}
489
- >
490
- <div className="prompt-fragment-title">
491
- <span className="expansion-icon">{isVariantExpanded ? '▼' : '▶'}</span>
492
- <h4>{variantId}</h4>
493
- {defaultVariantId === variantId && (
494
- <span className="badge default-variant"
495
- title={nls.localize('theia/ai/core/promptFragmentsConfiguration/defaultVariantTitle', 'Default variant')}>
496
- {nls.localizeByDefault('Default')}
497
- </span>
498
- )}
499
- {selectedVariantId === variantId && (
500
- <span className="selected-indicator"
501
- title={nls.localize('theia/ai/core/promptFragmentsConfiguration/selectedVariantTitle', 'Selected variant')}>
502
- {nls.localize('theia/ai/core/promptFragmentsConfiguration/selectedVariantLabel', 'Selected')}
503
- </span>
504
- )}
505
- </div>
506
- </div>
507
- {isVariantExpanded && (
508
- <div className='prompt-fragment-body'>
509
- {fragments.map(fragment => this.renderPromptFragmentCustomization(fragment))}
510
- </div>
511
- )}
512
- </div>
513
- );
514
- })}
515
- </div>
516
- )}
517
- </div>
518
- );
519
- }
520
-
521
- /**
522
- * Gets fragments that aren't part of any prompt variant set
523
- * @returns Map of fragment IDs to their customizations
524
- */
525
- protected getNonPromptVariantSetFragments(): Map<string, PromptFragment[]> {
526
- const nonSystemPromptFragments = new Map<string, PromptFragment[]>();
527
- const allVariantIds = new Set<string>();
528
-
529
- // Collect all variant IDs from prompt variant sets
530
- this.promptVariantsMap.forEach((variants, _) => {
531
- variants.forEach(variantId => allVariantIds.add(variantId));
532
- });
533
-
534
- // Add prompt variant set main IDs
535
- this.promptVariantsMap.forEach((_, promptVariantSetId) => {
536
- allVariantIds.add(promptVariantSetId);
537
- });
538
-
539
- // Filter the fragment map to only include non-prompt variant set fragments
540
- this.promptFragmentMap.forEach((fragments, promptFragmentId) => {
541
- if (!allVariantIds.has(promptFragmentId)) {
542
- nonSystemPromptFragments.set(promptFragmentId, fragments);
543
- }
544
- });
545
-
546
- return nonSystemPromptFragments;
547
- }
548
-
549
- /**
550
- * Renders a prompt fragment with all of its customizations
551
- * @param promptFragmentId ID of the prompt fragment
552
- * @param customizations Array of the customizations
553
- * @returns React node for the prompt fragment
554
- */
555
- protected renderPromptFragment(promptFragmentId: string, customizations: PromptFragment[]): React.ReactNode {
556
- const isSectionExpanded = this.expandedPromptFragmentIds.has(promptFragmentId);
557
-
558
- return (
559
- <div className={'prompt-fragment-group'} key={promptFragmentId}>
560
- <div
561
- className={`prompt-fragment-header ${isSectionExpanded ? 'expanded' : ''}`}
562
- onClick={() => this.togglePromptFragmentExpansion(promptFragmentId)}
563
- >
564
- <div className="prompt-fragment-title">
565
- <span className="expansion-icon">{isSectionExpanded ? '▼' : '▶'}</span>
566
- {promptFragmentId}
567
- </div>
568
- </div>
569
- {isSectionExpanded && (
570
- <div className="prompt-fragment-body">
571
- {customizations.map(fragment => this.renderPromptFragmentCustomization(fragment))}
572
- </div>
573
- )}
574
- </div>
575
- );
576
- }
577
-
578
- /**
579
- * Renders a single prompt fragment customization with its controls and content
580
- * @param promptFragment The prompt fragment to render
581
- * @returns React node for the prompt fragment
582
- */
583
- protected renderPromptFragmentCustomization(promptFragment: PromptFragment): React.ReactNode {
584
- const isCustomized = isCustomizedPromptFragment(promptFragment);
585
- const isActive = this.isActiveCustomization(promptFragment);
586
- // Create a unique key for this fragment to track expansion state
587
- const fragmentKey = `${promptFragment.id}_${isCustomized ? promptFragment.customizationId : 'built-in'}`;
588
- const isTemplateExpanded = this.expandedPromptFragmentTemplates.has(fragmentKey);
589
- const hasCustomizedBuiltIn =
590
- this.promptFragmentMap.get(promptFragment.id)?.some(fragment => isCustomizedPromptFragment(fragment) && fragment.priority === CustomizationSource.CUSTOMIZED);
591
-
592
- return (
593
- <div
594
- className={`prompt-customization ${isActive ? 'active-customization' : ''}`}
595
- key={fragmentKey}
596
- >
597
- <div className="prompt-customization-header">
598
- <div className="prompt-customization-title">
599
- <React.Suspense fallback={<div>Loading...</div>}>
600
- <CustomizationTypeBadge promptFragment={promptFragment} promptService={this.promptService} />
601
- </React.Suspense>
602
- {isActive && (
603
- <span className="active-indicator"
604
- title={nls.localize('theia/ai/core/promptFragmentsConfiguration/activeCustomizationTitle', 'Active customization')}>
605
- {nls.localizeByDefault('Active')}
606
- </span>
607
- )}
608
- </div>
609
- <div className="prompt-customization-actions">
610
- {!isCustomized && !hasCustomizedBuiltIn && (
611
- <button
612
- className="template-action-button config-button"
613
- onClick={e => this.createPromptFragmentCustomization(promptFragment, e)}
614
- title={nls.localize('theia/ai/core/promptFragmentsConfiguration/createCustomizationTitle', 'Create Customization')}
615
- >
616
- <span className={codicon('add')}></span>
617
- </button>
618
- )}
619
- {isCustomized && (
620
- <button
621
- className="source-uri-button"
622
- onClick={e => this.editPromptCustomization(promptFragment, e)}
623
- title={nls.localize('theia/ai/core/promptFragmentsConfiguration/editTemplateTitle', 'Edit template')}
624
- >
625
- <span className={codicon('edit')}></span>
626
- </button>
627
- )}
628
- {!isActive && (
629
- <button
630
- className="template-action-button reset-button"
631
- onClick={e => this.resetToPromptFragment(promptFragment, e)}
632
- title={!isCustomized ?
633
- nls.localize('theia/ai/core/promptFragmentsConfiguration/resetToBuiltInTitle', 'Reset to this built-in') :
634
- nls.localize('theia/ai/core/promptFragmentsConfiguration/resetToCustomizationTitle', 'Reset to this customization')}
635
- >
636
- <span className={codicon('discard')}></span>
637
- </button>
638
- )}
639
- {isCustomized && (
640
- <button
641
- className="template-action-button delete-button"
642
- onClick={e => this.deletePromptFragmentCustomization(promptFragment, e)}
643
- title={nls.localize('theia/ai/core/promptFragmentsConfiguration/deleteCustomizationTitle', 'Delete Customization')}
644
- >
645
- <span className={codicon('trash')}></span>
646
- </button>
647
- )}
648
- </div>
649
- </div>
650
-
651
- {isCustomized && (
652
- <React.Suspense fallback={<div>Loading...</div>}>
653
- <DescriptionBadge promptFragment={promptFragment} promptService={this.promptService} />
654
- </React.Suspense>
655
- )}
656
-
657
- <div className="template-content-container">
658
- <div
659
- className="template-toggle-button"
660
- onClick={e => this.toggleTemplateExpansion(fragmentKey, e)}
661
- >
662
- <span className="template-expansion-icon">{isTemplateExpanded ? '▼' : '▶'}</span>
663
- <span>{nls.localize('theia/ai/core/promptFragmentsConfiguration/promptTemplateText', 'Prompt Template Text')}</span>
664
- </div>
665
-
666
- {isTemplateExpanded && (
667
- <div className="template-content">
668
- <pre>{promptFragment.template}</pre>
669
- </div>
670
- )}
671
- </div>
672
- </div>
673
- );
674
- }
675
- }
676
-
677
- /**
678
- * Props for the CustomizationTypeBadge component
679
- */
680
- interface CustomizationTypeBadgeProps {
681
- promptFragment: PromptFragment;
682
- promptService: PromptService;
683
- }
684
-
685
- /**
686
- * Displays a badge indicating the type of a prompt fragment customization (built-in, user, workspace)
687
- */
688
- const CustomizationTypeBadge: React.FC<CustomizationTypeBadgeProps> = ({ promptFragment, promptService }) => {
689
- const [typeLabel, setTypeLabel] = React.useState<string>('unknown');
690
-
691
- React.useEffect(() => {
692
- const fetchCustomizationType = async () => {
693
- if (isCustomizedPromptFragment(promptFragment)) {
694
- const customizationType = await promptService.getCustomizationType(promptFragment.id, promptFragment.customizationId);
695
- setTypeLabel(`${customizationType ?
696
- customizationType + ' ' + nls.localize('theia/ai/core/promptFragmentsConfiguration/customization', 'customization')
697
- : nls.localize('theia/ai/core/promptFragmentsConfiguration/customizationLabel', 'Customization')}`);
698
- } else {
699
- setTypeLabel(nls.localizeByDefault('Built-in'));
700
- }
701
- };
702
-
703
- fetchCustomizationType();
704
- }, [promptFragment, promptService]);
705
-
706
- return <span>{typeLabel}</span>;
707
- };
708
-
709
- /**
710
- * Props for the DescriptionBadge component
711
- */
712
- interface CustomizationDescriptionBadgeProps {
713
- promptFragment: CustomizedPromptFragment;
714
- promptService: PromptService;
715
- }
716
-
717
- /**
718
- * Displays the description of a customized prompt fragment if available
719
- */
720
- const DescriptionBadge: React.FC<CustomizationDescriptionBadgeProps> = ({ promptFragment, promptService }) => {
721
- const [description, setDescription] = React.useState<string>('');
722
-
723
- React.useEffect(() => {
724
- const fetchDescription = async () => {
725
- const customizationDescription = await promptService.getCustomizationDescription(
726
- promptFragment.id,
727
- promptFragment.customizationId
728
- );
729
- setDescription(customizationDescription || '');
730
- };
731
-
732
- fetchDescription();
733
- }, [promptFragment.id, promptFragment.customizationId, promptService]);
734
-
735
- return <span className="prompt-customization-description">{description}</span>;
736
- };