@google/gemini-cli-core 0.35.0-preview.2 → 0.36.0-nightly.20260318.e2658ccda
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/dist/docs/changelogs/latest.md +6 -3
- package/dist/docs/changelogs/preview.md +7 -3
- package/dist/docs/reference/configuration.md +191 -8
- package/dist/docs/tools/todos.md +2 -1
- package/dist/{google-gemini-cli-core-0.35.0-preview.1.tgz → google-gemini-cli-core-0.36.0-nightly.20260317.2f90b4653.tgz} +0 -0
- package/dist/src/agents/a2a-client-manager.d.ts +2 -11
- package/dist/src/agents/a2a-client-manager.js +3 -19
- package/dist/src/agents/a2a-client-manager.js.map +1 -1
- package/dist/src/agents/a2a-client-manager.test.js +6 -10
- package/dist/src/agents/a2a-client-manager.test.js.map +1 -1
- package/dist/src/agents/registry.js +6 -3
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +23 -24
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/agents/remote-invocation.d.ts +3 -1
- package/dist/src/agents/remote-invocation.js +10 -5
- package/dist/src/agents/remote-invocation.js.map +1 -1
- package/dist/src/agents/remote-invocation.test.js +64 -41
- package/dist/src/agents/remote-invocation.test.js.map +1 -1
- package/dist/src/agents/subagent-tool-wrapper.js +1 -1
- package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
- package/dist/src/config/config.d.ts +6 -0
- package/dist/src/config/config.js +35 -6
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +4 -1
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +120 -8
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/config/models.d.ts +13 -2
- package/dist/src/config/models.js +20 -3
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/models.test.js +52 -0
- package/dist/src/config/models.test.js.map +1 -1
- package/dist/src/core/client.js +1 -1
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/contentGenerator.js +1 -1
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/geminiChat.js +2 -2
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/prompts.test.js +8 -0
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +3 -3
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/policy/types.d.ts +5 -0
- package/dist/src/policy/types.js +5 -0
- package/dist/src/policy/types.js.map +1 -1
- package/dist/src/prompts/promptProvider.js +3 -3
- package/dist/src/prompts/promptProvider.js.map +1 -1
- package/dist/src/prompts/snippets.legacy.d.ts +4 -0
- package/dist/src/prompts/snippets.legacy.js +25 -1
- package/dist/src/prompts/snippets.legacy.js.map +1 -1
- package/dist/src/routing/strategies/classifierStrategy.js +1 -1
- package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
- package/dist/src/routing/strategies/defaultStrategy.js +1 -1
- package/dist/src/routing/strategies/defaultStrategy.js.map +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.js +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
- package/dist/src/routing/strategies/numericalClassifierStrategy.js +1 -1
- package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -1
- package/dist/src/routing/strategies/overrideStrategy.js +1 -1
- package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
- package/dist/src/services/modelConfigService.d.ts +28 -1
- package/dist/src/services/modelConfigService.js +48 -0
- package/dist/src/services/modelConfigService.js.map +1 -1
- package/dist/src/services/trackerTypes.d.ts +1 -0
- package/dist/src/services/trackerTypes.js +1 -0
- package/dist/src/services/trackerTypes.js.map +1 -1
- package/dist/src/tools/definitions/model-family-sets/default-legacy.js +8 -1
- package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -1
- package/dist/src/tools/definitions/model-family-sets/gemini-3.js +8 -1
- package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +22 -3
- package/dist/src/tools/mcp-client-manager.js +84 -32
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.test.js +76 -56
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +15 -6
- package/dist/src/tools/mcp-client.js +85 -71
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +195 -88
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +2 -1
- package/dist/src/tools/tool-registry.js +12 -1
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +15 -0
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +1 -1
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/trackerTools.js +6 -1
- package/dist/src/tools/trackerTools.js.map +1 -1
- package/dist/src/tools/trackerTools.test.js +9 -1
- package/dist/src/tools/trackerTools.test.js.map +1 -1
- package/dist/src/tools/write-todos.js +1 -0
- package/dist/src/tools/write-todos.js.map +1 -1
- package/dist/src/tools/write-todos.test.js +4 -1
- package/dist/src/tools/write-todos.test.js.map +1 -1
- package/dist/src/utils/compatibility.d.ts +16 -0
- package/dist/src/utils/compatibility.js +58 -9
- package/dist/src/utils/compatibility.js.map +1 -1
- package/dist/src/utils/compatibility.test.js +127 -29
- package/dist/src/utils/compatibility.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.js +11 -19
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +15 -47
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { afterEach, beforeEach, describe, expect, it, vi, } from 'vitest';
|
|
7
7
|
import { McpClientManager } from './mcp-client-manager.js';
|
|
8
|
-
import { McpClient, MCPDiscoveryState } from './mcp-client.js';
|
|
8
|
+
import { McpClient, MCPDiscoveryState, MCPServerStatus } from './mcp-client.js';
|
|
9
9
|
vi.mock('./mcp-client.js', async () => {
|
|
10
10
|
const originalModule = await vi.importActual('./mcp-client.js');
|
|
11
11
|
return {
|
|
@@ -20,21 +20,25 @@ describe('McpClientManager', () => {
|
|
|
20
20
|
beforeEach(() => {
|
|
21
21
|
mockedMcpClient = vi.mockObject({
|
|
22
22
|
connect: vi.fn(),
|
|
23
|
-
|
|
23
|
+
discoverInto: vi.fn(),
|
|
24
24
|
disconnect: vi.fn(),
|
|
25
|
-
getStatus: vi.fn(),
|
|
25
|
+
getStatus: vi.fn().mockReturnValue(MCPServerStatus.DISCONNECTED),
|
|
26
26
|
getServerConfig: vi.fn(),
|
|
27
|
+
getServerName: vi.fn().mockReturnValue('test-server'),
|
|
27
28
|
});
|
|
28
29
|
vi.mocked(McpClient).mockReturnValue(mockedMcpClient);
|
|
29
30
|
mockConfig = vi.mockObject({
|
|
30
31
|
isTrustedFolder: vi.fn().mockReturnValue(true),
|
|
31
32
|
getMcpServers: vi.fn().mockReturnValue({}),
|
|
32
|
-
getPromptRegistry: ()
|
|
33
|
-
getResourceRegistry:
|
|
33
|
+
getPromptRegistry: vi.fn().mockReturnValue({ registerPrompt: vi.fn() }),
|
|
34
|
+
getResourceRegistry: vi
|
|
35
|
+
.fn()
|
|
36
|
+
.mockReturnValue({ setResourcesForServer: vi.fn() }),
|
|
34
37
|
getDebugMode: () => false,
|
|
35
|
-
getWorkspaceContext: () => { },
|
|
38
|
+
getWorkspaceContext: () => ({ getDirectories: () => [] }),
|
|
36
39
|
getAllowedMcpServers: vi.fn().mockReturnValue([]),
|
|
37
40
|
getBlockedMcpServers: vi.fn().mockReturnValue([]),
|
|
41
|
+
getExcludedMcpServers: vi.fn().mockReturnValue([]),
|
|
38
42
|
getMcpServerCommand: vi.fn().mockReturnValue(''),
|
|
39
43
|
getMcpEnablementCallbacks: vi.fn().mockReturnValue(undefined),
|
|
40
44
|
getGeminiClient: vi.fn().mockReturnValue({
|
|
@@ -42,19 +46,34 @@ describe('McpClientManager', () => {
|
|
|
42
46
|
}),
|
|
43
47
|
refreshMcpContext: vi.fn(),
|
|
44
48
|
});
|
|
45
|
-
toolRegistry = {
|
|
49
|
+
toolRegistry = vi.mockObject({
|
|
50
|
+
registerTool: vi.fn(),
|
|
51
|
+
unregisterTool: vi.fn(),
|
|
52
|
+
sortTools: vi.fn(),
|
|
53
|
+
getMessageBus: vi.fn().mockReturnValue({}),
|
|
54
|
+
removeMcpToolsByServer: vi.fn(),
|
|
55
|
+
getToolsByServer: vi.fn().mockReturnValue([]),
|
|
56
|
+
});
|
|
46
57
|
});
|
|
47
58
|
afterEach(() => {
|
|
48
59
|
vi.restoreAllMocks();
|
|
49
60
|
});
|
|
61
|
+
const setupManager = (manager) => {
|
|
62
|
+
manager.setMainRegistries({
|
|
63
|
+
toolRegistry,
|
|
64
|
+
promptRegistry: mockConfig.getPromptRegistry(),
|
|
65
|
+
resourceRegistry: mockConfig.getResourceRegistry(),
|
|
66
|
+
});
|
|
67
|
+
return manager;
|
|
68
|
+
};
|
|
50
69
|
it('should discover tools from all configured', async () => {
|
|
51
70
|
mockConfig.getMcpServers.mockReturnValue({
|
|
52
71
|
'test-server': { command: 'node' },
|
|
53
72
|
});
|
|
54
|
-
const manager = new McpClientManager('0.0.1',
|
|
73
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
55
74
|
await manager.startConfiguredMcpServers();
|
|
56
75
|
expect(mockedMcpClient.connect).toHaveBeenCalledOnce();
|
|
57
|
-
expect(mockedMcpClient.
|
|
76
|
+
expect(mockedMcpClient.discoverInto).toHaveBeenCalledOnce();
|
|
58
77
|
expect(mockConfig.refreshMcpContext).toHaveBeenCalledOnce();
|
|
59
78
|
});
|
|
60
79
|
it('should batch context refresh when starting multiple servers', async () => {
|
|
@@ -63,11 +82,11 @@ describe('McpClientManager', () => {
|
|
|
63
82
|
'server-2': { command: 'node' },
|
|
64
83
|
'server-3': { command: 'node' },
|
|
65
84
|
});
|
|
66
|
-
const manager = new McpClientManager('0.0.1',
|
|
85
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
67
86
|
await manager.startConfiguredMcpServers();
|
|
68
87
|
// Each client should be connected/discovered
|
|
69
88
|
expect(mockedMcpClient.connect).toHaveBeenCalledTimes(3);
|
|
70
|
-
expect(mockedMcpClient.
|
|
89
|
+
expect(mockedMcpClient.discoverInto).toHaveBeenCalledTimes(3);
|
|
71
90
|
// But context refresh should happen only once
|
|
72
91
|
expect(mockConfig.refreshMcpContext).toHaveBeenCalledOnce();
|
|
73
92
|
});
|
|
@@ -75,7 +94,7 @@ describe('McpClientManager', () => {
|
|
|
75
94
|
mockConfig.getMcpServers.mockReturnValue({
|
|
76
95
|
'test-server': { command: 'node' },
|
|
77
96
|
});
|
|
78
|
-
const manager = new McpClientManager('0.0.1',
|
|
97
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
79
98
|
expect(manager.getDiscoveryState()).toBe(MCPDiscoveryState.NOT_STARTED);
|
|
80
99
|
const promise = manager.startConfiguredMcpServers();
|
|
81
100
|
expect(manager.getDiscoveryState()).toBe(MCPDiscoveryState.IN_PROGRESS);
|
|
@@ -90,48 +109,48 @@ describe('McpClientManager', () => {
|
|
|
90
109
|
isSessionDisabled: vi.fn().mockReturnValue(false),
|
|
91
110
|
isFileEnabled: vi.fn().mockResolvedValue(false),
|
|
92
111
|
});
|
|
93
|
-
const manager = new McpClientManager('0.0.1',
|
|
112
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
94
113
|
const promise = manager.startConfiguredMcpServers();
|
|
95
114
|
expect(manager.getDiscoveryState()).toBe(MCPDiscoveryState.IN_PROGRESS);
|
|
96
115
|
await promise;
|
|
97
116
|
expect(manager.getDiscoveryState()).toBe(MCPDiscoveryState.COMPLETED);
|
|
98
117
|
expect(manager.getMcpServerCount()).toBe(0);
|
|
99
118
|
expect(mockedMcpClient.connect).not.toHaveBeenCalled();
|
|
100
|
-
expect(mockedMcpClient.
|
|
119
|
+
expect(mockedMcpClient.discoverInto).not.toHaveBeenCalled();
|
|
101
120
|
});
|
|
102
121
|
it('should mark discovery completed when all configured servers are blocked', async () => {
|
|
103
122
|
mockConfig.getMcpServers.mockReturnValue({
|
|
104
123
|
'test-server': { command: 'node' },
|
|
105
124
|
});
|
|
106
125
|
mockConfig.getBlockedMcpServers.mockReturnValue(['test-server']);
|
|
107
|
-
const manager = new McpClientManager('0.0.1',
|
|
126
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
108
127
|
const promise = manager.startConfiguredMcpServers();
|
|
109
128
|
expect(manager.getDiscoveryState()).toBe(MCPDiscoveryState.IN_PROGRESS);
|
|
110
129
|
await promise;
|
|
111
130
|
expect(manager.getDiscoveryState()).toBe(MCPDiscoveryState.COMPLETED);
|
|
112
131
|
expect(manager.getMcpServerCount()).toBe(0);
|
|
113
132
|
expect(mockedMcpClient.connect).not.toHaveBeenCalled();
|
|
114
|
-
expect(mockedMcpClient.
|
|
133
|
+
expect(mockedMcpClient.discoverInto).not.toHaveBeenCalled();
|
|
115
134
|
});
|
|
116
135
|
it('should not discover tools if folder is not trusted', async () => {
|
|
117
136
|
mockConfig.getMcpServers.mockReturnValue({
|
|
118
137
|
'test-server': { command: 'node' },
|
|
119
138
|
});
|
|
120
139
|
mockConfig.isTrustedFolder.mockReturnValue(false);
|
|
121
|
-
const manager = new McpClientManager('0.0.1',
|
|
140
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
122
141
|
await manager.startConfiguredMcpServers();
|
|
123
142
|
expect(mockedMcpClient.connect).not.toHaveBeenCalled();
|
|
124
|
-
expect(mockedMcpClient.
|
|
143
|
+
expect(mockedMcpClient.discoverInto).not.toHaveBeenCalled();
|
|
125
144
|
});
|
|
126
145
|
it('should not start blocked servers', async () => {
|
|
127
146
|
mockConfig.getMcpServers.mockReturnValue({
|
|
128
147
|
'test-server': { command: 'node' },
|
|
129
148
|
});
|
|
130
149
|
mockConfig.getBlockedMcpServers.mockReturnValue(['test-server']);
|
|
131
|
-
const manager = new McpClientManager('0.0.1',
|
|
150
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
132
151
|
await manager.startConfiguredMcpServers();
|
|
133
152
|
expect(mockedMcpClient.connect).not.toHaveBeenCalled();
|
|
134
|
-
expect(mockedMcpClient.
|
|
153
|
+
expect(mockedMcpClient.discoverInto).not.toHaveBeenCalled();
|
|
135
154
|
});
|
|
136
155
|
it('should only start allowed servers if allow list is not empty', async () => {
|
|
137
156
|
mockConfig.getMcpServers.mockReturnValue({
|
|
@@ -139,13 +158,13 @@ describe('McpClientManager', () => {
|
|
|
139
158
|
'another-server': { command: 'node' },
|
|
140
159
|
});
|
|
141
160
|
mockConfig.getAllowedMcpServers.mockReturnValue(['another-server']);
|
|
142
|
-
const manager = new McpClientManager('0.0.1',
|
|
161
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
143
162
|
await manager.startConfiguredMcpServers();
|
|
144
163
|
expect(mockedMcpClient.connect).toHaveBeenCalledOnce();
|
|
145
|
-
expect(mockedMcpClient.
|
|
164
|
+
expect(mockedMcpClient.discoverInto).toHaveBeenCalledOnce();
|
|
146
165
|
});
|
|
147
166
|
it('should start servers from extensions', async () => {
|
|
148
|
-
const manager = new McpClientManager('0.0.1',
|
|
167
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
149
168
|
await manager.startExtension({
|
|
150
169
|
name: 'test-extension',
|
|
151
170
|
mcpServers: {
|
|
@@ -158,10 +177,10 @@ describe('McpClientManager', () => {
|
|
|
158
177
|
id: '123',
|
|
159
178
|
});
|
|
160
179
|
expect(mockedMcpClient.connect).toHaveBeenCalledOnce();
|
|
161
|
-
expect(mockedMcpClient.
|
|
180
|
+
expect(mockedMcpClient.discoverInto).toHaveBeenCalledOnce();
|
|
162
181
|
});
|
|
163
182
|
it('should not start servers from disabled extensions', async () => {
|
|
164
|
-
const manager = new McpClientManager('0.0.1',
|
|
183
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
165
184
|
await manager.startExtension({
|
|
166
185
|
name: 'test-extension',
|
|
167
186
|
mcpServers: {
|
|
@@ -174,14 +193,14 @@ describe('McpClientManager', () => {
|
|
|
174
193
|
id: '123',
|
|
175
194
|
});
|
|
176
195
|
expect(mockedMcpClient.connect).not.toHaveBeenCalled();
|
|
177
|
-
expect(mockedMcpClient.
|
|
196
|
+
expect(mockedMcpClient.discoverInto).not.toHaveBeenCalled();
|
|
178
197
|
});
|
|
179
198
|
it('should add blocked servers to the blockedMcpServers list', async () => {
|
|
180
199
|
mockConfig.getMcpServers.mockReturnValue({
|
|
181
200
|
'test-server': { command: 'node' },
|
|
182
201
|
});
|
|
183
202
|
mockConfig.getBlockedMcpServers.mockReturnValue(['test-server']);
|
|
184
|
-
const manager = new McpClientManager('0.0.1',
|
|
203
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
185
204
|
await manager.startConfiguredMcpServers();
|
|
186
205
|
expect(manager.getBlockedMcpServers()).toEqual([
|
|
187
206
|
{ name: 'test-server', extensionName: '' },
|
|
@@ -191,10 +210,10 @@ describe('McpClientManager', () => {
|
|
|
191
210
|
mockConfig.getMcpServers.mockReturnValue({
|
|
192
211
|
'test-server': { excludeTools: ['dangerous_tool'] },
|
|
193
212
|
});
|
|
194
|
-
const manager = new McpClientManager('0.0.1',
|
|
213
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
195
214
|
await manager.startConfiguredMcpServers();
|
|
196
215
|
expect(mockedMcpClient.connect).not.toHaveBeenCalled();
|
|
197
|
-
expect(mockedMcpClient.
|
|
216
|
+
expect(mockedMcpClient.discoverInto).not.toHaveBeenCalled();
|
|
198
217
|
// But it should still be tracked in allServerConfigs
|
|
199
218
|
expect(manager.getMcpServers()).toHaveProperty('test-server');
|
|
200
219
|
});
|
|
@@ -205,14 +224,14 @@ describe('McpClientManager', () => {
|
|
|
205
224
|
'test-server': serverConfig,
|
|
206
225
|
});
|
|
207
226
|
mockedMcpClient.getServerConfig.mockReturnValue(serverConfig);
|
|
208
|
-
const manager = new McpClientManager('0.0.1',
|
|
227
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
209
228
|
await manager.startConfiguredMcpServers();
|
|
210
229
|
expect(mockedMcpClient.connect).toHaveBeenCalledTimes(1);
|
|
211
|
-
expect(mockedMcpClient.
|
|
230
|
+
expect(mockedMcpClient.discoverInto).toHaveBeenCalledTimes(1);
|
|
212
231
|
await manager.restart();
|
|
213
232
|
expect(mockedMcpClient.disconnect).toHaveBeenCalledTimes(1);
|
|
214
233
|
expect(mockedMcpClient.connect).toHaveBeenCalledTimes(2);
|
|
215
|
-
expect(mockedMcpClient.
|
|
234
|
+
expect(mockedMcpClient.discoverInto).toHaveBeenCalledTimes(2);
|
|
216
235
|
});
|
|
217
236
|
});
|
|
218
237
|
describe('restartServer', () => {
|
|
@@ -222,17 +241,17 @@ describe('McpClientManager', () => {
|
|
|
222
241
|
'test-server': serverConfig,
|
|
223
242
|
});
|
|
224
243
|
mockedMcpClient.getServerConfig.mockReturnValue(serverConfig);
|
|
225
|
-
const manager = new McpClientManager('0.0.1',
|
|
244
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
226
245
|
await manager.startConfiguredMcpServers();
|
|
227
246
|
expect(mockedMcpClient.connect).toHaveBeenCalledTimes(1);
|
|
228
|
-
expect(mockedMcpClient.
|
|
247
|
+
expect(mockedMcpClient.discoverInto).toHaveBeenCalledTimes(1);
|
|
229
248
|
await manager.restartServer('test-server');
|
|
230
249
|
expect(mockedMcpClient.disconnect).toHaveBeenCalledTimes(1);
|
|
231
250
|
expect(mockedMcpClient.connect).toHaveBeenCalledTimes(2);
|
|
232
|
-
expect(mockedMcpClient.
|
|
251
|
+
expect(mockedMcpClient.discoverInto).toHaveBeenCalledTimes(2);
|
|
233
252
|
});
|
|
234
253
|
it('should throw an error if the server does not exist', async () => {
|
|
235
|
-
const manager = new McpClientManager('0.0.1',
|
|
254
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
236
255
|
await expect(manager.restartServer('non-existent')).rejects.toThrow('No MCP server registered with the name "non-existent"');
|
|
237
256
|
});
|
|
238
257
|
it('should create a new McpClient with updated config on restart', async () => {
|
|
@@ -248,7 +267,7 @@ describe('McpClientManager', () => {
|
|
|
248
267
|
return mockedMcpClient;
|
|
249
268
|
});
|
|
250
269
|
mockedMcpClient.getServerConfig.mockReturnValue(originalConfig);
|
|
251
|
-
const manager = new McpClientManager('0.0.1',
|
|
270
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
252
271
|
await manager.startConfiguredMcpServers();
|
|
253
272
|
// First call should use the original config
|
|
254
273
|
expect(constructorCalls).toHaveLength(1);
|
|
@@ -267,16 +286,17 @@ describe('McpClientManager', () => {
|
|
|
267
286
|
it('should not return instructions for servers that do not have instructions', async () => {
|
|
268
287
|
vi.mocked(McpClient).mockImplementation((name, config) => ({
|
|
269
288
|
connect: vi.fn(),
|
|
270
|
-
|
|
289
|
+
discoverInto: vi.fn(),
|
|
271
290
|
disconnect: vi.fn(),
|
|
272
291
|
getServerConfig: vi.fn().mockReturnValue(config),
|
|
292
|
+
getServerName: vi.fn().mockReturnValue(name),
|
|
273
293
|
getInstructions: vi
|
|
274
294
|
.fn()
|
|
275
295
|
.mockReturnValue(name === 'server-with-instructions'
|
|
276
296
|
? `Instructions for ${name}`
|
|
277
297
|
: ''),
|
|
278
298
|
}));
|
|
279
|
-
const manager = new McpClientManager('0.0.1',
|
|
299
|
+
const manager = new McpClientManager('0.0.1', mockConfig);
|
|
280
300
|
mockConfig.getMcpServers.mockReturnValue({
|
|
281
301
|
'server-with-instructions': { command: 'node' },
|
|
282
302
|
'server-without-instructions': { command: 'node' },
|
|
@@ -298,7 +318,7 @@ describe('McpClientManager', () => {
|
|
|
298
318
|
mockConfig.getMcpServers.mockReturnValue({
|
|
299
319
|
'test-server': { command: 'node' },
|
|
300
320
|
});
|
|
301
|
-
const manager = new McpClientManager('0.0.1',
|
|
321
|
+
const manager = new McpClientManager('0.0.1', mockConfig);
|
|
302
322
|
await expect(manager.startConfiguredMcpServers()).resolves.not.toThrow();
|
|
303
323
|
});
|
|
304
324
|
it('should handle errors thrown in the async IIFE before try block', async () => {
|
|
@@ -313,14 +333,14 @@ describe('McpClientManager', () => {
|
|
|
313
333
|
mockConfig.getMcpServers.mockReturnValue({
|
|
314
334
|
'test-server': { command: 'node' },
|
|
315
335
|
});
|
|
316
|
-
const manager = new McpClientManager('0.0.1',
|
|
336
|
+
const manager = new McpClientManager('0.0.1', mockConfig);
|
|
317
337
|
await manager.startConfiguredMcpServers();
|
|
318
338
|
await expect(manager.restartServer('test-server')).resolves.not.toThrow();
|
|
319
339
|
});
|
|
320
340
|
});
|
|
321
341
|
describe('Extension handling', () => {
|
|
322
342
|
it('should remove mcp servers from allServerConfigs when stopExtension is called', async () => {
|
|
323
|
-
const manager = new McpClientManager('0.0.1',
|
|
343
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
324
344
|
const mcpServers = {
|
|
325
345
|
'test-server': { command: 'node', args: ['server.js'] },
|
|
326
346
|
};
|
|
@@ -339,7 +359,7 @@ describe('McpClientManager', () => {
|
|
|
339
359
|
expect(manager.getMcpServers()).not.toHaveProperty('test-server');
|
|
340
360
|
});
|
|
341
361
|
it('should merge extension configuration with an existing user-configured server', async () => {
|
|
342
|
-
const manager = new McpClientManager('0.0.1',
|
|
362
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
343
363
|
const userConfig = { command: 'node', args: ['user-server.js'] };
|
|
344
364
|
mockConfig.getMcpServers.mockReturnValue({
|
|
345
365
|
'test-server': userConfig,
|
|
@@ -369,7 +389,7 @@ describe('McpClientManager', () => {
|
|
|
369
389
|
expect(lastCall[1].extension).toEqual(extension);
|
|
370
390
|
});
|
|
371
391
|
it('should securely merge tool lists and env variables regardless of load order', async () => {
|
|
372
|
-
const manager = new McpClientManager('0.0.1',
|
|
392
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
373
393
|
const userConfig = {
|
|
374
394
|
excludeTools: ['user-tool'],
|
|
375
395
|
includeTools: ['shared-inc', 'user-only-inc'],
|
|
@@ -414,7 +434,7 @@ describe('McpClientManager', () => {
|
|
|
414
434
|
expect(mergedConfig.extension).toBe(extension); // Extension ID preserved!
|
|
415
435
|
// Reset for Case 2
|
|
416
436
|
vi.mocked(McpClient).mockClear();
|
|
417
|
-
const manager2 = new McpClientManager('0.0.1',
|
|
437
|
+
const manager2 = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
418
438
|
// Case 2: User config loads first, then Extension loads
|
|
419
439
|
// This call will skip discovery because userConfig has no connection details
|
|
420
440
|
await manager2.maybeDiscoverMcpServer('test-server', userConfig);
|
|
@@ -435,7 +455,7 @@ describe('McpClientManager', () => {
|
|
|
435
455
|
expect(mergedConfig.extension).toBe(extension); // Extension ID preserved!
|
|
436
456
|
});
|
|
437
457
|
it('should result in empty includeTools if intersection is empty', async () => {
|
|
438
|
-
const manager = new McpClientManager('0.0.1',
|
|
458
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
439
459
|
const userConfig = { includeTools: ['user-tool'] };
|
|
440
460
|
const extConfig = {
|
|
441
461
|
command: 'node',
|
|
@@ -448,7 +468,7 @@ describe('McpClientManager', () => {
|
|
|
448
468
|
expect(lastCall[1].includeTools).toEqual([]); // Empty array = no tools allowed
|
|
449
469
|
});
|
|
450
470
|
it('should respect a single allowlist if only one is provided', async () => {
|
|
451
|
-
const manager = new McpClientManager('0.0.1',
|
|
471
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
452
472
|
const userConfig = { includeTools: ['user-tool'] };
|
|
453
473
|
const extConfig = { command: 'node', args: ['ext.js'] };
|
|
454
474
|
await manager.maybeDiscoverMcpServer('test-server', userConfig);
|
|
@@ -457,7 +477,7 @@ describe('McpClientManager', () => {
|
|
|
457
477
|
expect(lastCall[1].includeTools).toEqual(['user-tool']);
|
|
458
478
|
});
|
|
459
479
|
it('should allow partial overrides of connection properties', async () => {
|
|
460
|
-
const manager = new McpClientManager('0.0.1',
|
|
480
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
461
481
|
const extConfig = { command: 'node', args: ['ext.js'], timeout: 1000 };
|
|
462
482
|
const userOverride = { args: ['overridden.js'] };
|
|
463
483
|
// Load extension first
|
|
@@ -472,7 +492,7 @@ describe('McpClientManager', () => {
|
|
|
472
492
|
expect(finalConfig.timeout).toBe(1000); // Preserved from base
|
|
473
493
|
});
|
|
474
494
|
it('should prevent one extension from hijacking another extension server name', async () => {
|
|
475
|
-
const manager = new McpClientManager('0.0.1',
|
|
495
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
476
496
|
const extension1 = {
|
|
477
497
|
name: 'extension-1',
|
|
478
498
|
isActive: true,
|
|
@@ -507,7 +527,7 @@ describe('McpClientManager', () => {
|
|
|
507
527
|
});
|
|
508
528
|
it('should remove servers from blockedMcpServers when stopExtension is called', async () => {
|
|
509
529
|
mockConfig.getBlockedMcpServers.mockReturnValue(['blocked-server']);
|
|
510
|
-
const manager = new McpClientManager('0.0.1',
|
|
530
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
511
531
|
const mcpServers = {
|
|
512
532
|
'blocked-server': { command: 'node', args: ['server.js'] },
|
|
513
533
|
};
|
|
@@ -540,38 +560,38 @@ describe('McpClientManager', () => {
|
|
|
540
560
|
vi.spyOn(coreEventsMock, 'emitFeedback').mockImplementation(() => { });
|
|
541
561
|
});
|
|
542
562
|
it('should emit hint instead of full error when user has not interacted with MCP', () => {
|
|
543
|
-
const manager = new McpClientManager('0.0.1',
|
|
563
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
544
564
|
manager.emitDiagnostic('error', 'Something went wrong', new Error('boom'));
|
|
545
565
|
expect(coreEventsMock.emitFeedback).toHaveBeenCalledWith('info', 'MCP issues detected. Run /mcp list for status.');
|
|
546
566
|
expect(coreEventsMock.emitFeedback).not.toHaveBeenCalledWith('error', 'Something went wrong', expect.anything());
|
|
547
567
|
});
|
|
548
568
|
it('should emit full error when user has interacted with MCP', () => {
|
|
549
|
-
const manager = new McpClientManager('0.0.1',
|
|
569
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
550
570
|
manager.setUserInteractedWithMcp();
|
|
551
571
|
manager.emitDiagnostic('error', 'Something went wrong', new Error('boom'));
|
|
552
572
|
expect(coreEventsMock.emitFeedback).toHaveBeenCalledWith('error', 'Something went wrong', expect.any(Error));
|
|
553
573
|
});
|
|
554
574
|
it('should still deduplicate diagnostic messages after user interaction', () => {
|
|
555
|
-
const manager = new McpClientManager('0.0.1',
|
|
575
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
556
576
|
manager.setUserInteractedWithMcp();
|
|
557
577
|
manager.emitDiagnostic('error', 'Same error');
|
|
558
578
|
manager.emitDiagnostic('error', 'Same error');
|
|
559
579
|
expect(coreEventsMock.emitFeedback).toHaveBeenCalledTimes(1);
|
|
560
580
|
});
|
|
561
581
|
it('should only show hint once per session', () => {
|
|
562
|
-
const manager = new McpClientManager('0.0.1',
|
|
582
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
563
583
|
manager.emitDiagnostic('error', 'Error 1');
|
|
564
584
|
manager.emitDiagnostic('error', 'Error 2');
|
|
565
585
|
expect(coreEventsMock.emitFeedback).toHaveBeenCalledTimes(1);
|
|
566
586
|
expect(coreEventsMock.emitFeedback).toHaveBeenCalledWith('info', 'MCP issues detected. Run /mcp list for status.');
|
|
567
587
|
});
|
|
568
588
|
it('should capture last error for a server even when silenced', () => {
|
|
569
|
-
const manager = new McpClientManager('0.0.1',
|
|
589
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
570
590
|
manager.emitDiagnostic('error', 'Error in server (test-server)', undefined, 'test-server');
|
|
571
591
|
expect(manager.getLastError('test-server')).toBe('Error in server (test-server)');
|
|
572
592
|
});
|
|
573
593
|
it('should show previously deduplicated errors after interaction clears state', () => {
|
|
574
|
-
const manager = new McpClientManager('0.0.1',
|
|
594
|
+
const manager = setupManager(new McpClientManager('0.0.1', mockConfig));
|
|
575
595
|
manager.emitDiagnostic('error', 'Same error');
|
|
576
596
|
expect(coreEventsMock.emitFeedback).toHaveBeenCalledTimes(1); // The hint
|
|
577
597
|
manager.setUserInteractedWithMcp();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client-manager.test.js","sourceRoot":"","sources":["../../../src/tools/mcp-client-manager.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-client-manager.test.js","sourceRoot":"","sources":["../../../src/tools/mcp-client-manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,11 @@ export interface McpProgressReporter {
|
|
|
54
54
|
registerProgressToken(token: string | number, callId: string): void;
|
|
55
55
|
unregisterProgressToken(token: string | number): void;
|
|
56
56
|
}
|
|
57
|
+
export interface RegistrySet {
|
|
58
|
+
toolRegistry: ToolRegistry;
|
|
59
|
+
promptRegistry: PromptRegistry;
|
|
60
|
+
resourceRegistry: ResourceRegistry;
|
|
61
|
+
}
|
|
57
62
|
/**
|
|
58
63
|
* A client for a single MCP server.
|
|
59
64
|
*
|
|
@@ -63,9 +68,6 @@ export interface McpProgressReporter {
|
|
|
63
68
|
export declare class McpClient implements McpProgressReporter {
|
|
64
69
|
private readonly serverName;
|
|
65
70
|
private readonly serverConfig;
|
|
66
|
-
private readonly toolRegistry;
|
|
67
|
-
private readonly promptRegistry;
|
|
68
|
-
private readonly resourceRegistry;
|
|
69
71
|
private readonly workspaceContext;
|
|
70
72
|
private readonly cliConfig;
|
|
71
73
|
private readonly debugMode;
|
|
@@ -80,20 +82,27 @@ export declare class McpClient implements McpProgressReporter {
|
|
|
80
82
|
private pendingResourceRefresh;
|
|
81
83
|
private isRefreshingPrompts;
|
|
82
84
|
private pendingPromptRefresh;
|
|
85
|
+
private readonly registeredRegistries;
|
|
83
86
|
/**
|
|
84
87
|
* Map of progress tokens to tool call IDs.
|
|
85
88
|
* This allows us to route progress notifications to the correct tool call.
|
|
86
89
|
*/
|
|
87
90
|
private readonly progressTokenToCallId;
|
|
88
|
-
constructor(serverName: string, serverConfig: MCPServerConfig,
|
|
91
|
+
constructor(serverName: string, serverConfig: MCPServerConfig, workspaceContext: WorkspaceContext, cliConfig: McpContext, debugMode: boolean, clientVersion: string, onContextUpdated?: ((signal?: AbortSignal) => Promise<void>) | undefined);
|
|
92
|
+
getServerName(): string;
|
|
89
93
|
/**
|
|
90
94
|
* Connects to the MCP server.
|
|
91
95
|
*/
|
|
92
96
|
connect(): Promise<void>;
|
|
93
97
|
/**
|
|
94
|
-
* Discovers tools and prompts from the MCP server.
|
|
98
|
+
* Discovers tools and prompts from the MCP server into the specified registries.
|
|
99
|
+
*/
|
|
100
|
+
discoverInto(cliConfig: McpContext, registries: RegistrySet): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Unregisters registries so this client will no longer update them when it receives
|
|
103
|
+
* list_changed notifications from the server.
|
|
95
104
|
*/
|
|
96
|
-
|
|
105
|
+
removeRegistries(registries: RegistrySet): void;
|
|
97
106
|
/**
|
|
98
107
|
* Disconnects from the MCP server.
|
|
99
108
|
*/
|