@codingame/monaco-vscode-chat-service-override 28.4.0 → 29.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 (339) hide show
  1. package/index.js +18 -12
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +300 -0
  4. package/vscode/src/vs/platform/agentHost/common/agentService.js +31 -0
  5. package/vscode/src/vs/platform/agentHost/common/agentService.service.d.ts +84 -0
  6. package/vscode/src/vs/platform/agentHost/common/state/protocol/action-origin.generated.d.ts +16 -0
  7. package/vscode/src/vs/platform/agentHost/common/state/protocol/actions.d.ts +488 -0
  8. package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.d.ts +424 -0
  9. package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.d.ts +50 -0
  10. package/vscode/src/vs/platform/agentHost/common/state/protocol/messages.d.ts +202 -0
  11. package/vscode/src/vs/platform/agentHost/common/state/protocol/notifications.d.ts +114 -0
  12. package/vscode/src/vs/platform/agentHost/common/state/protocol/state.d.ts +723 -0
  13. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +33 -0
  14. package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.d.ts +40 -0
  15. package/vscode/src/vs/platform/agentHost/common/state/sessionState.d.ts +22 -0
  16. package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +13 -0
  17. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  18. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +2 -2
  19. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +29 -15
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +3 -3
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -4
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +76 -10
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +11 -11
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.d.ts +1 -1
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +162 -4
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +167 -4
  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.d.ts +1 -1
  38. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +52 -20
  39. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  40. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
  41. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +13 -13
  42. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +19 -19
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.d.ts +82 -0
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +195 -0
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.d.ts +5 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +97 -88
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +3 -3
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +4 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +5 -3
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +78 -35
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +7 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +174 -170
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +7 -4
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +12 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +118 -52
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +7 -7
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.d.ts +5 -1
  59. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +13 -2
  60. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +0 -3
  62. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +5 -10
  63. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +9 -10
  65. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +23 -25
  66. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +341 -196
  67. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +79 -7
  68. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  69. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  70. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.d.ts +5 -4
  71. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +22 -10
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +2 -2
  74. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +4 -0
  75. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +15 -14
  76. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +85 -5
  77. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +668 -214
  78. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.d.ts +10 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.js +18 -0
  80. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +306 -39
  81. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +84 -4
  82. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +651 -81
  83. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +2 -1
  84. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +6 -2
  85. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +31 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +9 -20
  87. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +11 -1
  88. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +7 -142
  89. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.d.ts +43 -0
  90. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.js +63 -0
  91. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +11 -0
  92. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +44 -0
  93. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +25 -1
  94. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +297 -123
  95. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +153 -31
  96. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +17 -1
  97. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +111 -171
  98. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.d.ts +1 -3
  99. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +5 -30
  100. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +277 -186
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.d.ts +4 -2
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +31 -23
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCollapsible.d.ts +3 -7
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCollapsible.js +4 -16
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.d.ts +18 -2
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +112 -17
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +3 -3
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +16 -27
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.d.ts +1 -1
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +41 -19
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.d.ts +7 -1
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +35 -23
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.d.ts +1 -8
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +8 -51
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.d.ts +1 -0
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +13 -8
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.d.ts +1 -1
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +29 -36
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowLayout.js +14 -7
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.d.ts +5 -1
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +79 -26
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.d.ts +19 -0
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +125 -0
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +11 -4
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +113 -82
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.d.ts +18 -7
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +54 -15
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.d.ts +8 -3
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +103 -28
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.d.ts +2 -0
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +48 -37
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.d.ts +28 -2
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +62 -20
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +21 -37
  137. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  138. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +2 -1
  139. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
  140. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +4 -3
  141. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +1 -1
  142. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  143. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +1 -0
  144. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +17 -4
  145. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +5 -5
  146. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +4 -1
  147. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +43 -5
  148. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  149. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.d.ts +59 -0
  150. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +194 -0
  151. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +9 -10
  152. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +13 -13
  153. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.d.ts +2 -1
  154. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +8 -4
  155. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  156. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +11 -0
  157. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +81 -50
  158. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
  159. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
  160. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +32 -32
  161. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  162. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
  163. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +23 -18
  164. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  165. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.d.ts +2 -2
  166. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +9 -7
  167. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -26
  168. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +0 -2
  169. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +19 -27
  170. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +2 -4
  171. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +105 -172
  172. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
  173. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +80 -65
  174. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
  175. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +56 -27
  176. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
  178. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.d.ts +16 -0
  179. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +70 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
  181. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.d.ts +20 -0
  182. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +40 -0
  183. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.d.ts +31 -0
  184. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +53 -0
  185. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +33 -2
  186. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +21 -2
  187. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +362 -18
  188. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +15 -4
  189. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +90 -43
  190. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +35 -0
  191. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +146 -0
  192. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  193. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +26 -26
  194. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
  195. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  196. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  197. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +10 -9
  198. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  199. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  200. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  201. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.d.ts +1 -1
  202. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +33 -5
  203. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +3 -0
  204. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +200 -55
  205. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +7 -0
  206. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +90 -45
  207. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.d.ts +4 -2
  208. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +21 -10
  209. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +22 -16
  210. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.d.ts +4 -2
  211. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +28 -13
  212. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  213. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +9 -9
  214. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +6 -6
  215. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +20 -16
  216. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +68 -5
  217. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  218. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  219. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +1 -1
  220. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +1 -0
  221. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +57 -20
  222. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  223. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +21 -5
  224. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +171 -57
  225. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +7 -5
  226. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +206 -35
  227. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +4 -3
  228. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +7 -7
  229. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +7 -1
  230. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +11 -3
  231. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +44 -22
  232. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +450 -301
  233. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +23 -0
  234. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +165 -0
  235. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +34 -20
  236. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +209 -144
  237. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.d.ts +20 -0
  238. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +205 -0
  239. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +17 -17
  240. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.d.ts +33 -0
  241. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.js +47 -0
  242. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalSkill.d.ts +30 -0
  243. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
  244. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
  245. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  246. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +1 -1
  247. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +191 -159
  248. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +6 -7
  249. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +210 -233
  250. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +19 -26
  251. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +183 -193
  252. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.d.ts +24 -0
  253. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.js +75 -0
  254. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  255. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +8 -5
  256. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +8 -0
  257. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +97 -35
  258. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  259. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatHistoryService.d.ts +16 -0
  260. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatHistoryService.js +67 -0
  261. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +2 -2
  262. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +62 -23
  263. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  264. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  265. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  266. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  267. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  268. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +8 -8
  269. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  270. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
  271. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +2 -2
  272. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +3 -1
  273. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +23 -9
  274. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +1 -1
  275. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +2 -2
  276. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +3 -1
  277. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +50 -9
  278. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +3 -1
  279. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +21 -7
  280. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +20 -1
  281. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +124 -1
  282. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +20 -5
  283. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +5 -0
  284. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +10 -7
  285. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +2 -1
  286. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +46 -31
  287. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.d.ts +18 -1
  288. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +74 -37
  289. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
  290. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  291. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +1 -0
  292. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +24 -14
  293. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
  294. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +1 -1
  295. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +3 -2
  296. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +1 -1
  297. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +2 -0
  298. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +5 -1
  299. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  300. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  301. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  302. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  303. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +1 -2
  304. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +66 -64
  305. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +1 -0
  306. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +1 -0
  307. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +5 -2
  308. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +32 -2
  309. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +390 -114
  310. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +14 -0
  311. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +21 -11
  312. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +70 -51
  313. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +61 -51
  314. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +94 -76
  315. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  316. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +19 -1
  317. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +112 -21
  318. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.d.ts +0 -53
  319. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.js +0 -219
  320. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.d.ts +0 -89
  321. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.js +0 -251
  322. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.d.ts +0 -123
  323. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.js +0 -278
  324. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.d.ts +0 -76
  325. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.js +0 -299
  326. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.d.ts +0 -67
  327. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.js +0 -263
  328. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.d.ts +0 -85
  329. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.js +0 -397
  330. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.d.ts +0 -56
  331. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js +0 -26
  332. package/vscode/src/vs/workbench/contrib/chat/browser/sessionResourceMatching.d.ts +0 -5
  333. package/vscode/src/vs/workbench/contrib/chat/browser/sessionResourceMatching.js +0 -30
  334. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.d.ts +0 -40
  335. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.js +0 -28
  336. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.d.ts +0 -190
  337. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.js +0 -11
  338. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +0 -16
  339. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +0 -20
