@codingame/monaco-vscode-chat-service-override 34.1.3 → 35.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.
- package/index.js +38 -0
- package/package.json +5 -5
- package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.d.ts +1 -0
- package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.js +40 -0
- package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.d.ts +27 -0
- package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.js +91 -0
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.d.ts +20 -4
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +148 -15
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +1 -0
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +9 -1
- package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.js +57 -3
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +10 -14
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +29 -8
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +109 -2
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +207 -21
- package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.js +362 -37
- package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +698 -91
- package/vscode/src/vs/platform/agentHost/common/agentService.js +46 -3
- package/vscode/src/vs/platform/agentHost/common/customAgents.js +1 -0
- package/vscode/src/vs/platform/agentHost/common/resourceReadLogging.d.ts +1 -0
- package/vscode/src/vs/platform/agentHost/common/resourceReadLogging.js +26 -0
- package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.d.ts +5 -5
- package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.js +17 -17
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +96 -12
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +226 -19
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-annotations/reducer.d.ts +18 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-annotations/reducer.js +89 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.js +10 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-chat/reducer.d.ts +6 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-chat/reducer.js +400 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-session/reducer.js +129 -446
- package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.d.ts +2 -2
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +35 -25
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +7 -1
- package/vscode/src/vs/{workbench/contrib → platform}/browserView/common/browserChatToolReferenceNames.d.ts +4 -0
- package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +1 -1
- package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.js +1 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxCommandRules.d.ts +0 -6
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxCommandRules.js +5 -18
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.d.ts +52 -3
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.js +212 -34
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.js +3 -4
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.js +11 -10
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +13 -6
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.js +6 -1
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoice.contribution.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoice.contribution.js +399 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceSessionsPicker.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceSessionsPicker.js +85 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.d.ts +177 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.js +898 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.js +204 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.d.ts +61 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.js +338 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.js +57 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/feedbackDialog.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/feedbackDialog.js +98 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.js +149 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/onboardingComponent.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/onboardingComponent.js +116 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.d.ts +32 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.js +226 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.js +138 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.js +25 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/transcriptComponent.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/transcriptComponent.js +108 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.js +63 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscripts.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscripts.contribution.js +178 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscriptsView.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscriptsView.js +322 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.js +15 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoiceColors.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoiceColors.js +26 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/voiceTranscriptStore.d.ts +132 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/voiceTranscriptStore.js +237 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +32 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +71 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.js +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +19 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +14 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +66 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +15 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +128 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/reviewEdits.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +58 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +15 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.js +64 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.d.ts +45 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.js +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +25 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.js +143 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.js +7 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.js +52 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.js +163 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +26 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +106 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.d.ts +16 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.js +44 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +70 -59
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +22 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.js +152 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +11 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +9 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +17 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +143 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +107 -126
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +46 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +19 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +244 -190
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +13 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.js +7 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +47 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +2 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +4 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.d.ts +87 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.js +772 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +24 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +3 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +1 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedExtensionToolsDetail.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedExtensionToolsDetail.js +130 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/galleryItemRenderer.d.ts +46 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/galleryItemRenderer.js +94 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +421 -201
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +1426 -97
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +107 -127
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +29 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.js +331 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.d.ts +120 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.js +898 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +581 -336
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.d.ts +123 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.js +567 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +32 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheDiff.js +168 -84
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.d.ts +183 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +897 -251
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheInsights.d.ts +213 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheInsights.js +720 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +22 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +24 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +33 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +354 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +9 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +11 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.d.ts +9 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +55 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +18 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +192 -87
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +37 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.d.ts +40 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +230 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.js +29 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +23 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +35 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +26 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +56 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +109 -68
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.d.ts +38 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +175 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.d.ts +4 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +32 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +183 -84
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +20 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +27 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolSetsCodeLensProvider.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolSetsCodeLensProvider.js +109 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/clientToolSetsContribution.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/clientToolSetsContribution.js +117 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +39 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +40 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +169 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.d.ts +125 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.js +399 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/ttsPlaybackService.d.ts +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/ttsPlaybackService.js +198 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.d.ts +85 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.js +504 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.d.ts +321 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.js +2117 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.d.ts +57 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.js +367 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +16 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +68 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +11 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +13 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +23 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +320 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +80 -4
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automation.d.ts +78 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.js +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.js +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.d.ts +46 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.d.ts +36 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.js +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.js +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +7 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +226 -88
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +8 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +13 -2
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +12 -8
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +5 -2
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.js +177 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +2 -18
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +78 -136
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +1 -16
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +1 -17
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +16 -5
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.js +122 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +24 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +113 -10
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +227 -152
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.js +98 -0
- package/vscode/src/vs/workbench/contrib/chat/common/workingDirectory.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/workingDirectory.js +7 -6
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +11 -12
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +10 -10
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.js +7 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +15 -15
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +32 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.d.ts +23 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.js +37 -30
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/largeOutputFileWriter.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/largeOutputFileWriter.js +71 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +29 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +7 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +10 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +26 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +32 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +416 -252
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +3 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +10 -10
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.js +5 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +6 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +25 -8
- package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.d.ts +8 -3
- package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.js +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +0 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +0 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/copilotCliEventsUri.d.ts +0 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/copilotCliEventsUri.js +0 -82
- package/vscode/src/vs/workbench/contrib/chat/common/chatSelectedModel.d.ts +0 -38
- package/vscode/src/vs/workbench/contrib/chat/common/chatSelectedModel.js +0 -47
- /package/vscode/src/vs/{workbench/contrib → platform}/browserView/common/browserChatToolReferenceNames.js +0 -0
|
@@ -11,13 +11,14 @@ import { WorkbenchList } from '@codingame/monaco-vscode-api/vscode/vs/platform/l
|
|
|
11
11
|
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
12
12
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
13
13
|
import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
|
|
14
|
-
import {
|
|
14
|
+
import { defaultInputBoxStyles, defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
|
|
15
15
|
import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
|
|
16
16
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
17
17
|
import { mcpAccessConfig, McpAccessValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/mcp/common/mcpManagement';
|
|
18
18
|
import { McpConnectionState, McpServerInstallState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
|
|
19
|
-
import {
|
|
19
|
+
import { IMcpWorkbenchService, IMcpService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
|
|
20
20
|
import { IMcpRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpRegistryTypes.service';
|
|
21
|
+
import { MCP_PLUGIN_COLLECTION_ID_PREFIX } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/discovery/pluginMcpDiscovery';
|
|
21
22
|
import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
|
|
22
23
|
import { isContributionDisabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/enablement';
|
|
23
24
|
import { McpCommandIds } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpCommandIds';
|
|
@@ -40,13 +41,22 @@ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/h
|
|
|
40
41
|
import { IAICustomizationWorkspaceService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.service';
|
|
41
42
|
import { CUSTOMIZATION_GROUP_HEADER_HEIGHT, CUSTOMIZATION_GROUP_HEADER_HEIGHT_WITH_SEPARATOR, CustomizationGroupHeaderRenderer } from './customizationGroupHeaderRenderer.js';
|
|
42
43
|
import { AgentPluginItemKind } from '../agentPluginEditor/agentPluginItems.js';
|
|
44
|
+
import { ICustomizationHarnessService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/customizationHarnessService.service';
|
|
45
|
+
import { IAgentHostCustomizationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.service';
|
|
46
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-root/state';
|
|
47
|
+
import { McpServerStatus } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-session/state';
|
|
48
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-chat/state';
|
|
49
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-terminal/state';
|
|
50
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-changeset/state';
|
|
51
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-resource-watch/state';
|
|
52
|
+
import { GalleryItemInstallState, GalleryItemRenderer } from './galleryItemRenderer.js';
|
|
43
53
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
44
54
|
import { truncateToFirstLine } from './aiCustomizationListWidgetUtils.js';
|
|
45
55
|
|
|
46
56
|
registerCss(aiCustomizationManagement);
|
|
47
57
|
const $ = $$1;
|
|
48
58
|
const MCP_ITEM_HEIGHT = 36;
|
|
49
|
-
const PLUGIN_COLLECTION_PREFIX =
|
|
59
|
+
const PLUGIN_COLLECTION_PREFIX = MCP_PLUGIN_COLLECTION_ID_PREFIX;
|
|
50
60
|
const COPILOT_EXTENSION_IDS = ["github.copilot", "github.copilot-chat"];
|
|
51
61
|
function isCopilotExtension(id) {
|
|
52
62
|
return ( COPILOT_EXTENSION_IDS.some(copilotId => ExtensionIdentifier.equals(id, copilotId)));
|
|
@@ -59,7 +69,7 @@ class McpServerItemDelegate {
|
|
|
59
69
|
if (element.type === "group-header") {
|
|
60
70
|
return element.isFirst ? CUSTOMIZATION_GROUP_HEADER_HEIGHT : CUSTOMIZATION_GROUP_HEADER_HEIGHT_WITH_SEPARATOR;
|
|
61
71
|
}
|
|
62
|
-
if (element.type === "server-item" && element.server.gallery && !element.server.local) {
|
|
72
|
+
if (element.type === "server-item" && element.server.gallery && (element.marketplace || !element.server.local)) {
|
|
63
73
|
return 62;
|
|
64
74
|
}
|
|
65
75
|
return MCP_ITEM_HEIGHT;
|
|
@@ -71,13 +81,15 @@ class McpServerItemDelegate {
|
|
|
71
81
|
if (element.type === "builtin-item") {
|
|
72
82
|
return "mcpServerItem";
|
|
73
83
|
}
|
|
84
|
+
if (element.type === "session-server-item") {
|
|
85
|
+
return "mcpServerItem";
|
|
86
|
+
}
|
|
74
87
|
const server = element.server;
|
|
75
|
-
return server.gallery && !server.local ?
|
|
88
|
+
return server.gallery && (element.marketplace || !server.local) ? MCP_GALLERY_ITEM_TEMPLATE_ID : "mcpServerItem";
|
|
76
89
|
}
|
|
77
90
|
}
|
|
78
91
|
let McpServerItemRenderer = class McpServerItemRenderer {
|
|
79
|
-
constructor(
|
|
80
|
-
this.mcpService = mcpService;
|
|
92
|
+
constructor(workspaceService, agentPluginService, hoverService) {
|
|
81
93
|
this.workspaceService = workspaceService;
|
|
82
94
|
this.agentPluginService = agentPluginService;
|
|
83
95
|
this.hoverService = hoverService;
|
|
@@ -105,6 +117,7 @@ let McpServerItemRenderer = class McpServerItemRenderer {
|
|
|
105
117
|
templateData.disposables.clear();
|
|
106
118
|
if (element.type === "builtin-item") {
|
|
107
119
|
templateData.container.classList.add("builtin");
|
|
120
|
+
templateData.container.classList.toggle("has-detail", false);
|
|
108
121
|
templateData.name.textContent = formatDisplayName(element.label);
|
|
109
122
|
if (element.description) {
|
|
110
123
|
templateData.description.textContent = truncateToFirstLine(element.description);
|
|
@@ -112,14 +125,14 @@ let McpServerItemRenderer = class McpServerItemRenderer {
|
|
|
112
125
|
} else {
|
|
113
126
|
templateData.description.style.display = "none";
|
|
114
127
|
}
|
|
115
|
-
templateData.
|
|
128
|
+
this.updateKnownServerStatus(templateData, element.localServer, element.activeSessionServer);
|
|
116
129
|
const pluginUriStr = getPluginUriFromCollectionId(element.collectionId);
|
|
117
130
|
if (pluginUriStr) {
|
|
118
131
|
templateData.disposables.add(this.hoverService.setupDelayedHover(templateData.container, () => {
|
|
119
132
|
const plugin = this.agentPluginService.plugins.get().find(p => ( p.uri.toString()) === pluginUriStr);
|
|
120
133
|
if (plugin) {
|
|
121
134
|
return {
|
|
122
|
-
content: `${element.label}\n${( localize(
|
|
135
|
+
content: `${element.label}\n${( localize(6023, "Plugin: {0}", plugin.label))}`,
|
|
123
136
|
appearance: {
|
|
124
137
|
compact: true,
|
|
125
138
|
skipFadeInAnimation: true
|
|
@@ -137,6 +150,14 @@ let McpServerItemRenderer = class McpServerItemRenderer {
|
|
|
137
150
|
}
|
|
138
151
|
return;
|
|
139
152
|
}
|
|
153
|
+
if (element.type === "session-server-item") {
|
|
154
|
+
templateData.container.classList.remove("builtin");
|
|
155
|
+
templateData.container.classList.toggle("has-detail", false);
|
|
156
|
+
templateData.name.textContent = formatDisplayName(element.server.name);
|
|
157
|
+
templateData.description.style.display = "none";
|
|
158
|
+
this.updateActiveSessionStatus(templateData, element.server);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
140
161
|
templateData.container.classList.remove("builtin");
|
|
141
162
|
templateData.name.textContent = formatDisplayName(element.server.label);
|
|
142
163
|
const description = element.server.description?.trim();
|
|
@@ -149,122 +170,256 @@ let McpServerItemRenderer = class McpServerItemRenderer {
|
|
|
149
170
|
} else {
|
|
150
171
|
templateData.description.style.display = "none";
|
|
151
172
|
}
|
|
152
|
-
|
|
173
|
+
if (element.activeSessionServer) {
|
|
174
|
+
this.updateKnownServerStatus(templateData, element.localServer, element.activeSessionServer);
|
|
175
|
+
} else if (this.workspaceService.isSessionsWindow) {
|
|
176
|
+
this.updateKnownServerStatus(templateData, element.localServer, undefined);
|
|
177
|
+
} else {
|
|
178
|
+
templateData.disposables.add(autorun(reader => {
|
|
179
|
+
const disabled = element.localServer ? isContributionDisabled(element.localServer.enablement.read(reader)) : false;
|
|
180
|
+
const connectionState = element.localServer?.connectionState.read(reader);
|
|
181
|
+
templateData.container.classList.toggle("disabled", disabled);
|
|
182
|
+
this.updateStatus(templateData.status, disabled ? "disabled" : connectionState?.state);
|
|
183
|
+
}));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
updateKnownServerStatus(templateData, localServer, activeSessionServer) {
|
|
153
187
|
templateData.disposables.add(autorun(reader => {
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
188
|
+
const localDisabled = localServer ? isContributionDisabled(localServer.enablement.read(reader)) : false;
|
|
189
|
+
templateData.container.classList.toggle("disabled", localDisabled || activeSessionServer?.enabled === false);
|
|
190
|
+
this.updateStatus(
|
|
191
|
+
templateData.status,
|
|
192
|
+
localDisabled ? "disabled" : activeSessionServer ? (activeSessionServer.enabled ? activeSessionServer.status : "disabled") : undefined
|
|
193
|
+
);
|
|
158
194
|
}));
|
|
159
195
|
}
|
|
196
|
+
updateActiveSessionStatus(templateData, server) {
|
|
197
|
+
const disabled = server?.enabled === false;
|
|
198
|
+
templateData.container.classList.toggle("disabled", disabled);
|
|
199
|
+
this.updateStatus(templateData.status, disabled ? "disabled" : server?.status);
|
|
200
|
+
}
|
|
160
201
|
updateStatus(statusElement, state) {
|
|
161
202
|
statusElement.className = "mcp-server-status";
|
|
162
|
-
|
|
203
|
+
const presentation = getMcpStatusPresentation(state);
|
|
204
|
+
if (!presentation) {
|
|
163
205
|
statusElement.style.display = "none";
|
|
164
206
|
return;
|
|
165
207
|
}
|
|
166
208
|
statusElement.style.display = "";
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
statusElement.classList.add("disabled");
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
switch (state) {
|
|
173
|
-
case McpConnectionState.Kind.Running:
|
|
174
|
-
statusElement.textContent = ( localize(5711, "Running"));
|
|
175
|
-
statusElement.classList.add("running");
|
|
176
|
-
break;
|
|
177
|
-
case McpConnectionState.Kind.Starting:
|
|
178
|
-
statusElement.textContent = ( localize(5712, "Starting"));
|
|
179
|
-
statusElement.classList.add("starting");
|
|
180
|
-
break;
|
|
181
|
-
case McpConnectionState.Kind.Error:
|
|
182
|
-
statusElement.textContent = ( localize(5713, "Error"));
|
|
183
|
-
statusElement.classList.add("error");
|
|
184
|
-
break;
|
|
185
|
-
case McpConnectionState.Kind.Stopped:
|
|
186
|
-
default:
|
|
187
|
-
statusElement.textContent = ( localize(5714, "Stopped"));
|
|
188
|
-
statusElement.classList.add("stopped");
|
|
189
|
-
break;
|
|
190
|
-
}
|
|
209
|
+
statusElement.textContent = presentation.label;
|
|
210
|
+
statusElement.classList.add(presentation.className);
|
|
191
211
|
}
|
|
192
212
|
disposeTemplate(templateData) {
|
|
193
213
|
templateData.disposables.dispose();
|
|
194
214
|
}
|
|
195
215
|
};
|
|
196
|
-
McpServerItemRenderer = ( __decorate([( __param(0,
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
this.templateId = "mcpGalleryItem";
|
|
216
|
+
McpServerItemRenderer = ( __decorate([( __param(0, IAICustomizationWorkspaceService)), ( __param(1, IAgentPluginService)), ( __param(2, IHoverService))], McpServerItemRenderer));
|
|
217
|
+
function getMcpStatusPresentation(state) {
|
|
218
|
+
if (state === undefined) {
|
|
219
|
+
return undefined;
|
|
201
220
|
}
|
|
202
|
-
|
|
203
|
-
container.classList.add("mcp-server-item", "mcp-gallery-item", "extension-list-item");
|
|
204
|
-
const details = append(container, $(".details"));
|
|
205
|
-
const headerContainer = append(details, $(".header-container"));
|
|
206
|
-
const header = append(headerContainer, $(".header"));
|
|
207
|
-
const name = append(header, $("span.name"));
|
|
208
|
-
const description = append(details, $(".description.ellipsis"));
|
|
209
|
-
const publisherContainer = append(details, $(".publisher-container"));
|
|
210
|
-
const publisher = append(publisherContainer, $("span.publisher-name.mcp-gallery-publisher"));
|
|
211
|
-
const actionContainer = append(container, $(".mcp-gallery-action"));
|
|
212
|
-
const installButton = ( new Button(actionContainer, {
|
|
213
|
-
...defaultButtonStyles,
|
|
214
|
-
supportIcons: true
|
|
215
|
-
}));
|
|
216
|
-
installButton.element.classList.add("mcp-gallery-install-button");
|
|
217
|
-
const templateDisposables = ( new DisposableStore());
|
|
218
|
-
templateDisposables.add(installButton);
|
|
221
|
+
if (state === "disabled") {
|
|
219
222
|
return {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
223
|
+
label: ( localize(6024, "Disabled")),
|
|
224
|
+
className: "disabled"
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
switch (state) {
|
|
228
|
+
case McpConnectionState.Kind.Running:
|
|
229
|
+
case McpServerStatus.Ready:
|
|
230
|
+
return {
|
|
231
|
+
label: ( localize(6025, "Running")),
|
|
232
|
+
className: "running"
|
|
233
|
+
};
|
|
234
|
+
case McpConnectionState.Kind.Starting:
|
|
235
|
+
case McpServerStatus.Starting:
|
|
236
|
+
return {
|
|
237
|
+
label: ( localize(6026, "Starting")),
|
|
238
|
+
className: "starting"
|
|
239
|
+
};
|
|
240
|
+
case McpServerStatus.AuthRequired:
|
|
241
|
+
return {
|
|
242
|
+
label: ( localize(6027, "Authentication required")),
|
|
243
|
+
className: "auth-required"
|
|
244
|
+
};
|
|
245
|
+
case McpConnectionState.Kind.Error:
|
|
246
|
+
case McpServerStatus.Error:
|
|
247
|
+
return {
|
|
248
|
+
label: ( localize(6028, "Error")),
|
|
249
|
+
className: "error"
|
|
250
|
+
};
|
|
251
|
+
case McpConnectionState.Kind.Stopped:
|
|
252
|
+
case McpServerStatus.Stopped:
|
|
253
|
+
default:
|
|
254
|
+
return {
|
|
255
|
+
label: ( localize(6029, "Stopped")),
|
|
256
|
+
className: "stopped"
|
|
227
257
|
};
|
|
228
258
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
259
|
+
}
|
|
260
|
+
function getMcpStatusKind(entry, isSessionsWindow) {
|
|
261
|
+
if (entry.type === "session-server-item") {
|
|
262
|
+
return entry.server.enabled ? entry.server.status : "disabled";
|
|
263
|
+
}
|
|
264
|
+
if (entry.localServer && isContributionDisabled(entry.localServer.enablement.get())) {
|
|
265
|
+
return "disabled";
|
|
266
|
+
}
|
|
267
|
+
if (entry.activeSessionServer) {
|
|
268
|
+
return entry.activeSessionServer.enabled ? entry.activeSessionServer.status : "disabled";
|
|
269
|
+
}
|
|
270
|
+
if (entry.type === "server-item" && !isSessionsWindow) {
|
|
271
|
+
return entry.localServer?.connectionState.get().state;
|
|
272
|
+
}
|
|
273
|
+
return undefined;
|
|
274
|
+
}
|
|
275
|
+
function getMcpEntryAriaLabel(element, isSessionsWindow) {
|
|
276
|
+
if (element.type === "group-header") {
|
|
277
|
+
return localize(
|
|
278
|
+
6030,
|
|
279
|
+
"{0}, {1} items, {2}",
|
|
280
|
+
element.label,
|
|
281
|
+
element.count,
|
|
282
|
+
element.collapsed ? ( localize(6031, "collapsed")) : ( localize(6032, "expanded"))
|
|
283
|
+
);
|
|
284
|
+
}
|
|
285
|
+
const label = element.type === "session-server-item" ? element.server.name : element.type === "builtin-item" ? element.label : element.server.label;
|
|
286
|
+
const status = getMcpStatusPresentation(getMcpStatusKind(element, isSessionsWindow));
|
|
287
|
+
return status ? ( localize(6033, "{0}, {1}", label, status.label)) : label;
|
|
288
|
+
}
|
|
289
|
+
function normalizeMcpMatchKey(value) {
|
|
290
|
+
const key = value?.trim().toLowerCase();
|
|
291
|
+
return key || undefined;
|
|
292
|
+
}
|
|
293
|
+
function getUniqueMcpMatchKeys(values) {
|
|
294
|
+
const keys = ( new Set());
|
|
295
|
+
for (const value of values) {
|
|
296
|
+
const key = normalizeMcpMatchKey(value);
|
|
297
|
+
if (key) {
|
|
298
|
+
keys.add(key);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return [...keys];
|
|
302
|
+
}
|
|
303
|
+
class ActiveSessionMcpServerMatcher {
|
|
304
|
+
constructor(servers) {
|
|
305
|
+
this.servers = servers;
|
|
306
|
+
this.byKey = ( new Map());
|
|
307
|
+
this.matchedIds = ( new Set());
|
|
308
|
+
for (const server of servers) {
|
|
309
|
+
for (const key of getUniqueMcpMatchKeys([server.id, server.name])) {
|
|
310
|
+
let bucket = this.byKey.get(key);
|
|
311
|
+
if (!bucket) {
|
|
312
|
+
bucket = [];
|
|
313
|
+
this.byKey.set(key, bucket);
|
|
314
|
+
}
|
|
315
|
+
bucket.push(server);
|
|
241
316
|
}
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
take(keys) {
|
|
320
|
+
for (const key of getUniqueMcpMatchKeys(keys)) {
|
|
321
|
+
const matches = this.byKey.get(key);
|
|
322
|
+
const match = matches?.find(server => !( this.matchedIds.has(server.id)));
|
|
323
|
+
if (match) {
|
|
324
|
+
this.matchedIds.add(match.id);
|
|
325
|
+
return match;
|
|
246
326
|
}
|
|
247
|
-
}
|
|
327
|
+
}
|
|
328
|
+
return undefined;
|
|
329
|
+
}
|
|
330
|
+
unmatched(query) {
|
|
331
|
+
return this.servers.filter(server => !( this.matchedIds.has(server.id)) && matchesActiveSessionServerQuery(server, query));
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
class LocalMcpServerMatcher {
|
|
335
|
+
constructor(servers) {
|
|
336
|
+
this.byKey = ( new Map());
|
|
337
|
+
for (const server of servers) {
|
|
338
|
+
for (const key of getRuntimeServerMatchKeys(server)) {
|
|
339
|
+
this.byKey.set(key, server);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
find(keys) {
|
|
344
|
+
for (const key of getUniqueMcpMatchKeys(keys)) {
|
|
345
|
+
const server = this.byKey.get(key);
|
|
346
|
+
if (server) {
|
|
347
|
+
return server;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return undefined;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
function matchesActiveSessionServerQuery(server, query) {
|
|
354
|
+
if (!query) {
|
|
355
|
+
return true;
|
|
356
|
+
}
|
|
357
|
+
return server.name.toLowerCase().includes(query);
|
|
358
|
+
}
|
|
359
|
+
function getWorkbenchServerMatchKeys(server) {
|
|
360
|
+
return getUniqueMcpMatchKeys([server.id, server.name, server.label]);
|
|
361
|
+
}
|
|
362
|
+
function getRuntimeServerMatchKeys(server) {
|
|
363
|
+
return getUniqueMcpMatchKeys([server.definition.id, server.definition.label]);
|
|
364
|
+
}
|
|
365
|
+
function getActiveSessionServerOptionsAction(commandService, sessionResource, server) {
|
|
366
|
+
return (new Action(
|
|
367
|
+
"mcpServer.activeSession.options",
|
|
368
|
+
localize(6034, "Server Options"),
|
|
369
|
+
undefined,
|
|
370
|
+
true,
|
|
371
|
+
async () => {
|
|
372
|
+
await commandService.executeCommand(McpCommandIds.AgentHostServerOptions, sessionResource, server.id);
|
|
373
|
+
}
|
|
374
|
+
));
|
|
375
|
+
}
|
|
376
|
+
function createBuiltinEntry(server, activeSessionServer) {
|
|
377
|
+
return {
|
|
378
|
+
type: "builtin-item",
|
|
379
|
+
id: `builtin-${server.definition.id}`,
|
|
380
|
+
label: server.definition.label,
|
|
381
|
+
description: "",
|
|
382
|
+
collectionId: server.collection.id,
|
|
383
|
+
activeSessionServer,
|
|
384
|
+
localServer: server
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
const MCP_GALLERY_ITEM_TEMPLATE_ID = "mcpGalleryItem";
|
|
388
|
+
class McpGalleryItemProvider {
|
|
389
|
+
constructor(mcpWorkbenchService) {
|
|
390
|
+
this.mcpWorkbenchService = mcpWorkbenchService;
|
|
391
|
+
}
|
|
392
|
+
getLabel(element) {
|
|
393
|
+
return element.server.label;
|
|
394
|
+
}
|
|
395
|
+
getPublisherDisplayName(element) {
|
|
396
|
+
return element.server.publisherDisplayName;
|
|
248
397
|
}
|
|
249
|
-
|
|
250
|
-
|
|
398
|
+
getDescription(element) {
|
|
399
|
+
return element.server.description;
|
|
400
|
+
}
|
|
401
|
+
getInstallState(element) {
|
|
402
|
+
switch (element.server.installState) {
|
|
251
403
|
case McpServerInstallState.Installed:
|
|
252
|
-
|
|
253
|
-
button.enabled = false;
|
|
254
|
-
break;
|
|
404
|
+
return GalleryItemInstallState.Installed;
|
|
255
405
|
case McpServerInstallState.Installing:
|
|
256
|
-
|
|
257
|
-
button.enabled = false;
|
|
258
|
-
break;
|
|
406
|
+
return GalleryItemInstallState.Installing;
|
|
259
407
|
default:
|
|
260
|
-
|
|
261
|
-
button.enabled = true;
|
|
262
|
-
break;
|
|
408
|
+
return GalleryItemInstallState.Uninstalled;
|
|
263
409
|
}
|
|
264
410
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
411
|
+
canInstall(element) {
|
|
412
|
+
return this.mcpWorkbenchService.canInstall(element.server) === true;
|
|
413
|
+
}
|
|
414
|
+
async install(element) {
|
|
415
|
+
await this.mcpWorkbenchService.install(element.server);
|
|
416
|
+
}
|
|
417
|
+
onDidChangeInstallState(element, listener) {
|
|
418
|
+
return this.mcpWorkbenchService.onChange(changed => {
|
|
419
|
+
if (!changed || changed.id === element.server.id) {
|
|
420
|
+
listener();
|
|
421
|
+
}
|
|
422
|
+
});
|
|
268
423
|
}
|
|
269
424
|
}
|
|
270
425
|
let McpListWidget = class McpListWidget extends Disposable {
|
|
@@ -280,7 +435,10 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
280
435
|
hoverService,
|
|
281
436
|
agentPluginService,
|
|
282
437
|
dialogService,
|
|
283
|
-
configurationService
|
|
438
|
+
configurationService,
|
|
439
|
+
customizationHarnessService,
|
|
440
|
+
agentHostCustomizationService,
|
|
441
|
+
workspaceService
|
|
284
442
|
) {
|
|
285
443
|
super();
|
|
286
444
|
this.instantiationService = instantiationService;
|
|
@@ -295,6 +453,9 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
295
453
|
this.agentPluginService = agentPluginService;
|
|
296
454
|
this.dialogService = dialogService;
|
|
297
455
|
this.configurationService = configurationService;
|
|
456
|
+
this.customizationHarnessService = customizationHarnessService;
|
|
457
|
+
this.agentHostCustomizationService = agentHostCustomizationService;
|
|
458
|
+
this.workspaceService = workspaceService;
|
|
298
459
|
this._onDidSelectServer = this._register(( new Emitter()));
|
|
299
460
|
this.onDidSelectServer = this._onDidSelectServer.event;
|
|
300
461
|
this._onDidChangeItemCount = this._register(( new Emitter()));
|
|
@@ -304,6 +465,7 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
304
465
|
this.disabledLinkListener = this._register(( new MutableDisposable()));
|
|
305
466
|
this.filteredServers = [];
|
|
306
467
|
this.filteredBuiltinCount = 0;
|
|
468
|
+
this.filteredActiveSessionCount = 0;
|
|
307
469
|
this.displayEntries = [];
|
|
308
470
|
this.galleryServers = [];
|
|
309
471
|
this.searchQuery = "";
|
|
@@ -333,17 +495,17 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
333
495
|
this.sectionTitleHeader = append(this.element, $(".section-title-header"));
|
|
334
496
|
const titleRow = append(this.sectionTitleHeader, $(".section-title-row"));
|
|
335
497
|
const sectionTitle = append(titleRow, $("h2.section-title"));
|
|
336
|
-
sectionTitle.textContent = ( localize(
|
|
498
|
+
sectionTitle.textContent = ( localize(6035, "MCP Servers"));
|
|
337
499
|
const sectionTitleDescription = append(this.sectionTitleHeader, $("p.section-title-description"));
|
|
338
500
|
const sectionTitleDescriptionText = append(sectionTitleDescription, $("span.section-title-description-text"));
|
|
339
501
|
sectionTitleDescriptionText.textContent = ( localize(
|
|
340
|
-
|
|
502
|
+
6036,
|
|
341
503
|
"An open standard that lets AI use external tools and services. MCP servers provide tools for file operations, databases, APIs, and more."
|
|
342
504
|
));
|
|
343
505
|
sectionTitleDescription.appendChild(createTextNode(" "));
|
|
344
506
|
this.sectionLink = append(sectionTitleDescription, $("a.section-title-link"));
|
|
345
|
-
this.sectionLink.textContent = ( localize(
|
|
346
|
-
this.sectionLink.href = "https://code.visualstudio.com/docs/
|
|
507
|
+
this.sectionLink.textContent = ( localize(6037, "Learn more about MCP servers"));
|
|
508
|
+
this.sectionLink.href = "https://code.visualstudio.com/docs/agent-customization/mcp-servers?referrer=in-product";
|
|
347
509
|
this._register(addDisposableListener(this.sectionLink, "click", e => {
|
|
348
510
|
e.preventDefault();
|
|
349
511
|
const href = this.sectionLink.href;
|
|
@@ -368,7 +530,7 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
368
530
|
this.searchAndButtonContainer = append(this.element, $(".list-search-and-button-container"));
|
|
369
531
|
const searchContainer = append(this.searchAndButtonContainer, $(".list-search-container"));
|
|
370
532
|
this.searchInput = this._register(( new InputBox(searchContainer, this.contextViewService, {
|
|
371
|
-
placeholder: ( localize(
|
|
533
|
+
placeholder: ( localize(6038, "Type to search...")),
|
|
372
534
|
inputBoxStyles: defaultInputBoxStyles
|
|
373
535
|
})));
|
|
374
536
|
this._register(this.searchInput.onDidChange(() => {
|
|
@@ -385,10 +547,10 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
385
547
|
...defaultButtonStyles,
|
|
386
548
|
secondary: true,
|
|
387
549
|
supportIcons: true,
|
|
388
|
-
title: ( localize(
|
|
389
|
-
ariaLabel: ( localize(
|
|
550
|
+
title: ( localize(6039, "Back to installed servers")),
|
|
551
|
+
ariaLabel: ( localize(6039, "Back to installed servers"))
|
|
390
552
|
})));
|
|
391
|
-
this.backButton.label = `$(${Codicon.arrowLeft.id}) ${( localize(
|
|
553
|
+
this.backButton.label = `$(${Codicon.arrowLeft.id}) ${( localize(6040, "Back"))}`;
|
|
392
554
|
this.backButton.element.classList.add("list-add-button");
|
|
393
555
|
backButtonContainer.style.display = "none";
|
|
394
556
|
this._register(this.backButton.onDidClick(() => {
|
|
@@ -400,7 +562,7 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
400
562
|
secondary: true,
|
|
401
563
|
supportIcons: true
|
|
402
564
|
})));
|
|
403
|
-
this.browseButton.label = `$(${Codicon.library.id}) ${( localize(
|
|
565
|
+
this.browseButton.label = `$(${Codicon.library.id}) ${( localize(6041, "Browse Marketplace"))}`;
|
|
404
566
|
this.browseButton.element.classList.add("list-add-button");
|
|
405
567
|
this._register(this.browseButton.onDidClick(() => {
|
|
406
568
|
this.toggleBrowseMode(!this.browseMode);
|
|
@@ -409,34 +571,32 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
409
571
|
...defaultButtonStyles,
|
|
410
572
|
secondary: true,
|
|
411
573
|
supportIcons: true,
|
|
412
|
-
title: ( localize(
|
|
413
|
-
ariaLabel: ( localize(
|
|
574
|
+
title: ( localize(6042, "Add Server")),
|
|
575
|
+
ariaLabel: ( localize(6042, "Add Server"))
|
|
414
576
|
})));
|
|
415
577
|
this.addButton.label = `$(${Codicon.add.id})`;
|
|
416
578
|
this.addButton.element.classList.add("list-icon-button");
|
|
417
579
|
this._register(
|
|
418
|
-
this.hoverService.setupManagedHover(getDefaultHoverDelegate("element"), this.addButton.element, ( localize(
|
|
580
|
+
this.hoverService.setupManagedHover(getDefaultHoverDelegate("element"), this.addButton.element, ( localize(6043, "Add Server")))
|
|
419
581
|
);
|
|
420
582
|
this._register(this.addButton.onDidClick(() => {
|
|
421
583
|
this.commandService.executeCommand(McpCommandIds.AddConfiguration);
|
|
422
584
|
}));
|
|
423
585
|
this.emptyContainer = append(this.element, $(".mcp-empty-state"));
|
|
424
586
|
const emptyHeader = append(this.emptyContainer, $(".empty-state-header"));
|
|
425
|
-
const emptyIcon = append(emptyHeader, $(".empty-icon"));
|
|
426
|
-
emptyIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.server));
|
|
427
587
|
this.emptyText = append(emptyHeader, $(".empty-text"));
|
|
428
588
|
this.emptySubtext = append(this.emptyContainer, $(".empty-subtext"));
|
|
429
589
|
this.disabledContainer = append(this.element, $(".mcp-disabled-state"));
|
|
430
590
|
const disabledHeader = append(this.disabledContainer, $(".empty-state-header"));
|
|
431
591
|
this.disabledIcon = append(disabledHeader, $(".empty-icon"));
|
|
432
592
|
const disabledText = append(disabledHeader, $(".empty-text"));
|
|
433
|
-
disabledText.textContent = ( localize(
|
|
593
|
+
disabledText.textContent = ( localize(6044, "MCP servers are disabled"));
|
|
434
594
|
this.disabledMessage = append(this.disabledContainer, $(".empty-subtext"));
|
|
435
595
|
this.listContainer = append(this.element, $(".mcp-list-container"));
|
|
436
596
|
const delegate = ( new McpServerItemDelegate());
|
|
437
597
|
const groupHeaderRenderer = ( new CustomizationGroupHeaderRenderer("mcpGroupHeader", this.hoverService));
|
|
438
598
|
const localRenderer = this.instantiationService.createInstance(McpServerItemRenderer);
|
|
439
|
-
const galleryRenderer = ( new
|
|
599
|
+
const galleryRenderer = ( new GalleryItemRenderer(MCP_GALLERY_ITEM_TEMPLATE_ID, ( new McpGalleryItemProvider(this.mcpWorkbenchService))));
|
|
440
600
|
this.list = this._register(this.instantiationService.createInstance(
|
|
441
601
|
WorkbenchList,
|
|
442
602
|
"McpManagementList",
|
|
@@ -449,19 +609,10 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
449
609
|
horizontalScrolling: false,
|
|
450
610
|
accessibilityProvider: {
|
|
451
611
|
getAriaLabel: element => {
|
|
452
|
-
|
|
453
|
-
return localize(
|
|
454
|
-
5728,
|
|
455
|
-
"{0}, {1} items, {2}",
|
|
456
|
-
element.label,
|
|
457
|
-
element.count,
|
|
458
|
-
element.collapsed ? ( localize(5729, "collapsed")) : ( localize(5730, "expanded"))
|
|
459
|
-
);
|
|
460
|
-
}
|
|
461
|
-
return element.type === "builtin-item" ? element.label : element.server.label;
|
|
612
|
+
return getMcpEntryAriaLabel(element, this.workspaceService.isSessionsWindow);
|
|
462
613
|
},
|
|
463
614
|
getWidgetAriaLabel() {
|
|
464
|
-
return localize(
|
|
615
|
+
return localize(6045, "MCP Servers");
|
|
465
616
|
}
|
|
466
617
|
},
|
|
467
618
|
openOnSingleClick: true,
|
|
@@ -484,10 +635,12 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
484
635
|
this.toggleGroup(e.element);
|
|
485
636
|
} else if (e.element.type === "server-item") {
|
|
486
637
|
const server = e.element.server;
|
|
487
|
-
const isGallery = !server.local;
|
|
638
|
+
const isGallery = e.element.marketplace || !server.local;
|
|
488
639
|
if (isGallery || server.description) {
|
|
489
640
|
this._onDidSelectServer.fire(server);
|
|
490
641
|
}
|
|
642
|
+
} else if (e.element.type === "session-server-item") {
|
|
643
|
+
this.openActiveSessionServerOptions(e.element.server);
|
|
491
644
|
}
|
|
492
645
|
}
|
|
493
646
|
}));
|
|
@@ -503,6 +656,17 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
503
656
|
this.refresh();
|
|
504
657
|
}
|
|
505
658
|
}));
|
|
659
|
+
this._register(autorun(reader => {
|
|
660
|
+
this.customizationHarnessService.activeSessionResource.read(reader);
|
|
661
|
+
if (!this.browseMode) {
|
|
662
|
+
this.refresh();
|
|
663
|
+
}
|
|
664
|
+
}));
|
|
665
|
+
this._register(this.agentHostCustomizationService.onDidChangeCustomizations(() => {
|
|
666
|
+
if (!this.browseMode) {
|
|
667
|
+
this.refresh();
|
|
668
|
+
}
|
|
669
|
+
}));
|
|
506
670
|
void this.refresh();
|
|
507
671
|
}
|
|
508
672
|
async refresh() {
|
|
@@ -527,13 +691,13 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
527
691
|
this.disabledLinkListener.clear();
|
|
528
692
|
if (policyLocked) {
|
|
529
693
|
this.disabledMessage.textContent = ( localize(
|
|
530
|
-
|
|
694
|
+
6046,
|
|
531
695
|
"Access to MCP servers is disabled by your organization. Contact your organization administrator for more information."
|
|
532
696
|
));
|
|
533
697
|
} else {
|
|
534
|
-
this.disabledMessage.appendChild(createTextNode(( localize(
|
|
698
|
+
this.disabledMessage.appendChild(createTextNode(( localize(6047, "MCP servers are disabled in settings. "))));
|
|
535
699
|
const link = append(this.disabledMessage, $("a.mcp-disabled-settings-link"));
|
|
536
|
-
link.textContent = ( localize(
|
|
700
|
+
link.textContent = ( localize(6048, "Configure in settings."));
|
|
537
701
|
link.href = "#";
|
|
538
702
|
link.setAttribute("role", "button");
|
|
539
703
|
this.disabledLinkListener.value = addDisposableListener(link, "click", e => {
|
|
@@ -555,7 +719,7 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
555
719
|
this.addButton.element.style.display = browse ? "none" : "";
|
|
556
720
|
this.browseButton.element.parentElement.style.display = browse ? "none" : "";
|
|
557
721
|
this.backButton.element.parentElement.style.display = browse ? "" : "none";
|
|
558
|
-
this.searchInput.setPlaceHolder(browse ? ( localize(
|
|
722
|
+
this.searchInput.setPlaceHolder(browse ? ( localize(6049, "Search MCP marketplace...")) : ( localize(6038, "Type to search...")));
|
|
559
723
|
if (browse) {
|
|
560
724
|
void this.queryGallery();
|
|
561
725
|
} else {
|
|
@@ -572,7 +736,7 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
572
736
|
const cts = this.galleryCts = ( new CancellationTokenSource());
|
|
573
737
|
this.emptyContainer.style.display = "flex";
|
|
574
738
|
this.listContainer.style.display = "none";
|
|
575
|
-
this.emptyText.textContent = ( localize(
|
|
739
|
+
this.emptyText.textContent = ( localize(6050, "Loading marketplace..."));
|
|
576
740
|
this.emptySubtext.textContent = "";
|
|
577
741
|
try {
|
|
578
742
|
const pager = await this.mcpWorkbenchService.queryGallery({
|
|
@@ -588,8 +752,8 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
588
752
|
this.galleryServers = [];
|
|
589
753
|
this.emptyContainer.style.display = "flex";
|
|
590
754
|
this.listContainer.style.display = "none";
|
|
591
|
-
this.emptyText.textContent = ( localize(
|
|
592
|
-
this.emptySubtext.textContent = ( localize(
|
|
755
|
+
this.emptyText.textContent = ( localize(6051, "Unable to load marketplace"));
|
|
756
|
+
this.emptySubtext.textContent = ( localize(6052, "Check your connection and try again"));
|
|
593
757
|
}
|
|
594
758
|
}
|
|
595
759
|
}
|
|
@@ -598,10 +762,10 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
598
762
|
this.emptyContainer.style.display = "flex";
|
|
599
763
|
this.listContainer.style.display = "none";
|
|
600
764
|
if (this.searchQuery.trim()) {
|
|
601
|
-
this.emptyText.textContent = ( localize(
|
|
602
|
-
this.emptySubtext.textContent = ( localize(
|
|
765
|
+
this.emptyText.textContent = ( localize(6053, "No servers match '{0}'", this.searchQuery));
|
|
766
|
+
this.emptySubtext.textContent = ( localize(6054, "Try a different search term"));
|
|
603
767
|
} else {
|
|
604
|
-
this.emptyText.textContent = ( localize(
|
|
768
|
+
this.emptyText.textContent = ( localize(6055, "No MCP servers available"));
|
|
605
769
|
this.emptySubtext.textContent = "";
|
|
606
770
|
}
|
|
607
771
|
} else {
|
|
@@ -610,12 +774,16 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
610
774
|
}
|
|
611
775
|
const entries = ( this.galleryServers.map(server => ({
|
|
612
776
|
type: "server-item",
|
|
613
|
-
server
|
|
777
|
+
server,
|
|
778
|
+
marketplace: true
|
|
614
779
|
})));
|
|
615
780
|
this.list.splice(0, this.list.length, entries);
|
|
616
781
|
}
|
|
617
782
|
filterServers() {
|
|
618
783
|
const query = this.searchQuery.toLowerCase().trim();
|
|
784
|
+
const activeSessionResource = this.customizationHarnessService.activeSessionResource.get();
|
|
785
|
+
const activeSessionMatcher = ( new ActiveSessionMcpServerMatcher(this.agentHostCustomizationService.getMcpServers(activeSessionResource)));
|
|
786
|
+
const localServerMatcher = ( new LocalMcpServerMatcher(this.mcpService.servers.get()));
|
|
619
787
|
if (query) {
|
|
620
788
|
this.filteredServers = this.mcpWorkbenchService.local.filter(
|
|
621
789
|
server => server.label.toLowerCase().includes(query) || (server.description?.toLowerCase().includes(query))
|
|
@@ -625,45 +793,36 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
625
793
|
}
|
|
626
794
|
const localIds = ( new Set(( this.filteredServers.map(s => s.id))));
|
|
627
795
|
const builtinServers = this.mcpService.servers.get().filter(s => !( localIds.has(s.definition.id))).filter(s => !query || s.definition.label.toLowerCase().includes(query));
|
|
628
|
-
if (this.filteredServers.length === 0 && builtinServers.length === 0) {
|
|
629
|
-
this.emptyContainer.style.display = "flex";
|
|
630
|
-
this.listContainer.style.display = "none";
|
|
631
|
-
if (this.searchQuery.trim()) {
|
|
632
|
-
this.emptyText.textContent = ( localize(5742, "No servers match '{0}'", this.searchQuery));
|
|
633
|
-
this.emptySubtext.textContent = ( localize(5740, "Try a different search term"));
|
|
634
|
-
} else {
|
|
635
|
-
this.emptyText.textContent = ( localize(5743, "No MCP servers configured"));
|
|
636
|
-
this.emptySubtext.textContent = ( localize(5744, "Add an MCP server configuration to get started"));
|
|
637
|
-
}
|
|
638
|
-
} else {
|
|
639
|
-
this.emptyContainer.style.display = "none";
|
|
640
|
-
this.listContainer.style.display = "";
|
|
641
|
-
}
|
|
642
796
|
const groups = [{
|
|
643
797
|
scope: LocalMcpServerScope.Workspace,
|
|
644
|
-
label: ( localize(
|
|
798
|
+
label: ( localize(6056, "Workspace")),
|
|
645
799
|
icon: workspaceIcon,
|
|
646
800
|
description: ( localize(
|
|
647
|
-
|
|
801
|
+
6057,
|
|
648
802
|
"MCP servers configured in your workspace settings, shared with your team via version control."
|
|
649
803
|
)),
|
|
650
804
|
servers: []
|
|
651
805
|
}, {
|
|
652
806
|
scope: LocalMcpServerScope.User,
|
|
653
|
-
label: ( localize(
|
|
807
|
+
label: ( localize(6058, "User")),
|
|
654
808
|
icon: userIcon,
|
|
655
809
|
description: ( localize(
|
|
656
|
-
|
|
810
|
+
6059,
|
|
657
811
|
"MCP servers configured in your user settings. Private to you and available across all projects."
|
|
658
812
|
)),
|
|
659
813
|
servers: []
|
|
660
814
|
}];
|
|
661
815
|
for (const server of this.filteredServers) {
|
|
816
|
+
const entry = {
|
|
817
|
+
server,
|
|
818
|
+
activeSessionServer: activeSessionMatcher.take(getWorkbenchServerMatchKeys(server)),
|
|
819
|
+
localServer: localServerMatcher.find(getWorkbenchServerMatchKeys(server))
|
|
820
|
+
};
|
|
662
821
|
const scope = server.local?.scope;
|
|
663
822
|
if (scope === LocalMcpServerScope.Workspace) {
|
|
664
|
-
groups[0].servers.push(
|
|
823
|
+
groups[0].servers.push(entry);
|
|
665
824
|
} else {
|
|
666
|
-
groups[1].servers.push(
|
|
825
|
+
groups[1].servers.push(entry);
|
|
667
826
|
}
|
|
668
827
|
}
|
|
669
828
|
const entries = [];
|
|
@@ -685,10 +844,16 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
685
844
|
collapsed
|
|
686
845
|
});
|
|
687
846
|
if (!collapsed) {
|
|
688
|
-
for (const
|
|
847
|
+
for (const {
|
|
848
|
+
server,
|
|
849
|
+
activeSessionServer,
|
|
850
|
+
localServer
|
|
851
|
+
} of group.servers) {
|
|
689
852
|
entries.push({
|
|
690
853
|
type: "server-item",
|
|
691
|
-
server
|
|
854
|
+
server,
|
|
855
|
+
activeSessionServer,
|
|
856
|
+
localServer
|
|
692
857
|
});
|
|
693
858
|
}
|
|
694
859
|
}
|
|
@@ -699,37 +864,76 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
699
864
|
const extensionServers = [];
|
|
700
865
|
const otherBuiltinServers = [];
|
|
701
866
|
for (const server of builtinServers) {
|
|
867
|
+
const entry = {
|
|
868
|
+
server,
|
|
869
|
+
activeSessionServer: activeSessionMatcher.take(getRuntimeServerMatchKeys(server))
|
|
870
|
+
};
|
|
702
871
|
const source = collectionSources.get(server.collection.id);
|
|
703
872
|
if (server.collection.id.startsWith(PLUGIN_COLLECTION_PREFIX)) {
|
|
704
|
-
pluginServers.push(
|
|
873
|
+
pluginServers.push(entry);
|
|
705
874
|
} else if (source instanceof ExtensionIdentifier && !isCopilotExtension(source)) {
|
|
706
|
-
extensionServers.push(
|
|
875
|
+
extensionServers.push(entry);
|
|
707
876
|
} else {
|
|
708
|
-
otherBuiltinServers.push(
|
|
877
|
+
otherBuiltinServers.push(entry);
|
|
709
878
|
}
|
|
710
879
|
}
|
|
880
|
+
const activeSessionOnlyServers = activeSessionMatcher.unmatched(query);
|
|
881
|
+
if (this.filteredServers.length === 0 && builtinServers.length === 0 && activeSessionOnlyServers.length === 0) {
|
|
882
|
+
this.emptyContainer.style.display = "flex";
|
|
883
|
+
this.listContainer.style.display = "none";
|
|
884
|
+
if (this.searchQuery.trim()) {
|
|
885
|
+
this.emptyText.textContent = ( localize(6060, "No servers match '{0}'", this.searchQuery));
|
|
886
|
+
this.emptySubtext.textContent = ( localize(6054, "Try a different search term"));
|
|
887
|
+
} else {
|
|
888
|
+
this.emptyText.textContent = ( localize(6061, "No MCP servers configured"));
|
|
889
|
+
this.emptySubtext.textContent = ( localize(6062, "Add an MCP server configuration to get started"));
|
|
890
|
+
}
|
|
891
|
+
} else {
|
|
892
|
+
this.emptyContainer.style.display = "none";
|
|
893
|
+
this.listContainer.style.display = "";
|
|
894
|
+
}
|
|
895
|
+
if (activeSessionOnlyServers.length > 0) {
|
|
896
|
+
const collapsed = ( this.collapsedGroups.has("active-session"));
|
|
897
|
+
entries.push({
|
|
898
|
+
type: "group-header",
|
|
899
|
+
id: "mcp-group-active-session",
|
|
900
|
+
scope: "active-session",
|
|
901
|
+
label: ( localize(6063, "Active Session")),
|
|
902
|
+
icon: mcpServerIcon,
|
|
903
|
+
count: activeSessionOnlyServers.length,
|
|
904
|
+
isFirst,
|
|
905
|
+
description: ( localize(6064, "MCP servers reported by the active session.")),
|
|
906
|
+
collapsed
|
|
907
|
+
});
|
|
908
|
+
if (!collapsed) {
|
|
909
|
+
for (const server of activeSessionOnlyServers) {
|
|
910
|
+
entries.push({
|
|
911
|
+
type: "session-server-item",
|
|
912
|
+
server
|
|
913
|
+
});
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
isFirst = false;
|
|
917
|
+
}
|
|
711
918
|
if (pluginServers.length > 0) {
|
|
712
919
|
const collapsed = ( this.collapsedGroups.has("plugin"));
|
|
713
920
|
entries.push({
|
|
714
921
|
type: "group-header",
|
|
715
922
|
id: "mcp-group-plugin",
|
|
716
923
|
scope: "plugin",
|
|
717
|
-
label: ( localize(
|
|
924
|
+
label: ( localize(6065, "Plugins")),
|
|
718
925
|
icon: pluginIcon,
|
|
719
926
|
count: pluginServers.length,
|
|
720
927
|
isFirst,
|
|
721
|
-
description: ( localize(
|
|
928
|
+
description: ( localize(6066, "MCP servers provided by installed plugins.")),
|
|
722
929
|
collapsed
|
|
723
930
|
});
|
|
724
931
|
if (!collapsed) {
|
|
725
|
-
for (const
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
description: "",
|
|
731
|
-
collectionId: server.collection.id
|
|
732
|
-
});
|
|
932
|
+
for (const {
|
|
933
|
+
server,
|
|
934
|
+
activeSessionServer
|
|
935
|
+
} of pluginServers) {
|
|
936
|
+
entries.push(createBuiltinEntry(server, activeSessionServer));
|
|
733
937
|
}
|
|
734
938
|
}
|
|
735
939
|
isFirst = false;
|
|
@@ -740,22 +944,19 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
740
944
|
type: "group-header",
|
|
741
945
|
id: "mcp-group-extension",
|
|
742
946
|
scope: "extension",
|
|
743
|
-
label: ( localize(
|
|
947
|
+
label: ( localize(6067, "Extensions")),
|
|
744
948
|
icon: extensionIcon,
|
|
745
949
|
count: extensionServers.length,
|
|
746
950
|
isFirst,
|
|
747
|
-
description: ( localize(
|
|
951
|
+
description: ( localize(6068, "MCP servers contributed by installed VS Code extensions.")),
|
|
748
952
|
collapsed
|
|
749
953
|
});
|
|
750
954
|
if (!collapsed) {
|
|
751
|
-
for (const
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
description: "",
|
|
757
|
-
collectionId: server.collection.id
|
|
758
|
-
});
|
|
955
|
+
for (const {
|
|
956
|
+
server,
|
|
957
|
+
activeSessionServer
|
|
958
|
+
} of extensionServers) {
|
|
959
|
+
entries.push(createBuiltinEntry(server, activeSessionServer));
|
|
759
960
|
}
|
|
760
961
|
}
|
|
761
962
|
isFirst = false;
|
|
@@ -766,22 +967,19 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
766
967
|
type: "group-header",
|
|
767
968
|
id: "mcp-group-builtin",
|
|
768
969
|
scope: "builtin",
|
|
769
|
-
label: ( localize(
|
|
970
|
+
label: ( localize(6069, "Built-in")),
|
|
770
971
|
icon: builtinIcon,
|
|
771
972
|
count: otherBuiltinServers.length,
|
|
772
973
|
isFirst,
|
|
773
|
-
description: ( localize(
|
|
974
|
+
description: ( localize(6070, "MCP servers built into VS Code. These are available automatically.")),
|
|
774
975
|
collapsed
|
|
775
976
|
});
|
|
776
977
|
if (!collapsed) {
|
|
777
|
-
for (const
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
description: "",
|
|
783
|
-
collectionId: server.collection.id
|
|
784
|
-
});
|
|
978
|
+
for (const {
|
|
979
|
+
server,
|
|
980
|
+
activeSessionServer
|
|
981
|
+
} of otherBuiltinServers) {
|
|
982
|
+
entries.push(createBuiltinEntry(server, activeSessionServer));
|
|
785
983
|
}
|
|
786
984
|
}
|
|
787
985
|
isFirst = false;
|
|
@@ -789,10 +987,11 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
789
987
|
this.displayEntries = entries;
|
|
790
988
|
this.list.splice(0, this.list.length, this.displayEntries);
|
|
791
989
|
this.filteredBuiltinCount = builtinServers.length;
|
|
990
|
+
this.filteredActiveSessionCount = activeSessionOnlyServers.length;
|
|
792
991
|
this._onDidChangeItemCount.fire(this.itemCount);
|
|
793
992
|
}
|
|
794
993
|
get itemCount() {
|
|
795
|
-
return this.filteredServers.length + this.filteredBuiltinCount;
|
|
994
|
+
return this.filteredServers.length + this.filteredBuiltinCount + this.filteredActiveSessionCount;
|
|
796
995
|
}
|
|
797
996
|
fireItemCount() {
|
|
798
997
|
this._onDidChangeItemCount.fire(this.itemCount);
|
|
@@ -850,10 +1049,31 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
850
1049
|
this.list.setFocus([0]);
|
|
851
1050
|
}
|
|
852
1051
|
}
|
|
1052
|
+
openActiveSessionServerOptions(server) {
|
|
1053
|
+
void this.commandService.executeCommand(
|
|
1054
|
+
McpCommandIds.AgentHostServerOptions,
|
|
1055
|
+
this.customizationHarnessService.activeSessionResource.get(),
|
|
1056
|
+
server.id
|
|
1057
|
+
);
|
|
1058
|
+
}
|
|
853
1059
|
onContextMenu(e) {
|
|
854
1060
|
if (!e.element) {
|
|
855
1061
|
return;
|
|
856
1062
|
}
|
|
1063
|
+
if (e.element.type === "session-server-item") {
|
|
1064
|
+
const disposables = ( new DisposableStore());
|
|
1065
|
+
const optionsAction = disposables.add(getActiveSessionServerOptionsAction(
|
|
1066
|
+
this.commandService,
|
|
1067
|
+
this.customizationHarnessService.activeSessionResource.get(),
|
|
1068
|
+
e.element.server
|
|
1069
|
+
));
|
|
1070
|
+
this.contextMenuService.showContextMenu({
|
|
1071
|
+
getAnchor: () => e.anchor,
|
|
1072
|
+
getActions: () => [optionsAction],
|
|
1073
|
+
onHide: () => disposables.dispose()
|
|
1074
|
+
});
|
|
1075
|
+
return;
|
|
1076
|
+
}
|
|
857
1077
|
if (e.element.type === "builtin-item") {
|
|
858
1078
|
const collectionId = e.element.collectionId;
|
|
859
1079
|
const pluginUriStr = getPluginUriFromCollectionId(collectionId);
|
|
@@ -865,7 +1085,7 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
865
1085
|
return;
|
|
866
1086
|
}
|
|
867
1087
|
const disposables = ( new DisposableStore());
|
|
868
|
-
const showPluginAction = disposables.add(( new Action("mcpServer.showPlugin", ( localize(
|
|
1088
|
+
const showPluginAction = disposables.add(( new Action("mcpServer.showPlugin", ( localize(6071, "Show Plugin")), undefined, true, async () => {
|
|
869
1089
|
const item = {
|
|
870
1090
|
kind: AgentPluginItemKind.Installed,
|
|
871
1091
|
name: plugin.label,
|
|
@@ -875,14 +1095,14 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
875
1095
|
};
|
|
876
1096
|
this._onDidRequestShowPlugin.fire(item);
|
|
877
1097
|
})));
|
|
878
|
-
const uninstallAction = disposables.add(( new Action("mcpServer.uninstallPlugin", ( localize(
|
|
1098
|
+
const uninstallAction = disposables.add(( new Action("mcpServer.uninstallPlugin", ( localize(6072, "Uninstall Plugin")), undefined, true, async () => {
|
|
879
1099
|
const result = await this.dialogService.confirm({
|
|
880
|
-
message: ( localize(
|
|
1100
|
+
message: ( localize(6073, "This MCP server is provided by the plugin '{0}'", plugin.label)),
|
|
881
1101
|
detail: ( localize(
|
|
882
|
-
|
|
1102
|
+
6074,
|
|
883
1103
|
"Individual MCP servers from a plugin cannot be removed separately. Would you like to uninstall the entire plugin?"
|
|
884
1104
|
)),
|
|
885
|
-
primaryButton: ( localize(
|
|
1105
|
+
primaryButton: ( localize(6075, "Uninstall Plugin")),
|
|
886
1106
|
type: "question"
|
|
887
1107
|
});
|
|
888
1108
|
if (result.confirmed) {
|
|
@@ -923,6 +1143,6 @@ let McpListWidget = class McpListWidget extends Disposable {
|
|
|
923
1143
|
});
|
|
924
1144
|
}
|
|
925
1145
|
};
|
|
926
|
-
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)), ( __param(11, IConfigurationService))], McpListWidget));
|
|
1146
|
+
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)), ( __param(11, IConfigurationService)), ( __param(12, ICustomizationHarnessService)), ( __param(13, IAgentHostCustomizationService)), ( __param(14, IAICustomizationWorkspaceService))], McpListWidget));
|
|
927
1147
|
|
|
928
1148
|
export { McpListWidget };
|