@codingame/monaco-vscode-mcp-service-override 33.0.7 → 34.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/package.json +3 -3
  2. package/vscode/src/vs/platform/mcp/common/allowedMcpServersService.js +1 -1
  3. package/vscode/src/vs/platform/mcp/common/mcpGalleryService.js +2 -2
  4. package/vscode/src/vs/workbench/contrib/mcp/browser/mcp.contribution.js +5 -4
  5. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpAddContextContribution.js +2 -2
  6. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpCommands.d.ts +4 -0
  7. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpCommands.js +150 -63
  8. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpElicitationService.js +25 -25
  9. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpLanguageFeatures.d.ts +3 -1
  10. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpLanguageFeatures.js +86 -25
  11. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpMigration.js +4 -4
  12. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpResourceQuickAccess.js +8 -8
  13. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerEditor.js +37 -37
  14. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerEditorInput.js +2 -2
  15. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerIcons.js +5 -5
  16. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerWidgets.js +9 -9
  17. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServersView.js +17 -17
  18. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpWorkbenchService.js +34 -11
  19. package/vscode/src/vs/workbench/contrib/mcp/common/discovery/extensionMcpDiscovery.js +4 -4
  20. package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAbstract.js +1 -1
  21. package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAdapters.js +1 -1
  22. package/vscode/src/vs/workbench/contrib/mcp/common/mcpContextKeys.js +4 -4
  23. package/vscode/src/vs/workbench/contrib/mcp/common/mcpLanguageModelToolContribution.js +6 -6
  24. package/vscode/src/vs/workbench/contrib/mcp/common/mcpRegistry.js +13 -13
  25. package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingLog.js +1 -1
  26. package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingService.js +11 -11
  27. package/vscode/src/vs/workbench/contrib/mcp/common/mcpSandboxService.js +15 -4
  28. package/vscode/src/vs/workbench/contrib/mcp/common/mcpServerConnection.js +3 -3
  29. package/vscode/src/vs/workbench/contrib/mcp/common/mcpService.d.ts +1 -0
  30. package/vscode/src/vs/workbench/contrib/mcp/common/mcpService.js +7 -25
  31. package/vscode/src/vs/workbench/services/authentication/browser/authenticationMcpAccessService.d.ts +15 -0
  32. package/vscode/src/vs/workbench/services/authentication/browser/authenticationMcpAccessService.js +26 -1
  33. package/vscode/src/vs/workbench/services/authentication/browser/authenticationMcpService.js +9 -9
@@ -192,7 +192,7 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
192
192
  tabIndex: 0
193
193
  }));
194
194
  this._register(
195
- this.hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), name, ( localize(11205, "Extension name")))
195
+ this.hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), name, ( localize(11385, "Extension name")))
196
196
  );
197
197
  const subtitle = append(details, $(".subtitle"));
198
198
  const subTitleEntryContainers = [];
@@ -352,18 +352,18 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
352
352
  this.currentIdentifier = extension.id;
353
353
  }
354
354
  if (extension.readmeUrl || extension.gallery?.readme) {
355
- template.navbar.push(McpServerEditorTab.Readme, ( localize(11206, "Details")), ( localize(11207, "Extension details, rendered from the extension's 'README.md' file")));
355
+ template.navbar.push(McpServerEditorTab.Readme, ( localize(11386, "Details")), ( localize(11387, "Extension details, rendered from the extension's 'README.md' file")));
356
356
  }
357
357
  if (extension.gallery || extension.local?.manifest) {
358
- template.navbar.push(McpServerEditorTab.Manifest, ( localize(11208, "Manifest")), ( localize(11209, "Server manifest details")));
358
+ template.navbar.push(McpServerEditorTab.Manifest, ( localize(11388, "Manifest")), ( localize(11389, "Server manifest details")));
359
359
  }
360
360
  if (extension.config) {
361
- template.navbar.push(McpServerEditorTab.Configuration, ( localize(11210, "Configuration")), ( localize(11211, "Server configuration details")));
361
+ template.navbar.push(McpServerEditorTab.Configuration, ( localize(11390, "Configuration")), ( localize(11391, "Server configuration details")));
362
362
  }
