@codingame/monaco-vscode-mcp-service-override 21.3.1 → 21.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/package.json +15 -15
  2. package/vscode/src/vs/workbench/contrib/mcp/browser/mcp.contribution.js +3 -3
  3. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpAddContextContribution.js +2 -2
  4. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpCommands.js +54 -54
  5. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpElicitationService.js +17 -17
  6. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpLanguageFeatures.js +18 -18
  7. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpMigration.js +5 -5
  8. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpResourceQuickAccess.js +7 -7
  9. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerActions.js +26 -26
  10. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerEditor.js +34 -34
  11. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerEditorInput.js +2 -2
  12. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerIcons.js +4 -4
  13. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerWidgets.js +5 -5
  14. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServersView.js +8 -8
  15. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpWorkbenchService.js +5 -5
  16. package/vscode/src/vs/workbench/contrib/mcp/common/discovery/extensionMcpDiscovery.js +3 -3
  17. package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAbstract.js +1 -1
  18. package/vscode/src/vs/workbench/contrib/mcp/common/mcpContextKeys.js +4 -4
  19. package/vscode/src/vs/workbench/contrib/mcp/common/mcpLanguageModelToolContribution.js +6 -6
  20. package/vscode/src/vs/workbench/contrib/mcp/common/mcpRegistry.js +12 -12
  21. package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingLog.js +1 -1
  22. package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingService.js +11 -11
  23. package/vscode/src/vs/workbench/contrib/mcp/common/mcpServer.js +9 -9
  24. package/vscode/src/vs/workbench/contrib/mcp/common/mcpServerConnection.js +3 -3
  25. package/vscode/src/vs/workbench/contrib/mcp/common/mcpService.js +3 -3
  26. package/vscode/src/vs/workbench/services/authentication/browser/authenticationMcpService.js +9 -9
@@ -152,7 +152,7 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
152
152
  const details = append(header, $('.details'));
153
153
  const title = append(details, $('.title'));
154
154
  const name = append(title, $('span.name.clickable', { role: 'heading', tabIndex: 0 }));
155
- this._register(this.hoverService.setupManagedHover(getDefaultHoverDelegate('mouse'), name, ( localize(8395, "Extension name"))));
155
+ this._register(this.hoverService.setupManagedHover(getDefaultHoverDelegate('mouse'), name, ( localize(8401, "Extension name"))));
156
156
  const subtitle = append(details, $('.subtitle'));
157
157
  const subTitleEntryContainers = [];
158
158
  const publisherContainer = append(subtitle, $('.subtitle-entry'));
@@ -272,18 +272,18 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
272
272
  this.currentIdentifier = extension.id;
273
273
  }
274
274
  if (extension.readmeUrl || extension.gallery?.readme) {
275
- template.navbar.push(McpServerEditorTab.Readme, ( localize(8396, "Details")), ( localize(8397, "Extension details, rendered from the extension's 'README.md' file")));
275
+ template.navbar.push(McpServerEditorTab.Readme, ( localize(8402, "Details")), ( localize(8403, "Extension details, rendered from the extension's 'README.md' file")));
276
276
  }
277
277
  if (extension.gallery || extension.local?.manifest) {
278
- template.navbar.push(McpServerEditorTab.Manifest, ( localize(8398, "Manifest")), ( localize(8399, "Server manifest details")));
278
+ template.navbar.push(McpServerEditorTab.Manifest, ( localize(8404, "Manifest")), ( localize(8405, "Server manifest details")));
279
279
  }
280
280
  if (extension.config) {
281
- template.navbar.push(McpServerEditorTab.Configuration, ( localize(8400, "Configuration")), ( localize(8401, "Server configuration details")));
281
+ template.navbar.push(McpServerEditorTab.Configuration, ( localize(8406, "Configuration")), ( localize(8407, "Server configuration details")));
282
282
  }
