@codingame/monaco-vscode-mcp-service-override 29.1.0 → 30.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcp.contribution.js +3 -3
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpAddContextContribution.js +2 -2
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpCommands.js +60 -60
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpElicitationService.js +25 -25
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpLanguageFeatures.js +21 -21
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpMigration.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpResourceQuickAccess.js +8 -8
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServersView.js +17 -17
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpWorkbenchService.js +10 -10
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/extensionMcpDiscovery.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAbstract.js +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/pluginMcpDiscovery.js +3 -0
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpContextKeys.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpLanguageModelToolContribution.js +6 -6
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpRegistry.js +13 -13
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingLog.js +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingService.js +11 -11
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpSandboxService.js +3 -3
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpServerConnection.js +3 -3
- package/vscode/src/vs/workbench/services/authentication/browser/authenticationMcpService.js +9 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-mcp-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "30.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - mcp service-override",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-api": "
|
|
18
|
+
"@codingame/monaco-vscode-api": "30.0.0"
|
|
19
19
|
},
|
|
20
20
|
"main": "index.js",
|
|
21
21
|
"module": "index.js",
|
|
@@ -115,16 +115,16 @@ registerWorkbenchContribution2(
|
|
|
115
115
|
const jsonRegistry = ( Registry.as(Extensions.JSONContribution));
|
|
116
116
|
jsonRegistry.registerSchema(mcpSchemaId, mcpServerSchema);
|
|
117
117
|
( Registry.as(EditorExtensions.EditorPane)).registerEditorPane(
|
|
118
|
-
EditorPaneDescriptor.create(McpServerEditor, McpServerEditor.ID, ( localize(
|
|
118
|
+
EditorPaneDescriptor.create(McpServerEditor, McpServerEditor.ID, ( localize(10394, "MCP Server"))),
|
|
119
119
|
[( new SyncDescriptor(McpServerEditorInput))]
|
|
120
120
|
);
|
|
121
121
|
( Registry.as(Extensions$1.Quickaccess)).registerQuickAccessProvider({
|
|
122
122
|
ctor: McpResourceQuickAccess,
|
|
123
123
|
prefix: McpResourceQuickAccess.PREFIX,
|
|
124
124
|
when: ChatContextKeys.enabled,
|
|
125
|
-
placeholder: ( localize(
|
|
125
|
+
placeholder: ( localize(10395, "Filter to an MCP resource")),
|
|
126
126
|
helpEntries: [{
|
|
127
|
-
description: ( localize(
|
|
127
|
+
description: ( localize(10396, "MCP Server Resources")),
|
|
128
128
|
commandId: McpCommandIds.AddConfiguration
|
|
129
129
|
}]
|
|
130
130
|
});
|
|
@@ -43,7 +43,7 @@ let McpAddContextContribution = class McpAddContextContribution extends Disposab
|
|
|
43
43
|
_registerAddContextMenu() {
|
|
44
44
|
this._addContextMenu.value = this._chatContextPickService.registerChatContextItem({
|
|
45
45
|
type: "pickerPick",
|
|
46
|
-
label: ( localize(
|
|
46
|
+
label: ( localize(10397, "MCP Resources...")),
|
|
47
47
|
icon: Codicon.mcp,
|
|
48
48
|
isEnabled(widget) {
|
|
49
49
|
return !!widget.attachmentCapabilities.supportsMCPAttachments;
|
|
@@ -51,7 +51,7 @@ let McpAddContextContribution = class McpAddContextContribution extends Disposab
|
|
|
51
51
|
asPicker: () => {
|
|
52
52
|
const helper = this._instantiationService.createInstance(McpResourcePickHelper);
|
|
53
53
|
return {
|
|
54
|
-
placeholder: ( localize(
|
|
54
|
+
placeholder: ( localize(10398, "Select MCP Resource...")),
|
|
55
55
|
picks: (_query, token) => this._getResourcePicks(token, helper),
|
|
56
56
|
goBack: () => {
|
|
57
57
|
return helper.navigateBack();
|
|
@@ -79,7 +79,7 @@ class ListMcpServerCommand extends Action2 {
|
|
|
79
79
|
constructor() {
|
|
80
80
|
super({
|
|
81
81
|
id: McpCommandIds.ListServer,
|
|
82
|
-
title: ( localize2(
|
|
82
|
+
title: ( localize2(10399, "List Servers")),
|
|
83
83
|
icon: Codicon.server,
|
|
84
84
|
category,
|
|
85
85
|
f1: true,
|
|
@@ -101,7 +101,7 @@ class ListMcpServerCommand extends Action2 {
|
|
|
101
101
|
const pick = quickInput.createQuickPick({
|
|
102
102
|
useSeparators: true
|
|
103
103
|
});
|
|
104
|
-
pick.placeholder = ( localize(
|
|
104
|
+
pick.placeholder = ( localize(10400, "Select an MCP Server"));
|
|
105
105
|
mcpService.activateCollections();
|
|
106
106
|
store.add(pick);
|
|
107
107
|
store.add(autorun(reader => {
|
|
@@ -111,8 +111,8 @@ class ListMcpServerCommand extends Action2 {
|
|
|
111
111
|
const firstRun = pick.items.length === 0;
|
|
112
112
|
pick.items = [{
|
|
113
113
|
id: "$add",
|
|
114
|
-
label: ( localize(
|
|
115
|
-
description: ( localize(
|
|
114
|
+
label: ( localize(10401, "Add Server")),
|
|
115
|
+
description: ( localize(10402, "Add a new server configuration")),
|
|
116
116
|
alwaysShow: true,
|
|
117
117
|
iconClass: ThemeIcon.asClassName(Codicon.add)
|
|
118
118
|
}, ...( Object.values(servers)).filter(s => s.length).flatMap(servers => [{
|
|
@@ -124,7 +124,7 @@ class ListMcpServerCommand extends Action2 {
|
|
|
124
124
|
return {
|
|
125
125
|
id: server.definition.id,
|
|
126
126
|
label: server.definition.label,
|
|
127
|
-
description: disabled ? ( localize(
|
|
127
|
+
description: disabled ? ( localize(10403, "Disabled")) : ( McpConnectionState.toString(server.connectionState.read(reader)))
|
|
128
128
|
};
|
|
129
129
|
}))])];
|
|
130
130
|
if (firstRun && pick.items.length > 3) {
|
|
@@ -161,7 +161,7 @@ class McpConfirmationServerOptionsCommand extends Action2 {
|
|
|
161
161
|
constructor() {
|
|
162
162
|
super({
|
|
163
163
|
id: McpCommandIds.ServerOptionsInConfirmation,
|
|
164
|
-
title: ( localize2(
|
|
164
|
+
title: ( localize2(10404, "Server Options")),
|
|
165
165
|
category,
|
|
166
166
|
icon: Codicon.settingsGear,
|
|
167
167
|
f1: false,
|
|
@@ -192,7 +192,7 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
192
192
|
constructor() {
|
|
193
193
|
super({
|
|
194
194
|
id: McpCommandIds.ServerOptions,
|
|
195
|
-
title: ( localize2(
|
|
195
|
+
title: ( localize2(10404, "Server Options")),
|
|
196
196
|
category,
|
|
197
197
|
f1: false
|
|
198
198
|
});
|
|
@@ -216,20 +216,20 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
216
216
|
const serverState = server.connectionState.get();
|
|
217
217
|
items.push({
|
|
218
218
|
type: "separator",
|
|
219
|
-
label: ( localize(
|
|
219
|
+
label: ( localize(10405, "Status"))
|
|
220
220
|
});
|
|
221
221
|
if (McpConnectionState.canBeStarted(serverState.state)) {
|
|
222
222
|
items.push({
|
|
223
|
-
label: ( localize(
|
|
223
|
+
label: ( localize(10406, "Start Server")),
|
|
224
224
|
action: "start"
|
|
225
225
|
});
|
|
226
226
|
} else {
|
|
227
227
|
items.push({
|
|
228
|
-
label: ( localize(
|
|
228
|
+
label: ( localize(10407, "Stop Server")),
|
|
229
229
|
action: "stop"
|
|
230
230
|
});
|
|
231
231
|
items.push({
|
|
232
|
-
label: ( localize(
|
|
232
|
+
label: ( localize(10408, "Restart Server")),
|
|
233
233
|
action: "restart"
|
|
234
234
|
});
|
|
235
235
|
}
|
|
@@ -237,26 +237,26 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
237
237
|
const configTarget = serverDefinition?.presentation?.origin || collection?.presentation?.origin;
|
|
238
238
|
if (configTarget) {
|
|
239
239
|
items.push({
|
|
240
|
-
label: ( localize(
|
|
240
|
+
label: ( localize(10409, "Show Configuration")),
|
|
241
241
|
action: "config"
|
|
242
242
|
});
|
|
243
243
|
}
|
|
244
244
|
items.push({
|
|
245
|
-
label: ( localize(
|
|
245
|
+
label: ( localize(10410, "Show Output")),
|
|
246
246
|
action: "showOutput"
|
|
247
247
|
});
|
|
248
248
|
items.push({
|
|
249
249
|
type: "separator",
|
|
250
|
-
label: ( localize(
|
|
250
|
+
label: ( localize(10411, "Sampling"))
|
|
251
251
|
}, {
|
|
252
|
-
label: ( localize(
|
|
253
|
-
description: ( localize(
|
|
252
|
+
label: ( localize(10412, "Configure Model Access")),
|
|
253
|
+
description: ( localize(10413, "Set the models the server can use via MCP sampling")),
|
|
254
254
|
action: "configSampling"
|
|
255
255
|
});
|
|
256
256
|
if (samplingService.hasLogs(server)) {
|
|
257
257
|
items.push({
|
|
258
|
-
label: ( localize(
|
|
259
|
-
description: ( localize(
|
|
258
|
+
label: ( localize(10414, "Show Sampling Requests")),
|
|
259
|
+
description: ( localize(10415, "Show the sampling requests for this server")),
|
|
260
260
|
action: "samplingLog"
|
|
261
261
|
});
|
|
262
262
|
}
|
|
@@ -264,15 +264,15 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
264
264
|
if (capabilities === undefined || (capabilities & McpCapability.Resources)) {
|
|
265
265
|
items.push({
|
|
266
266
|
type: "separator",
|
|
267
|
-
label: ( localize(
|
|
267
|
+
label: ( localize(10416, "Resources"))
|
|
268
268
|
});
|
|
269
269
|
items.push({
|
|
270
|
-
label: ( localize(
|
|
270
|
+
label: ( localize(10417, "Browse Resources")),
|
|
271
271
|
action: "resources"
|
|
272
272
|
});
|
|
273
273
|
}
|
|
274
274
|
const pick = await quickInputService.pick(items, {
|
|
275
|
-
placeHolder: ( localize(
|
|
275
|
+
placeHolder: ( localize(10418, "Select action for '{0}'", server.definition.label))
|
|
276
276
|
});
|
|
277
277
|
if (!pick) {
|
|
278
278
|
return;
|
|
@@ -320,7 +320,7 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
320
320
|
editorService.openEditor({
|
|
321
321
|
resource: undefined,
|
|
322
322
|
contents: samplingService.getLogText(server),
|
|
323
|
-
label: ( localize(
|
|
323
|
+
label: ( localize(10419, "MCP Sampling: {0}", server.definition.label))
|
|
324
324
|
});
|
|
325
325
|
break;
|
|
326
326
|
default:
|
|
@@ -337,14 +337,14 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
337
337
|
if (accountQuery.entities().getEntityCount().total > 1) {
|
|
338
338
|
result.push({
|
|
339
339
|
action: "disconnect",
|
|
340
|
-
label: ( localize(
|
|
340
|
+
label: ( localize(10420, "Disconnect Account")),
|
|
341
341
|
description: `(${accountName})`,
|
|
342
342
|
accountQuery
|
|
343
343
|
});
|
|
344
344
|
} else {
|
|
345
345
|
result.push({
|
|
346
346
|
action: "signout",
|
|
347
|
-
label: ( localize(
|
|
347
|
+
label: ( localize(10421, "Sign Out")),
|
|
348
348
|
description: `(${accountName})`,
|
|
349
349
|
accountQuery
|
|
350
350
|
});
|
|
@@ -513,24 +513,24 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
|
|
|
513
513
|
text: s.definition.label,
|
|
514
514
|
id: McpCommandIds.ServerOptions,
|
|
515
515
|
arguments: [s.definition.id],
|
|
516
|
-
tooltip: ( localize(
|
|
516
|
+
tooltip: ( localize(10422, "Show server options for {0}", s.definition.label))
|
|
517
517
|
});
|
|
518
518
|
const single = servers.length === 1;
|
|
519
519
|
const names = ( ( servers.map(s => isServer(s) ? link(s) : "`" + s.label + "`")).map(l => single ? l : `- ${l}`)).join("\n");
|
|
520
520
|
let markdown;
|
|
521
521
|
if (state === DisplayedState.NewTools) {
|
|
522
522
|
markdown = ( new MarkdownString(single ? ( localize(
|
|
523
|
-
|
|
523
|
+
10423,
|
|
524
524
|
"MCP server {0} has been updated and may have new tools available.",
|
|
525
525
|
names
|
|
526
526
|
)) : ( localize(
|
|
527
|
-
|
|
527
|
+
10424,
|
|
528
528
|
"MCP servers have been updated and may have new tools available:\n\n{0}",
|
|
529
529
|
names
|
|
530
530
|
))));
|
|
531
531
|
} else if (state === DisplayedState.Error) {
|
|
532
|
-
markdown = ( new MarkdownString(single ? ( localize(
|
|
533
|
-
|
|
532
|
+
markdown = ( new MarkdownString(single ? ( localize(10425, "MCP server {0} was unable to start successfully.", names)) : ( localize(
|
|
533
|
+
10426,
|
|
534
534
|
"Multiple MCP servers were unable to start successfully:\n\n{0}",
|
|
535
535
|
names
|
|
536
536
|
))));
|
|
@@ -557,7 +557,7 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
|
|
|
557
557
|
const divider = $("hr.mcp-hover-divider");
|
|
558
558
|
container.appendChild(divider);
|
|
559
559
|
const checkboxContainer = $("div.mcp-hover-setting");
|
|
560
|
-
const settingLabelStr = ( localize(
|
|
560
|
+
const settingLabelStr = ( localize(10427, "Automatically start MCP servers when sending a chat message"));
|
|
561
561
|
const checkbox = store.add(( new Checkbox(settingLabelStr, config.get() !== McpAutoStartValue.Never, {
|
|
562
562
|
...defaultCheckboxStyles
|
|
563
563
|
})));
|
|
@@ -585,11 +585,11 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
|
|
|
585
585
|
} = displayedStateCurrent.get()
|
|
586
586
|
) {
|
|
587
587
|
if (state === DisplayedState.NewTools) {
|
|
588
|
-
return localize(
|
|
588
|
+
return localize(10428, "New tools available ({0})", servers.length || 1);
|
|
589
589
|
} else if (state === DisplayedState.Error) {
|
|
590
|
-
return localize(
|
|
590
|
+
return localize(10429, "Error loading {0} tool(s)", servers.length || 1);
|
|
591
591
|
} else if (state === DisplayedState.Refreshing) {
|
|
592
|
-
return localize(
|
|
592
|
+
return localize(10430, "Discovering tools...");
|
|
593
593
|
} else {
|
|
594
594
|
return null;
|
|
595
595
|
}
|
|
@@ -607,7 +607,7 @@ class ResetMcpTrustCommand extends Action2 {
|
|
|
607
607
|
constructor() {
|
|
608
608
|
super({
|
|
609
609
|
id: McpCommandIds.ResetTrust,
|
|
610
|
-
title: ( localize2(
|
|
610
|
+
title: ( localize2(10431, "Reset Trust")),
|
|
611
611
|
category,
|
|
612
612
|
f1: true,
|
|
613
613
|
precondition: ( ContextKeyExpr.and(McpContextKeys.toolsCount.greater(0), ( ChatContextKeys.Setup.hidden.negate())))
|
|
@@ -622,7 +622,7 @@ class ResetMcpCachedTools extends Action2 {
|
|
|
622
622
|
constructor() {
|
|
623
623
|
super({
|
|
624
624
|
id: McpCommandIds.ResetCachedTools,
|
|
625
|
-
title: ( localize2(
|
|
625
|
+
title: ( localize2(10432, "Reset Cached Tools")),
|
|
626
626
|
category,
|
|
627
627
|
f1: true,
|
|
628
628
|
precondition: ( ContextKeyExpr.and(McpContextKeys.toolsCount.greater(0), ( ChatContextKeys.Setup.hidden.negate())))
|
|
@@ -637,9 +637,9 @@ class AddConfigurationAction extends Action2 {
|
|
|
637
637
|
constructor() {
|
|
638
638
|
super({
|
|
639
639
|
id: McpCommandIds.AddConfiguration,
|
|
640
|
-
title: ( localize2(
|
|
640
|
+
title: ( localize2(10433, "Add Server...")),
|
|
641
641
|
metadata: {
|
|
642
|
-
description: ( localize2(
|
|
642
|
+
description: ( localize2(10434, "Installs a new Model Context protocol to the mcp.json settings"))
|
|
643
643
|
},
|
|
644
644
|
category,
|
|
645
645
|
f1: true,
|
|
@@ -661,9 +661,9 @@ class InstallFromManifestAction extends Action2 {
|
|
|
661
661
|
constructor() {
|
|
662
662
|
super({
|
|
663
663
|
id: McpCommandIds.InstallFromManifest,
|
|
664
|
-
title: ( localize2(
|
|
664
|
+
title: ( localize2(10435, "Install Server from Manifest...")),
|
|
665
665
|
metadata: {
|
|
666
|
-
description: ( localize2(
|
|
666
|
+
description: ( localize2(10436, "Install an MCP server from a JSON manifest file"))
|
|
667
667
|
},
|
|
668
668
|
category,
|
|
669
669
|
f1: true,
|
|
@@ -679,7 +679,7 @@ class RemoveStoredInput extends Action2 {
|
|
|
679
679
|
constructor() {
|
|
680
680
|
super({
|
|
681
681
|
id: McpCommandIds.RemoveStoredInput,
|
|
682
|
-
title: ( localize2(
|
|
682
|
+
title: ( localize2(10432, "Reset Cached Tools")),
|
|
683
683
|
category,
|
|
684
684
|
f1: false
|
|
685
685
|
});
|
|
@@ -692,7 +692,7 @@ class EditStoredInput extends Action2 {
|
|
|
692
692
|
constructor() {
|
|
693
693
|
super({
|
|
694
694
|
id: McpCommandIds.EditStoredInput,
|
|
695
|
-
title: ( localize2(
|
|
695
|
+
title: ( localize2(10437, "Edit Stored Input")),
|
|
696
696
|
category,
|
|
697
697
|
f1: false
|
|
698
698
|
});
|
|
@@ -706,7 +706,7 @@ class ShowConfiguration extends Action2 {
|
|
|
706
706
|
constructor() {
|
|
707
707
|
super({
|
|
708
708
|
id: McpCommandIds.ShowConfiguration,
|
|
709
|
-
title: ( localize2(
|
|
709
|
+
title: ( localize2(10438, "Show Configuration")),
|
|
710
710
|
category,
|
|
711
711
|
f1: false
|
|
712
712
|
});
|
|
@@ -736,7 +736,7 @@ class ShowOutput extends Action2 {
|
|
|
736
736
|
constructor() {
|
|
737
737
|
super({
|
|
738
738
|
id: McpCommandIds.ShowOutput,
|
|
739
|
-
title: ( localize2(
|
|
739
|
+
title: ( localize2(10439, "Show Output")),
|
|
740
740
|
category,
|
|
741
741
|
f1: false
|
|
742
742
|
});
|
|
@@ -749,7 +749,7 @@ class RestartServer extends Action2 {
|
|
|
749
749
|
constructor() {
|
|
750
750
|
super({
|
|
751
751
|
id: McpCommandIds.RestartServer,
|
|
752
|
-
title: ( localize2(
|
|
752
|
+
title: ( localize2(10440, "Restart Server")),
|
|
753
753
|
category,
|
|
754
754
|
f1: false
|
|
755
755
|
});
|
|
@@ -768,7 +768,7 @@ class StartServer extends Action2 {
|
|
|
768
768
|
constructor() {
|
|
769
769
|
super({
|
|
770
770
|
id: McpCommandIds.StartServer,
|
|
771
|
-
title: ( localize2(
|
|
771
|
+
title: ( localize2(10441, "Start Server")),
|
|
772
772
|
category,
|
|
773
773
|
f1: false
|
|
774
774
|
});
|
|
@@ -793,7 +793,7 @@ class StopServer extends Action2 {
|
|
|
793
793
|
constructor() {
|
|
794
794
|
super({
|
|
795
795
|
id: McpCommandIds.StopServer,
|
|
796
|
-
title: ( localize2(
|
|
796
|
+
title: ( localize2(10442, "Stop Server")),
|
|
797
797
|
category,
|
|
798
798
|
f1: false
|
|
799
799
|
});
|
|
@@ -807,8 +807,8 @@ class McpBrowseCommand extends Action2 {
|
|
|
807
807
|
constructor() {
|
|
808
808
|
super({
|
|
809
809
|
id: McpCommandIds.Browse,
|
|
810
|
-
title: ( localize2(
|
|
811
|
-
tooltip: ( localize2(
|
|
810
|
+
title: ( localize2(10443, "MCP Servers")),
|
|
811
|
+
tooltip: ( localize2(10444, "Browse MCP Servers")),
|
|
812
812
|
category,
|
|
813
813
|
icon: Codicon.search,
|
|
814
814
|
precondition: ( ChatContextKeys.Setup.hidden.negate()),
|
|
@@ -831,7 +831,7 @@ class McpBrowseCommand extends Action2 {
|
|
|
831
831
|
MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
|
|
832
832
|
command: {
|
|
833
833
|
id: McpCommandIds.Browse,
|
|
834
|
-
title: ( localize2(
|
|
834
|
+
title: ( localize2(10445, "Browse MCP Servers")),
|
|
835
835
|
category,
|
|
836
836
|
precondition: ( ChatContextKeys.Setup.hidden.negate())
|
|
837
837
|
}
|
|
@@ -840,7 +840,7 @@ class ShowInstalledMcpServersCommand extends Action2 {
|
|
|
840
840
|
constructor() {
|
|
841
841
|
super({
|
|
842
842
|
id: McpCommandIds.ShowInstalled,
|
|
843
|
-
title: ( localize2(
|
|
843
|
+
title: ( localize2(10446, "Show Installed Servers")),
|
|
844
844
|
category,
|
|
845
845
|
precondition: ( ContextKeyExpr.and(HasInstalledMcpServersContext, ( ChatContextKeys.Setup.hidden.negate()))),
|
|
846
846
|
f1: true
|
|
@@ -858,7 +858,7 @@ class ShowInstalledMcpServersCommand extends Action2 {
|
|
|
858
858
|
MenuRegistry.appendMenuItem(CHAT_CONFIG_MENU_ID, {
|
|
859
859
|
command: {
|
|
860
860
|
id: McpCommandIds.ShowInstalled,
|
|
861
|
-
title: ( localize2(
|
|
861
|
+
title: ( localize2(10447, "MCP Servers"))
|
|
862
862
|
},
|
|
863
863
|
when: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( ContextKeyExpr.equals("view", ChatViewId)))),
|
|
864
864
|
order: 10,
|
|
@@ -883,7 +883,7 @@ class OpenUserMcpResourceCommand extends OpenMcpResourceCommand {
|
|
|
883
883
|
constructor() {
|
|
884
884
|
super({
|
|
885
885
|
id: McpCommandIds.OpenUserMcp,
|
|
886
|
-
title: ( localize2(
|
|
886
|
+
title: ( localize2(10448, "Open User Configuration")),
|
|
887
887
|
category,
|
|
888
888
|
f1: true,
|
|
889
889
|
precondition: ( ChatContextKeys.Setup.hidden.negate())
|
|
@@ -898,7 +898,7 @@ class OpenRemoteUserMcpResourceCommand extends OpenMcpResourceCommand {
|
|
|
898
898
|
constructor() {
|
|
899
899
|
super({
|
|
900
900
|
id: McpCommandIds.OpenRemoteUserMcp,
|
|
901
|
-
title: ( localize2(
|
|
901
|
+
title: ( localize2(10449, "Open Remote User Configuration")),
|
|
902
902
|
category,
|
|
903
903
|
f1: true,
|
|
904
904
|
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( RemoteNameContext.notEqualsTo(""))))
|
|
@@ -915,7 +915,7 @@ class OpenWorkspaceFolderMcpResourceCommand extends Action2 {
|
|
|
915
915
|
constructor() {
|
|
916
916
|
super({
|
|
917
917
|
id: McpCommandIds.OpenWorkspaceFolderMcp,
|
|
918
|
-
title: ( localize2(
|
|
918
|
+
title: ( localize2(10450, "Open Workspace Folder MCP Configuration")),
|
|
919
919
|
category,
|
|
920
920
|
f1: true,
|
|
921
921
|
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( WorkspaceFolderCountContext.notEqualsTo(0))))
|
|
@@ -938,7 +938,7 @@ class OpenWorkspaceMcpResourceCommand extends Action2 {
|
|
|
938
938
|
constructor() {
|
|
939
939
|
super({
|
|
940
940
|
id: McpCommandIds.OpenWorkspaceMcp,
|
|
941
|
-
title: ( localize2(
|
|
941
|
+
title: ( localize2(10451, "Open Workspace MCP Configuration")),
|
|
942
942
|
category,
|
|
943
943
|
f1: true,
|
|
944
944
|
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( WorkbenchStateContext.isEqualTo("workspace"))))
|
|
@@ -959,7 +959,7 @@ class McpBrowseResourcesCommand extends Action2 {
|
|
|
959
959
|
constructor() {
|
|
960
960
|
super({
|
|
961
961
|
id: McpCommandIds.BrowseResources,
|
|
962
|
-
title: ( localize2(
|
|
962
|
+
title: ( localize2(10452, "Browse Resources...")),
|
|
963
963
|
category,
|
|
964
964
|
precondition: ( ContextKeyExpr.and(McpContextKeys.serverCount.greater(0), ( ChatContextKeys.Setup.hidden.negate()))),
|
|
965
965
|
f1: true
|
|
@@ -977,7 +977,7 @@ class McpConfigureSamplingModels extends Action2 {
|
|
|
977
977
|
constructor() {
|
|
978
978
|
super({
|
|
979
979
|
id: McpCommandIds.ConfigureSamplingModels,
|
|
980
|
-
title: ( localize2(
|
|
980
|
+
title: ( localize2(10453, "Configure SamplingModel")),
|
|
981
981
|
category
|
|
982
982
|
});
|
|
983
983
|
}
|
|
@@ -1003,7 +1003,7 @@ class McpConfigureSamplingModels extends Action2 {
|
|
|
1003
1003
|
);
|
|
1004
1004
|
const picked = await quickInputService.pick(allItems, {
|
|
1005
1005
|
placeHolder: ( localize(
|
|
1006
|
-
|
|
1006
|
+
10454,
|
|
1007
1007
|
"Pick the models {0} can access via MCP sampling",
|
|
1008
1008
|
server.definition.label
|
|
1009
1009
|
)),
|
|
@@ -1019,7 +1019,7 @@ class McpStartPromptingServerCommand extends Action2 {
|
|
|
1019
1019
|
constructor() {
|
|
1020
1020
|
super({
|
|
1021
1021
|
id: McpCommandIds.StartPromptForServer,
|
|
1022
|
-
title: ( localize2(
|
|
1022
|
+
title: ( localize2(10455, "Start Prompting Server")),
|
|
1023
1023
|
category,
|
|
1024
1024
|
f1: false
|
|
1025
1025
|
});
|
|
@@ -1049,7 +1049,7 @@ class McpSkipCurrentAutostartCommand extends Action2 {
|
|
|
1049
1049
|
constructor() {
|
|
1050
1050
|
super({
|
|
1051
1051
|
id: McpCommandIds.SkipCurrentAutostart,
|
|
1052
|
-
title: ( localize2(
|
|
1052
|
+
title: ( localize2(10456, "Skip Current Autostart")),
|
|
1053
1053
|
category,
|
|
1054
1054
|
f1: false
|
|
1055
1055
|
});
|
|
@@ -27,8 +27,8 @@ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/obse
|
|
|
27
27
|
|
|
28
28
|
const noneItem = {
|
|
29
29
|
id: undefined,
|
|
30
|
-
label: ( localize(
|
|
31
|
-
description: ( localize(
|
|
30
|
+
label: ( localize(10520, "None")),
|
|
31
|
+
description: ( localize(10521, "No selection")),
|
|
32
32
|
alwaysShow: true
|
|
33
33
|
};
|
|
34
34
|
function isFormElicitation(params) {
|
|
@@ -117,11 +117,11 @@ let McpElicitationService = class McpElicitationService {
|
|
|
117
117
|
}
|
|
118
118
|
const handle = this._notificationService.notify({
|
|
119
119
|
message: elicitation.message,
|
|
120
|
-
source: ( localize(
|
|
120
|
+
source: ( localize(10522, "MCP Server ({0})", server.definition.label)),
|
|
121
121
|
severity: Severity.Info,
|
|
122
122
|
actions: {
|
|
123
|
-
primary: [store.add(( new Action("mcp.elicit.give", ( localize(
|
|
124
|
-
secondary: [store.add(( new Action("mcp.elicit.cancel", ( localize(
|
|
123
|
+
primary: [store.add(( new Action("mcp.elicit.give", ( localize(10523, "Respond")), undefined, true, () => resolve(this._doElicitForm(elicitation, token)))))],
|
|
124
|
+
secondary: [store.add(( new Action("mcp.elicit.cancel", ( localize(10524, "Cancel")), undefined, true, () => resolve({
|
|
125
125
|
action: "decline"
|
|
126
126
|
}))))]
|
|
127
127
|
}
|
|
@@ -163,7 +163,7 @@ let McpElicitationService = class McpElicitationService {
|
|
|
163
163
|
if (chatModel instanceof ChatModel) {
|
|
164
164
|
const request = chatModel.getRequests().at(-1);
|
|
165
165
|
if (request) {
|
|
166
|
-
const part = ( new ChatElicitationRequestPart(( localize(
|
|
166
|
+
const part = ( new ChatElicitationRequestPart(( localize(10525, "Authorization Required")), ( new MarkdownString()).appendText(elicitation.message).appendMarkdown("\n\n" + ( localize(10526, "Open this URL?"))).appendCodeblock("", elicitation.url), ( localize(10527, "{0} (MCP Server)", server.definition.label)), ( localize(10528, "Open {0}", ( URI.parse(elicitation.url)).authority)), ( localize(10529, "Cancel")), async () => {
|
|
167
167
|
const result = await this._doElicitUrl(elicitation, token);
|
|
168
168
|
resolve(result);
|
|
169
169
|
completePromise.then(() => part.hide());
|
|
@@ -178,12 +178,12 @@ let McpElicitationService = class McpElicitationService {
|
|
|
178
178
|
}
|
|
179
179
|
} else {
|
|
180
180
|
const handle = this._notificationService.notify({
|
|
181
|
-
message: elicitation.message + " " + ( localize(
|
|
182
|
-
source: ( localize(
|
|
181
|
+
message: elicitation.message + " " + ( localize(10530, "This will open {0}", elicitation.url)),
|
|
182
|
+
source: ( localize(10522, "MCP Server ({0})", server.definition.label)),
|
|
183
183
|
severity: Severity.Info,
|
|
184
184
|
actions: {
|
|
185
|
-
primary: [store.add(( new Action("mcp.elicit.url.open2", ( localize(
|
|
186
|
-
secondary: [store.add(( new Action("mcp.elicit.cancel", ( localize(
|
|
185
|
+
primary: [store.add(( new Action("mcp.elicit.url.open2", ( localize(10531, "Open URL")), undefined, true, () => resolve(this._doElicitUrl(elicitation, token)))))],
|
|
186
|
+
secondary: [store.add(( new Action("mcp.elicit.cancel", ( localize(10524, "Cancel")), undefined, true, () => resolve({
|
|
187
187
|
action: "decline"
|
|
188
188
|
}))))]
|
|
189
189
|
}
|
|
@@ -325,7 +325,7 @@ let McpElicitationService = class McpElicitationService {
|
|
|
325
325
|
_getFieldPlaceholder(schema, required) {
|
|
326
326
|
let placeholder = schema.description || "";
|
|
327
327
|
if (!required) {
|
|
328
|
-
placeholder = placeholder ? `${placeholder} (${( localize(
|
|
328
|
+
placeholder = placeholder ? `${placeholder} (${( localize(10532, "Optional"))})` : ( localize(10532, "Optional"));
|
|
329
329
|
}
|
|
330
330
|
return placeholder;
|
|
331
331
|
}
|
|
@@ -434,7 +434,7 @@ let McpElicitationService = class McpElicitationService {
|
|
|
434
434
|
items.push({
|
|
435
435
|
id: "$default",
|
|
436
436
|
label: `${schema.default}`,
|
|
437
|
-
description: ( localize(
|
|
437
|
+
description: ( localize(10533, "Default value"))
|
|
438
438
|
});
|
|
439
439
|
}
|
|
440
440
|
}
|
|
@@ -503,13 +503,13 @@ let McpElicitationService = class McpElicitationService {
|
|
|
503
503
|
if (schema.minLength && value.length < schema.minLength) {
|
|
504
504
|
return {
|
|
505
505
|
isValid: false,
|
|
506
|
-
message: ( localize(
|
|
506
|
+
message: ( localize(10534, "Minimum length is {0}", schema.minLength))
|
|
507
507
|
};
|
|
508
508
|
}
|
|
509
509
|
if (schema.maxLength && value.length > schema.maxLength) {
|
|
510
510
|
return {
|
|
511
511
|
isValid: false,
|
|
512
|
-
message: ( localize(
|
|
512
|
+
message: ( localize(10535, "Maximum length is {0}", schema.maxLength))
|
|
513
513
|
};
|
|
514
514
|
}
|
|
515
515
|
if (schema.format) {
|
|
@@ -530,7 +530,7 @@ let McpElicitationService = class McpElicitationService {
|
|
|
530
530
|
isValid: true
|
|
531
531
|
} : {
|
|
532
532
|
isValid: false,
|
|
533
|
-
message: ( localize(
|
|
533
|
+
message: ( localize(10536, "Please enter a valid email address"))
|
|
534
534
|
};
|
|
535
535
|
case "uri":
|
|
536
536
|
if (URL.canParse(value)) {
|
|
@@ -540,7 +540,7 @@ let McpElicitationService = class McpElicitationService {
|
|
|
540
540
|
} else {
|
|
541
541
|
return {
|
|
542
542
|
isValid: false,
|
|
543
|
-
message: ( localize(
|
|
543
|
+
message: ( localize(10537, "Please enter a valid URI"))
|
|
544
544
|
};
|
|
545
545
|
}
|
|
546
546
|
case "date":
|
|
@@ -549,7 +549,7 @@ let McpElicitationService = class McpElicitationService {
|
|
|
549
549
|
if (!dateRegex.test(value)) {
|
|
550
550
|
return {
|
|
551
551
|
isValid: false,
|
|
552
|
-
message: ( localize(
|
|
552
|
+
message: ( localize(10538, "Please enter a valid date (YYYY-MM-DD)"))
|
|
553
553
|
};
|
|
554
554
|
}
|
|
555
555
|
const date = ( new Date(value));
|
|
@@ -557,7 +557,7 @@ let McpElicitationService = class McpElicitationService {
|
|
|
557
557
|
isValid: true
|
|
558
558
|
} : {
|
|
559
559
|
isValid: false,
|
|
560
|
-
message: ( localize(
|
|
560
|
+
message: ( localize(10538, "Please enter a valid date (YYYY-MM-DD)"))
|
|
561
561
|
};
|
|
562
562
|
}
|
|
563
563
|
case "date-time":
|
|
@@ -567,7 +567,7 @@ let McpElicitationService = class McpElicitationService {
|
|
|
567
567
|
isValid: true
|
|
568
568
|
} : {
|
|
569
569
|
isValid: false,
|
|
570
|
-
message: ( localize(
|
|
570
|
+
message: ( localize(10539, "Please enter a valid date-time"))
|
|
571
571
|
};
|
|
572
572
|
}
|
|
573
573
|
default:
|
|
@@ -581,25 +581,25 @@ let McpElicitationService = class McpElicitationService {
|
|
|
581
581
|
if (isNaN(parsed)) {
|
|
582
582
|
return {
|
|
583
583
|
isValid: false,
|
|
584
|
-
message: ( localize(
|
|
584
|
+
message: ( localize(10540, "Please enter a valid number"))
|
|
585
585
|
};
|
|
586
586
|
}
|
|
587
587
|
if (schema.type === "integer" && !Number.isInteger(parsed)) {
|
|
588
588
|
return {
|
|
589
589
|
isValid: false,
|
|
590
|
-
message: ( localize(
|
|
590
|
+
message: ( localize(10541, "Please enter a valid integer"))
|
|
591
591
|
};
|
|
592
592
|
}
|
|
593
593
|
if (schema.minimum !== undefined && parsed < schema.minimum) {
|
|
594
594
|
return {
|
|
595
595
|
isValid: false,
|
|
596
|
-
message: ( localize(
|
|
596
|
+
message: ( localize(10542, "Minimum value is {0}", schema.minimum))
|
|
597
597
|
};
|
|
598
598
|
}
|
|
599
599
|
if (schema.maximum !== undefined && parsed > schema.maximum) {
|
|
600
600
|
return {
|
|
601
601
|
isValid: false,
|
|
602
|
-
message: ( localize(
|
|
602
|
+
message: ( localize(10543, "Maximum value is {0}", schema.maximum))
|
|
603
603
|
};
|
|
604
604
|
}
|
|
605
605
|
return {
|
|
@@ -628,11 +628,11 @@ let McpElicitationService = class McpElicitationService {
|
|
|
628
628
|
allowFreeformInput: false,
|
|
629
629
|
options: [{
|
|
630
630
|
id: "true",
|
|
631
|
-
label: ( localize(
|
|
631
|
+
label: ( localize(10544, "True")),
|
|
632
632
|
value: "true"
|
|
633
633
|
}, {
|
|
634
634
|
id: "false",
|
|
635
|
-
label: ( localize(
|
|
635
|
+
label: ( localize(10545, "False")),
|
|
636
636
|
value: "false"
|
|
637
637
|
}],
|
|
638
638
|
defaultValue: schema.default !== undefined ? String(schema.default) : undefined
|