@codingame/monaco-vscode-mcp-service-override 20.0.1 → 20.1.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 +15 -15
- 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 +53 -53
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpElicitationService.js +19 -19
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpLanguageFeatures.js +18 -18
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpMigration.js +5 -5
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpResourceQuickAccess.js +7 -7
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerActions.js +25 -25
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerEditor.js +31 -31
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerIcons.js +3 -3
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerWidgets.js +6 -6
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServersView.js +8 -8
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpWorkbenchService.js +5 -5
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/extensionMcpDiscovery.js +3 -3
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAbstract.js +1 -1
- 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 +12 -12
- 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/mcpServer.js +9 -9
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpServerConnection.js +3 -3
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpService.js +2 -2
- 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": "20.0
|
|
3
|
+
"version": "20.1.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - mcp service-override",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,20 +15,20 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-2673c6e2-17c1-5710-b169-46f3d4a28696-common": "20.0
|
|
19
|
-
"@codingame/monaco-vscode-4a3ac544-9a61-534c-88df-756262793ef7-common": "20.0
|
|
20
|
-
"@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common": "20.0
|
|
21
|
-
"@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.0
|
|
22
|
-
"@codingame/monaco-vscode-62190c26-af1c-5f7a-a364-e05a59cfb7c7-common": "20.0
|
|
23
|
-
"@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "20.0
|
|
24
|
-
"@codingame/monaco-vscode-api": "20.0
|
|
25
|
-
"@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common": "20.0
|
|
26
|
-
"@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common": "20.0
|
|
27
|
-
"@codingame/monaco-vscode-ce7c734f-7712-563c-9335-d7acb43306af-common": "20.0
|
|
28
|
-
"@codingame/monaco-vscode-cf77987b-b1b7-5359-aaf8-a259c63d9f03-common": "20.0
|
|
29
|
-
"@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.0
|
|
30
|
-
"@codingame/monaco-vscode-dc3fa21d-a483-5b99-a7ab-173235644a34-common": "20.0
|
|
31
|
-
"@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "20.0
|
|
18
|
+
"@codingame/monaco-vscode-2673c6e2-17c1-5710-b169-46f3d4a28696-common": "20.1.0",
|
|
19
|
+
"@codingame/monaco-vscode-4a3ac544-9a61-534c-88df-756262793ef7-common": "20.1.0",
|
|
20
|
+
"@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common": "20.1.0",
|
|
21
|
+
"@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.1.0",
|
|
22
|
+
"@codingame/monaco-vscode-62190c26-af1c-5f7a-a364-e05a59cfb7c7-common": "20.1.0",
|
|
23
|
+
"@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "20.1.0",
|
|
24
|
+
"@codingame/monaco-vscode-api": "20.1.0",
|
|
25
|
+
"@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common": "20.1.0",
|
|
26
|
+
"@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common": "20.1.0",
|
|
27
|
+
"@codingame/monaco-vscode-ce7c734f-7712-563c-9335-d7acb43306af-common": "20.1.0",
|
|
28
|
+
"@codingame/monaco-vscode-cf77987b-b1b7-5359-aaf8-a259c63d9f03-common": "20.1.0",
|
|
29
|
+
"@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.1.0",
|
|
30
|
+
"@codingame/monaco-vscode-dc3fa21d-a483-5b99-a7ab-173235644a34-common": "20.1.0",
|
|
31
|
+
"@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "20.1.0"
|
|
32
32
|
},
|
|
33
33
|
"main": "index.js",
|
|
34
34
|
"module": "index.js",
|
|
@@ -75,15 +75,15 @@ registerWorkbenchContribution2(McpConfigMigrationContribution.ID, McpConfigMigra
|
|
|
75
75
|
registerWorkbenchContribution2(McpServersViewsContribution.ID, McpServersViewsContribution, WorkbenchPhase.AfterRestored);
|
|
76
76
|
const jsonRegistry = ( Registry.as(Extensions.JSONContribution));
|
|
77
77
|
jsonRegistry.registerSchema(mcpSchemaId, mcpServerSchema);
|
|
78
|
-
( Registry.as(EditorExtensions.EditorPane)).registerEditorPane(EditorPaneDescriptor.create(McpServerEditor, McpServerEditor.ID, ( localize(
|
|
78
|
+
( Registry.as(EditorExtensions.EditorPane)).registerEditorPane(EditorPaneDescriptor.create(McpServerEditor, McpServerEditor.ID, ( localize(8060, "MCP Server"))), [
|
|
79
79
|
( new SyncDescriptor(McpServerEditorInput))
|
|
80
80
|
]);
|
|
81
81
|
( Registry.as(Extensions$1.Quickaccess)).registerQuickAccessProvider({
|
|
82
82
|
ctor: McpResourceQuickAccess,
|
|
83
83
|
prefix: McpResourceQuickAccess.PREFIX,
|
|
84
|
-
placeholder: ( localize(
|
|
84
|
+
placeholder: ( localize(8061, "Filter to an MCP resource")),
|
|
85
85
|
helpEntries: [{
|
|
86
|
-
description: ( localize(
|
|
86
|
+
description: ( localize(8062, "MCP Server Resources")),
|
|
87
87
|
commandId: McpCommandIds.AddConfiguration
|
|
88
88
|
}]
|
|
89
89
|
});
|
|
@@ -30,10 +30,10 @@ let McpAddContextContribution = class McpAddContextContribution extends Disposab
|
|
|
30
30
|
_registerAddContextMenu() {
|
|
31
31
|
this._addContextMenu.value = this._chatContextPickService.registerChatContextItem({
|
|
32
32
|
type: 'pickerPick',
|
|
33
|
-
label: ( localize(
|
|
33
|
+
label: ( localize(8063, "MCP Resources...")),
|
|
34
34
|
icon: Codicon.mcp,
|
|
35
35
|
asPicker: () => ({
|
|
36
|
-
placeholder: ( localize(
|
|
36
|
+
placeholder: ( localize(8064, "Select MCP Resource...")),
|
|
37
37
|
picks: (_query, token) => this._getResourcePicks(token),
|
|
38
38
|
}),
|
|
39
39
|
});
|
|
@@ -78,7 +78,7 @@ class ListMcpServerCommand extends Action2 {
|
|
|
78
78
|
constructor() {
|
|
79
79
|
super({
|
|
80
80
|
id: McpCommandIds.ListServer,
|
|
81
|
-
title: ( localize2(
|
|
81
|
+
title: ( localize2(8065, 'List Servers')),
|
|
82
82
|
icon: Codicon.server,
|
|
83
83
|
category,
|
|
84
84
|
f1: true,
|
|
@@ -96,13 +96,13 @@ class ListMcpServerCommand extends Action2 {
|
|
|
96
96
|
const quickInput = accessor.get(IQuickInputService);
|
|
97
97
|
const store = ( new DisposableStore());
|
|
98
98
|
const pick = quickInput.createQuickPick({ useSeparators: true });
|
|
99
|
-
pick.placeholder = ( localize(
|
|
99
|
+
pick.placeholder = ( localize(8066, 'Select an MCP Server'));
|
|
100
100
|
store.add(pick);
|
|
101
101
|
store.add(autorun(reader => {
|
|
102
102
|
const servers = groupBy(mcpService.servers.read(reader).slice().sort((a, b) => (a.collection.presentation?.order || 0) - (b.collection.presentation?.order || 0)), s => s.collection.id);
|
|
103
103
|
const firstRun = pick.items.length === 0;
|
|
104
104
|
pick.items = [
|
|
105
|
-
{ id: '$add', label: ( localize(
|
|
105
|
+
{ id: '$add', label: ( localize(8067, 'Add Server')), description: ( localize(8068, 'Add a new server configuration')), alwaysShow: true, iconClass: ThemeIcon.asClassName(Codicon.add) },
|
|
106
106
|
...( Object.values(servers)).filter(s => s.length).flatMap((servers) => [
|
|
107
107
|
{ type: 'separator', label: servers[0].collection.label, id: servers[0].collection.id },
|
|
108
108
|
...( servers.map(server => ({
|
|
@@ -139,7 +139,7 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
139
139
|
constructor() {
|
|
140
140
|
super({
|
|
141
141
|
id: McpCommandIds.ServerOptions,
|
|
142
|
-
title: ( localize2(
|
|
142
|
+
title: ( localize2(8069, 'Server Options')),
|
|
143
143
|
category,
|
|
144
144
|
f1: false,
|
|
145
145
|
});
|
|
@@ -161,20 +161,20 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
161
161
|
const serverDefinition = collection?.serverDefinitions.get().find(s => s.id === server.definition.id);
|
|
162
162
|
const items = [];
|
|
163
163
|
const serverState = server.connectionState.get();
|
|
164
|
-
items.push({ type: 'separator', label: ( localize(
|
|
164
|
+
items.push({ type: 'separator', label: ( localize(8070, 'Status')) });
|
|
165
165
|
if (McpConnectionState.canBeStarted(serverState.state)) {
|
|
166
166
|
items.push({
|
|
167
|
-
label: ( localize(
|
|
167
|
+
label: ( localize(8071, 'Start Server')),
|
|
168
168
|
action: 'start'
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
171
|
else {
|
|
172
172
|
items.push({
|
|
173
|
-
label: ( localize(
|
|
173
|
+
label: ( localize(8072, 'Stop Server')),
|
|
174
174
|
action: 'stop'
|
|
175
175
|
});
|
|
176
176
|
items.push({
|
|
177
|
-
label: ( localize(
|
|
177
|
+
label: ( localize(8073, 'Restart Server')),
|
|
178
178
|
action: 'restart'
|
|
179
179
|
});
|
|
180
180
|
}
|
|
@@ -182,36 +182,36 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
182
182
|
const configTarget = serverDefinition?.presentation?.origin || collection?.presentation?.origin;
|
|
183
183
|
if (configTarget) {
|
|
184
184
|
items.push({
|
|
185
|
-
label: ( localize(
|
|
185
|
+
label: ( localize(8074, 'Show Configuration')),
|
|
186
186
|
action: 'config',
|
|
187
187
|
});
|
|
188
188
|
}
|
|
189
189
|
items.push({
|
|
190
|
-
label: ( localize(
|
|
190
|
+
label: ( localize(8075, 'Show Output')),
|
|
191
191
|
action: 'showOutput'
|
|
192
192
|
});
|
|
193
|
-
items.push({ type: 'separator', label: ( localize(
|
|
194
|
-
label: ( localize(
|
|
195
|
-
description: ( localize(
|
|
193
|
+
items.push({ type: 'separator', label: ( localize(8076, 'Sampling')) }, {
|
|
194
|
+
label: ( localize(8077, 'Configure Model Access')),
|
|
195
|
+
description: ( localize(8078, 'Set the models the server can use via MCP sampling')),
|
|
196
196
|
action: 'configSampling'
|
|
197
197
|
});
|
|
198
198
|
if (samplingService.hasLogs(server)) {
|
|
199
199
|
items.push({
|
|
200
|
-
label: ( localize(
|
|
201
|
-
description: ( localize(
|
|
200
|
+
label: ( localize(8079, 'Show Sampling Requests')),
|
|
201
|
+
description: ( localize(8080, 'Show the sampling requests for this server')),
|
|
202
202
|
action: 'samplingLog',
|
|
203
203
|
});
|
|
204
204
|
}
|
|
205
205
|
const capabilities = server.capabilities.get();
|
|
206
206
|
if (capabilities === undefined || (capabilities & McpCapability.Resources)) {
|
|
207
|
-
items.push({ type: 'separator', label: ( localize(
|
|
207
|
+
items.push({ type: 'separator', label: ( localize(8081, 'Resources')) });
|
|
208
208
|
items.push({
|
|
209
|
-
label: ( localize(
|
|
209
|
+
label: ( localize(8082, 'Browse Resources')),
|
|
210
210
|
action: 'resources',
|
|
211
211
|
});
|
|
212
212
|
}
|
|
213
213
|
const pick = await quickInputService.pick(items, {
|
|
214
|
-
placeHolder: ( localize(
|
|
214
|
+
placeHolder: ( localize(8083, 'Select action for \'{0}\'', server.definition.label)),
|
|
215
215
|
});
|
|
216
216
|
if (!pick) {
|
|
217
217
|
return;
|
|
@@ -253,7 +253,7 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
253
253
|
editorService.openEditor({
|
|
254
254
|
resource: undefined,
|
|
255
255
|
contents: samplingService.getLogText(server),
|
|
256
|
-
label: ( localize(
|
|
256
|
+
label: ( localize(8084, 'MCP Sampling: {0}', server.definition.label)),
|
|
257
257
|
});
|
|
258
258
|
break;
|
|
259
259
|
default:
|
|
@@ -270,7 +270,7 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
270
270
|
if (accountQuery.entities().getEntityCount().total > 1) {
|
|
271
271
|
result.push({
|
|
272
272
|
action: 'disconnect',
|
|
273
|
-
label: ( localize(
|
|
273
|
+
label: ( localize(8085, 'Disconnect Account')),
|
|
274
274
|
description: `(${accountName})`,
|
|
275
275
|
accountQuery
|
|
276
276
|
});
|
|
@@ -278,7 +278,7 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
278
278
|
else {
|
|
279
279
|
result.push({
|
|
280
280
|
action: 'signout',
|
|
281
|
-
label: ( localize(
|
|
281
|
+
label: ( localize(8086, 'Sign Out')),
|
|
282
282
|
description: `(${accountName})`,
|
|
283
283
|
accountQuery
|
|
284
284
|
});
|
|
@@ -435,21 +435,21 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
|
|
|
435
435
|
if (state === DisplayedState.NewTools) {
|
|
436
436
|
markdown = ( new MarkdownString(single
|
|
437
437
|
? ( localize(
|
|
438
|
-
|
|
438
|
+
8087,
|
|
439
439
|
"MCP server {0} has been updated and may have new tools available.",
|
|
440
440
|
names
|
|
441
441
|
))
|
|
442
442
|
: ( localize(
|
|
443
|
-
|
|
443
|
+
8088,
|
|
444
444
|
"MCP servers have been updated and may have new tools available:\n\n{0}",
|
|
445
445
|
names
|
|
446
446
|
))));
|
|
447
447
|
}
|
|
448
448
|
else if (state === DisplayedState.Error) {
|
|
449
449
|
markdown = ( new MarkdownString(single
|
|
450
|
-
? ( localize(
|
|
450
|
+
? ( localize(8089, "MCP server {0} was unable to start successfully.", names))
|
|
451
451
|
: ( localize(
|
|
452
|
-
|
|
452
|
+
8090,
|
|
453
453
|
"Multiple MCP servers were unable to start successfully:\n\n{0}",
|
|
454
454
|
names
|
|
455
455
|
))));
|
|
@@ -477,7 +477,7 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
|
|
|
477
477
|
const divider = $('hr.mcp-hover-divider');
|
|
478
478
|
container.appendChild(divider);
|
|
479
479
|
const checkboxContainer = $('div.mcp-hover-setting');
|
|
480
|
-
const settingLabelStr = ( localize(
|
|
480
|
+
const settingLabelStr = ( localize(8091, "Automatically start MCP servers when sending a chat message"));
|
|
481
481
|
const checkbox = store.add(( new Checkbox(
|
|
482
482
|
settingLabelStr,
|
|
483
483
|
config.get() !== McpAutoStartValue.Never,
|
|
@@ -502,13 +502,13 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
|
|
|
502
502
|
}
|
|
503
503
|
getLabelForState({ state, servers } = displayedStateCurrent.get()) {
|
|
504
504
|
if (state === DisplayedState.NewTools) {
|
|
505
|
-
return localize(
|
|
505
|
+
return localize(8092, "New tools available ({0})", servers.length || 1);
|
|
506
506
|
}
|
|
507
507
|
else if (state === DisplayedState.Error) {
|
|
508
|
-
return localize(
|
|
508
|
+
return localize(8093, "Error loading {0} tool(s)", servers.length || 1);
|
|
509
509
|
}
|
|
510
510
|
else if (state === DisplayedState.Refreshing) {
|
|
511
|
-
return localize(
|
|
511
|
+
return localize(8094, "Discovering tools...");
|
|
512
512
|
}
|
|
513
513
|
else {
|
|
514
514
|
return null;
|
|
@@ -529,7 +529,7 @@ class ResetMcpTrustCommand extends Action2 {
|
|
|
529
529
|
constructor() {
|
|
530
530
|
super({
|
|
531
531
|
id: McpCommandIds.ResetTrust,
|
|
532
|
-
title: ( localize2(
|
|
532
|
+
title: ( localize2(8095, "Reset Trust")),
|
|
533
533
|
category,
|
|
534
534
|
f1: true,
|
|
535
535
|
precondition: McpContextKeys.toolsCount.greater(0),
|
|
@@ -544,7 +544,7 @@ class ResetMcpCachedTools extends Action2 {
|
|
|
544
544
|
constructor() {
|
|
545
545
|
super({
|
|
546
546
|
id: McpCommandIds.ResetCachedTools,
|
|
547
|
-
title: ( localize2(
|
|
547
|
+
title: ( localize2(8096, "Reset Cached Tools")),
|
|
548
548
|
category,
|
|
549
549
|
f1: true,
|
|
550
550
|
precondition: McpContextKeys.toolsCount.greater(0),
|
|
@@ -559,9 +559,9 @@ class AddConfigurationAction extends Action2 {
|
|
|
559
559
|
constructor() {
|
|
560
560
|
super({
|
|
561
561
|
id: McpCommandIds.AddConfiguration,
|
|
562
|
-
title: ( localize2(
|
|
562
|
+
title: ( localize2(8097, "Add Server...")),
|
|
563
563
|
metadata: {
|
|
564
|
-
description: ( localize2(
|
|
564
|
+
description: ( localize2(8098, "Installs a new Model Context protocol to the mcp.json settings")),
|
|
565
565
|
},
|
|
566
566
|
category,
|
|
567
567
|
f1: true,
|
|
@@ -582,7 +582,7 @@ class RemoveStoredInput extends Action2 {
|
|
|
582
582
|
constructor() {
|
|
583
583
|
super({
|
|
584
584
|
id: McpCommandIds.RemoveStoredInput,
|
|
585
|
-
title: ( localize2(
|
|
585
|
+
title: ( localize2(8096, "Reset Cached Tools")),
|
|
586
586
|
category,
|
|
587
587
|
f1: false,
|
|
588
588
|
});
|
|
@@ -595,7 +595,7 @@ class EditStoredInput extends Action2 {
|
|
|
595
595
|
constructor() {
|
|
596
596
|
super({
|
|
597
597
|
id: McpCommandIds.EditStoredInput,
|
|
598
|
-
title: ( localize2(
|
|
598
|
+
title: ( localize2(8099, "Edit Stored Input")),
|
|
599
599
|
category,
|
|
600
600
|
f1: false,
|
|
601
601
|
});
|
|
@@ -609,7 +609,7 @@ class ShowConfiguration extends Action2 {
|
|
|
609
609
|
constructor() {
|
|
610
610
|
super({
|
|
611
611
|
id: McpCommandIds.ShowConfiguration,
|
|
612
|
-
title: ( localize2(
|
|
612
|
+
title: ( localize2(8100, "Show Configuration")),
|
|
613
613
|
category,
|
|
614
614
|
f1: false,
|
|
615
615
|
});
|
|
@@ -638,7 +638,7 @@ class ShowOutput extends Action2 {
|
|
|
638
638
|
constructor() {
|
|
639
639
|
super({
|
|
640
640
|
id: McpCommandIds.ShowOutput,
|
|
641
|
-
title: ( localize2(
|
|
641
|
+
title: ( localize2(8101, "Show Output")),
|
|
642
642
|
category,
|
|
643
643
|
f1: false,
|
|
644
644
|
});
|
|
@@ -651,7 +651,7 @@ class RestartServer extends Action2 {
|
|
|
651
651
|
constructor() {
|
|
652
652
|
super({
|
|
653
653
|
id: McpCommandIds.RestartServer,
|
|
654
|
-
title: ( localize2(
|
|
654
|
+
title: ( localize2(8102, "Restart Server")),
|
|
655
655
|
category,
|
|
656
656
|
f1: false,
|
|
657
657
|
});
|
|
@@ -667,7 +667,7 @@ class StartServer extends Action2 {
|
|
|
667
667
|
constructor() {
|
|
668
668
|
super({
|
|
669
669
|
id: McpCommandIds.StartServer,
|
|
670
|
-
title: ( localize2(
|
|
670
|
+
title: ( localize2(8103, "Start Server")),
|
|
671
671
|
category,
|
|
672
672
|
f1: false,
|
|
673
673
|
});
|
|
@@ -681,7 +681,7 @@ class StopServer extends Action2 {
|
|
|
681
681
|
constructor() {
|
|
682
682
|
super({
|
|
683
683
|
id: McpCommandIds.StopServer,
|
|
684
|
-
title: ( localize2(
|
|
684
|
+
title: ( localize2(8104, "Stop Server")),
|
|
685
685
|
category,
|
|
686
686
|
f1: false,
|
|
687
687
|
});
|
|
@@ -695,7 +695,7 @@ class McpBrowseCommand extends Action2 {
|
|
|
695
695
|
constructor() {
|
|
696
696
|
super({
|
|
697
697
|
id: McpCommandIds.Browse,
|
|
698
|
-
title: ( localize2(
|
|
698
|
+
title: ( localize2(8105, "MCP Servers")),
|
|
699
699
|
category,
|
|
700
700
|
menu: [{
|
|
701
701
|
id: extensionsFilterSubMenu,
|
|
@@ -711,7 +711,7 @@ class McpBrowseCommand extends Action2 {
|
|
|
711
711
|
MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
|
|
712
712
|
command: {
|
|
713
713
|
id: McpCommandIds.Browse,
|
|
714
|
-
title: ( localize2(
|
|
714
|
+
title: ( localize2(8106, "Browse Servers")),
|
|
715
715
|
category
|
|
716
716
|
},
|
|
717
717
|
});
|
|
@@ -719,7 +719,7 @@ class BrowseMcpServersPageCommand extends Action2 {
|
|
|
719
719
|
constructor() {
|
|
720
720
|
super({
|
|
721
721
|
id: McpCommandIds.BrowsePage,
|
|
722
|
-
title: ( localize2(
|
|
722
|
+
title: ( localize2(8107, "Browse MCP Servers")),
|
|
723
723
|
icon: Codicon.globe,
|
|
724
724
|
menu: [{
|
|
725
725
|
id: MenuId.ViewTitle,
|
|
@@ -738,7 +738,7 @@ class ShowInstalledMcpServersCommand extends Action2 {
|
|
|
738
738
|
constructor() {
|
|
739
739
|
super({
|
|
740
740
|
id: McpCommandIds.ShowInstalled,
|
|
741
|
-
title: ( localize2(
|
|
741
|
+
title: ( localize2(8108, "Show Installed Servers")),
|
|
742
742
|
category,
|
|
743
743
|
precondition: HasInstalledMcpServersContext,
|
|
744
744
|
f1: true,
|
|
@@ -756,7 +756,7 @@ class ShowInstalledMcpServersCommand extends Action2 {
|
|
|
756
756
|
MenuRegistry.appendMenuItem(CHAT_CONFIG_MENU_ID, {
|
|
757
757
|
command: {
|
|
758
758
|
id: McpCommandIds.ShowInstalled,
|
|
759
|
-
title: ( localize2(
|
|
759
|
+
title: ( localize2(8109, "MCP Servers"))
|
|
760
760
|
},
|
|
761
761
|
when: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( ContextKeyExpr.equals('view', ChatViewId)))),
|
|
762
762
|
order: 14,
|
|
@@ -777,7 +777,7 @@ class OpenUserMcpResourceCommand extends OpenMcpResourceCommand {
|
|
|
777
777
|
constructor() {
|
|
778
778
|
super({
|
|
779
779
|
id: McpCommandIds.OpenUserMcp,
|
|
780
|
-
title: ( localize2(
|
|
780
|
+
title: ( localize2(8110, "Open User Configuration")),
|
|
781
781
|
category,
|
|
782
782
|
f1: true
|
|
783
783
|
});
|
|
@@ -791,7 +791,7 @@ class OpenRemoteUserMcpResourceCommand extends OpenMcpResourceCommand {
|
|
|
791
791
|
constructor() {
|
|
792
792
|
super({
|
|
793
793
|
id: McpCommandIds.OpenRemoteUserMcp,
|
|
794
|
-
title: ( localize2(
|
|
794
|
+
title: ( localize2(8111, "Open Remote User Configuration")),
|
|
795
795
|
category,
|
|
796
796
|
f1: true,
|
|
797
797
|
precondition: ( RemoteNameContext.notEqualsTo(''))
|
|
@@ -808,7 +808,7 @@ class OpenWorkspaceFolderMcpResourceCommand extends Action2 {
|
|
|
808
808
|
constructor() {
|
|
809
809
|
super({
|
|
810
810
|
id: McpCommandIds.OpenWorkspaceFolderMcp,
|
|
811
|
-
title: ( localize2(
|
|
811
|
+
title: ( localize2(8112, "Open Workspace Folder MCP Configuration")),
|
|
812
812
|
category,
|
|
813
813
|
f1: true,
|
|
814
814
|
precondition: ( WorkspaceFolderCountContext.notEqualsTo(0))
|
|
@@ -829,7 +829,7 @@ class OpenWorkspaceMcpResourceCommand extends Action2 {
|
|
|
829
829
|
constructor() {
|
|
830
830
|
super({
|
|
831
831
|
id: McpCommandIds.OpenWorkspaceMcp,
|
|
832
|
-
title: ( localize2(
|
|
832
|
+
title: ( localize2(8113, "Open Workspace MCP Configuration")),
|
|
833
833
|
category,
|
|
834
834
|
f1: true,
|
|
835
835
|
precondition: ( WorkbenchStateContext.isEqualTo('workspace'))
|
|
@@ -848,7 +848,7 @@ class McpBrowseResourcesCommand extends Action2 {
|
|
|
848
848
|
constructor() {
|
|
849
849
|
super({
|
|
850
850
|
id: McpCommandIds.BrowseResources,
|
|
851
|
-
title: ( localize2(
|
|
851
|
+
title: ( localize2(8114, "Browse Resources...")),
|
|
852
852
|
category,
|
|
853
853
|
precondition: McpContextKeys.serverCount.greater(0),
|
|
854
854
|
f1: true,
|
|
@@ -867,7 +867,7 @@ class McpConfigureSamplingModels extends Action2 {
|
|
|
867
867
|
constructor() {
|
|
868
868
|
super({
|
|
869
869
|
id: McpCommandIds.ConfigureSamplingModels,
|
|
870
|
-
title: ( localize2(
|
|
870
|
+
title: ( localize2(8115, "Configure SamplingModel")),
|
|
871
871
|
category,
|
|
872
872
|
});
|
|
873
873
|
}
|
|
@@ -891,7 +891,7 @@ class McpConfigureSamplingModels extends Action2 {
|
|
|
891
891
|
allItems.sort((a, b) => (b.picked ? 1 : 0) - (a.picked ? 1 : 0) || a.label.localeCompare(b.label));
|
|
892
892
|
const picked = await quickInputService.pick(allItems, {
|
|
893
893
|
placeHolder: ( localize(
|
|
894
|
-
|
|
894
|
+
8116,
|
|
895
895
|
'Pick the models {0} can access via MCP sampling',
|
|
896
896
|
server.definition.label
|
|
897
897
|
)),
|
|
@@ -907,7 +907,7 @@ class McpStartPromptingServerCommand extends Action2 {
|
|
|
907
907
|
constructor() {
|
|
908
908
|
super({
|
|
909
909
|
id: McpCommandIds.StartPromptForServer,
|
|
910
|
-
title: ( localize2(
|
|
910
|
+
title: ( localize2(8117, "Start Prompting Server")),
|
|
911
911
|
category,
|
|
912
912
|
f1: false,
|
|
913
913
|
});
|
|
@@ -14,7 +14,7 @@ import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/c
|
|
|
14
14
|
import { McpCommandIds } from '@codingame/monaco-vscode-dc3fa21d-a483-5b99-a7ab-173235644a34-common/vscode/vs/workbench/contrib/mcp/common/mcpCommandIds';
|
|
15
15
|
import Severity from '@codingame/monaco-vscode-api/vscode/vs/base/common/severity';
|
|
16
16
|
|
|
17
|
-
const noneItem = { id: undefined, label: ( localize(
|
|
17
|
+
const noneItem = { id: undefined, label: ( localize(8167, 'None')), description: ( localize(8168, 'No selection')), alwaysShow: true };
|
|
18
18
|
let McpElicitationService = class McpElicitationService {
|
|
19
19
|
constructor(_notificationService, _quickInputService, _chatService) {
|
|
20
20
|
this._notificationService = _notificationService;
|
|
@@ -28,11 +28,11 @@ let McpElicitationService = class McpElicitationService {
|
|
|
28
28
|
if (chatModel instanceof ChatModel) {
|
|
29
29
|
const request = chatModel.getRequests().at(-1);
|
|
30
30
|
if (request) {
|
|
31
|
-
const part = ( new ChatElicitationRequestPart(( localize(
|
|
31
|
+
const part = ( new ChatElicitationRequestPart(( localize(8169, 'Request for Input')), elicitation.message, ( new MarkdownString(markdownCommandLink({
|
|
32
32
|
id: McpCommandIds.ShowConfiguration,
|
|
33
|
-
title: ( localize(
|
|
33
|
+
title: ( localize(8170, "{0} (MCP Server)", server.definition.label)),
|
|
34
34
|
arguments: [server.collection.id, server.definition.id],
|
|
35
|
-
}), { isTrusted: true })), ( localize(
|
|
35
|
+
}), { isTrusted: true })), ( localize(8171, 'Respond')), ( localize(8172, 'Cancel')), async () => {
|
|
36
36
|
const p = this._doElicit(elicitation, token);
|
|
37
37
|
resolve(p);
|
|
38
38
|
const result = await p;
|
|
@@ -49,11 +49,11 @@ let McpElicitationService = class McpElicitationService {
|
|
|
49
49
|
else {
|
|
50
50
|
const handle = this._notificationService.notify({
|
|
51
51
|
message: elicitation.message,
|
|
52
|
-
source: ( localize(
|
|
52
|
+
source: ( localize(8173, 'MCP Server ({0})', server.definition.label)),
|
|
53
53
|
severity: Severity.Info,
|
|
54
54
|
actions: {
|
|
55
|
-
primary: [store.add(( new Action('mcp.elicit.give', ( localize(
|
|
56
|
-
secondary: [store.add(( new Action('mcp.elicit.cancel', ( localize(
|
|
55
|
+
primary: [store.add(( new Action('mcp.elicit.give', ( localize(8174, 'Respond')), undefined, true, () => resolve(this._doElicit(elicitation, token)))))],
|
|
56
|
+
secondary: [store.add(( new Action('mcp.elicit.cancel', ( localize(8175, 'Cancel')), undefined, true, () => resolve({ action: 'decline' }))))],
|
|
57
57
|
}
|
|
58
58
|
});
|
|
59
59
|
store.add(handle.onDidClose(() => resolve({ action: 'cancel' })));
|
|
@@ -127,7 +127,7 @@ let McpElicitationService = class McpElicitationService {
|
|
|
127
127
|
_getFieldPlaceholder(schema, required) {
|
|
128
128
|
let placeholder = schema.description || '';
|
|
129
129
|
if (!required) {
|
|
130
|
-
placeholder = placeholder ? `${placeholder} (${( localize(
|
|
130
|
+
placeholder = placeholder ? `${placeholder} (${( localize(8176, 'Optional'))})` : ( localize(8176, 'Optional'));
|
|
131
131
|
}
|
|
132
132
|
return placeholder;
|
|
133
133
|
}
|
|
@@ -214,10 +214,10 @@ let McpElicitationService = class McpElicitationService {
|
|
|
214
214
|
}
|
|
215
215
|
_validateString(value, schema) {
|
|
216
216
|
if (schema.minLength && value.length < schema.minLength) {
|
|
217
|
-
return { isValid: false, message: ( localize(
|
|
217
|
+
return { isValid: false, message: ( localize(8177, 'Minimum length is {0}', schema.minLength)) };
|
|
218
218
|
}
|
|
219
219
|
if (schema.maxLength && value.length > schema.maxLength) {
|
|
220
|
-
return { isValid: false, message: ( localize(
|
|
220
|
+
return { isValid: false, message: ( localize(8178, 'Maximum length is {0}', schema.maxLength)) };
|
|
221
221
|
}
|
|
222
222
|
if (schema.format) {
|
|
223
223
|
const formatValid = this._validateStringFormat(value, schema.format);
|
|
@@ -232,29 +232,29 @@ let McpElicitationService = class McpElicitationService {
|
|
|
232
232
|
case 'email':
|
|
233
233
|
return !value.includes('@')
|
|
234
234
|
? { isValid: true }
|
|
235
|
-
: { isValid: false, message: ( localize(
|
|
235
|
+
: { isValid: false, message: ( localize(8179, 'Please enter a valid email address')) };
|
|
236
236
|
case 'uri':
|
|
237
237
|
if (URL.canParse(value)) {
|
|
238
238
|
return { isValid: true };
|
|
239
239
|
}
|
|
240
240
|
else {
|
|
241
|
-
return { isValid: false, message: ( localize(
|
|
241
|
+
return { isValid: false, message: ( localize(8180, 'Please enter a valid URI')) };
|
|
242
242
|
}
|
|
243
243
|
case 'date': {
|
|
244
244
|
const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
|
|
245
245
|
if (!dateRegex.test(value)) {
|
|
246
|
-
return { isValid: false, message: ( localize(
|
|
246
|
+
return { isValid: false, message: ( localize(8181, 'Please enter a valid date (YYYY-MM-DD)')) };
|
|
247
247
|
}
|
|
248
248
|
const date = ( new Date(value));
|
|
249
249
|
return !isNaN(date.getTime())
|
|
250
250
|
? { isValid: true }
|
|
251
|
-
: { isValid: false, message: ( localize(
|
|
251
|
+
: { isValid: false, message: ( localize(8181, 'Please enter a valid date (YYYY-MM-DD)')) };
|
|
252
252
|
}
|
|
253
253
|
case 'date-time': {
|
|
254
254
|
const dateTime = ( new Date(value));
|
|
255
255
|
return !isNaN(dateTime.getTime())
|
|
256
256
|
? { isValid: true }
|
|
257
|
-
: { isValid: false, message: ( localize(
|
|
257
|
+
: { isValid: false, message: ( localize(8182, 'Please enter a valid date-time')) };
|
|
258
258
|
}
|
|
259
259
|
default:
|
|
260
260
|
return { isValid: true };
|
|
@@ -263,16 +263,16 @@ let McpElicitationService = class McpElicitationService {
|
|
|
263
263
|
_validateNumber(value, schema) {
|
|
264
264
|
const parsed = Number(value);
|
|
265
265
|
if (isNaN(parsed)) {
|
|
266
|
-
return { isValid: false, message: ( localize(
|
|
266
|
+
return { isValid: false, message: ( localize(8183, 'Please enter a valid number')) };
|
|
267
267
|
}
|
|
268
268
|
if (schema.type === 'integer' && !Number.isInteger(parsed)) {
|
|
269
|
-
return { isValid: false, message: ( localize(
|
|
269
|
+
return { isValid: false, message: ( localize(8184, 'Please enter a valid integer')) };
|
|
270
270
|
}
|
|
271
271
|
if (schema.minimum !== undefined && parsed < schema.minimum) {
|
|
272
|
-
return { isValid: false, message: ( localize(
|
|
272
|
+
return { isValid: false, message: ( localize(8185, 'Minimum value is {0}', schema.minimum)) };
|
|
273
273
|
}
|
|
274
274
|
if (schema.maximum !== undefined && parsed > schema.maximum) {
|
|
275
|
-
return { isValid: false, message: ( localize(
|
|
275
|
+
return { isValid: false, message: ( localize(8186, 'Maximum value is {0}', schema.maximum)) };
|
|
276
276
|
}
|
|
277
277
|
return { isValid: true, parsedValue: parsed };
|
|
278
278
|
}
|