@codingame/monaco-vscode-mcp-service-override 28.4.1 → 29.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/base/common/jsonRpcProtocol.d.ts +13 -1
  3. package/vscode/src/vs/base/common/jsonRpcProtocol.js +26 -13
  4. package/vscode/src/vs/platform/mcp/common/allowedMcpServersService.js +1 -1
  5. package/vscode/src/vs/platform/mcp/common/mcpGalleryManifestService.js +2 -1
  6. package/vscode/src/vs/platform/mcp/common/mcpGalleryService.js +8 -5
  7. package/vscode/src/vs/platform/mcp/common/mcpGateway.d.ts +49 -18
  8. package/vscode/src/vs/workbench/contrib/mcp/browser/mcp.contribution.js +3 -3
  9. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpAddContextContribution.js +2 -2
  10. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpCommands.js +81 -67
  11. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpElicitationService.d.ts +11 -0
  12. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpElicitationService.js +267 -50
  13. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpGatewayService.js +17 -3
  14. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpLanguageFeatures.js +24 -21
  15. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpMigration.js +4 -4
  16. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpResourceQuickAccess.js +8 -8
  17. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServersView.js +18 -18
  18. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpWorkbenchService.js +37 -9
  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/pluginMcpDiscovery.js +11 -3
  22. package/vscode/src/vs/workbench/contrib/mcp/common/mcpContextKeys.js +4 -4
  23. package/vscode/src/vs/workbench/contrib/mcp/common/mcpGatewayToolBrokerChannel.d.ts +8 -9
  24. package/vscode/src/vs/workbench/contrib/mcp/common/mcpGatewayToolBrokerChannel.js +147 -132
  25. package/vscode/src/vs/workbench/contrib/mcp/common/mcpLanguageModelToolContribution.js +10 -6
  26. package/vscode/src/vs/workbench/contrib/mcp/common/mcpRegistry.js +14 -14
  27. package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingLog.js +1 -1
  28. package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingService.js +11 -11
  29. package/vscode/src/vs/workbench/contrib/mcp/common/mcpSandboxService.d.ts +2 -0
  30. package/vscode/src/vs/workbench/contrib/mcp/common/mcpSandboxService.js +15 -8
  31. package/vscode/src/vs/workbench/contrib/mcp/common/mcpServerConnection.js +7 -22
  32. package/vscode/src/vs/workbench/contrib/mcp/common/mcpService.d.ts +4 -1
  33. package/vscode/src/vs/workbench/contrib/mcp/common/mcpService.js +16 -4
  34. package/vscode/src/vs/workbench/services/authentication/browser/authenticationMcpService.js +9 -9
  35. package/vscode/src/vs/workbench/services/mcp/browser/mcpGalleryManifestService.js +2 -2
@@ -58,10 +58,11 @@ import { McpCommandIds } from '@codingame/monaco-vscode-api/vscode/vs/workbench/
58
58
  import { McpContextKeys } from '../common/mcpContextKeys.js';