283
283
  this.transientDisposables.add(this.mcpWorkbenchService.onChange(e => {
284
284
  if (e === extension) {
285
285
  if (e.config && !( template.navbar.has(McpServerEditorTab.Configuration))) {
286
- template.navbar.push(McpServerEditorTab.Configuration, ( localize(8400, "Configuration")), ( localize(8401, "Server configuration details")), extension.readmeUrl ? 1 : 0);
286
+ template.navbar.push(McpServerEditorTab.Configuration, ( localize(8406, "Configuration")), ( localize(8407, "Server configuration details")), extension.readmeUrl ? 1 : 0);
287
287
  }
288
288
  if (!e.config && ( template.navbar.has(McpServerEditorTab.Configuration))) {
289
289
  template.navbar.remove(McpServerEditorTab.Configuration);
@@ -482,7 +482,7 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
482
482
  const layout = () => details.classList.toggle('narrow', this.dimension && this.dimension.width < 500);
483
483
  layout();
484
484
  this.contentDisposables.add(toDisposable(insert(this.layoutParticipants, { layout })));
485
- const activeElement = await this.openMarkdown(extension, this.mcpServerReadme.get(), ( localize(8402, "No README available.")), readmeContainer, WebviewIndex.Readme, ( localize(8403, "Readme")), token);
485
+ const activeElement = await this.openMarkdown(extension, this.mcpServerReadme.get(), ( localize(8408, "No README available.")), readmeContainer, WebviewIndex.Readme, ( localize(8409, "Readme")), token);
486
486
  this.renderAdditionalDetails(additionalDetailsContainer, extension);
487
487
  return activeElement;
488
488
  }
@@ -522,7 +522,7 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
522
522
  content.removeChild(content.firstChild);
523
523
  }
524
524
  const noManifestMessage = append(content, $('.no-manifest'));
525
- noManifestMessage.textContent = ( localize(8404, "No manifest available for this MCP server."));
525
+ noManifestMessage.textContent = ( localize(8410, "No manifest available for this MCP server."));
526
526
  }
527
527
  const scrollableContent = ( new DomScrollableElement(content, {}));
528
528
  const layout = () => scrollableContent.scanDomNode();
@@ -535,29 +535,29 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
535
535
  const config = mcpServer.config;
536
536
  if (!config) {
537
537
  const noConfigMessage = append(container, $('.no-config'));
538
- noConfigMessage.textContent = ( localize(8405, "No configuration available for this MCP server."));
538
+ noConfigMessage.textContent = ( localize(8411, "No configuration available for this MCP server."));
539
539
  return;
540
540
  }
541
541
  const nameSection = append(container, $('.config-section'));
542
542
  const nameLabel = append(nameSection, $('.config-label'));
543
- nameLabel.textContent = ( localize(8406, "Name:"));
543
+ nameLabel.textContent = ( localize(8412, "Name:"));
544
544
  const nameValue = append(nameSection, $('.config-value'));
545
545
  nameValue.textContent = mcpServer.name;
546
546
  const typeSection = append(container, $('.config-section'));
547
547
  const typeLabel = append(typeSection, $('.config-label'));
548
- typeLabel.textContent = ( localize(8407, "Type:"));
548
+ typeLabel.textContent = ( localize(8413, "Type:"));
549
549
  const typeValue = append(typeSection, $('.config-value'));
550
550
  typeValue.textContent = config.type;
551
551
  if (config.type === McpServerType.LOCAL) {
552
552
  const commandSection = append(container, $('.config-section'));
553
553
  const commandLabel = append(commandSection, $('.config-label'));
554
- commandLabel.textContent = ( localize(8408, "Command:"));
554
+ commandLabel.textContent = ( localize(8414, "Command:"));
555
555
  const commandValue = append(commandSection, $('code.config-value'));
556
556
  commandValue.textContent = config.command;
557
557
  if (config.args && config.args.length > 0) {
558
558
  const argsSection = append(container, $('.config-section'));
559
559
  const argsLabel = append(argsSection, $('.config-label'));
560
- argsLabel.textContent = ( localize(8409, "Arguments:"));
560
+ argsLabel.textContent = ( localize(8415, "Arguments:"));
561
561
  const argsValue = append(argsSection, $('code.config-value'));
562
562
  argsValue.textContent = config.args.join(' ');
563
563
  }
@@ -565,7 +565,7 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
565
565
  else if (config.type === McpServerType.REMOTE) {
566
566
  const urlSection = append(container, $('.config-section'));
567
567
  const urlLabel = append(urlSection, $('.config-label'));
568
- urlLabel.textContent = ( localize(8410, "URL:"));
568
+ urlLabel.textContent = ( localize(8416, "URL:"));
569
569
  const urlValue = append(urlSection, $('code.config-value'));
570
570
  urlValue.textContent = config.url;
571
571
  }
@@ -582,13 +582,13 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
582
582
  }
583
583
  packages.push(pkg);
584
584
  }
585
- append(container, $('.manifest-section', undefined, $('.manifest-section-title', undefined, ( localize(8411, "Packages")))));
585
+ append(container, $('.manifest-section', undefined, $('.manifest-section-title', undefined, ( localize(8417, "Packages")))));
586
586
  for (const [packageType, packages] of packagesByType) {
587
587
  const packageSection = append(container, $('.package-section', undefined, $('.package-section-title', undefined, packageType.toUpperCase())));
588
588
  const packagesGrid = append(packageSection, $('.package-details'));
589
589
  for (let i = 0; i < packages.length; i++) {
590
590
  const pkg = packages[i];
591
- append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8412, "Package:"))), $('.detail-value', undefined, pkg.identifier)));
591
+ append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8418, "Package:"))), $('.detail-value', undefined, pkg.identifier)));
592
592
  if (pkg.package_arguments && pkg.package_arguments.length > 0) {
593
593
  const argStrings = [];
594
594
  for (const arg of pkg.package_arguments) {
@@ -602,7 +602,7 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
602
602
  argStrings.push(arg.value ?? arg.value_hint);
603
603
  }
604
604
  }
605
- append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8413, "Package Arguments:"))), $('code.detail-value', undefined, argStrings.join(' '))));
605
+ append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8419, "Package Arguments:"))), $('code.detail-value', undefined, argStrings.join(' '))));
606
606
  }
607
607
  if (pkg.runtime_arguments && pkg.runtime_arguments.length > 0) {
608
608
  const argStrings = [];
@@ -617,11 +617,11 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
617
617
  argStrings.push(arg.value ?? arg.value_hint);
618
618
  }