@@ -15,6 +15,9 @@ import { defaultButtonStyles, defaultInputBoxStyles } from '@codingame/monaco-vs
15
15
  import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
16
16
  import { McpConnectionState, McpServerInstallState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
17
17
  import { IMcpService, IMcpWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
18
+ import { IMcpRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpRegistryTypes.service';
19
+ import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
20
+ import { isContributionDisabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/enablement';
18
21
  import { McpCommandIds } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpCommandIds';
19
22
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
20
23
  import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
@@ -23,23 +26,41 @@ import { InputBox } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui
23
26
  import { IContextViewService, IContextMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service';
24
27
  import { CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
25
28
  import { Delayer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
26
- import { Separator } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
29
+ import { Action, Separator } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
27
30
  import { getContextMenuActions } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/browser/mcpServerActions';
28
31
  import { LocalMcpServerScope } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/mcp/common/mcpWorkbenchManagementService';
29
- import { workspaceIcon, userIcon, extensionIcon } from './aiCustomizationIcons.js';
32
+ import { IAgentPluginService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginService.service';
33
+ import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
34
+ import { mcpServerIcon, workspaceIcon, userIcon, pluginIcon, extensionIcon, builtinIcon } from './aiCustomizationIcons.js';
35
+ import { formatDisplayName } from './aiCustomizationListWidget.js';
36
+ import { getDefaultHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
30
37
  import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
31
38
  import { IAICustomizationWorkspaceService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.service';
39
+ import { CustomizationHarness } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/customizationHarnessService';
40
+ import { ICustomizationHarnessService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/customizationHarnessService.service';
41
+ import { CUSTOMIZATION_GROUP_HEADER_HEIGHT, CUSTOMIZATION_GROUP_HEADER_HEIGHT_WITH_SEPARATOR, CustomizationGroupHeaderRenderer } from './customizationGroupHeaderRenderer.js';
42
+ import { AgentPluginItemKind } from '../agentPluginEditor/agentPluginItems.js';
32
43
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
44
+ import { truncateToFirstLine } from './aiCustomizationListWidgetUtils.js';
33
45
 
34
46
  registerCss(aiCustomizationManagement);
35
47
  const $ = $$1;
36
48
  const MCP_ITEM_HEIGHT = 36;
37
- const MCP_GROUP_HEADER_HEIGHT = 36;
38
- const MCP_GROUP_HEADER_HEIGHT_WITH_SEPARATOR = 40;
49
+ const PLUGIN_COLLECTION_PREFIX = "plugin.";
50
+ const COPILOT_EXTENSION_IDS = ["github.copilot", "github.copilot-chat"];
51
+ function isCopilotExtension(id) {
52
+ return ( COPILOT_EXTENSION_IDS.some(copilotId => ExtensionIdentifier.equals(id, copilotId)));
53
+ }
54
+ function getPluginUriFromCollectionId(collectionId) {
55
+ return collectionId?.startsWith(PLUGIN_COLLECTION_PREFIX) ? collectionId.slice(PLUGIN_COLLECTION_PREFIX.length) : undefined;
56
+ }
39
57
  class McpServerItemDelegate {
40
58
  getHeight(element) {
41
59
  if (element.type === "group-header") {
42
- return element.isFirst ? MCP_GROUP_HEADER_HEIGHT : MCP_GROUP_HEADER_HEIGHT_WITH_SEPARATOR;
60
+ return element.isFirst ? CUSTOMIZATION_GROUP_HEADER_HEIGHT : CUSTOMIZATION_GROUP_HEADER_HEIGHT_WITH_SEPARATOR;
61
+ }
62
+ if (element.type === "server-item" && element.server.gallery && !element.server.local) {
63
+ return 62;
43
64
  }
44
65
  return MCP_ITEM_HEIGHT;
45
66
  }
@@ -54,104 +75,104 @@ class McpServerItemDelegate {
54
75
  return server.gallery && !server.local ? "mcpGalleryItem" : "mcpServerItem";
55
76
  }
56
77
  }
57
- class McpGroupHeaderRenderer {
58
- constructor(hoverService) {
59
- this.hoverService = hoverService;
60
- this.templateId = "mcpGroupHeader";
61
- }
62
- renderTemplate(container) {
63
- const disposables = ( new DisposableStore());
64
- const elementDisposables = ( new DisposableStore());
65
- container.classList.add("ai-customization-group-header");
66
- const chevron = append(container, $(".group-chevron"));
67
- const icon = append(container, $(".group-icon"));
68
- const labelGroup = append(container, $(".group-label-group"));
69
- const label = append(labelGroup, $(".group-label"));
70
- const infoIcon = append(labelGroup, $(".group-info"));
71
- infoIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.info));
72
- const count = append(container, $(".group-count"));
73
- return {
74
- container,
75
- chevron,
76
- icon,
77
- label,
78
- count,
79
- infoIcon,
80
- disposables,
81
- elementDisposables
82
- };
83
- }
84
- renderElement(element, _index, templateData) {
85
- templateData.elementDisposables.clear();
86
- templateData.chevron.className = "group-chevron";
87
- templateData.chevron.classList.add(
88
- ...ThemeIcon.asClassNameArray(element.collapsed ? Codicon.chevronRight : Codicon.chevronDown)
89
- );
90
- templateData.icon.className = "group-icon";
91
- templateData.icon.classList.add(...ThemeIcon.asClassNameArray(element.icon));
92
- templateData.label.textContent = element.label;
93
- templateData.count.textContent = `${element.count}`;
94
- templateData.elementDisposables.add(this.hoverService.setupDelayedHover(templateData.infoIcon, () => ({
95
- content: element.description,
96
- appearance: {
97
- compact: true,
98
- skipFadeInAnimation: true
99
- }
100
- })));
101
- templateData.container.classList.toggle("collapsed", element.collapsed);
102
- templateData.container.classList.toggle("has-previous-group", !element.isFirst);
103
- }
104
- disposeTemplate(templateData) {
105
- templateData.elementDisposables.dispose();
106
- templateData.disposables.dispose();
107
- }
108
- }
109
78
  let McpServerItemRenderer = class McpServerItemRenderer {
110
- constructor(mcpService, workspaceService) {
79
+ constructor(
80
+ mcpService,
81
+ workspaceService,
82
+ agentPluginService,
83
+ harnessService,
84
+ hoverService
85
+ ) {
111
86
  this.mcpService = mcpService;
112
87
  this.workspaceService = workspaceService;
88
+ this.agentPluginService = agentPluginService;
89
+ this.harnessService = harnessService;
90
+ this.hoverService = hoverService;
113
91
  this.templateId = "mcpServerItem";
114
92
  }
115
93
  renderTemplate(container) {
116
94
  container.classList.add("mcp-server-item");
95
+ const typeIcon = append(container, $(".mcp-server-icon"));
96
+ typeIcon.classList.add(...ThemeIcon.asClassNameArray(mcpServerIcon));
117
97
  const details = append(container, $(".mcp-server-details"));
118
- const name = append(details, $(".mcp-server-name"));
98
+ const nameRow = append(details, $(".mcp-server-name-row"));
99
+ const name = append(nameRow, $(".mcp-server-name"));
100
+ const bridgedBadge = append(nameRow, $(".inline-badge.mcp-bridged-badge"));
101
+ bridgedBadge.textContent = ( localize(5394, "Bridged"));
119
102
  const description = append(details, $(".mcp-server-description"));
120
103
  const status = append(container, $(".mcp-server-status"));
121
104
  return {
122
105
  container,
106
+ typeIcon,
123
107
  name,
124
108
  description,
125
109
  status,
110
+ bridgedBadge,
126
111
  disposables: ( new DisposableStore())
127
112
  };
128
113
  }
129
114
  renderElement(element, index, templateData) {
130
115
  templateData.disposables.clear();
116
+ templateData.disposables.add(autorun(reader => {
117
+ const activeId = this.harnessService.activeHarness.read(reader);
118
+ templateData.bridgedBadge.style.display = activeId !== CustomizationHarness.VSCode ? "" : "none";
119
+ }));
120
+ templateData.disposables.add(this.hoverService.setupManagedHover(
121
+ getDefaultHoverDelegate("mouse"),
122
+ templateData.bridgedBadge,
123
+ ( localize(
124
+ 5395,
125
+ "This server is managed by VS Code and forwarded to all compatible agent sessions."
126
+ ))
127
+ ));
131
128
  if (element.type === "builtin-item") {
132
129
  templateData.container.classList.add("builtin");
133
- templateData.name.textContent = element.label;
130
+ templateData.name.textContent = formatDisplayName(element.label);
134
131
  if (element.description) {
135
- templateData.description.textContent = element.description;
132
+ templateData.description.textContent = truncateToFirstLine(element.description);
136
133
  templateData.description.style.display = "";
137
134
  } else {
138
135
  templateData.description.style.display = "none";
139
136
  }
140
137
  templateData.status.style.display = "none";
138
+ const pluginUriStr = getPluginUriFromCollectionId(element.collectionId);
139
+ if (pluginUriStr) {
140
+ templateData.disposables.add(this.hoverService.setupDelayedHover(templateData.container, () => {
141
+ const plugin = this.agentPluginService.plugins.get().find(p => ( p.uri.toString()) === pluginUriStr);
142
+ if (plugin) {
143
+ return {
144
+ content: `${element.label}\n${( localize(5396, "Plugin: {0}", plugin.label))}`,
145
+ appearance: {
146
+ compact: true,
147
+ skipFadeInAnimation: true
148
+ }
149
+ };
150
+ }
151
+ return {
152
+ content: element.label,
153
+ appearance: {
154
+ compact: true,
155
+ skipFadeInAnimation: true
156
+ }
157
+ };
158
+ }));
159
+ }
141
160
  return;
142
161
  }
143
162
  templateData.container.classList.remove("builtin");
144
- templateData.name.textContent = element.server.label;
163
+ templateData.name.textContent = formatDisplayName(element.server.label);
145
164
  if (element.server.description) {
146
- templateData.description.textContent = element.server.description;
165
+ templateData.description.textContent = truncateToFirstLine(element.server.description);
147
166
  templateData.description.style.display = "";
148
167
  } else {
149
168
  templateData.description.style.display = "none";
150
169
  }
151
170
  const server = this.mcpService.servers.get().find(s => s.definition.id === element.server.id);
152
171
  templateData.disposables.add(autorun(reader => {
172
+ const disabled = server ? isContributionDisabled(server.enablement.read(reader)) : false;
153
173
  const connectionState = server?.connectionState.read(reader);
154
- this.updateStatus(templateData.status, connectionState?.state);
174
+ templateData.container.classList.toggle("disabled", disabled);
175
+ this.updateStatus(templateData.status, disabled ? "disabled" : connectionState?.state);
155
176
  }));
156
177
  }
157
178
  updateStatus(statusElement, state) {
@@ -161,22 +182,27 @@ let McpServerItemRenderer = class McpServerItemRenderer {
161
182
  return;
162
183
  }
163
184
  statusElement.style.display = "";
185
+ if (state === "disabled") {
186
+ statusElement.textContent = ( localize(5397, "Disabled"));
187
+ statusElement.classList.add("disabled");
188
+ return;
189
+ }
164
190
  switch (state) {
165
191
  case McpConnectionState.Kind.Running:
166
- statusElement.textContent = ( localize(5320, "Running"));
192
+ statusElement.textContent = ( localize(5398, "Running"));
167
193
  statusElement.classList.add("running");
168
194
  break;
169
195
  case McpConnectionState.Kind.Starting:
170
- statusElement.textContent = ( localize(5321, "Starting"));
196
+ statusElement.textContent = ( localize(5399, "Starting"));
171
197
  statusElement.classList.add("starting");
172
198
  break;
173
199
  case McpConnectionState.Kind.Error:
174
- statusElement.textContent = ( localize(5322, "Error"));
200
+ statusElement.textContent = ( localize(5400, "Error"));
175
201
  statusElement.classList.add("error");
176
202
  break;
177
203
  case McpConnectionState.Kind.Stopped:
178
204
  default:
179
- statusElement.textContent = ( localize(5323, "Stopped"));
205
+ statusElement.textContent = ( localize(5401, "Stopped"));
180
206
  statusElement.classList.add("stopped");
181
207
  break;
182
208
  }
@@ -185,20 +211,23 @@ let McpServerItemRenderer = class McpServerItemRenderer {
185
211
  templateData.disposables.dispose();
186
212
  }
187
213
  };
188
- McpServerItemRenderer = ( __decorate([( __param(0, IMcpService)), ( __param(1, IAICustomizationWorkspaceService))], McpServerItemRenderer));
214
+ McpServerItemRenderer = ( __decorate([( __param(0, IMcpService)), ( __param(1, IAICustomizationWorkspaceService)), ( __param(2, IAgentPluginService)), ( __param(3, ICustomizationHarnessService)), ( __param(4, IHoverService))], McpServerItemRenderer));
189
215
  class McpGalleryItemRenderer {
190
216
  constructor(mcpWorkbenchService) {
191
217
  this.mcpWorkbenchService = mcpWorkbenchService;
192
218
  this.templateId = "mcpGalleryItem";
193
219
  }
194
220
  renderTemplate(container) {
195
- container.classList.add("mcp-server-item", "mcp-gallery-item");
196
- const details = append(container, $(".mcp-server-details"));
197
- const nameRow = append(details, $(".mcp-gallery-name-row"));
198
- const name = append(nameRow, $(".mcp-server-name"));
199
- const publisher = append(nameRow, $(".mcp-gallery-publisher"));
200
- const description = append(details, $(".mcp-server-description"));
201
- const actionContainer = append(container, $(".mcp-gallery-action"));
221
+ container.classList.add("mcp-server-item", "mcp-gallery-item", "extension-list-item");
222
+ const details = append(container, $(".details"));
223
+ const headerContainer = append(details, $(".header-container"));
224
+ const header = append(headerContainer, $(".header"));
225
+ const name = append(header, $("span.name"));
226
+ const description = append(details, $(".description.ellipsis"));
227
+ const footer = append(details, $(".footer"));
228
+ const publisherContainer = append(footer, $(".publisher-container"));
229
+ const publisher = append(publisherContainer, $("span.publisher-name"));
230
+ const actionContainer = append(footer, $(".mcp-gallery-action"));
202
231
  const installButton = ( new Button(actionContainer, {
203
232
  ...defaultButtonStyles,
204
233
  supportIcons: true
@@ -225,7 +254,7 @@ class McpGalleryItemRenderer {
225
254
  templateData.elementDisposables.add(templateData.installButton.onDidClick(async () => {
226
255
  const canInstall = this.mcpWorkbenchService.canInstall(element.server);
227
256
  if (canInstall === true) {
228
- templateData.installButton.label = ( localize(5324, "Installing..."));
257
+ templateData.installButton.label = ( localize(5402, "Installing..."));
229
258
  templateData.installButton.enabled = false;
230
259
  await this.mcpWorkbenchService.install(element.server);
231
260
  }
@@ -239,15 +268,15 @@ class McpGalleryItemRenderer {
239
268
  updateInstallButton(button, server) {
240
269
  switch (server.installState) {
241
270
  case McpServerInstallState.Installed:
242
- button.label = ( localize(5325, "Installed"));
271
+ button.label = ( localize(5403, "Installed"));
243
272
  button.enabled = false;
244
273
  break;
245
274
  case McpServerInstallState.Installing:
246
- button.label = ( localize(5324, "Installing..."));
275
+ button.label = ( localize(5402, "Installing..."));
247
276
  button.enabled = false;
248
277
  break;
249
278
  default:
250
- button.label = ( localize(5326, "Install"));
279
+ button.label = ( localize(5404, "Install"));
251
280
  button.enabled = true;
252
281
  break;
253
282
  }
@@ -262,28 +291,41 @@ let McpListWidget = class McpListWidget extends Disposable {
262
291
  instantiationService,
263
292
  mcpWorkbenchService,
264
293
  mcpService,
294
+ mcpRegistry,
265
295
  commandService,
266
296
  openerService,
267
297
  contextViewService,
268
298
  contextMenuService,
269
- hoverService
299
+ hoverService,
300
+ agentPluginService,
301
+ dialogService
270
302
  ) {
271
303
  super();
272
304
  this.instantiationService = instantiationService;
273
305
  this.mcpWorkbenchService = mcpWorkbenchService;
274
306
  this.mcpService = mcpService;
307
+ this.mcpRegistry = mcpRegistry;
275
308
  this.commandService = commandService;
276
309
  this.openerService = openerService;
277
310
  this.contextViewService = contextViewService;
278
311
  this.contextMenuService = contextMenuService;
279
312
  this.hoverService = hoverService;
313
+ this.agentPluginService = agentPluginService;
314
+ this.dialogService = dialogService;
280
315
  this._onDidSelectServer = this._register(( new Emitter()));
281
316
  this.onDidSelectServer = this._onDidSelectServer.event;
317
+ this._onDidChangeItemCount = this._register(( new Emitter()));
318
+ this.onDidChangeItemCount = this._onDidChangeItemCount.event;
319
+ this._onDidRequestShowPlugin = this._register(( new Emitter()));
320
+ this.onDidRequestShowPlugin = this._onDidRequestShowPlugin.event;
282
321
  this.filteredServers = [];
322
+ this.filteredBuiltinCount = 0;
283
323
  this.displayEntries = [];
284
324
  this.galleryServers = [];
285
325
  this.searchQuery = "";
286
326
  this.browseMode = false;
327
+ this.lastHeight = 0;
328
+ this.lastWidth = 0;
287
329
  this.collapsedGroups = ( new Set());
288
330
  this.delayedFilter = ( new Delayer(200));
289
331
  this.delayedGallerySearch = ( new Delayer(400));
@@ -299,7 +341,7 @@ let McpListWidget = class McpListWidget extends Disposable {
299
341
  this.searchAndButtonContainer = append(this.element, $(".list-search-and-button-container"));
300
342
  const searchContainer = append(this.searchAndButtonContainer, $(".list-search-container"));
301
343
  this.searchInput = this._register(( new InputBox(searchContainer, this.contextViewService, {
302
- placeholder: ( localize(5327, "Type to search...")),
344
+ placeholder: ( localize(5405, "Type to search...")),
303
345
  inputBoxStyles: defaultInputBoxStyles
304
346
  })));
305
347
  this._register(this.searchInput.onDidChange(() => {
@@ -317,29 +359,34 @@ let McpListWidget = class McpListWidget extends Disposable {
317
359
  secondary: true,
318
360
  supportIcons: true
319
361
  })));
320
- this.browseButton.label = `$(${Codicon.library.id}) ${( localize(5328, "Browse Marketplace"))}`;
362
+ this.browseButton.label = `$(${Codicon.library.id}) ${( localize(5406, "Browse Marketplace"))}`;
321
363
  this.browseButton.element.classList.add("list-add-button");
322
364
  this._register(this.browseButton.onDidClick(() => {
323
365
  this.toggleBrowseMode(!this.browseMode);
324
366
  }));
325
- const addButtonContainer = append(buttonContainer, $(".list-add-button-container"));
326
- this.addButton = this._register(( new Button(addButtonContainer, {
367
+ this.addButton = this._register(( new Button(buttonContainer, {
327
368
  ...defaultButtonStyles,
328
- supportIcons: true
369
+ secondary: true,
370
+ supportIcons: true,
371
+ title: ( localize(5407, "Add Server")),
372
+ ariaLabel: ( localize(5407, "Add Server"))
329
373
  })));
330
- this.addButton.label = `$(${Codicon.add.id}) ${( localize(5329, "Add Server"))}`;
331
- this.addButton.element.classList.add("list-add-button");
374
+ this.addButton.label = `$(${Codicon.add.id})`;
375
+ this.addButton.element.classList.add("list-icon-button");
376
+ this._register(
377
+ this.hoverService.setupManagedHover(getDefaultHoverDelegate("element"), this.addButton.element, ( localize(5408, "Add Server")))
378
+ );
332
379
  this._register(this.addButton.onDidClick(() => {
333
380
  this.commandService.executeCommand(McpCommandIds.AddConfiguration);
334
381
  }));
335
382
  this.backLink = append(this.element, $(".mcp-back-link"));
336
383
  this.backLink.setAttribute("role", "button");
337
384
  this.backLink.tabIndex = 0;
338
- this.backLink.setAttribute("aria-label", ( localize(5330, "Back to installed servers")));
385
+ this.backLink.setAttribute("aria-label", ( localize(5409, "Back to installed servers")));
339
386
  const backIcon = append(this.backLink, $("span"));
340
387
  backIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.arrowLeft));
341
388
  const backText = append(this.backLink, $("span"));
342
- backText.textContent = ( localize(5331, "Back to installed servers"));
389
+ backText.textContent = ( localize(5410, "Back to installed servers"));
343
390
  this._register(addDisposableListener(this.backLink, "click", () => {
344
391
  this.toggleBrowseMode(false);
345
392
  }));
@@ -351,19 +398,20 @@ let McpListWidget = class McpListWidget extends Disposable {
351
398
  }));
352
399
  this.backLink.style.display = "none";
353
400
  this.emptyContainer = append(this.element, $(".mcp-empty-state"));
354
- const emptyIcon = append(this.emptyContainer, $(".empty-icon"));
401
+ const emptyHeader = append(this.emptyContainer, $(".empty-state-header"));
402
+ const emptyIcon = append(emptyHeader, $(".empty-icon"));
355
403
  emptyIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.server));
356
- this.emptyText = append(this.emptyContainer, $(".empty-text"));
404
+ this.emptyText = append(emptyHeader, $(".empty-text"));
357
405
  this.emptySubtext = append(this.emptyContainer, $(".empty-subtext"));
358
406
  this.listContainer = append(this.element, $(".mcp-list-container"));
359
407
  this.sectionHeader = append(this.element, $(".section-footer"));
360
408
  this.sectionDescription = append(this.sectionHeader, $("p.section-footer-description"));
361
409
  this.sectionDescription.textContent = ( localize(
362
- 5332,
410
+ 5411,
363
411
  "An open standard that lets AI use external tools and services. MCP servers provide tools for file operations, databases, APIs, and more."
364
412
  ));
365
413
  this.sectionLink = append(this.sectionHeader, $("a.section-footer-link"));
366
- this.sectionLink.textContent = ( localize(5333, "Learn more about MCP servers"));
414
+ this.sectionLink.textContent = ( localize(5412, "Learn more about MCP servers"));
367
415
  this.sectionLink.href = "https://code.visualstudio.com/docs/copilot/chat/mcp-servers";
368
416
  this._register(addDisposableListener(this.sectionLink, "click", e => {
369
417
  e.preventDefault();
@@ -373,7 +421,7 @@ let McpListWidget = class McpListWidget extends Disposable {
373
421
  }
374
422
  }));
375
423
  const delegate = ( new McpServerItemDelegate());
376
- const groupHeaderRenderer = ( new McpGroupHeaderRenderer(this.hoverService));
424
+ const groupHeaderRenderer = ( new CustomizationGroupHeaderRenderer("mcpGroupHeader", this.hoverService));
377
425
  const localRenderer = this.instantiationService.createInstance(McpServerItemRenderer);
378
426
  const galleryRenderer = ( new McpGalleryItemRenderer(this.mcpWorkbenchService));
379
427
  this.list = this._register(this.instantiationService.createInstance(
@@ -390,11 +438,11 @@ let McpListWidget = class McpListWidget extends Disposable {
390
438
  getAriaLabel(element) {
391
439
  if (element.type === "group-header") {
392
440
  return localize(
393
- 5334,
441
+ 5413,
394
442
  "{0}, {1} items, {2}",
395
443
  element.label,
396
444
  element.count,
397
- element.collapsed ? ( localize(5335, "collapsed")) : ( localize(5336, "expanded"))
445
+ element.collapsed ? ( localize(5414, "collapsed")) : ( localize(5415, "expanded"))
398
446
  );
399
447
  }
400
448
  if (element.type === "builtin-item") {
@@ -403,7 +451,7 @@ let McpListWidget = class McpListWidget extends Disposable {
403
451
  return element.server.label;
404
452
  },
405
453
  getWidgetAriaLabel() {
406
- return localize(5337, "MCP Servers");
454
+ return localize(5416, "MCP Servers");
407
455
  }
408
456
  },
409
457
  openOnSingleClick: true,
@@ -455,9 +503,9 @@ let McpListWidget = class McpListWidget extends Disposable {
455
503
  this.searchInput.value = "";
456
504
  this.searchQuery = "";
457
505
  this.backLink.style.display = browse ? "" : "none";
458
- this.addButton.element.parentElement.style.display = browse ? "none" : "";
506
+ this.addButton.element.style.display = browse ? "none" : "";
459
507
  this.browseButton.element.parentElement.style.display = browse ? "none" : "";
460
- this.searchInput.setPlaceHolder(browse ? ( localize(5338, "Search MCP marketplace...")) : ( localize(5327, "Type to search...")));
508
+ this.searchInput.setPlaceHolder(browse ? ( localize(5417, "Search MCP marketplace...")) : ( localize(5405, "Type to search...")));
461
509
  if (browse) {
462
510
  void this.queryGallery();
463
511
  } else {
@@ -465,13 +513,16 @@ let McpListWidget = class McpListWidget extends Disposable {
465
513
  this.galleryServers = [];
466
514
  this.filterServers();
467
515
  }
516
+ if (this.lastHeight > 0) {
517
+ this.layout(this.lastHeight, this.lastWidth);
518
+ }
468
519
  }
469
520
  async queryGallery() {
470
521
  this.galleryCts?.dispose(true);
471
522
  const cts = this.galleryCts = ( new CancellationTokenSource());
472
523
  this.emptyContainer.style.display = "flex";
473
524
  this.listContainer.style.display = "none";
474
- this.emptyText.textContent = ( localize(5339, "Loading marketplace..."));
525
+ this.emptyText.textContent = ( localize(5418, "Loading marketplace..."));
475
526
  this.emptySubtext.textContent = "";
476
527
  try {
477
528
  const pager = await this.mcpWorkbenchService.queryGallery({
@@ -487,8 +538,8 @@ let McpListWidget = class McpListWidget extends Disposable {
487
538
  this.galleryServers = [];
488
539
  this.emptyContainer.style.display = "flex";
489
540
  this.listContainer.style.display = "none";
490
- this.emptyText.textContent = ( localize(5340, "Unable to load marketplace"));
491
- this.emptySubtext.textContent = ( localize(5341, "Check your connection and try again"));
541
+ this.emptyText.textContent = ( localize(5419, "Unable to load marketplace"));
542
+ this.emptySubtext.textContent = ( localize(5420, "Check your connection and try again"));
492
543
  }
493
544
  }
494
545
  }
@@ -497,10 +548,10 @@ let McpListWidget = class McpListWidget extends Disposable {
497
548
  this.emptyContainer.style.display = "flex";
498
549
  this.listContainer.style.display = "none";
499
550
  if (this.searchQuery.trim()) {
500
- this.emptyText.textContent = ( localize(5342, "No servers match '{0}'", this.searchQuery));
501
- this.emptySubtext.textContent = ( localize(5343, "Try a different search term"));
551
+ this.emptyText.textContent = ( localize(5421, "No servers match '{0}'", this.searchQuery));
552
+ this.emptySubtext.textContent = ( localize(5422, "Try a different search term"));
502
553
  } else {
503
- this.emptyText.textContent = ( localize(5344, "No MCP servers available"));
554
+ this.emptyText.textContent = ( localize(5423, "No MCP servers available"));
504
555
  this.emptySubtext.textContent = "";
505
556
  }
506
557
  } else {
@@ -528,11 +579,11 @@ let McpListWidget = class McpListWidget extends Disposable {
528
579
  this.emptyContainer.style.display = "flex";
529
580
  this.listContainer.style.display = "none";
530
581
  if (this.searchQuery.trim()) {
531
- this.emptyText.textContent = ( localize(5345, "No servers match '{0}'", this.searchQuery));
532
- this.emptySubtext.textContent = ( localize(5343, "Try a different search term"));
582
+ this.emptyText.textContent = ( localize(5424, "No servers match '{0}'", this.searchQuery));
583
+ this.emptySubtext.textContent = ( localize(5422, "Try a different search term"));
533
584
  } else {
534
- this.emptyText.textContent = ( localize(5346, "No MCP servers configured"));
535
- this.emptySubtext.textContent = ( localize(5347, "Add an MCP server configuration to get started"));
585
+ this.emptyText.textContent = ( localize(5425, "No MCP servers configured"));
586
+ this.emptySubtext.textContent = ( localize(5426, "Add an MCP server configuration to get started"));
536
587
  }
537
588
  } else {
538
589
  this.emptyContainer.style.display = "none";
@@ -540,19 +591,19 @@ let McpListWidget = class McpListWidget extends Disposable {
540
591
  }
541
592
  const groups = [{
542
593
  scope: LocalMcpServerScope.Workspace,
543
- label: ( localize(5348, "Workspace")),
594
+ label: ( localize(5427, "Workspace")),
544
595
  icon: workspaceIcon,
545
596
  description: ( localize(
546
- 5349,
597
+ 5428,
547
598
  "MCP servers configured in your workspace settings, shared with your team via version control."
548
599
  )),
549
600
  servers: []
550
601
  }, {
551
602
  scope: LocalMcpServerScope.User,
552
- label: ( localize(5350, "User")),
603
+ label: ( localize(5429, "User")),
553
604
  icon: userIcon,
554
605
  description: ( localize(
555
- 5351,
606
+ 5430,
556
607
  "MCP servers configured in your user settings. Private to you and available across all projects."
557
608
  )),
558
609
  servers: []
@@ -593,32 +644,108 @@ let McpListWidget = class McpListWidget extends Disposable {
593
644
  }
594
645
  isFirst = false;
595
646
  }
596
- if (builtinServers.length > 0) {
647
+ const collectionSources = ( new Map(( this.mcpRegistry.collections.get().map(c => [c.id, c.source]))));
648
+ const pluginServers = [];
649
+ const extensionServers = [];
650
+ const otherBuiltinServers = [];
651
+ for (const server of builtinServers) {
652
+ const source = collectionSources.get(server.collection.id);
653
+ if (server.collection.id.startsWith(PLUGIN_COLLECTION_PREFIX)) {
654
+ pluginServers.push(server);
655
+ } else if (source instanceof ExtensionIdentifier && !isCopilotExtension(source)) {
656
+ extensionServers.push(server);
657
+ } else {
658
+ otherBuiltinServers.push(server);
659
+ }
660
+ }
661
+ if (pluginServers.length > 0) {
662
+ const collapsed = ( this.collapsedGroups.has("plugin"));
663
+ entries.push({
664
+ type: "group-header",
665
+ id: "mcp-group-plugin",
666
+ scope: "plugin",
667
+ label: ( localize(5431, "Plugins")),
668
+ icon: pluginIcon,
669
+ count: pluginServers.length,
670
+ isFirst,
671
+ description: ( localize(5432, "MCP servers provided by installed plugins.")),
672
+ collapsed
673
+ });
674
+ if (!collapsed) {
675
+ for (const server of pluginServers) {
676
+ entries.push({
677
+ type: "builtin-item",
678
+ id: `builtin-${server.definition.id}`,
679
+ label: server.definition.label,
680
+ description: "",
681
+ collectionId: server.collection.id
682
+ });
683
+ }
684
+ }
685
+ isFirst = false;
686
+ }
687
+ if (extensionServers.length > 0) {
688
+ const collapsed = ( this.collapsedGroups.has("extension"));
689
+ entries.push({
690
+ type: "group-header",
691
+ id: "mcp-group-extension",
692
+ scope: "extension",
693
+ label: ( localize(5433, "Extensions")),
694
+ icon: extensionIcon,
695
+ count: extensionServers.length,
696
+ isFirst,
697
+ description: ( localize(5434, "MCP servers contributed by installed VS Code extensions.")),
698
+ collapsed
699
+ });
700
+ if (!collapsed) {
701
+ for (const server of extensionServers) {
702
+ entries.push({
703
+ type: "builtin-item",
704
+ id: `builtin-${server.definition.id}`,
705
+ label: server.definition.label,
706
+ description: "",
707
+ collectionId: server.collection.id
708
+ });
709
+ }
710
+ }
711
+ isFirst = false;
712
+ }
713
+ if (otherBuiltinServers.length > 0) {
597
714
  const collapsed = ( this.collapsedGroups.has("builtin"));
598
715
  entries.push({
599
716
  type: "group-header",
600
717
  id: "mcp-group-builtin",
601
718
  scope: "builtin",
602
- label: ( localize(5352, "Built-in")),
603
- icon: extensionIcon,
604
- count: builtinServers.length,
719
+ label: ( localize(5435, "Built-in")),
720
+ icon: builtinIcon,
721
+ count: otherBuiltinServers.length,
605
722
  isFirst,
606
- description: ( localize(5353, "MCP servers built into VS Code. These are available automatically.")),
723
+ description: ( localize(5436, "MCP servers built into VS Code. These are available automatically.")),
607
724
  collapsed
608
725
  });
609
726
  if (!collapsed) {
610
- for (const server of builtinServers) {
727
+ for (const server of otherBuiltinServers) {
611
728
  entries.push({
612
729
  type: "builtin-item",
613
730
  id: `builtin-${server.definition.id}`,
614
731
  label: server.definition.label,
615
- description: ""
732
+ description: "",
733
+ collectionId: server.collection.id
616
734
  });
617
735
  }
618
736
  }
737
+ isFirst = false;
619
738
  }
620
739
  this.displayEntries = entries;
621
740
  this.list.splice(0, this.list.length, this.displayEntries);
741
+ this.filteredBuiltinCount = builtinServers.length;
742
+ this._onDidChangeItemCount.fire(this.itemCount);
743
+ }
744
+ get itemCount() {
745
+ return this.filteredServers.length + this.filteredBuiltinCount;
746
+ }
747
+ fireItemCount() {
748
+ this._onDidChangeItemCount.fire(this.itemCount);
622
749
  }
623
750
  toggleGroup(entry) {
624
751
  if (( this.collapsedGroups.has(entry.scope))) {
@@ -629,6 +756,8 @@ let McpListWidget = class McpListWidget extends Disposable {
629
756
  this.filterServers();
630
757
  }
631
758
  layout(height, width) {
759
+ this.lastHeight = height;
760
+ this.lastWidth = width;
632
761
  const sectionFooterHeight = this.sectionHeader.offsetHeight || 0;
633
762
  const searchBarHeight = this.searchAndButtonContainer.offsetHeight || 52;
634
763
  const backLinkHeight = this.browseMode ? (this.backLink.offsetHeight || 28) : 0;
@@ -660,7 +789,52 @@ let McpListWidget = class McpListWidget extends Disposable {
660
789
  }
661
790
  }
662
791
  onContextMenu(e) {
663
- if (!e.element || e.element.type !== "server-item") {
792
+ if (!e.element) {
793
+ return;
794
+ }
795
+ if (e.element.type === "builtin-item") {
796
+ const collectionId = e.element.collectionId;
797
+ const pluginUriStr = getPluginUriFromCollectionId(collectionId);
798
+ if (!pluginUriStr) {
799
+ return;
800
+ }
801
+ const plugin = this.agentPluginService.plugins.get().find(p => ( p.uri.toString()) === pluginUriStr);
802
+ if (!plugin) {
803
+ return;
804
+ }
805
+ const disposables = ( new DisposableStore());
806
+ const showPluginAction = disposables.add(( new Action("mcpServer.showPlugin", ( localize(5437, "Show Plugin")), undefined, true, async () => {
807
+ const item = {
808
+ kind: AgentPluginItemKind.Installed,
809
+ name: plugin.label,
810
+ description: plugin.fromMarketplace?.description ?? "",
811
+ marketplace: plugin.fromMarketplace?.marketplace,
812
+ plugin
813
+ };
814
+ this._onDidRequestShowPlugin.fire(item);
815
+ })));
816
+ const uninstallAction = disposables.add(( new Action("mcpServer.uninstallPlugin", ( localize(5438, "Uninstall Plugin")), undefined, true, async () => {
817
+ const result = await this.dialogService.confirm({
818
+ message: ( localize(5439, "This MCP server is provided by the plugin '{0}'", plugin.label)),
819
+ detail: ( localize(
820
+ 5440,
821
+ "Individual MCP servers from a plugin cannot be removed separately. Would you like to uninstall the entire plugin?"
822
+ )),
823
+ primaryButton: ( localize(5441, "Uninstall Plugin")),
824
+ type: "question"
825
+ });
826
+ if (result.confirmed) {
827
+ plugin.remove();
828
+ }
829
+ })));
830
+ this.contextMenuService.showContextMenu({
831
+ getAnchor: () => e.anchor,
832
+ getActions: () => [showPluginAction, uninstallAction],
833
+ onHide: () => disposables.dispose()
834
+ });
835
+ return;
836
+ }
837
+ if (e.element.type !== "server-item") {
664
838
  return;
665
839
  }
666
840
  const serverEntry = e.element;
@@ -687,6 +861,6 @@ let McpListWidget = class McpListWidget extends Disposable {
687
861
  });
688
862
  }
689
863
  };
690
- McpListWidget = ( __decorate([( __param(0, IInstantiationService)), ( __param(1, IMcpWorkbenchService)), ( __param(2, IMcpService)), ( __param(3, ICommandService)), ( __param(4, IOpenerService)), ( __param(5, IContextViewService)), ( __param(6, IContextMenuService)), ( __param(7, IHoverService))], McpListWidget));
864
+ McpListWidget = ( __decorate([( __param(0, IInstantiationService)), ( __param(1, IMcpWorkbenchService)), ( __param(2, IMcpService)), ( __param(3, IMcpRegistry)), ( __param(4, ICommandService)), ( __param(5, IOpenerService)), ( __param(6, IContextViewService)), ( __param(7, IContextMenuService)), ( __param(8, IHoverService)), ( __param(9, IAgentPluginService)), ( __param(10, IDialogService))], McpListWidget));
691
865
 
692
866
  export { McpListWidget };