363
363
  this.transientDisposables.add(this.mcpWorkbenchService.onChange(e => {
364
364
  if (e === extension) {
365
365
  if (e.config && !( template.navbar.has(McpServerEditorTab.Configuration))) {
366
- template.navbar.push(McpServerEditorTab.Configuration, ( localize(11210, "Configuration")), ( localize(11211, "Server configuration details")), extension.readmeUrl ? 1 : 0);
366
+ template.navbar.push(McpServerEditorTab.Configuration, ( localize(11390, "Configuration")), ( localize(11391, "Server configuration details")), extension.readmeUrl ? 1 : 0);
367
367
  }
368
368
  if (!e.config && ( template.navbar.has(McpServerEditorTab.Configuration))) {
369
369
  template.navbar.remove(McpServerEditorTab.Configuration);
@@ -591,7 +591,7 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
591
591
  this.contentDisposables.add(toDisposable(insert(this.layoutParticipants, {
592
592
  layout
593
593
  })));
594
- const activeElement = await this.openMarkdown(extension, this.mcpServerReadme.get(), ( localize(11212, "No README available.")), readmeContainer, WebviewIndex.Readme, ( localize(11213, "Readme")), token);
594
+ const activeElement = await this.openMarkdown(extension, this.mcpServerReadme.get(), ( localize(11392, "No README available.")), readmeContainer, WebviewIndex.Readme, ( localize(11393, "Readme")), token);
595
595
  this.renderAdditionalDetails(additionalDetailsContainer, extension);
596
596
  return activeElement;
597
597
  }
@@ -640,7 +640,7 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
640
640
  content.removeChild(content.firstChild);
641
641
  }
642
642
  const noManifestMessage = append(content, $(".no-manifest"));
643
- noManifestMessage.textContent = ( localize(11214, "No manifest available for this MCP server."));
643
+ noManifestMessage.textContent = ( localize(11394, "No manifest available for this MCP server."));
644
644
  }
645
645
  const scrollableContent = ( new DomScrollableElement(content, {}));
646
646
  const layout = () => scrollableContent.scanDomNode();
@@ -657,36 +657,36 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
657
657
  const config = mcpServer.config;
658
658
  if (!config) {
659
659
  const noConfigMessage = append(container, $(".no-config"));
660
- noConfigMessage.textContent = ( localize(11215, "No configuration available for this MCP server."));
660
+ noConfigMessage.textContent = ( localize(11395, "No configuration available for this MCP server."));
661
661
  return;
662
662
  }
663
663
  const nameSection = append(container, $(".config-section"));
664
664
  const nameLabel = append(nameSection, $(".config-label"));
665
- nameLabel.textContent = ( localize(11216, "Name:"));
665
+ nameLabel.textContent = ( localize(11396, "Name:"));
666
666
  const nameValue = append(nameSection, $(".config-value"));
667
667
  nameValue.textContent = mcpServer.name;
668
668
  const typeSection = append(container, $(".config-section"));
669
669
  const typeLabel = append(typeSection, $(".config-label"));
670
- typeLabel.textContent = ( localize(11217, "Type:"));
670
+ typeLabel.textContent = ( localize(11397, "Type:"));
671
671
  const typeValue = append(typeSection, $(".config-value"));
672
672
  typeValue.textContent = config.type;
673
673
  if (config.type === McpServerType.LOCAL) {
674
674
  const commandSection = append(container, $(".config-section"));
675
675
  const commandLabel = append(commandSection, $(".config-label"));
676
- commandLabel.textContent = ( localize(11218, "Command:"));
676
+ commandLabel.textContent = ( localize(11398, "Command:"));
677
677
  const commandValue = append(commandSection, $("code.config-value"));
678
678
  commandValue.textContent = config.command;
679
679
  if (config.args && config.args.length > 0) {
680
680
  const argsSection = append(container, $(".config-section"));
681
681
  const argsLabel = append(argsSection, $(".config-label"));
682
- argsLabel.textContent = ( localize(11219, "Arguments:"));
682
+ argsLabel.textContent = ( localize(11399, "Arguments:"));
683
683
  const argsValue = append(argsSection, $("code.config-value"));
684
684
  argsValue.textContent = config.args.join(" ");
685
685
  }
686
686
  if (config.env && ( Object.keys(config.env)).length > 0) {
687
687
  const envSection = append(container, $(".config-section"));
688
688
  const envLabel = append(envSection, $(".config-label"));
689
- envLabel.textContent = ( localize(11220, "Environment:"));
689
+ envLabel.textContent = ( localize(11400, "Environment:"));
690
690
  const envValue = append(envSection, $(".config-value"));
691
691
  for (const [key, value] of Object.entries(config.env)) {
692
692
  append(envValue, $("code.env-entry", undefined, `${key}=${value ?? ""}`));
@@ -695,20 +695,20 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
695
695
  if (config.envFile) {
696
696
  const envFileSection = append(container, $(".config-section"));
697
697
  const envFileLabel = append(envFileSection, $(".config-label"));
698
- envFileLabel.textContent = ( localize(11221, "Environment File:"));
698
+ envFileLabel.textContent = ( localize(11401, "Environment File:"));
699
699
  const envFileValue = append(envFileSection, $("code.config-value"));
700
700
  envFileValue.textContent = config.envFile;
701
701
  }
702
702
  } else if (config.type === McpServerType.REMOTE) {
703
703
  const urlSection = append(container, $(".config-section"));
704
704
  const urlLabel = append(urlSection, $(".config-label"));
705
- urlLabel.textContent = ( localize(11222, "URL:"));
705
+ urlLabel.textContent = ( localize(11402, "URL:"));
706
706
  const urlValue = append(urlSection, $("code.config-value"));
707
707
  urlValue.textContent = config.url;
708
708
  if (config.headers && ( Object.keys(config.headers)).length > 0) {
709
709
  const headersSection = append(container, $(".config-section"));
710
710
  const headersLabel = append(headersSection, $(".config-label"));
711
- headersLabel.textContent = ( localize(11223, "Headers:"));
711
+ headersLabel.textContent = ( localize(11403, "Headers:"));
712
712
  const headersValue = append(headersSection, $(".config-value"));
713
713
  for (const [key, value] of Object.entries(config.headers)) {
714
714
  append(headersValue, $("code.env-entry", undefined, `${key}: ${value ?? ""}`));
@@ -731,7 +731,7 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
731
731
  append(container, $(
732
732
  ".manifest-section",
733
733
  undefined,
734
- $(".manifest-section-title", undefined, ( localize(11224, "Packages")))
734
+ $(".manifest-section-title", undefined, ( localize(11404, "Packages")))
735
735
  ));
736
736
  for (const [packageType, packages] of packagesByType) {
737
737
  const packageSection = append(container, $(
@@ -744,7 +744,7 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
744
744
  const pkg = packages[i];
745
745
  append(
746
746
  packagesGrid,
747
- $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11225, "Package:"))), $(".detail-value", undefined, pkg.identifier))
747
+ $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11405, "Package:"))), $(".detail-value", undefined, pkg.identifier))
748
748
  );
749
749
  if (pkg.packageArguments && pkg.packageArguments.length > 0) {
750
750
  const argStrings = [];
@@ -764,7 +764,7 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
764
764
  }
765
765
  append(
766
766
  packagesGrid,
767
- $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11226, "Package Arguments:"))), $("code.detail-value", undefined, argStrings.join(" ")))
767
+ $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11406, "Package Arguments:"))), $("code.detail-value", undefined, argStrings.join(" ")))
768
768
  );