619
619
  }
620
- append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8414, "Runtime Arguments:"))), $('code.detail-value', undefined, argStrings.join(' '))));
620
+ append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8420, "Runtime Arguments:"))), $('code.detail-value', undefined, argStrings.join(' '))));
621
621
  }
622
622
  if (pkg.environment_variables && pkg.environment_variables.length > 0) {
623
623
  const envStrings = ( pkg.environment_variables.map((envVar) => `${envVar.name}=${envVar.value}`));
624
- append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8415, "Environment Variables:"))), $('code.detail-value', undefined, envStrings.join(' '))));
624
+ append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8421, "Environment Variables:"))), $('code.detail-value', undefined, envStrings.join(' '))));
625
625
  }
626
626
  if (i < packages.length - 1) {
627
627
  append(packagesGrid, $('.package-separator'));
@@ -630,16 +630,16 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
630
630
  }
631
631
  }
632
632
  if (manifest.remotes && manifest.remotes.length > 0) {
633
- const packageSection = append(container, $('.package-section', undefined, $('.package-section-title', undefined, ( localize(8416, "Remote")).toLocaleUpperCase())));
633
+ const packageSection = append(container, $('.package-section', undefined, $('.package-section-title', undefined, ( localize(8422, "Remote")).toLocaleUpperCase())));
634
634
  for (const remote of manifest.remotes) {
635
635
  const packagesGrid = append(packageSection, $('.package-details'));
636
- append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8410, "URL:"))), $('.detail-value', undefined, remote.url)));
636
+ append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8416, "URL:"))), $('.detail-value', undefined, remote.url)));
637
637
  if (remote.transport_type) {
638
- append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8417, "Transport:"))), $('.detail-value', undefined, remote.transport_type)));
638
+ append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8423, "Transport:"))), $('.detail-value', undefined, remote.transport_type)));
639
639
  }
640
640
  if (remote.headers && remote.headers.length > 0) {
641
641
  const headerStrings = ( remote.headers.map((header) => `${header.name}: ${header.value}`));
642
- append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8418, "Headers:"))), $('.detail-value', undefined, headerStrings.join(', '))));
642
+ append(packagesGrid, $('.package-detail', undefined, $('.detail-label', undefined, ( localize(8424, "Headers:"))), $('.detail-value', undefined, headerStrings.join(', '))));
643
643
  }
644
644
  }
645
645
  }
@@ -711,7 +711,7 @@ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
711
711
  renderTopics(container, extension) {
712
712
  if (extension.gallery?.topics?.length) {
713
713
  const categoriesContainer = append(container, $('.categories-container.additional-details-element'));
714
- append(categoriesContainer, $('.additional-details-title', undefined, ( localize(8419, "Categories"))));
714
+ append(categoriesContainer, $('.additional-details-title', undefined, ( localize(8425, "Categories"))));
715
715
  const categoriesElement = append(categoriesContainer, $('.categories'));
716
716
  for (const category of extension.gallery.topics) {
717
717
  append(categoriesElement, $('span.category', { tabindex: '0' }, category));
@@ -722,7 +722,7 @@ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
722
722
  const resources = [];
723
723
  if (extension.repository) {
724
724
  try {
725
- resources.push([( localize(8420, "Repository")), ( URI.parse(extension.repository))]);
725
+ resources.push([( localize(8426, "Repository")), ( URI.parse(extension.repository))]);
726
726
  }
727
727
  catch (error) { }
728
728
  }
@@ -731,7 +731,7 @@ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
731
731
  }
732
732
  if (resources.length) {
733
733
  const extensionResourcesContainer = append(container, $('.resources-container.additional-details-element'));
734
- append(extensionResourcesContainer, $('.additional-details-title', undefined, ( localize(8421, "Resources"))));
734
+ append(extensionResourcesContainer, $('.additional-details-title', undefined, ( localize(8427, "Resources"))));
735
735
  const resourcesElement = append(extensionResourcesContainer, $('.resources'));
736
736
  for (const [label, uri] of resources) {
737
737
  const resource = append(resourcesElement, $('a.resource', { tabindex: '0' }, label));
@@ -742,33 +742,33 @@ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
742
742
  }
743
743
  renderInstallInfo(container, extension) {
744
744
  const installInfoContainer = append(container, $('.more-info-container.additional-details-element'));
745
- append(installInfoContainer, $('.additional-details-title', undefined, ( localize(8422, "Installation"))));
745
+ append(installInfoContainer, $('.additional-details-title', undefined, ( localize(8428, "Installation"))));
746
746
  const installInfo = append(installInfoContainer, $('.more-info'));
747
- append(installInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8423, "Identifier"))), $('code', undefined, extension.name)));
747
+ append(installInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8429, "Identifier"))), $('code', undefined, extension.name)));
748
748
  if (extension.version) {
749
- append(installInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8424, "Version"))), $('code', undefined, extension.version)));
749
+ append(installInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8430, "Version"))), $('code', undefined, extension.version)));
750
750
  }
751
751
  }
