@codingame/monaco-vscode-chat-service-override 29.1.0 → 30.0.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 (258) hide show
  1. package/index.js +5 -2
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +37 -39
  4. package/vscode/src/vs/platform/agentHost/common/agentService.js +3 -1
  5. package/vscode/src/vs/platform/agentHost/common/agentService.service.d.ts +11 -1
  6. package/vscode/src/vs/platform/agentHost/common/state/protocol/action-origin.generated.d.ts +4 -4
  7. package/vscode/src/vs/platform/agentHost/common/state/protocol/actions.d.ts +132 -42
  8. package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.d.ts +54 -0
  9. package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.d.ts +15 -0
  10. package/vscode/src/vs/platform/agentHost/common/state/protocol/messages.d.ts +5 -1
  11. package/vscode/src/vs/platform/agentHost/common/state/protocol/state.d.ts +188 -51
  12. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +7 -6
  13. package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.d.ts +1 -1
  14. package/vscode/src/vs/platform/agentHost/common/state/sessionState.d.ts +7 -2
  15. package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.d.ts +6 -0
  16. package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.js +14 -0
  17. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +18 -0
  18. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +13 -0
  19. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  20. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +37 -16
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +10 -8
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +37 -3
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -4
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +6 -6
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +20 -11
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +14 -14
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +18 -13
  36. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  37. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +10 -10
  38. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  39. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +19 -19
  40. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.d.ts +36 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +482 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +8 -8
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +2 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +10 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +43 -10
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +74 -76
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +27 -35
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  59. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.d.ts +5 -8
  60. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +86 -80
  61. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +3 -2
  62. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +38 -4
  63. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +14 -14
  64. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +38 -18
  65. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +427 -167
  66. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +37 -37
  67. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +15 -0
  68. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +108 -37
  69. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +8 -1
  70. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +28 -2
  71. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +2 -0
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +11 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +1 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +3 -20
  75. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +4 -0
  76. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +65 -68
  77. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +2 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +1 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +64 -51
  80. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +288 -195
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +21 -21
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +19 -19
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +21 -21
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +12 -12
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +21 -21
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +28 -28
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.d.ts +1 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +3 -0
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +1 -0
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +5 -2
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +1 -0
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +2 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +10 -3
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +4 -2
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +19 -7
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +3 -2
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +54 -12
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +1 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +9 -8
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +14 -14
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +50 -50
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +3 -1
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +86 -17
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -26
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +12 -12
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +19 -19
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +65 -65
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +24 -16
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +17 -17
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +2 -6
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
  137. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
  138. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
  139. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
  140. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  141. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
  142. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +3 -6
  143. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +54 -39
  144. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +16 -16
  145. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +24 -3
  146. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +72 -14
  147. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  148. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +26 -26
  149. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
  150. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  151. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileContributions.js +181 -0
  152. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +3 -3
  153. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  154. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  155. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  156. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  157. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +8 -6
  158. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +37 -37
  159. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +28 -23
  160. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +6 -6
  161. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +7 -7
  162. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +9 -9
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +6 -6
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.d.ts +12 -0
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.js +62 -0
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.d.ts +1 -10
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +148 -88
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +1 -1
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  172. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +1 -1
  173. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +1 -0
  174. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +16 -9
  175. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  176. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.d.ts +8 -0
  177. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.js +158 -0
  178. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +8 -3
  179. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +155 -76
  180. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +1 -2
  181. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +5 -4
  182. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +5 -1
  183. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +7 -6
  184. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +31 -1
  185. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +228 -1
  186. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +66 -0
  187. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +190 -0
  188. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +25 -3
  189. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +130 -107
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.d.ts +1 -0
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +19 -18
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
  193. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
  194. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  195. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +2 -18
  196. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +169 -266
  197. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +12 -10
  198. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +149 -206
  199. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +3 -3
  200. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +27 -22
  201. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.d.ts +20 -8
  202. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.js +183 -43
  203. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  204. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +1 -1
  205. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +2 -3
  206. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
  207. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +21 -21
  208. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  209. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +11 -11
  210. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  211. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  212. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +11 -11
  213. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +6 -6
  214. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  215. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
  216. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +2 -2
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +3 -1
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -2
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +3 -2
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +1 -0
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +1 -0
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.d.ts +1 -3
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +26 -23
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +4 -9
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +16 -6
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +9 -9
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +150 -50
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +2 -2
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +66 -5
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +239 -48
  248. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +0 -14
  249. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +0 -208
  250. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +0 -22
  251. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +0 -637
  252. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +0 -24
  253. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +0 -384
  254. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.d.ts +0 -33
  255. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.js +0 -47
  256. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalSkill.d.ts +0 -30
  257. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +0 -55
  258. /package/vscode/src/vs/workbench/contrib/chat/{common → browser}/promptSyntax/promptFileContributions.d.ts +0 -0