769
769
  }
770
770
  if (pkg.runtimeArguments && pkg.runtimeArguments.length > 0) {
@@ -785,14 +785,14 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
785
785
  }
786
786
  append(
787
787
  packagesGrid,
788
- $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11227, "Runtime Arguments:"))), $("code.detail-value", undefined, argStrings.join(" ")))
788
+ $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11407, "Runtime Arguments:"))), $("code.detail-value", undefined, argStrings.join(" ")))
789
789
  );
790
790
  }
791
791
  if (pkg.environmentVariables && pkg.environmentVariables.length > 0) {
792
792
  const envStrings = ( pkg.environmentVariables.map(envVar => `${envVar.name}=${envVar.value ?? ""}`));
793
793
  append(
794
794
  packagesGrid,
795
- $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11228, "Environment Variables:"))), $("code.detail-value", undefined, envStrings.join(" ")))
795
+ $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11408, "Environment Variables:"))), $("code.detail-value", undefined, envStrings.join(" ")))
796
796
  );
797
797
  }
798
798
  if (i < packages.length - 1) {
@@ -805,25 +805,25 @@ let McpServerEditor = class McpServerEditor extends EditorPane {
805
805
  const packageSection = append(container, $(
806
806
  ".package-section",
807
807
  undefined,
808
- $(".package-section-title", undefined, ( localize(11229, "Remote")).toLocaleUpperCase())
808
+ $(".package-section-title", undefined, ( localize(11409, "Remote")).toLocaleUpperCase())
809
809
  ));
810
810
  for (const remote of manifest.remotes) {
811
811
  const packagesGrid = append(packageSection, $(".package-details"));
812
812
  append(
813
813
  packagesGrid,
814
- $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11222, "URL:"))), $(".detail-value", undefined, remote.url))
814
+ $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11402, "URL:"))), $(".detail-value", undefined, remote.url))
815
815
  );