752
752
  renderMarketplaceInfo(container, extension) {
753
753
  const gallery = extension.gallery;
754
754
  const moreInfoContainer = append(container, $('.more-info-container.additional-details-element'));
755
- append(moreInfoContainer, $('.additional-details-title', undefined, ( localize(8425, "Marketplace"))));
755
+ append(moreInfoContainer, $('.additional-details-title', undefined, ( localize(8431, "Marketplace"))));
756
756
  const moreInfo = append(moreInfoContainer, $('.more-info'));
757
757
  if (gallery) {
758
758
  if (!extension.local) {
759
- append(moreInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8423, "Identifier"))), $('code', undefined, extension.name)));
759
+ append(moreInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8429, "Identifier"))), $('code', undefined, extension.name)));
760
760
  if (gallery.version) {
761
- append(moreInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8424, "Version"))), $('code', undefined, gallery.version)));
761
+ append(moreInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8430, "Version"))), $('code', undefined, gallery.version)));
762
762
  }
763
763
  }
764
764
  if (gallery.publishDate) {
765
- append(moreInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8426, "Published"))), $('div', undefined, toDateString(( new Date(gallery.publishDate))))));
765
+ append(moreInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8432, "Published"))), $('div', undefined, toDateString(( new Date(gallery.publishDate))))));
766
766
  }
767
767
  if (gallery.releaseDate) {
768
- append(moreInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8427, "Released"))), $('div', undefined, toDateString(( new Date(gallery.releaseDate))))));
768
+ append(moreInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8433, "Released"))), $('div', undefined, toDateString(( new Date(gallery.releaseDate))))));
769
769
  }
770
770
  if (gallery.lastUpdated) {
771
- append(moreInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8428, "Last Released"))), $('div', undefined, toDateString(( new Date(gallery.lastUpdated))))));
771
+ append(moreInfo, $('.more-info-entry', undefined, $('div.more-info-entry-name', undefined, ( localize(8434, "Last Released"))), $('div', undefined, toDateString(( new Date(gallery.lastUpdated))))));
772
772
  }
773
773
  }
774
774
  }
@@ -8,7 +8,7 @@ import { join } from '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
8
8
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
9
9
  import { registerIcon } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/iconRegistry';
10
10
 