59
59
  import { IMcpRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpRegistryTypes.service';
60
60
  import { McpConnectionState, McpCapability, McpServerCacheState, LazyCollectionState, McpStartServerInteraction, InstalledMcpServersViewId, HasInstalledMcpServersContext, mcpPromptPrefix } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
61
- import { IMcpService, IMcpSamplingService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
61
+ import { IMcpService, IMcpWorkbenchService, IMcpSamplingService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
62
62
  import { McpAddConfigurationCommand, McpInstallFromManifestCommand } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/browser/mcpCommandsAddConfiguration';
63
63
  import { McpResourceQuickPick, McpResourceQuickAccess } from './mcpResourceQuickAccess.js';
64
64
  import { startServerAndWaitForLiveTools } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypesUtils';
65
+ import { isContributionDisabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/enablement';
65
66
  import * as mcpServerAction from './media/mcpServerAction.css';
66
67
  import { openPanelChatAndGetWidget } from './openPanelChatAndGetWidget.js';
67
68
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
@@ -78,7 +79,7 @@ class ListMcpServerCommand extends Action2 {
78
79
  constructor() {
79
80
  super({
80
81
  id: McpCommandIds.ListServer,
81
- title: ( localize2(10099, "List Servers")),
82
+ title: ( localize2(10334, "List Servers")),
82
83
  icon: Codicon.server,
83
84
  category,
84
85
  f1: true,
@@ -95,11 +96,12 @@ class ListMcpServerCommand extends Action2 {
95
96
  const mcpService = accessor.get(IMcpService);
96
97
  const commandService = accessor.get(ICommandService);
97
98
  const quickInput = accessor.get(IQuickInputService);
99
+ const mcpWorkbenchService = accessor.get(IMcpWorkbenchService);
98
100
  const store = ( new DisposableStore());
99
101
  const pick = quickInput.createQuickPick({
100
102
  useSeparators: true
101
103
  });
102
- pick.placeholder = ( localize(10100, "Select an MCP Server"));
104
+ pick.placeholder = ( localize(10335, "Select an MCP Server"));
103
105
  mcpService.activateCollections();
104
106
  store.add(pick);
105
107
  store.add(autorun(reader => {
@@ -109,19 +111,22 @@ class ListMcpServerCommand extends Action2 {
109
111
  const firstRun = pick.items.length === 0;
110
112
  pick.items = [{
111
113
  id: "$add",
112
- label: ( localize(10101, "Add Server")),
113
- description: ( localize(10102, "Add a new server configuration")),
114
+ label: ( localize(10336, "Add Server")),
115
+ description: ( localize(10337, "Add a new server configuration")),
114
116
  alwaysShow: true,
115
117
  iconClass: ThemeIcon.asClassName(Codicon.add)
116
118
  }, ...( Object.values(servers)).filter(s => s.length).flatMap(servers => [{
117
119
  type: "separator",
118
120
  label: servers[0].collection.label,
119
121
  id: servers[0].collection.id
120
- }, ...( servers.map(server => ({
121
- id: server.definition.id,
122
- label: server.definition.label,
123
- description: ( McpConnectionState.toString(server.connectionState.read(reader)))
124
- })))])];
122
+ }, ...( servers.map(server => {
123
+ const disabled = isContributionDisabled(server.enablement.read(reader));
124
+ return {
125
+ id: server.definition.id,
126
+ label: server.definition.label,
127
+ description: disabled ? ( localize(10338, "Disabled")) : ( McpConnectionState.toString(server.connectionState.read(reader)))
128
+ };
129
+ }))])];
125
130
  if (firstRun && pick.items.length > 3) {
126
131
  pick.activeItems = pick.items.slice(2, 3);
127
132
  }
@@ -140,7 +145,15 @@ class ListMcpServerCommand extends Action2 {
140
145
  ; else if (picked.id === "$add") {
141
146
  commandService.executeCommand(McpCommandIds.AddConfiguration);
142
147
  } else {
143
- commandService.executeCommand(McpCommandIds.ServerOptions, picked.id);
148
+ const server = mcpService.servers.get().find(s => s.definition.id === picked.id);
149
+ if (server && isContributionDisabled(server.enablement.get())) {
150
+ const workbenchServer = mcpWorkbenchService.local.find(s => s.id === picked.id);
151
+ if (workbenchServer) {
152
+ mcpWorkbenchService.open(workbenchServer);
153
+ }
154
+ } else {
155
+ commandService.executeCommand(McpCommandIds.ServerOptions, picked.id);
156
+ }
144
157
  }
145
158
  }
146
159
  }
@@ -148,7 +161,7 @@ class McpConfirmationServerOptionsCommand extends Action2 {
148
161
  constructor() {
149
162
  super({
150
163
  id: McpCommandIds.ServerOptionsInConfirmation,
151
- title: ( localize2(10103, "Server Options")),
164
+ title: ( localize2(10339, "Server Options")),
152
165
  category,
153
166
  icon: Codicon.settingsGear,
154
167
  f1: false,
@@ -179,7 +192,7 @@ class McpServerOptionsCommand extends Action2 {
179
192
  constructor() {
180
193
  super({
181
194
  id: McpCommandIds.ServerOptions,
182
- title: ( localize2(10103, "Server Options")),
195
+ title: ( localize2(10339, "Server Options")),
183
196
  category,
184
197
  f1: false
185
198
  });
@@ -203,20 +216,20 @@ class McpServerOptionsCommand extends Action2 {
203
216
  const serverState = server.connectionState.get();
204
217
  items.push({
205
218
  type: "separator",
206
- label: ( localize(10104, "Status"))
219
+ label: ( localize(10340, "Status"))
207
220
  });
208
221
  if (McpConnectionState.canBeStarted(serverState.state)) {
209
222
  items.push({
210
- label: ( localize(10105, "Start Server")),
223
+ label: ( localize(10341, "Start Server")),
211
224
  action: "start"
212
225
  });
213
226
  } else {
214
227
  items.push({
215
- label: ( localize(10106, "Stop Server")),
228
+ label: ( localize(10342, "Stop Server")),
216
229
  action: "stop"
217
230
  });
218
231
  items.push({
219
- label: ( localize(10107, "Restart Server")),
232
+ label: ( localize(10343, "Restart Server")),
220
233
  action: "restart"
221
234
  });
222
235
  }
@@ -224,26 +237,26 @@ class McpServerOptionsCommand extends Action2 {
224
237
  const configTarget = serverDefinition?.presentation?.origin || collection?.presentation?.origin;
225
238
  if (configTarget) {
226
239
  items.push({
227
- label: ( localize(10108, "Show Configuration")),
240
+ label: ( localize(10344, "Show Configuration")),
228
241
  action: "config"
229
242
  });
230
243
  }
231
244
  items.push({
232
- label: ( localize(10109, "Show Output")),
245
+ label: ( localize(10345, "Show Output")),
233
246
  action: "showOutput"
234
247
  });
235
248
  items.push({
236
249
  type: "separator",
237
- label: ( localize(10110, "Sampling"))
250
+ label: ( localize(10346, "Sampling"))
238
251
  }, {
239
- label: ( localize(10111, "Configure Model Access")),
240
- description: ( localize(10112, "Set the models the server can use via MCP sampling")),
252
+ label: ( localize(10347, "Configure Model Access")),
253
+ description: ( localize(10348, "Set the models the server can use via MCP sampling")),
241
254
  action: "configSampling"
242
255
  });
243
256
  if (samplingService.hasLogs(server)) {
244
257
  items.push({
245
- label: ( localize(10113, "Show Sampling Requests")),
246
- description: ( localize(10114, "Show the sampling requests for this server")),
258
+ label: ( localize(10349, "Show Sampling Requests")),
259
+ description: ( localize(10350, "Show the sampling requests for this server")),
247
260
  action: "samplingLog"
248
261
  });
249
262
  }
@@ -251,15 +264,15 @@ class McpServerOptionsCommand extends Action2 {
251
264
  if (capabilities === undefined || (capabilities & McpCapability.Resources)) {
252
265
  items.push({
253
266
  type: "separator",
254
- label: ( localize(10115, "Resources"))
267
+ label: ( localize(10351, "Resources"))
255
268
  });
256
269
  items.push({
257
- label: ( localize(10116, "Browse Resources")),
270
+ label: ( localize(10352, "Browse Resources")),
258
271
  action: "resources"
259
272
  });
260
273
  }
261
274
  const pick = await quickInputService.pick(items, {
262
- placeHolder: ( localize(10117, "Select action for '{0}'", server.definition.label))
275
+ placeHolder: ( localize(10353, "Select action for '{0}'", server.definition.label))
263
276
  });
264
277
  if (!pick) {
265
278
  return;
@@ -307,7 +320,7 @@ class McpServerOptionsCommand extends Action2 {
307
320
  editorService.openEditor({
308
321
  resource: undefined,
309
322
  contents: samplingService.getLogText(server),
310
- label: ( localize(10118, "MCP Sampling: {0}", server.definition.label))
323
+ label: ( localize(10354, "MCP Sampling: {0}", server.definition.label))
311
324
  });
312
325
  break;
313
326
  default:
@@ -324,14 +337,14 @@ class McpServerOptionsCommand extends Action2 {
324
337
  if (accountQuery.entities().getEntityCount().total > 1) {
325
338
  result.push({
326
339
  action: "disconnect",
327
- label: ( localize(10119, "Disconnect Account")),
340
+ label: ( localize(10355, "Disconnect Account")),
328
341
  description: `(${accountName})`,
329
342
  accountQuery
330
343
  });
331
344
  } else {
332
345
  result.push({
333
346
  action: "signout",
334
- label: ( localize(10120, "Sign Out")),
347
+ label: ( localize(10356, "Sign Out")),
335
348
  description: `(${accountName})`,
336
349
  accountQuery
337
350
  });
@@ -497,26 +510,27 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
497
510
  } = displayedStateCurrent.get()
498
511
  ) {
499
512
  const link = s => createMarkdownCommandLink({
500
- title: s.definition.label,
513
+ text: s.definition.label,
501
514
  id: McpCommandIds.ServerOptions,
502
- arguments: [s.definition.id]
515
+ arguments: [s.definition.id],
516
+ tooltip: ( localize(10357, "Show server options for {0}", s.definition.label))
503
517
  });
504
518
  const single = servers.length === 1;
505
519
  const names = ( ( servers.map(s => isServer(s) ? link(s) : "`" + s.label + "`")).map(l => single ? l : `- ${l}`)).join("\n");
506
520
  let markdown;
507
521
  if (state === DisplayedState.NewTools) {
508
522
  markdown = ( new MarkdownString(single ? ( localize(
509
- 10121,
523
+ 10358,
510
524
  "MCP server {0} has been updated and may have new tools available.",
511
525
  names
512
526
  )) : ( localize(
513
- 10122,
527
+ 10359,
514
528
  "MCP servers have been updated and may have new tools available:\n\n{0}",
515
529
  names
516
530
  ))));
517
531
  } else if (state === DisplayedState.Error) {
518
- markdown = ( new MarkdownString(single ? ( localize(10123, "MCP server {0} was unable to start successfully.", names)) : ( localize(
519
- 10124,
532
+ markdown = ( new MarkdownString(single ? ( localize(10360, "MCP server {0} was unable to start successfully.", names)) : ( localize(
533
+ 10361,
520
534
  "Multiple MCP servers were unable to start successfully:\n\n{0}",
521
535
  names
522
536
  ))));
@@ -543,7 +557,7 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
543
557
  const divider = $("hr.mcp-hover-divider");
544
558
  container.appendChild(divider);
545
559
  const checkboxContainer = $("div.mcp-hover-setting");
546
- const settingLabelStr = ( localize(10125, "Automatically start MCP servers when sending a chat message"));
560
+ const settingLabelStr = ( localize(10362, "Automatically start MCP servers when sending a chat message"));
547
561
  const checkbox = store.add(( new Checkbox(settingLabelStr, config.get() !== McpAutoStartValue.Never, {
548
562
  ...defaultCheckboxStyles
549
563
  })));
@@ -571,11 +585,11 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
571
585
  } = displayedStateCurrent.get()
572
586
  ) {
573
587
  if (state === DisplayedState.NewTools) {
574
- return localize(10126, "New tools available ({0})", servers.length || 1);
588
+ return localize(10363, "New tools available ({0})", servers.length || 1);
575
589
  } else if (state === DisplayedState.Error) {
576
- return localize(10127, "Error loading {0} tool(s)", servers.length || 1);
590
+ return localize(10364, "Error loading {0} tool(s)", servers.length || 1);
577
591
  } else if (state === DisplayedState.Refreshing) {
578
- return localize(10128, "Discovering tools...");
592
+ return localize(10365, "Discovering tools...");
579
593
  } else {
580
594
  return null;
581
595
  }
@@ -593,7 +607,7 @@ class ResetMcpTrustCommand extends Action2 {
593
607
  constructor() {
594
608
  super({
595
609
  id: McpCommandIds.ResetTrust,
596
- title: ( localize2(10129, "Reset Trust")),
610
+ title: ( localize2(10366, "Reset Trust")),
597
611
  category,
598
612
  f1: true,
599
613
  precondition: ( ContextKeyExpr.and(McpContextKeys.toolsCount.greater(0), ( ChatContextKeys.Setup.hidden.negate())))
@@ -608,7 +622,7 @@ class ResetMcpCachedTools extends Action2 {
608
622
  constructor() {
609
623
  super({
610
624
  id: McpCommandIds.ResetCachedTools,
611
- title: ( localize2(10130, "Reset Cached Tools")),
625
+ title: ( localize2(10367, "Reset Cached Tools")),
612
626
  category,
613
627
  f1: true,
614
628
  precondition: ( ContextKeyExpr.and(McpContextKeys.toolsCount.greater(0), ( ChatContextKeys.Setup.hidden.negate())))
@@ -623,9 +637,9 @@ class AddConfigurationAction extends Action2 {
623
637
  constructor() {
624
638
  super({
625
639
  id: McpCommandIds.AddConfiguration,
626
- title: ( localize2(10131, "Add Server...")),
640
+ title: ( localize2(10368, "Add Server...")),
627
641
  metadata: {
628
- description: ( localize2(10132, "Installs a new Model Context protocol to the mcp.json settings"))
642
+ description: ( localize2(10369, "Installs a new Model Context protocol to the mcp.json settings"))
629
643
  },
630
644
  category,
631
645
  f1: true,
@@ -647,9 +661,9 @@ class InstallFromManifestAction extends Action2 {
647
661
  constructor() {
648
662
  super({
649
663
  id: McpCommandIds.InstallFromManifest,
650
- title: ( localize2(10133, "Install Server from Manifest...")),
664
+ title: ( localize2(10370, "Install Server from Manifest...")),
651
665
  metadata: {
652
- description: ( localize2(10134, "Install an MCP server from a JSON manifest file"))
666
+ description: ( localize2(10371, "Install an MCP server from a JSON manifest file"))
653
667
  },
654
668
  category,
655
669
  f1: true,
@@ -665,7 +679,7 @@ class RemoveStoredInput extends Action2 {
665
679
  constructor() {
666
680
  super({
667
681
  id: McpCommandIds.RemoveStoredInput,
668
- title: ( localize2(10130, "Reset Cached Tools")),
682
+ title: ( localize2(10367, "Reset Cached Tools")),
669
683
  category,
670
684
  f1: false
671
685
  });
@@ -678,7 +692,7 @@ class EditStoredInput extends Action2 {
678
692
  constructor() {
679
693
  super({
680
694
  id: McpCommandIds.EditStoredInput,
681
- title: ( localize2(10135, "Edit Stored Input")),
695
+ title: ( localize2(10372, "Edit Stored Input")),
682
696
  category,
683
697
  f1: false
684
698
  });
@@ -692,7 +706,7 @@ class ShowConfiguration extends Action2 {
692
706
  constructor() {
693
707
  super({
694
708
  id: McpCommandIds.ShowConfiguration,
695
- title: ( localize2(10136, "Show Configuration")),
709
+ title: ( localize2(10373, "Show Configuration")),
696
710
  category,
697
711
  f1: false
698
712
  });
@@ -722,7 +736,7 @@ class ShowOutput extends Action2 {
722
736
  constructor() {
723
737
  super({
724
738
  id: McpCommandIds.ShowOutput,
725
- title: ( localize2(10137, "Show Output")),
739
+ title: ( localize2(10374, "Show Output")),
726
740
  category,
727
741
  f1: false
728
742
  });
@@ -735,7 +749,7 @@ class RestartServer extends Action2 {
735
749
  constructor() {
736
750
  super({
737
751
  id: McpCommandIds.RestartServer,
738
- title: ( localize2(10138, "Restart Server")),
752
+ title: ( localize2(10375, "Restart Server")),
739
753
  category,
740
754
  f1: false
741
755
  });
@@ -754,7 +768,7 @@ class StartServer extends Action2 {
754
768
  constructor() {
755
769
  super({
756
770
  id: McpCommandIds.StartServer,
757
- title: ( localize2(10139, "Start Server")),
771
+ title: ( localize2(10376, "Start Server")),
758
772
  category,
759
773
  f1: false
760
774
  });
@@ -779,7 +793,7 @@ class StopServer extends Action2 {
779
793
  constructor() {
780
794
  super({
781
795
  id: McpCommandIds.StopServer,
782
- title: ( localize2(10140, "Stop Server")),
796
+ title: ( localize2(10377, "Stop Server")),
783
797
  category,
784
798
  f1: false
785
799
  });
@@ -793,8 +807,8 @@ class McpBrowseCommand extends Action2 {
793
807
  constructor() {
794
808
  super({
795
809
  id: McpCommandIds.Browse,
796
- title: ( localize2(10141, "MCP Servers")),
797
- tooltip: ( localize2(10142, "Browse MCP Servers")),
810
+ title: ( localize2(10378, "MCP Servers")),
811
+ tooltip: ( localize2(10379, "Browse MCP Servers")),
798
812
  category,
799
813
  icon: Codicon.search,
800
814
  precondition: ( ChatContextKeys.Setup.hidden.negate()),
@@ -817,7 +831,7 @@ class McpBrowseCommand extends Action2 {
817
831
  MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
818
832
  command: {
819
833
  id: McpCommandIds.Browse,
820
- title: ( localize2(10143, "Browse MCP Servers")),
834
+ title: ( localize2(10380, "Browse MCP Servers")),
821
835
  category,
822
836
  precondition: ( ChatContextKeys.Setup.hidden.negate())
823
837
  }
@@ -826,7 +840,7 @@ class ShowInstalledMcpServersCommand extends Action2 {
826
840
  constructor() {
827
841
  super({
828
842
  id: McpCommandIds.ShowInstalled,
829
- title: ( localize2(10144, "Show Installed Servers")),
843
+ title: ( localize2(10381, "Show Installed Servers")),
830
844
  category,
831
845
  precondition: ( ContextKeyExpr.and(HasInstalledMcpServersContext, ( ChatContextKeys.Setup.hidden.negate()))),
832
846
  f1: true
@@ -844,7 +858,7 @@ class ShowInstalledMcpServersCommand extends Action2 {
844
858
  MenuRegistry.appendMenuItem(CHAT_CONFIG_MENU_ID, {
845
859
  command: {
846
860
  id: McpCommandIds.ShowInstalled,
847
- title: ( localize2(10145, "MCP Servers"))
861
+ title: ( localize2(10382, "MCP Servers"))
848
862
  },
849
863
  when: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( ContextKeyExpr.equals("view", ChatViewId)))),
850
864
  order: 10,
@@ -869,7 +883,7 @@ class OpenUserMcpResourceCommand extends OpenMcpResourceCommand {
869
883
  constructor() {
870
884
  super({
871
885
  id: McpCommandIds.OpenUserMcp,
872
- title: ( localize2(10146, "Open User Configuration")),
886
+ title: ( localize2(10383, "Open User Configuration")),
873
887
  category,
874
888
  f1: true,
875
889
  precondition: ( ChatContextKeys.Setup.hidden.negate())
@@ -884,7 +898,7 @@ class OpenRemoteUserMcpResourceCommand extends OpenMcpResourceCommand {
884
898
  constructor() {
885
899
  super({
886
900
  id: McpCommandIds.OpenRemoteUserMcp,
887
- title: ( localize2(10147, "Open Remote User Configuration")),
901
+ title: ( localize2(10384, "Open Remote User Configuration")),
888
902
  category,
889
903
  f1: true,
890
904
  precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( RemoteNameContext.notEqualsTo(""))))
@@ -901,7 +915,7 @@ class OpenWorkspaceFolderMcpResourceCommand extends Action2 {
901
915
  constructor() {
902
916
  super({
903
917
  id: McpCommandIds.OpenWorkspaceFolderMcp,
904
- title: ( localize2(10148, "Open Workspace Folder MCP Configuration")),
918
+ title: ( localize2(10385, "Open Workspace Folder MCP Configuration")),
905
919
  category,
906
920
  f1: true,
907
921
  precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( WorkspaceFolderCountContext.notEqualsTo(0))))
@@ -924,7 +938,7 @@ class OpenWorkspaceMcpResourceCommand extends Action2 {
924
938
  constructor() {
925
939
  super({
926
940
  id: McpCommandIds.OpenWorkspaceMcp,
927
- title: ( localize2(10149, "Open Workspace MCP Configuration")),
941
+ title: ( localize2(10386, "Open Workspace MCP Configuration")),
928
942
  category,
929
943
  f1: true,
930
944
  precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( WorkbenchStateContext.isEqualTo("workspace"))))
@@ -945,7 +959,7 @@ class McpBrowseResourcesCommand extends Action2 {
945
959
  constructor() {
946
960
  super({
947
961
  id: McpCommandIds.BrowseResources,
948
- title: ( localize2(10150, "Browse Resources...")),
962
+ title: ( localize2(10387, "Browse Resources...")),
949
963
  category,
950
964
  precondition: ( ContextKeyExpr.and(McpContextKeys.serverCount.greater(0), ( ChatContextKeys.Setup.hidden.negate()))),
951
965
  f1: true
@@ -963,7 +977,7 @@ class McpConfigureSamplingModels extends Action2 {
963
977
  constructor() {
964
978
  super({
965
979
  id: McpCommandIds.ConfigureSamplingModels,
966
- title: ( localize2(10151, "Configure SamplingModel")),
980
+ title: ( localize2(10388, "Configure SamplingModel")),
967
981
  category
968
982
  });
969
983
  }
@@ -989,7 +1003,7 @@ class McpConfigureSamplingModels extends Action2 {
989
1003
  );
990
1004
  const picked = await quickInputService.pick(allItems, {
991
1005
  placeHolder: ( localize(
992
- 10152,
1006
+ 10389,
993
1007
  "Pick the models {0} can access via MCP sampling",
994
1008
  server.definition.label
995
1009
  )),
@@ -1005,7 +1019,7 @@ class McpStartPromptingServerCommand extends Action2 {
1005
1019
  constructor() {
1006
1020
  super({
1007
1021
  id: McpCommandIds.StartPromptForServer,
1008
- title: ( localize2(10153, "Start Prompting Server")),
1022
+ title: ( localize2(10390, "Start Prompting Server")),
1009
1023
  category,
1010
1024
  f1: false
1011
1025
  });
@@ -1035,7 +1049,7 @@ class McpSkipCurrentAutostartCommand extends Action2 {
1035
1049
  constructor() {
1036
1050
  super({
1037
1051
  id: McpCommandIds.SkipCurrentAutostart,
1038
- title: ( localize2(10154, "Skip Current Autostart")),
1052
+ title: ( localize2(10391, "Skip Current Autostart")),
1039
1053
  category,
1040
1054
  f1: false
1041
1055
  });
@@ -26,4 +26,15 @@ export declare class McpElicitationService implements IMcpElicitationService {
26
26
  private _validateString;
27
27
  private _validateStringFormat;
28
28
  private _validateNumber;
29
+ /**
30
+ * Converts an MCP elicitation schema into IChatQuestion[] for the carousel UI.
31
+ * Returns the questions and a map from question ID to schema property name.
32
+ */
33
+ private _convertSchemaToQuestions;
34
+ /**
35
+ * Converts carousel answers (keyed by question ID) back into the
36
+ * MCP ElicitResult content format (keyed by schema property names),
37
+ * coercing types as needed.
38
+ */
39
+ private _convertCarouselAnswersToElicitResult;
29
40
  }