816
816
  if (remote.type) {
817
817
  append(
818
818
  packagesGrid,
819
- $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11230, "Transport:"))), $(".detail-value", undefined, remote.type))
819
+ $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11410, "Transport:"))), $(".detail-value", undefined, remote.type))
820
820
  );
821
821
  }
822
822
  if (remote.headers && remote.headers.length > 0) {
823
823
  const headerStrings = ( remote.headers.map(header => `${header.name}: ${header.value ?? ""}`));
824
824
  append(
825
825
  packagesGrid,
826
- $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11223, "Headers:"))), $(".detail-value", undefined, headerStrings.join(", ")))
826
+ $(".package-detail", undefined, $(".detail-label", undefined, ( localize(11403, "Headers:"))), $(".detail-value", undefined, headerStrings.join(", ")))
827
827
  );
828
828
  }
829
829
  }
@@ -902,7 +902,7 @@ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
902
902
  const categoriesContainer = append(container, $(".categories-container.additional-details-element"));
903
903
  append(
904
904
  categoriesContainer,
905
- $(".additional-details-title", undefined, ( localize(11231, "Tags")))
905
+ $(".additional-details-title", undefined, ( localize(11411, "Tags")))
906
906
  );
907
907
  const categoriesElement = append(categoriesContainer, $(".categories"));