11
- const MCPServerEditorIcon = registerIcon('mcp-server-editor-icon', Codicon.mcp, ( localize(8429, 'Icon of the MCP Server editor.')));
11
+ const MCPServerEditorIcon = registerIcon('mcp-server-editor-icon', Codicon.mcp, ( localize(8435, 'Icon of the MCP Server editor.')));
12
12
  class McpServerEditorInput extends EditorInput {
13
13
  static { this.ID = 'workbench.mcpServer.input2'; }
14
14
  get typeId() {
@@ -29,7 +29,7 @@ class McpServerEditorInput extends EditorInput {
29
29
  }
30
30
  get mcpServer() { return this._mcpServer; }
31
31
  getName() {
32
- return localize(8430, "MCP Server: {0}", this._mcpServer.label);
32
+ return localize(8436, "MCP Server: {0}", this._mcpServer.label);
33
33
  }
34
34
  getIcon() {
35
35
  return MCPServerEditorIcon;
@@ -3,9 +3,9 @@ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codi
3
3
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
4
  import { registerIcon } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/iconRegistry';
5
5
 
6
- const mcpServerIcon = registerIcon('mcp-server', Codicon.mcp, ( localize(8431, 'Icon used for the MCP server.')));
7
- const mcpServerRemoteIcon = registerIcon('mcp-server-remote', Codicon.remote, ( localize(8432, 'Icon to indicate that an MCP server is for the remote user scope.')));
8
- const mcpServerWorkspaceIcon = registerIcon('mcp-server-workspace', Codicon.rootFolder, ( localize(8433, 'Icon to indicate that an MCP server is for the workspace scope.')));
9
- const mcpStarredIcon = registerIcon('mcp-server-starred', Codicon.starFull, ( localize(8434, 'Icon shown along with the starred status.')));
6
+ const mcpServerIcon = registerIcon('mcp-server', Codicon.mcp, ( localize(8437, 'Icon used for the MCP server.')));
7
+ const mcpServerRemoteIcon = registerIcon('mcp-server-remote', Codicon.remote, ( localize(8438, 'Icon to indicate that an MCP server is for the remote user scope.')));
8
+ const mcpServerWorkspaceIcon = registerIcon('mcp-server-workspace', Codicon.rootFolder, ( localize(8439, 'Icon to indicate that an MCP server is for the workspace scope.')));
9
+ const mcpStarredIcon = registerIcon('mcp-server-starred', Codicon.starFull, ( localize(8440, 'Icon shown along with the starred status.')));
10
10
 
11
11
  export { mcpServerIcon, mcpServerRemoteIcon, mcpServerWorkspaceIcon, mcpStarredIcon };
@@ -153,7 +153,7 @@ let PublisherWidget = class PublisherWidget extends McpServerWidget {
153
153
  else {
154
154
  this.element.setAttribute('role', 'button');
155
155
  this.element.tabIndex = 0;
156
- this.containerHover = this.disposables.add(this.hoverService.setupManagedHover(getDefaultHoverDelegate('mouse'), this.element, ( localize(8435, "Publisher ({0})", this.mcpServer.publisherDisplayName))));
156
+ this.containerHover = this.disposables.add(this.hoverService.setupManagedHover(getDefaultHoverDelegate('mouse'), this.element, ( localize(8441, "Publisher ({0})", this.mcpServer.publisherDisplayName))));
157
157
  append(this.element, publisherDisplayName);
158
158
  if (this.mcpServer.gallery?.publisherDomain?.verified) {
159
159
  append(this.element, verifiedPublisher);
@@ -161,7 +161,7 @@ let PublisherWidget = class PublisherWidget extends McpServerWidget {
161
161
  verifiedPublisher.tabIndex = 0;
162
162
  verifiedPublisher.setAttribute('role', 'button');
163
163
  this.containerHover.update(( localize(
164
- 8436,
164
+ 8442,
165
165
  "This publisher has verified ownership of {0}",
166
166
  this.mcpServer.gallery?.publisherDomain.link
167
167
  )));
@@ -268,12 +268,12 @@ let McpServerHoverWidget = class McpServerHoverWidget extends McpServerWidget {
268
268
  let addSeparator = false;
269
269
  if (this.mcpServer.local?.scope === LocalMcpServerScope.Workspace) {
270
270
  markdown.appendMarkdown(`$(${mcpServerWorkspaceIcon.id})&nbsp;`);
271
- markdown.appendMarkdown(( localize(8437, "Workspace MCP Server")));
271
+ markdown.appendMarkdown(( localize(8443, "Workspace MCP Server")));
272
272
  addSeparator = true;
273
273
  }
274
274
  if (this.mcpServer.local?.scope === LocalMcpServerScope.RemoteUser) {
275
275
  markdown.appendMarkdown(`$(${mcpServerRemoteIcon.id})&nbsp;`);
276
- markdown.appendMarkdown(( localize(8438, "Remote MCP Server")));
276
+ markdown.appendMarkdown(( localize(8444, "Remote MCP Server")));
277
277
  addSeparator = true;
278
278
  }
279
279
  if (this.mcpServer.installState === McpServerInstallState.Installed) {
@@ -392,7 +392,7 @@ let McpServerStatusWidget = class McpServerStatusWidget extends McpServerWidget
392
392
  McpServerStatusWidget = ( __decorate([
393
393
  ( __param(2, IOpenerService))
394
394
  ], McpServerStatusWidget));
395
- const mcpStarredIconColor = registerColor('mcpIcon.starForeground', { light: '#DF6100', dark: '#FF8E00', hcDark: '#FF8E00', hcLight: textLinkForeground }, ( localize(8439, "The icon color for mcp starred.")), false);
395
+ const mcpStarredIconColor = registerColor('mcpIcon.starForeground', { light: '#DF6100', dark: '#FF8E00', hcDark: '#FF8E00', hcLight: textLinkForeground }, ( localize(8445, "The icon color for mcp starred.")), false);
396
396
  registerThemingParticipant((theme, collector) => {
397
397
  const mcpStarredIconColorValue = theme.getColor(mcpStarredIconColor);
398
398
  if (mcpStarredIconColorValue) {
@@ -93,7 +93,7 @@ let McpServersListView = class McpServersListView extends AbstractExtensionsList
93
93
  return mcpServer?.label ?? '';
94
94
  },
95
95
  getWidgetAriaLabel() {
96
- return localize(8440, "MCP Servers");
96
+ return localize(8446, "MCP Servers");
97
97
  }
98
98
  },
99
99
  overrideStyles: getLocationBasedViewColors(this.viewDescriptorService.getViewLocationById(this.id)).listOverrideStyles,
@@ -180,10 +180,10 @@ let McpServersListView = class McpServersListView extends AbstractExtensionsList
180
180
  const iconElement = append(iconContainer, $('span'));
181
181
  iconElement.className = ThemeIcon.asClassName(mcpServerIcon);
182
182
  const title = append(welcomeContent, $('.mcp-welcome-title'));
183
- title.textContent = ( localize(8441, "MCP Servers"));
183
+ title.textContent = ( localize(8447, "MCP Servers"));
184
184
  const description = append(welcomeContent, $('.mcp-welcome-description'));
185
185
  const markdownResult = this._register(renderMarkdown(( new MarkdownString(( localize(
186
- 8442,
186
+ 8448,
187
187
  "Extend agent mode by installing MCP servers to bring extra tools for connecting to databases, invoking APIs and performing specialized tasks."
188
188
  )), { isTrusted: true })), {
189
189
  actionHandler: (content) => {
@@ -193,10 +193,10 @@ let McpServersListView = class McpServersListView extends AbstractExtensionsList
193
193
  description.appendChild(markdownResult.element);
194
194
  const buttonContainer = append(welcomeContent, $('.mcp-welcome-button-container'));
195
195
  const button = this._register(( new Button(buttonContainer, {
196
- title: ( localize(8443, "Browse MCP Servers")),
196
+ title: ( localize(8449, "Browse MCP Servers")),
197
197
  ...defaultButtonStyles
198
198
  })));
199
- button.label = ( localize(8443, "Browse MCP Servers"));
199
+ button.label = ( localize(8449, "Browse MCP Servers"));
200
200
  this._register(button.onDidClick(() => this.openerService.open(( URI.parse(
201
201
  this.productService.quality === 'insider' ? 'https://code.visualstudio.com/insider/mcp' : 'https://code.visualstudio.com/mcp'
202
202
  )))));
@@ -371,7 +371,7 @@ class McpServersViewsContribution extends Disposable {
371
371
  ( Registry.as(Extensions.ViewsRegistry)).registerViews([
372
372
  {
373
373
  id: InstalledMcpServersViewId,
374
- name: ( localize2(8444, "MCP Servers - Installed")),
374
+ name: ( localize2(8450, "MCP Servers - Installed")),
375
375
  ctorDescriptor: ( new SyncDescriptor(McpServersListView, [{ showWelcomeOnEmpty: false }])),
376
376
  when: ( ContextKeyExpr.and(DefaultViewsContext, HasInstalledMcpServersContext)),
377
377
  weight: 40,
@@ -380,7 +380,7 @@ class McpServersViewsContribution extends Disposable {
380
380
  },
381
381
  {
382
382
  id: 'workbench.views.mcp.default.marketplace',
383
- name: ( localize2(8445, "MCP Servers")),
383
+ name: ( localize2(8451, "MCP Servers")),
384
384
  ctorDescriptor: ( new SyncDescriptor(DefaultBrowseMcpServersView, [{ showWelcomeOnEmpty: true }])),
385
385
  when: ( ContextKeyExpr.and(DefaultViewsContext, ( HasInstalledMcpServersContext.toNegated()), ( ChatContextKeys.Setup.hidden.negate()))),
386
386
  weight: 40,
@@ -389,7 +389,7 @@ class McpServersViewsContribution extends Disposable {
389
389
  },
390
390
  {
391
391
  id: 'workbench.views.mcp.marketplace',
392
- name: ( localize2(8445, "MCP Servers")),
392
+ name: ( localize2(8451, "MCP Servers")),
393
393
  ctorDescriptor: ( new SyncDescriptor(McpServersListView, [{ showWelcomeOnEmpty: true }])),
394
394
  when: ( ContextKeyExpr.and(SearchMcpServersContext)),
395
395
  }
@@ -352,7 +352,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
352
352
  const existing = result.get(server.name);
353
353
  if (existing) {
354
354
  this.logService.warn(( localize(
355
- 8446,
355
+ 8452,
356
356
  "Overwriting mcp server '{0}' from {1} with {2}.",
357
357
  server.name,
358
358
  server.mcpResource.path,
@@ -365,7 +365,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
365
365
  const existing = result.get(server.name);
366
366
  if (existing) {
367
367
  this.logService.warn(( localize(
368
- 8446,
368
+ 8452,
369
369
  "Overwriting mcp server '{0}' from {1} with {2}.",
370
370
  server.name,
371
371
  server.mcpResource.path,
@@ -378,7 +378,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
378
378
  }
379
379
  canInstall(mcpServer) {
380
380
  if (!(mcpServer instanceof McpWorkbenchServer)) {
381
- return ( new MarkdownString()).appendText(( localize(8447, "The provided object is not an mcp server.")));
381
+ return ( new MarkdownString()).appendText(( localize(8453, "The provided object is not an mcp server.")));
382
382
  }
383
383
  if (mcpServer.gallery) {
384
384
  const result = this.mcpManagementService.canInstall(mcpServer.gallery);
@@ -395,7 +395,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
395
395
  return result;
396
396
  }
397
397
  return ( new MarkdownString()).appendText(( localize(
398
- 8448,
398
+ 8454,
399
399
  "Cannot install the '{0}' MCP Server because it is not available in this setup.",
400
400
  mcpServer.label
401
401
  )));
@@ -492,7 +492,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
492
492
  id: USER_CONFIG_ID,
493
493
  key: 'userLocalValue',
494
494
  target: ConfigurationTarget.USER_LOCAL,
495
- label: ( localize(8449, 'Global in {0}', this.productService.nameShort)),
495
+ label: ( localize(8455, 'Global in {0}', this.productService.nameShort)),
496
496
  scope: StorageScope.PROFILE,
497
497
  order: McpCollectionSortOrder.User,
498
498
  uri: mcpResource,
@@ -99,16 +99,16 @@ let ExtensionMcpDiscovery = ExtensionMcpDiscovery_1 = class ExtensionMcpDiscover
99
99
  }
100
100
  static _validate(user) {
101
101
  if (!Array.isArray(user.value)) {
102
- user.collector.error(( localize(8450, "Expected an array of MCP collections")));
102
+ user.collector.error(( localize(8456, "Expected an array of MCP collections")));
103
103
  return false;
104
104
  }
105
105
  for (const contribution of user.value) {
106
106
  if (typeof contribution.id !== 'string' || isFalsyOrWhitespace(contribution.id)) {
107
- user.collector.error(( localize(8451, "Expected 'id' to be a non-empty string.")));
107
+ user.collector.error(( localize(8457, "Expected 'id' to be a non-empty string.")));
108
108
  return false;
109
109
  }
110
110
  if (typeof contribution.label !== 'string' || isFalsyOrWhitespace(contribution.label)) {
111
- user.collector.error(( localize(8452, "Expected 'label' to be a non-empty string.")));
111
+ user.collector.error(( localize(8458, "Expected 'label' to be a non-empty string.")));
112
112
  return false;
113
113
  }
114
114
  }
@@ -83,7 +83,7 @@ let NativeFilesystemMcpDiscovery = class NativeFilesystemMcpDiscovery extends Fi
83
83
  this.suffix = '';
84
84
  if (remoteAuthority) {
85
85
  this.suffix = ' ' + ( localize(
86
- 8453,
86
+ 8459,
87
87
  ' on {0}',
88
88
  labelService.getHostLabel(Schemas.vscodeRemote, remoteAuthority)
89
89
  ));
@@ -15,19 +15,19 @@ var McpContextKeys;
15
15
  McpContextKeys.serverCount = ( new RawContextKey(
16
16
  'mcp.serverCount',
17
17
  undefined,
18
- { type: 'number', description: ( localize(8484, "Context key that has the number of registered MCP servers")) }
18
+ { type: 'number', description: ( localize(8490, "Context key that has the number of registered MCP servers")) }
19
19
  ));
20
20
  McpContextKeys.hasUnknownTools = ( new RawContextKey(
21
21
  'mcp.hasUnknownTools',
22
22
  undefined,
23
- { type: 'boolean', description: ( localize(8485, "Indicates whether there are MCP servers with unknown tools.")) }
23
+ { type: 'boolean', description: ( localize(8491, "Indicates whether there are MCP servers with unknown tools.")) }
24
24
  ));
25
25
  McpContextKeys.hasServersWithErrors = ( new RawContextKey(
26
26
  'mcp.hasServersWithErrors',
27
27
  undefined,
28
- { type: 'boolean', description: ( localize(8486, "Indicates whether there are any MCP servers with errors.")) }
28
+ { type: 'boolean', description: ( localize(8492, "Indicates whether there are any MCP servers with errors.")) }
29
29
  ));
30
- McpContextKeys.toolsCount = ( new RawContextKey('mcp.toolsCount', undefined, { type: 'number', description: ( localize(8487, "Context key that has the number of registered MCP tools")) }));
30
+ McpContextKeys.toolsCount = ( new RawContextKey('mcp.toolsCount', undefined, { type: 'number', description: ( localize(8493, "Context key that has the number of registered MCP tools")) }));
31
31
  })(McpContextKeys || (McpContextKeys = {}));
32
32
  let McpContextKeysController = class McpContextKeysController extends Disposable {
33
33
  static { this.ID = 'workbench.contrib.mcp.contextKey'; }
@@ -50,7 +50,7 @@ let McpLanguageModelToolContribution = class McpLanguageModelToolContribution ex
50
50
  const source = mcpServerToSourceData(server);
51
51
  const toolSet = store.add(this._toolsService.createToolSet(source, server.definition.id, server.definition.label, {
52
52
  icon: Codicon.mcp,
53
- description: ( localize(8488, "{0}: All Tools", server.definition.label))
53
+ description: ( localize(8494, "{0}: All Tools", server.definition.label))
54
54
  }));
55
55
  return { toolSet, source };
56
56
  }));
@@ -154,7 +154,7 @@ let McpToolImplementation = class McpToolImplementation {
154
154
  const tool = this._tool;
155
155
  const server = this._server;
156
156
  const mcpToolWarning = ( localize(
157
- 8489,
157
+ 8495,
158
158
  "Note that MCP servers or malicious conversation content may attempt to misuse '{0}' through tools.",
159
159
  this._productService.nameShort
160
160
  ));
@@ -162,14 +162,14 @@ let McpToolImplementation = class McpToolImplementation {
162
162
  const title = tool.definition.annotations?.title || tool.definition.title || ('`' + tool.definition.name + '`');
163
163
  return {
164
164
  confirmationMessages: needsConfirmation ? {
165
- title: ( new MarkdownString(( localize(8490, "Run {0}", title)))),
165
+ title: ( new MarkdownString(( localize(8496, "Run {0}", title)))),
166
166
  message: ( new MarkdownString(tool.definition.description, { supportThemeIcons: true })),
167
167
  disclaimer: mcpToolWarning,
168
168
  allowAutoConfirm: true,
169
169
  } : undefined,
170
- invocationMessage: ( new MarkdownString(( localize(8491, "Running {0}", title)))),
171
- pastTenseMessage: ( new MarkdownString(( localize(8492, "Ran {0} ", title)))),
172
- originMessage: ( localize(8493, "{0} (MCP Server)", server.definition.label)),
170
+ invocationMessage: ( new MarkdownString(( localize(8497, "Running {0}", title)))),
171
+ pastTenseMessage: ( new MarkdownString(( localize(8498, "Ran {0} ", title)))),
172
+ originMessage: ( localize(8499, "{0} (MCP Server)", server.definition.label)),
173
173
  toolSpecificData: {
174
174
  kind: 'input',
175
175
  rawInput: context.parameters
@@ -245,7 +245,7 @@ let McpRegistry = class McpRegistry extends Disposable {
245
245
  const originURI = r.definition.presentation?.origin?.uri || r.collection.presentation?.origin;
246
246
  let labelWithOrigin = originURI ? `[\`${r.definition.label}\`](${originURI})` : '`' + r.definition.label + '`';
247
247
  if (r.collection.source instanceof ExtensionIdentifier) {
248
- labelWithOrigin += ` (${( localize(8494, 'from {0}', r.collection.source.value))})`;
248
+ labelWithOrigin += ` (${( localize(8500, 'from {0}', r.collection.source.value))})`;
249
249
  }
250
250
  return labelWithOrigin;
251
251
  }
@@ -253,12 +253,12 @@ let McpRegistry = class McpRegistry extends Disposable {
253
253
  const def = definitions[0];
254
254
  const originURI = def.definition.presentation?.origin?.uri;
255
255
  const { result } = await this._dialogService.prompt({
256
- message: ( localize(8495, 'Trust and run MCP server {0}?', def.definition.label)),
256
+ message: ( localize(8501, 'Trust and run MCP server {0}?', def.definition.label)),
257
257
  custom: {
258
258
  icon: Codicon.shield,
259
259
  markdownDetails: [{
260
260
  markdown: ( new MarkdownString(( localize(
261
- 8496,
261
+ 8502,
262
262
  'The MCP server {0} was updated. MCP servers may add context to your chat session and lead to unexpected behavior. Do you want to trust and run this server?',
263
263
  labelFor(def)
264
264
  )))),
@@ -269,20 +269,20 @@ let McpRegistry = class McpRegistry extends Disposable {
269
269
  }]
270
270
  },
271
271
  buttons: [
272
- { label: ( localize(8497, 'Trust')), run: () => true },
273
- { label: ( localize(8498, 'Do not trust')), run: () => false }
272
+ { label: ( localize(8503, 'Trust')), run: () => true },
273
+ { label: ( localize(8504, 'Do not trust')), run: () => false }
274
274
  ],
275
275
  });
276
276
  return result === undefined ? undefined : (result ? [def.definition.id] : []);
277
277
  }
278
278
  const list = ( definitions.map(d => `- ${labelFor(d)}`)).join('\n');
279
279
  const { result } = await this._dialogService.prompt({
280
- message: ( localize(8499, 'Trust and run {0} MCP servers?', definitions.length)),
280
+ message: ( localize(8505, 'Trust and run {0} MCP servers?', definitions.length)),
281
281
  custom: {
282
282
  icon: Codicon.shield,
283
283
  markdownDetails: [{
284
284
  markdown: ( new MarkdownString(( localize(
285
- 8500,
285
+ 8506,
286
286
  'Several updated MCP servers were discovered:\n\n{0}\n\n MCP servers may add context to your chat session and lead to unexpected behavior. Do you want to trust and run these server?',
287
287
  list
288
288
  )))),
@@ -293,9 +293,9 @@ let McpRegistry = class McpRegistry extends Disposable {
293
293
  }]
294
294
  },
295
295
  buttons: [
296
- { label: ( localize(8497, 'Trust')), run: () => 'all' },
297
- { label: ( localize(8501, 'Pick Trusted')), run: () => 'pick' },
298
- { label: ( localize(8498, 'Do not trust')), run: () => 'none' },
296
+ { label: ( localize(8503, 'Trust')), run: () => 'all' },
297
+ { label: ( localize(8507, 'Pick Trusted')), run: () => 'pick' },
298
+ { label: ( localize(8504, 'Do not trust')), run: () => 'none' },
299
299
  ],
300
300
  });
301
301
  if (result === undefined) {
@@ -422,7 +422,7 @@ let McpRegistry = class McpRegistry extends Disposable {
422
422
  catch (e) {
423
423
  this._notificationService.notify({
424
424
  severity: Severity.Error,
425
- message: ( localize(8502, 'Error starting {0}: {1}', definition.label, String(e))),
425
+ message: ( localize(8508, 'Error starting {0}: {1}', definition.label, String(e))),
426
426
  actions: {
427
427
  primary: collection.presentation?.origin && [
428
428
  {
@@ -430,7 +430,7 @@ let McpRegistry = class McpRegistry extends Disposable {
430
430
  class: undefined,
431
431
  enabled: true,
432
432
  tooltip: '',
433
- label: ( localize(8503, 'Open Configuration')),
433
+ label: ( localize(8509, 'Open Configuration')),
434
434
  run: () => this._editorService.openEditor({
435
435
  resource: collection.presentation.origin,
436
436
  options: { selection: definition.presentation?.origin?.range }
@@ -41,7 +41,7 @@ let McpSamplingLog = class McpSamplingLog extends Disposable {
41
41
  }
42
42
  const parts = [];
43
43
  const total = record.bins.reduce((sum, value) => sum + value, 0);
44
- parts.push(( localize(8504, '{0} total requests in the last 7 days.', total)));
44
+ parts.push(( localize(8510, '{0} total requests in the last 7 days.', total)));
45
45
  parts.push(this._formatRecentRequests(record));
46
46
  return parts.join('\n');
47
47
  }