@@ -1,637 +0,0 @@
1
-
2
- import { assertNever } from '@codingame/monaco-vscode-api/vscode/vs/base/common/assert';
3
- import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
4
- import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
5
- import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
- import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
7
- import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
8
- import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
9
- import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
10
- import { IQuickInputService } from '@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service';
11
- import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
12
- import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
13
- import { ExtensionEditorTab } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions';
14
- import { IExtensionsWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions.service';
15
- import { McpCommandIds } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpCommandIds';
16
- import { IMcpRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpRegistryTypes.service';
17
- import { McpServerEditorTab, McpConnectionState, McpServerCacheState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
18
- import { IMcpService, IMcpWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
19
- import { startServerAndWaitForLiveTools } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypesUtils';
20
- import { ILanguageModelToolsConfirmationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsConfirmationService.service';
21
- import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
22
- import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
23
- import { ConfigureToolSets } from '../tools/toolSetsContribution.js';
24
-
25
- var BucketOrdinal;
26
- (function(BucketOrdinal) {
27
- BucketOrdinal[BucketOrdinal["User"] = 0] = "User";
28
- BucketOrdinal[BucketOrdinal["BuiltIn"] = 1] = "BuiltIn";
29
- BucketOrdinal[BucketOrdinal["Mcp"] = 2] = "Mcp";
30
- BucketOrdinal[BucketOrdinal["Extension"] = 3] = "Extension";
31
- })(BucketOrdinal || (BucketOrdinal = {}));
32
- function isBucketTreeItem(item) {
33
- return item.itemType === "bucket";
34
- }
35
- function isToolSetTreeItem(item) {
36
- return item.itemType === "toolset";
37
- }
38
- function isToolTreeItem(item) {
39
- return item.itemType === "tool";
40
- }
41
- function isCallbackTreeItem(item) {
42
- return item.itemType === "callback";
43
- }
44
- function mapIconToTreeItem(icon, useDefaultToolIcon = false) {
45
- if (!icon) {
46
- if (useDefaultToolIcon) {
47
- return {
48
- iconClass: ThemeIcon.asClassName(Codicon.tools)
49
- };
50
- }
51
- return {};
52
- }
53
- if (ThemeIcon.isThemeIcon(icon)) {
54
- return {
55
- iconClass: ThemeIcon.asClassName(icon)
56
- };
57
- } else {
58
- return {
59
- iconPath: icon
60
- };
61
- }
62
- }
63
- function createToolTreeItemFromData(tool, checked) {
64
- const iconProps = mapIconToTreeItem(tool.icon, true);
65
- return {
66
- itemType: "tool",
67
- tool,
68
- id: tool.id,
69
- label: tool.toolReferenceName ?? tool.displayName,
70
- description: tool.userDescription ?? tool.modelDescription,
71
- checked,
72
- ...iconProps
73
- };
74
- }
75
- function createToolSetTreeItem(toolset, checked, editorService) {
76
- const iconProps = mapIconToTreeItem(toolset.icon);
77
- const buttons = [];
78
- if (toolset.source.type === "user") {
79
- const resource = toolset.source.file;
80
- buttons.push({
81
- iconClass: ThemeIcon.asClassName(Codicon.edit),
82
- tooltip: ( localize(5023, "Edit Tool Set")),
83
- action: () => editorService.openEditor({
84
- resource
85
- })
86
- });
87
- }
88
- return {
89
- itemType: "toolset",
90
- toolset,
91
- buttons,
92
- id: toolset.id,
93
- label: toolset.referenceName,
94
- description: toolset.description,
95
- checked,
96
- children: undefined,
97
- collapsed: true,
98
- ...iconProps
99
- };
100
- }
101
- async function showToolsPicker(accessor, placeHolder, source, description, getToolsEntries, model, token) {
102
- const quickPickService = accessor.get(IQuickInputService);
103
- const mcpService = accessor.get(IMcpService);
104
- const mcpRegistry = accessor.get(IMcpRegistry);
105
- const commandService = accessor.get(ICommandService);
106
- const extensionsWorkbenchService = accessor.get(IExtensionsWorkbenchService);
107
- const editorService = accessor.get(IEditorService);
108
- const mcpWorkbenchService = accessor.get(IMcpWorkbenchService);
109
- const toolsService = accessor.get(ILanguageModelToolsService);
110
- const confirmationService = accessor.get(ILanguageModelToolsConfirmationService);
111
- const telemetryService = accessor.get(ITelemetryService);
112
- const mcpServerByTool = ( new Map());
113
- for (const server of mcpService.servers.get()) {
114
- for (const tool of server.tools.get()) {
115
- mcpServerByTool.set(tool.id, server);
116
- }
117
- }
118
- function computeItems(previousToolsEntries) {
119
- let toolsEntries = getToolsEntries ? ( new Map(( [...getToolsEntries()].map(([k, enabled]) => [k.id, enabled])))) : undefined;
120
- if (!toolsEntries) {
121
- const defaultEntries = ( new Map());
122
- for (const tool of toolsService.getTools(model)) {
123
- if (tool.canBeReferencedInPrompt) {
124
- defaultEntries.set(tool, false);
125
- }
126
- }
127
- for (const toolSet of toolsService.getToolSetsForModel(model)) {
128
- defaultEntries.set(toolSet, false);
129
- }
130
- toolsEntries = defaultEntries;
131
- }
132
- previousToolsEntries?.forEach((value, key) => {
133
- toolsEntries.set(key.id, value);
134
- });
135
- const treeItems = [];
136
- const bucketMap = ( new Map());
137
- const getKey = source => {
138
- switch (source.type) {
139
- case "mcp":
140
- case "extension":
141
- return ToolDataSource.toKey(source);
142
- case "internal":
143
- return ( BucketOrdinal.BuiltIn.toString());
144
- case "user":
145
- return ( BucketOrdinal.User.toString());
146
- case "external":
147
- throw ( new Error("should not be reachable"));
148
- default:
149
- assertNever();
150
- }
151
- };
152
- const mcpServers = ( new Map(( mcpService.servers.get().map(s => [s.definition.id, {
153
- server: s,
154
- seen: false
155
- }]))));
156
- const createBucket = (source, key) => {
157
- if (source.type === "mcp") {
158
- const mcpServerEntry = mcpServers.get(source.definitionId);
159
- if (!mcpServerEntry) {
160
- return undefined;
161
- }
162
- mcpServerEntry.seen = true;
163
- const mcpServer = mcpServerEntry.server;
164
- const buttons = [];
165
- const collection = mcpRegistry.collections.get().find(c => c.id === mcpServer.collection.id);
166
- if (collection?.source) {
167
- buttons.push({
168
- iconClass: ThemeIcon.asClassName(Codicon.settingsGear),
169
- tooltip: ( localize(5024, "Configure {0}", collection.label)),
170
- action: () => collection.source ? collection.source instanceof ExtensionIdentifier ? extensionsWorkbenchService.open(collection.source.value, {
171
- tab: ExtensionEditorTab.Features,
172
- feature: "mcp"
173
- }) : mcpWorkbenchService.open(collection.source, {
174
- tab: McpServerEditorTab.Configuration
175
- }) : undefined
176
- });
177
- } else if (collection?.presentation?.origin) {
178
- buttons.push({
179
- iconClass: ThemeIcon.asClassName(Codicon.settingsGear),
180
- tooltip: ( localize(5024, "Configure {0}", collection.label)),
181
- action: () => editorService.openEditor({
182
- resource: collection.presentation.origin
183
- })
184
- });
185
- }
186
- if (mcpServer.connectionState.get().state === McpConnectionState.Kind.Error) {
187
- buttons.push({
188
- iconClass: ThemeIcon.asClassName(Codicon.warning),
189
- tooltip: ( localize(5025, "Show Output")),
190
- action: () => mcpServer.showOutput()
191
- });
192
- }
193
- const cacheState = mcpServer.cacheState.get();
194
- const children = [];
195
- let collapsed = true;
196
- if (cacheState === McpServerCacheState.Unknown || cacheState === McpServerCacheState.Outdated) {
197
- collapsed = false;
198
- children.push({
199
- itemType: "callback",
200
- iconClass: ThemeIcon.asClassName(Codicon.sync),
201
- label: ( localize(5026, "Update Tools")),
202
- pickable: false,
203
- run: () => {
204
- treePicker.busy = true;
205
- (async () => {
206
- const ok = await startServerAndWaitForLiveTools(mcpServer, {
207
- promptType: "all-untrusted"
208
- });
209
- if (!ok) {
210
- mcpServer.showOutput();
211
- treePicker.hide();
212
- return;
213
- }
214
- treePicker.busy = false;
215
- computeItems(collectResults());
216
- })();
217
- return false;
218
- }
219
- });
220
- }
221
- const bucket = {
222
- itemType: "bucket",
223
- ordinal: BucketOrdinal.Mcp,
224
- id: key,
225
- label: source.label,
226
- checked: undefined,
227
- collapsed,
228
- children,
229
- buttons,
230
- sortOrder: 2
231
- };
232
- const iconPath = mcpServer.serverMetadata.get()?.icons.getUrl(22);
233
- if (iconPath) {
234
- bucket.iconPath = iconPath;
235
- } else {
236
- bucket.iconClass = ThemeIcon.asClassName(Codicon.mcp);
237
- }
238
- return bucket;
239
- } else if (source.type === "extension") {
240
- return {
241
- itemType: "bucket",
242
- ordinal: BucketOrdinal.Extension,
243
- id: key,
244
- label: source.label,
245
- checked: undefined,
246
- children: [],
247
- buttons: [],
248
- collapsed: true,
249
- iconClass: ThemeIcon.asClassName(Codicon.extensions),
250
- sortOrder: 3
251
- };
252
- } else if (source.type === "internal") {
253
- return {
254
- itemType: "bucket",
255
- ordinal: BucketOrdinal.BuiltIn,
256
- id: key,
257
- label: ( localize(5027, "Built-In")),
258
- checked: undefined,
259
- children: [],
260
- buttons: [],
261
- collapsed: false,
262
- sortOrder: 1
263
- };
264
- } else {
265
- return {
266
- itemType: "bucket",
267
- ordinal: BucketOrdinal.User,
268
- id: key,
269
- label: ( localize(5028, "User Defined Tool Sets")),
270
- checked: undefined,
271
- children: [],
272
- buttons: [],
273
- collapsed: true,
274
- sortOrder: 4
275
- };
276
- }
277
- };
278
- const getBucket = source => {
279
- const key = getKey(source);
280
- let bucket = bucketMap.get(key);
281
- if (!bucket) {
282
- bucket = createBucket(source, key);
283
- if (bucket) {
284
- bucketMap.set(key, bucket);
285
- }
286
- }
287
- return bucket;
288
- };
289
- for (const toolSet of toolsService.getToolSetsForModel(model)) {
290
- if (!( toolsEntries.has(toolSet.id))) {
291
- continue;
292
- }
293
- const bucket = getBucket(toolSet.source);
294
- if (!bucket) {
295
- continue;
296
- }
297
- const toolSetChecked = toolsEntries.get(toolSet.id) === true;
298
- if (toolSet.source.type === "mcp") {
299
- bucket.toolset = toolSet;
300
- if (toolSetChecked) {
301
- bucket.checked = toolSetChecked;
302
- }
303
- } else {
304
- const treeItem = createToolSetTreeItem(toolSet, toolSetChecked, editorService);
305
- bucket.children.push(treeItem);
306
- const children = [];
307
- for (const tool of toolSet.getTools()) {
308
- const toolChecked = toolSetChecked || toolsEntries.get(tool.id) === true;
309
- const toolTreeItem = createToolTreeItemFromData(tool, toolChecked);
310
- children.push(toolTreeItem);
311
- }
312
- if (children.length > 0) {
313
- treeItem.children = children;
314
- }
315
- }
316
- }
317
- for (const tool of toolsService.getAllToolsIncludingDisabled()) {
318
- if (!tool.canBeReferencedInPrompt || !( toolsEntries.has(tool.id))) {
319
- continue;
320
- }
321
- const bucket = getBucket(tool.source);
322
- if (!bucket) {
323
- continue;
324
- }
325
- const toolChecked = bucket.checked === true || toolsEntries.get(tool.id) === true;
326
- const toolTreeItem = createToolTreeItemFromData(tool, toolChecked);
327
- bucket.children.push(toolTreeItem);
328
- }
329
- for (const {
330
- server,
331
- seen
332
- } of ( mcpServers.values())) {
333
- const cacheState = server.cacheState.get();
334
- if (!seen && (cacheState === McpServerCacheState.Unknown || cacheState === McpServerCacheState.Outdated)) {
335
- getBucket({
336
- type: "mcp",
337
- definitionId: server.definition.id,
338
- label: server.definition.label,
339
- instructions: "",
340
- serverLabel: "",
341
- collectionId: server.collection.id
342
- });
343
- }
344
- }
345
- const sortedBuckets = Array.from(( bucketMap.values())).sort((a, b) => {
346
- if (a.sortOrder !== b.sortOrder) {
347
- return a.sortOrder - b.sortOrder;
348
- }
349
- return a.label.localeCompare(b.label);
350
- });
351
- for (const bucket of sortedBuckets) {
352
- treeItems.push(bucket);
353
- bucket.children.sort((a, b) => a.label.localeCompare(b.label));
354
- for (const child of bucket.children) {
355
- if (isToolSetTreeItem(child) && child.children) {
356
- child.children.sort((a, b) => a.label.localeCompare(b.label));
357
- }
358
- }
359
- }
360
- for (const bucket of sortedBuckets) {
361
- const isMcpBucket = bucket.ordinal === BucketOrdinal.Mcp;
362
- const addConfirmationButton = toolItem => {
363
- if (!confirmationService.toolCanManageConfirmation(toolItem.tool)) {
364
- return;
365
- }
366
- const tool = toolItem.tool;
367
- const manageTools = isMcpBucket ? bucket.children.flatMap(
368
- c => isToolTreeItem(c) ? [c.tool] : isToolSetTreeItem(c) && c.children ? ( c.children.filter(isToolTreeItem).map(gc => gc.tool)) : []
369
- ) : [tool];
370
- const buttons = toolItem.buttons ? [...toolItem.buttons] : [];
371
- buttons.push({
372
- iconClass: ThemeIcon.asClassName(Codicon.pass),
373
- tooltip: ( localize(5029, "Manage Approval")),
374
- keepOpen: true,
375
- action: () => confirmationService.manageConfirmationPreferences(manageTools, {
376
- focusToolId: tool.id
377
- })
378
- });
379
- toolItem.buttons = buttons;
380
- };
381
- for (const child of bucket.children) {
382
- if (isToolTreeItem(child)) {
383
- addConfirmationButton(child);
384
- } else if (isToolSetTreeItem(child) && child.children) {
385
- for (const grandchild of child.children) {
386
- if (isToolTreeItem(grandchild)) {
387
- addConfirmationButton(grandchild);
388
- }
389
- }
390
- }
391
- }
392
- }
393
- if (treeItems.length === 0) {
394
- treePicker.placeholder = ( localize(5030, "Add tools to chat"));
395
- } else {
396
- treePicker.placeholder = placeHolder;
397
- }
398
- treePicker.setItemTree(treeItems);
399
- }
400
- const store = ( new DisposableStore());
401
- const treePicker = store.add(quickPickService.createQuickTree());
402
- treePicker.placeholder = placeHolder;
403
- treePicker.description = description;
404
- treePicker.matchOnDescription = true;
405
- treePicker.matchOnLabel = true;
406
- treePicker.sortByLabel = false;
407
- computeItems();
408
- store.add(treePicker.onDidTriggerItemButton(e => {
409
- if (e.button && typeof e.button.action === "function") {
410
- const actionableButton = e.button;
411
- actionableButton.action();
412
- store.dispose();
413
- }
414
- }));
415
- const collectResults = () => {
416
- const result = ( new Map());
417
- const traverse = items => {
418
- for (const item of items) {
419
- if (isBucketTreeItem(item)) {
420
- if (item.toolset) {
421
- const allChecked = item.checked === true;
422
- result.set(item.toolset, allChecked);
423
- }
424
- traverse(item.children);
425
- } else if (isToolSetTreeItem(item)) {
426
- result.set(item.toolset, item.checked === true);
427
- if (item.children) {
428
- traverse(item.children);
429
- }
430
- } else if (isToolTreeItem(item)) {
431
- result.set(item.tool, item.checked || result.get(item.tool) === true);
432
- }
433
- }
434
- };
435
- traverse(treePicker.itemTree);
436
- return result;
437
- };
438
- let didAccept = false;
439
- const didAcceptFinalItem = store.add(( new Emitter()));
440
- store.add(treePicker.onDidAccept(() => {
441
- const activeItems = treePicker.activeItems;
442
- const callbackItem = activeItems.find(isCallbackTreeItem);
443
- if (!callbackItem) {
444
- didAccept = true;
445
- treePicker.hide();
446
- return;
447
- }
448
- const ret = callbackItem.run();
449
- if (ret !== false) {
450
- didAcceptFinalItem.fire();
451
- }
452
- }));
453
- const addMcpServerButton = {
454
- iconClass: ThemeIcon.asClassName(Codicon.mcp),
455
- tooltip: ( localize(5031, "Add MCP Server..."))
456
- };
457
- const installExtension = {
458
- iconClass: ThemeIcon.asClassName(Codicon.extensions),
459
- tooltip: ( localize(5032, "Install Extension..."))
460
- };
461
- const configureToolSets = {
462
- iconClass: ThemeIcon.asClassName(Codicon.gear),
463
- tooltip: ( localize(5033, "Configure Tool Sets..."))
464
- };
465
- treePicker.title = ( localize(5034, "Configure Tools"));
466
- treePicker.buttons = [addMcpServerButton, installExtension, configureToolSets];
467
- store.add(treePicker.onDidTriggerButton(button => {
468
- if (button === addMcpServerButton) {
469
- commandService.executeCommand(McpCommandIds.AddConfiguration);
470
- } else if (button === installExtension) {
471
- extensionsWorkbenchService.openSearch("@tag:language-model-tools");
472
- } else if (button === configureToolSets) {
473
- commandService.executeCommand(ConfigureToolSets.ID);
474
- }
475
- treePicker.hide();
476
- }));
477
- if (token) {
478
- store.add(token.onCancellationRequested(() => {
479
- treePicker.hide();
480
- }));
481
- }
482
- const initialState = collectResults();
483
- treePicker.show();
484
- await Promise.race([
485
- Event.toPromise(Event.any(treePicker.onDidHide, didAcceptFinalItem.event), store)
486
- ]);
487
- sendDidChangeEvent(source, telemetryService, initialState, collectResults(), mcpRegistry);
488
- store.dispose();
489
- return didAccept ? collectResults() : undefined;
490
- }
491
- function categorizeTool(item, mcpRegistry) {
492
- const source = item.source;
493
- switch (source.type) {
494
- case "internal":
495
- return {
496
- category: "builtin",
497
- name: item.id
498
- };
499
- case "extension":
500
- return {
501
- category: "extension",
502
- name: item.id,
503
- extensionId: source.extensionId.value
504
- };
505
- case "mcp":
506
- {
507
- const collection = mcpRegistry.collections.get().find(c => c.id === source.collectionId);
508
- if (collection?.source instanceof ExtensionIdentifier) {
509
- return {
510
- category: "extension-mcp",
511
- extensionId: collection.source.value
512
- };
513
- }
514
- return {
515
- category: "user-mcp"
516
- };
517
- }
518
- case "user":
519
- return {
520
- category: "user-toolset"
521
- };
522
- case "external":
523
- return {
524
- category: "user-toolset"
525
- };
526
- default:
527
- assertNever();
528
- }
529
- }
530
- function computeToolToggleSummary(initialState, finalState, mcpRegistry) {
531
- const summary = {
532
- builtinEnabled: 0,
533
- builtinDisabled: 0,
534
- extensionEnabled: 0,
535
- extensionDisabled: 0,
536
- extensionMcpEnabled: 0,
537
- extensionMcpDisabled: 0,
538
- userMcpEnabled: 0,
539
- userMcpDisabled: 0,
540
- userToolsetEnabled: 0,
541
- userToolsetDisabled: 0,
542
- details: ""
543
- };
544
- const detailItems = [];
545
- for (const [item, finalEnabled] of finalState) {
546
- const initialEnabled = initialState.get(item) ?? false;
547
- if (initialEnabled === finalEnabled) {
548
- continue;
549
- }
550
- const categorized = categorizeTool(item, mcpRegistry);
551
- const enabled = finalEnabled;
552
- switch (categorized.category) {
553
- case "builtin":
554
- if (enabled) {
555
- summary.builtinEnabled++;
556
- } else {
557
- summary.builtinDisabled++;
558
- }
559
- detailItems.push({
560
- category: "builtin",
561
- name: categorized.name,
562
- enabled
563
- });
564
- break;
565
- case "extension":
566
- if (enabled) {
567
- summary.extensionEnabled++;
568
- } else {
569
- summary.extensionDisabled++;
570
- }
571
- detailItems.push({
572
- category: "extension",
573
- name: categorized.name,
574
- extensionId: categorized.extensionId,
575
- enabled
576
- });
577
- break;
578
- case "extension-mcp":
579
- if (enabled) {
580
- summary.extensionMcpEnabled++;
581
- } else {
582
- summary.extensionMcpDisabled++;
583
- }
584
- detailItems.push({
585
- category: "extension-mcp",
586
- extensionId: categorized.extensionId,
587
- enabled
588
- });
589
- break;
590
- case "user-mcp":
591
- if (enabled) {
592
- summary.userMcpEnabled++;
593
- } else {
594
- summary.userMcpDisabled++;
595
- }
596
- detailItems.push({
597
- category: "user-mcp",
598
- enabled
599
- });
600
- break;
601
- case "user-toolset":
602
- if (enabled) {
603
- summary.userToolsetEnabled++;
604
- } else {
605
- summary.userToolsetDisabled++;
606
- }
607
- detailItems.push({
608
- category: "user-toolset",
609
- enabled
610
- });
611
- break;
612
- }
613
- }
614
- summary.details = JSON.stringify(detailItems);
615
- return summary;
616
- }
617
- function sendDidChangeEvent(source, telemetryService, initialState, finalState, mcpRegistry) {
618
- const summary = computeToolToggleSummary(initialState, finalState, mcpRegistry);
619
- const changed = summary.builtinEnabled > 0 || summary.builtinDisabled > 0 || summary.extensionEnabled > 0 || summary.extensionDisabled > 0 || summary.extensionMcpEnabled > 0 || summary.extensionMcpDisabled > 0 || summary.userMcpEnabled > 0 || summary.userMcpDisabled > 0 || summary.userToolsetEnabled > 0 || summary.userToolsetDisabled > 0;
620
- telemetryService.publicLog2("chatToolPickerClosed", {
621
- source,
622
- changed,
623
- builtinEnabled: summary.builtinEnabled,
624
- builtinDisabled: summary.builtinDisabled,
625
- extensionEnabled: summary.extensionEnabled,
626
- extensionDisabled: summary.extensionDisabled,
627
- extensionMcpEnabled: summary.extensionMcpEnabled,
628
- extensionMcpDisabled: summary.extensionMcpDisabled,
629
- userMcpEnabled: summary.userMcpEnabled,
630
- userMcpDisabled: summary.userMcpDisabled,
631
- userToolsetEnabled: summary.userToolsetEnabled,
632
- userToolsetDisabled: summary.userToolsetDisabled,
633
- details: summary.details
634
- });
635
- }
636
-
637
- export { showToolsPicker };
@@ -1,24 +0,0 @@
1
- import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
- import { Action2 } from "@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions";
3
- import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
4
- import { ServicesAccessor } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
5
- import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
6
- import { IWorkbenchContribution } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions";
7
- import { IExtensionService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service";
8
- import { ILifecycleService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service";
9
- import { IUserDataProfileService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.service";
10
- import { ILanguageModelToolsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service";
11
- export declare class UserToolSetsContributions extends Disposable implements IWorkbenchContribution {
12
- private readonly _languageModelToolsService;
13
- private readonly _userDataProfileService;
14
- private readonly _fileService;
15
- private readonly _logService;
16
- static readonly ID = "chat.userToolSets";
17
- constructor(extensionService: IExtensionService, lifecycleService: ILifecycleService, _languageModelToolsService: ILanguageModelToolsService, _userDataProfileService: IUserDataProfileService, _fileService: IFileService, _logService: ILogService);
18
- private _initToolSets;
19
- }
20
- export declare class ConfigureToolSets extends Action2 {
21
- static readonly ID = "chat.configureToolSets";
22
- constructor();
23
- run(accessor: ServicesAccessor): Promise<void>;
24
- }