908
908
  for (const category of extension.gallery.topics) {
@@ -917,14 +917,14 @@ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
917
917
  const manifest = await this.mcpGalleryManifestService.getMcpGalleryManifest();
918
918
  if (extension.repository) {
919
919
  try {
920
- resources.push([( localize(11232, "Repository")), ThemeIcon.fromId(Codicon.repo.id), ( URI.parse(extension.repository))]);
920
+ resources.push([( localize(11412, "Repository")), ThemeIcon.fromId(Codicon.repo.id), ( URI.parse(extension.repository))]);
921
921
  } catch (error) {}
922
922
  }
923
923
  if (manifest) {
924
924
  const supportUri = getMcpGalleryManifestResourceUri(manifest, McpGalleryResourceType.ContactSupportUri);
925
925
  if (supportUri) {
926
926
  try {
927
- resources.push([( localize(11233, "Contact Support")), ThemeIcon.fromId(Codicon.commentDiscussion.id), ( URI.parse(supportUri))]);
927
+ resources.push([( localize(11413, "Contact Support")), ThemeIcon.fromId(Codicon.commentDiscussion.id), ( URI.parse(supportUri))]);
928
928
  } catch (error) {}
929
929
  }
930
930
  }
@@ -932,7 +932,7 @@ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
932
932
  const extensionResourcesContainer = append(container, $(".resources-container.additional-details-element"));
933
933
  append(
934
934
  extensionResourcesContainer,
935
- $(".additional-details-title", undefined, ( localize(11234, "Resources")))
935
+ $(".additional-details-title", undefined, ( localize(11414, "Resources")))
936
936
  );
937
937
  const resourcesElement = append(extensionResourcesContainer, $(".resources"));
938
938
  for (const [label, icon, uri] of resources) {
@@ -952,20 +952,20 @@ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
952
952
  const installInfoContainer = append(container, $(".more-info-container.additional-details-element"));
953
953
  append(
954
954
  installInfoContainer,
955
- $(".additional-details-title", undefined, ( localize(11235, "Installation")))
955
+ $(".additional-details-title", undefined, ( localize(11415, "Installation")))
956
956
  );
957
957
  const installInfo = append(installInfoContainer, $(".more-info"));
958
958
  append(installInfo, $(
959
959
  ".more-info-entry",
960
960
  undefined,
961
- $("div.more-info-entry-name", undefined, ( localize(11236, "Identifier"))),
961
+ $("div.more-info-entry-name", undefined, ( localize(11416, "Identifier"))),
962
962
  $("code", undefined, extension.name)
963
963
  ));
964
964
  if (extension.version) {
965
965
  append(installInfo, $(
966
966
  ".more-info-entry",
967
967
  undefined,
968
- $("div.more-info-entry-name", undefined, ( localize(11237, "Version"))),
968
+ $("div.more-info-entry-name", undefined, ( localize(11417, "Version"))),
969
969
  $("code", undefined, extension.version)
970
970
  ));
971
971
  }
@@ -975,7 +975,7 @@ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
975
975
  const moreInfoContainer = append(container, $(".more-info-container.additional-details-element"));
976
976
  append(
977
977
  moreInfoContainer,
978
- $(".additional-details-title", undefined, ( localize(11238, "Marketplace")))
978
+ $(".additional-details-title", undefined, ( localize(11418, "Marketplace")))
979
979
  );
980
980
  const moreInfo = append(moreInfoContainer, $(".more-info"));
981
981
  if (gallery) {
@@ -983,14 +983,14 @@ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
983
983
  append(moreInfo, $(
984
984
  ".more-info-entry",
985
985
  undefined,
986
- $("div.more-info-entry-name", undefined, ( localize(11236, "Identifier"))),
986
+ $("div.more-info-entry-name", undefined, ( localize(11416, "Identifier"))),
987
987
  $("code", undefined, extension.name)
988
988
  ));
989
989
  if (gallery.version) {
990
990
  append(moreInfo, $(
991
991
  ".more-info-entry",
992
992
  undefined,
993
- $("div.more-info-entry-name", undefined, ( localize(11237, "Version"))),
993
+ $("div.more-info-entry-name", undefined, ( localize(11417, "Version"))),
994
994
  $("code", undefined, gallery.version)
995
995
  ));
996
996
  }
@@ -999,7 +999,7 @@ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
999
999
  append(moreInfo, $(
1000
1000
  ".more-info-entry",
1001
1001
  undefined,
1002
- $("div.more-info-entry-name", undefined, ( localize(11239, "Last Released"))),
1002
+ $("div.more-info-entry-name", undefined, ( localize(11419, "Last Released"))),
1003
1003
  $("div", {
1004
1004
  "title": ( ( new Date(gallery.lastUpdated)).toString())
1005
1005
  }, fromNow(gallery.lastUpdated, true, true, true))
@@ -1009,7 +1009,7 @@ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
1009
1009
  append(moreInfo, $(
1010
1010
  ".more-info-entry",
1011
1011
  undefined,
1012
- $("div.more-info-entry-name", undefined, ( localize(11240, "Published"))),
1012
+ $("div.more-info-entry-name", undefined, ( localize(11420, "Published"))),
1013
1013
  $("div", {
1014
1014
  "title": ( ( new Date(gallery.publishDate)).toString())
1015
1015
  }, fromNow(gallery.publishDate, true, true, true))
@@ -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(11241, "Icon of the MCP Server editor.")));
11
+ const MCPServerEditorIcon = registerIcon("mcp-server-editor-icon", Codicon.mcp, ( localize(11421, "Icon of the MCP Server editor.")));
12
12
  class McpServerEditorInput extends EditorInput {
13
13
  static {
14
14
  this.ID = "workbench.mcpServer.input2";
@@ -33,7 +33,7 @@ class McpServerEditorInput extends EditorInput {
33
33
  return this._mcpServer;
34
34
  }
35
35
  getName() {
36
- return localize(11242, "MCP Server: {0}", this._mcpServer.label);
36
+ return localize(11422, "MCP Server: {0}", this._mcpServer.label);
37
37
  }
38
38
  getIcon() {
39
39
  return MCPServerEditorIcon;
@@ -3,10 +3,10 @@ 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(11243, "Icon used for the MCP server.")));
7
- const mcpServerRemoteIcon = registerIcon("mcp-server-remote", Codicon.remote, ( localize(11244, "Icon to indicate that an MCP server is for the remote user scope.")));
8
- const mcpServerWorkspaceIcon = registerIcon("mcp-server-workspace", Codicon.rootFolder, ( localize(11245, "Icon to indicate that an MCP server is for the workspace scope.")));
9
- const mcpStarredIcon = registerIcon("mcp-server-starred", Codicon.starFull, ( localize(11246, "Icon shown along with the starred status.")));
10
- const mcpLicenseIcon = registerIcon("mcp-server-license", Codicon.law, ( localize(11247, "Icon shown along with the license status.")));
6
+ const mcpServerIcon = registerIcon("mcp-server", Codicon.mcp, ( localize(11423, "Icon used for the MCP server.")));
7
+ const mcpServerRemoteIcon = registerIcon("mcp-server-remote", Codicon.remote, ( localize(11424, "Icon to indicate that an MCP server is for the remote user scope.")));
8
+ const mcpServerWorkspaceIcon = registerIcon("mcp-server-workspace", Codicon.rootFolder, ( localize(11425, "Icon to indicate that an MCP server is for the workspace scope.")));
9
+ const mcpStarredIcon = registerIcon("mcp-server-starred", Codicon.starFull, ( localize(11426, "Icon shown along with the starred status.")));
10
+ const mcpLicenseIcon = registerIcon("mcp-server-license", Codicon.law, ( localize(11427, "Icon shown along with the license status.")));
11
11
 
12
12
  export { mcpLicenseIcon, mcpServerIcon, mcpServerRemoteIcon, mcpServerWorkspaceIcon, mcpStarredIcon };
@@ -18,7 +18,7 @@ import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/t
18
18
  import { isDark } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/theme';
19
19
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
20
20
  import { mcpServerIcon, mcpStarredIcon, mcpLicenseIcon, mcpServerWorkspaceIcon, mcpServerRemoteIcon } from './mcpServerIcons.js';
21
- import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
21
+ import { MarkdownString, escapeMarkdownSyntaxTokens } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
22
22
  import { ExtensionIconBadge } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/browser/extensionsWidgets';
23
23
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
24
24
  import { LocalMcpServerScope } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/mcp/common/mcpWorkbenchManagementService';
@@ -167,7 +167,7 @@ let PublisherWidget = class PublisherWidget extends McpServerWidget {
167
167
  this.element.setAttribute("role", "button");
168
168
  this.element.tabIndex = 0;
169
169
  this.containerHover = this.disposables.add(
170
- this.hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), this.element, ( localize(11248, "Publisher ({0})", this.mcpServer.publisherDisplayName)))
170
+ this.hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), this.element, ( localize(11428, "Publisher ({0})", this.mcpServer.publisherDisplayName)))
171
171
  );
172
172
  append(this.element, publisherDisplayName);
173
173
  if (this.mcpServer.gallery?.publisherDomain?.verified) {
@@ -176,7 +176,7 @@ let PublisherWidget = class PublisherWidget extends McpServerWidget {
176
176
  verifiedPublisher.tabIndex = 0;
177
177
  verifiedPublisher.setAttribute("role", "button");
178
178
  this.containerHover.update(( localize(
179
- 11249,
179
+ 11429,
180
180
  "This publisher has verified ownership of {0}",
181
181
  this.mcpServer.gallery?.publisherDomain.link
182
182
  )));
@@ -317,20 +317,20 @@ let McpServerHoverWidget = class McpServerHoverWidget extends McpServerWidget {
317
317
  return undefined;
318
318
  }
319
319
  const markdown = ( new MarkdownString("", {
320
- isTrusted: true,
320
+ isTrusted: false,
321
321
  supportThemeIcons: true
322
322
  }));
323
- markdown.appendMarkdown(`**${this.mcpServer.label}**`);
323
+ markdown.appendMarkdown(`**${escapeMarkdownSyntaxTokens(this.mcpServer.label)}**`);
324
324
  markdown.appendText(`\n`);
325
325
  let addSeparator = false;
326
326
  if (this.mcpServer.local?.scope === LocalMcpServerScope.Workspace) {
327
327
  markdown.appendMarkdown(`$(${mcpServerWorkspaceIcon.id})&nbsp;`);
328
- markdown.appendMarkdown(( localize(11250, "Workspace MCP Server")));
328
+ markdown.appendMarkdown(( localize(11430, "Workspace MCP Server")));
329
329
  addSeparator = true;
330
330
  }
331
331
  if (this.mcpServer.local?.scope === LocalMcpServerScope.RemoteUser) {
332
332
  markdown.appendMarkdown(`$(${mcpServerRemoteIcon.id})&nbsp;`);
333
- markdown.appendMarkdown(( localize(11251, "Remote MCP Server")));
333
+ markdown.appendMarkdown(( localize(11431, "Remote MCP Server")));
334
334
  addSeparator = true;
335
335
  }
336
336
  if (this.mcpServer.installState === McpServerInstallState.Installed) {
@@ -347,7 +347,7 @@ let McpServerHoverWidget = class McpServerHoverWidget extends McpServerWidget {
347
347
  markdown.appendText(`\n`);
348
348
  }
349
349
  if (this.mcpServer.description) {
350
- markdown.appendMarkdown(`${this.mcpServer.description}`);
350
+ markdown.appendMarkdown(escapeMarkdownSyntaxTokens(this.mcpServer.description));
351
351
  }
352
352
  const extensionStatus = this.mcpServerStatusAction.status;
353
353
  if (extensionStatus.length) {
@@ -448,7 +448,7 @@ const mcpStarredIconColor = registerColor("mcpIcon.starForeground", {
448
448
  dark: "#FF8E00",
449
449
  hcDark: "#FF8E00",
450
450
  hcLight: textLinkForeground
451
- }, ( localize(11252, "The icon color for mcp starred.")), false);
451
+ }, ( localize(11432, "The icon color for mcp starred.")), false);
452
452
  registerThemingParticipant((theme, collector) => {
453
453
  const mcpStarredIconColorValue = theme.getColor(mcpStarredIconColor);
454
454
  if (mcpStarredIconColorValue) {
@@ -142,7 +142,7 @@ let McpServersListView = class McpServersListView extends AbstractExtensionsList
142
142
  return mcpServer?.label ?? "";
143
143
  },
144
144
  getWidgetAriaLabel() {
145
- return localize(11253, "MCP Servers");
145
+ return localize(11433, "MCP Servers");
146
146
  }
147
147
  },
148
148
  overrideStyles: getLocationBasedViewColors(this.viewDescriptorService.getViewLocationById(this.id)).listOverrideStyles,
@@ -251,43 +251,43 @@ let McpServersListView = class McpServersListView extends AbstractExtensionsList
251
251
  const iconElement = append(iconContainer, $("span"));
252
252
  iconElement.className = ThemeIcon.asClassName(mcpServerIcon);
253
253
  const title = append(welcomeContent, $(".mcp-welcome-title"));
254
- title.textContent = ( localize(11254, "MCP Servers"));
254
+ title.textContent = ( localize(11434, "MCP Servers"));
255
255
  const settingsCommandLink = ( createMarkdownCommandLink({
256
256
  id: "workbench.action.openSettings",
257
257
  arguments: [`@id:${mcpGalleryServiceEnablementConfig}`],
258
258
  text: mcpGalleryServiceEnablementConfig,
259
- tooltip: ( localize(11255, "Open Settings"))
259
+ tooltip: ( localize(11435, "Open Settings"))
260
260
  }).toString());
261
261
  const description = append(welcomeContent, $(".mcp-welcome-description"));
262
262
  const markdownResult = this._register(this.markdownRendererService.render(( new MarkdownString(( localize(
263
- 11256,
263
+ 11436,
264
264
  "Browse and install [Model Context Protocol (MCP) servers](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) directly from VS Code to extend agent mode with extra tools for connecting to databases, invoking APIs and performing specialized tasks."
265
265
  )), {
266
266
  isTrusted: {
267
267
  enabledCommands: ["workbench.action.openSettings"]
268
268
  }
269
269
  })).appendMarkdown("\n\n").appendMarkdown(( localize(
270
- 11257,
270
+ 11437,
271
271
  "This feature is currently in preview. You can disable it anytime using the setting {0}.",
272
272
  settingsCommandLink
273
273
  )))));
274
274
  description.appendChild(markdownResult.element);
275
275
  const buttonContainer = append(welcomeContent, $(".mcp-welcome-button-container"));
276
276
  const button = this._register(( new Button(buttonContainer, {
277
- title: ( localize(11258, "Enable MCP Servers Marketplace")),
277
+ title: ( localize(11438, "Enable MCP Servers Marketplace")),
278
278
  ...defaultButtonStyles
279
279
  })));
280
- button.label = ( localize(11258, "Enable MCP Servers Marketplace"));
280
+ button.label = ( localize(11438, "Enable MCP Servers Marketplace"));
281
281
  this._register(button.onDidClick(async () => {
282
282
  const {
283
283
  result
284
284
  } = await this.dialogService.prompt({
285
285
  type: "info",
286
- message: ( localize(11259, "Enable MCP Servers Marketplace?")),
286
+ message: ( localize(11439, "Enable MCP Servers Marketplace?")),
287
287
  custom: {
288
288
  markdownDetails: [{
289
289
  markdown: ( new MarkdownString(( localize(
290
- 11257,
290
+ 11437,
291
291
  "This feature is currently in preview. You can disable it anytime using the setting {0}.",
292
292
  settingsCommandLink
293
293
  )), {
@@ -296,10 +296,10 @@ let McpServersListView = class McpServersListView extends AbstractExtensionsList
296
296
  }]
297
297
  },
298
298
  buttons: [{
299
- label: ( localize(11260, "Enable")),
299
+ label: ( localize(11440, "Enable")),
300
300
  run: () => true
301
301
  }, {
302
- label: ( localize(11261, "Cancel")),
302
+ label: ( localize(11441, "Cancel")),
303
303
  run: () => false
304
304
  }]
305
305
  });
@@ -319,7 +319,7 @@ let McpServersListView = class McpServersListView extends AbstractExtensionsList
319
319
  this.bodyTemplate.messageBox.textContent = message.text;
320
320
  } else if (count === 0) {
321
321
  this.bodyTemplate.messageSeverityIcon.className = "";
322
- this.bodyTemplate.messageBox.textContent = ( localize(11262, "No MCP Servers found."));
322
+ this.bodyTemplate.messageBox.textContent = ( localize(11442, "No MCP Servers found."));
323
323
  }
324
324
  if (this.bodyTemplate.messageBox.textContent) {
325
325
  alert(this.bodyTemplate.messageBox.textContent);
@@ -533,7 +533,7 @@ class McpServersViewsContribution extends Disposable {
533
533
  super();
534
534
  ( Registry.as(Extensions.ViewsRegistry)).registerViews([{
535
535
  id: InstalledMcpServersViewId,
536
- name: ( localize2(11263, "MCP Servers - Installed")),
536
+ name: ( localize2(11443, "MCP Servers - Installed")),
537
537
  ctorDescriptor: ( new SyncDescriptor(McpServersListView, [{}])),
538
538
  when: ( ContextKeyExpr.and(DefaultViewsContext, HasInstalledMcpServersContext, ( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate()))),
539
539
  weight: 40,
@@ -541,7 +541,7 @@ class McpServersViewsContribution extends Disposable {
541
541
  canToggleVisibility: true
542
542
  }, {
543
543
  id: "workbench.views.mcp.default.marketplace",
544
- name: ( localize2(11264, "MCP Servers")),
544
+ name: ( localize2(11444, "MCP Servers")),
545
545
  ctorDescriptor: ( new SyncDescriptor(DefaultBrowseMcpServersView, [{}])),
546
546
  when: ( ContextKeyExpr.and(DefaultViewsContext, ( HasInstalledMcpServersContext.toNegated()), ( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate()), ( McpServersGalleryStatusContext.isEqualTo(McpGalleryManifestStatus.Available)), ( ContextKeyExpr.or(( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceUrlConfig}`)), ( ProductQualityContext.notEqualsTo("stable")), ( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceEnablementConfig}`)))))),
547
547
  weight: 40,
@@ -549,12 +549,12 @@ class McpServersViewsContribution extends Disposable {
549
549
  canToggleVisibility: true
550
550
  }, {
551
551
  id: "workbench.views.mcp.marketplace",
552
- name: ( localize2(11264, "MCP Servers")),
552
+ name: ( localize2(11444, "MCP Servers")),
553
553
  ctorDescriptor: ( new SyncDescriptor(McpServersListView, [{}])),
554
554
  when: ( ContextKeyExpr.and(SearchMcpServersContext, ( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate()), ( McpServersGalleryStatusContext.isEqualTo(McpGalleryManifestStatus.Available)), ( ContextKeyExpr.or(( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceUrlConfig}`)), ( ProductQualityContext.notEqualsTo("stable")), ( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceEnablementConfig}`))))))
555
555
  }, {
556
556
  id: "workbench.views.mcp.default.welcomeView",
557
- name: ( localize2(11264, "MCP Servers")),
557
+ name: ( localize2(11444, "MCP Servers")),
558
558
  ctorDescriptor: ( new SyncDescriptor(DefaultBrowseMcpServersView, [{
559
559
  showWelcome: true
560
560
  }])),
@@ -564,7 +564,7 @@ class McpServersViewsContribution extends Disposable {
564
564
  canToggleVisibility: true
565
565
  }, {
566
566
  id: "workbench.views.mcp.welcomeView",
567
- name: ( localize2(11264, "MCP Servers")),
567
+ name: ( localize2(11444, "MCP Servers")),
568
568
  ctorDescriptor: ( new SyncDescriptor(McpServersListView, [{
569
569
  showWelcome: true
570
570
  }])),