@google/gemini-cli-core 0.1.9-nightly.250704.23eea823 → 0.1.9-nightly.250707.d1c0a211
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/README.md +2 -2
- package/dist/google-gemini-cli-core-0.1.9.tgz +0 -0
- package/dist/src/core/coreToolScheduler.d.ts +9 -2
- package/dist/src/core/coreToolScheduler.js +28 -2
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +78 -0
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +0 -9
- package/dist/src/tools/mcp-client.js +2 -28
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +10 -4
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +16 -1
- package/dist/src/tools/tool-registry.js +150 -15
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +184 -73
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +4 -1
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/utils/editCorrector.js +1 -1
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editor.d.ts +1 -1
- package/dist/src/utils/editor.js +1 -1
- package/dist/src/utils/nextSpeakerChecker.js +1 -1
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { Type } from '@google/genai';
|
|
6
7
|
import { BaseTool } from './tools.js';
|
|
7
|
-
import { spawn
|
|
8
|
+
import { spawn } from 'node:child_process';
|
|
9
|
+
import { StringDecoder } from 'node:string_decoder';
|
|
8
10
|
import { discoverMcpTools } from './mcp-client.js';
|
|
9
11
|
import { DiscoveredMCPTool } from './mcp-tool.js';
|
|
12
|
+
import { parse } from 'shell-quote';
|
|
10
13
|
export class DiscoveredTool extends BaseTool {
|
|
11
14
|
config;
|
|
12
15
|
name;
|
|
@@ -130,29 +133,107 @@ export class ToolRegistry {
|
|
|
130
133
|
// Keep manually registered tools
|
|
131
134
|
}
|
|
132
135
|
}
|
|
133
|
-
|
|
136
|
+
await this.discoverAndRegisterToolsFromCommand();
|
|
137
|
+
// discover tools using MCP servers, if configured
|
|
138
|
+
await discoverMcpTools(this.config.getMcpServers() ?? {}, this.config.getMcpServerCommand(), this);
|
|
139
|
+
}
|
|
140
|
+
async discoverAndRegisterToolsFromCommand() {
|
|
134
141
|
const discoveryCmd = this.config.getToolDiscoveryCommand();
|
|
135
|
-
if (discoveryCmd) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
142
|
+
if (!discoveryCmd) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
const cmdParts = parse(discoveryCmd);
|
|
147
|
+
if (cmdParts.length === 0) {
|
|
148
|
+
throw new Error('Tool discovery command is empty or contains only whitespace.');
|
|
149
|
+
}
|
|
150
|
+
const proc = spawn(cmdParts[0], cmdParts.slice(1));
|
|
151
|
+
let stdout = '';
|
|
152
|
+
const stdoutDecoder = new StringDecoder('utf8');
|
|
153
|
+
let stderr = '';
|
|
154
|
+
const stderrDecoder = new StringDecoder('utf8');
|
|
155
|
+
let sizeLimitExceeded = false;
|
|
156
|
+
const MAX_STDOUT_SIZE = 10 * 1024 * 1024; // 10MB limit
|
|
157
|
+
const MAX_STDERR_SIZE = 10 * 1024 * 1024; // 10MB limit
|
|
158
|
+
let stdoutByteLength = 0;
|
|
159
|
+
let stderrByteLength = 0;
|
|
160
|
+
proc.stdout.on('data', (data) => {
|
|
161
|
+
if (sizeLimitExceeded)
|
|
162
|
+
return;
|
|
163
|
+
if (stdoutByteLength + data.length > MAX_STDOUT_SIZE) {
|
|
164
|
+
sizeLimitExceeded = true;
|
|
165
|
+
proc.kill();
|
|
166
|
+
return;
|
|
141
167
|
}
|
|
142
|
-
|
|
143
|
-
|
|
168
|
+
stdoutByteLength += data.length;
|
|
169
|
+
stdout += stdoutDecoder.write(data);
|
|
170
|
+
});
|
|
171
|
+
proc.stderr.on('data', (data) => {
|
|
172
|
+
if (sizeLimitExceeded)
|
|
173
|
+
return;
|
|
174
|
+
if (stderrByteLength + data.length > MAX_STDERR_SIZE) {
|
|
175
|
+
sizeLimitExceeded = true;
|
|
176
|
+
proc.kill();
|
|
177
|
+
return;
|
|
144
178
|
}
|
|
145
|
-
|
|
146
|
-
|
|
179
|
+
stderrByteLength += data.length;
|
|
180
|
+
stderr += stderrDecoder.write(data);
|
|
181
|
+
});
|
|
182
|
+
await new Promise((resolve, reject) => {
|
|
183
|
+
proc.on('error', reject);
|
|
184
|
+
proc.on('close', (code) => {
|
|
185
|
+
stdout += stdoutDecoder.end();
|
|
186
|
+
stderr += stderrDecoder.end();
|
|
187
|
+
if (sizeLimitExceeded) {
|
|
188
|
+
return reject(new Error(`Tool discovery command output exceeded size limit of ${MAX_STDOUT_SIZE} bytes.`));
|
|
189
|
+
}
|
|
190
|
+
if (code !== 0) {
|
|
191
|
+
console.error(`Command failed with code ${code}`);
|
|
192
|
+
console.error(stderr);
|
|
193
|
+
return reject(new Error(`Tool discovery command failed with exit code ${code}`));
|
|
194
|
+
}
|
|
195
|
+
resolve();
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
// execute discovery command and extract function declarations (w/ or w/o "tool" wrappers)
|
|
199
|
+
const functions = [];
|
|
200
|
+
const discoveredItems = JSON.parse(stdout.trim());
|
|
201
|
+
if (!discoveredItems || !Array.isArray(discoveredItems)) {
|
|
202
|
+
throw new Error('Tool discovery command did not return a JSON array of tools.');
|
|
203
|
+
}
|
|
204
|
+
for (const tool of discoveredItems) {
|
|
205
|
+
if (tool && typeof tool === 'object') {
|
|
206
|
+
if (Array.isArray(tool['function_declarations'])) {
|
|
207
|
+
functions.push(...tool['function_declarations']);
|
|
208
|
+
}
|
|
209
|
+
else if (Array.isArray(tool['functionDeclarations'])) {
|
|
210
|
+
functions.push(...tool['functionDeclarations']);
|
|
211
|
+
}
|
|
212
|
+
else if (tool['name']) {
|
|
213
|
+
functions.push(tool);
|
|
214
|
+
}
|
|
147
215
|
}
|
|
148
216
|
}
|
|
149
217
|
// register each function as a tool
|
|
150
218
|
for (const func of functions) {
|
|
151
|
-
|
|
219
|
+
if (!func.name) {
|
|
220
|
+
console.warn('Discovered a tool with no name. Skipping.');
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
// Sanitize the parameters before registering the tool.
|
|
224
|
+
const parameters = func.parameters &&
|
|
225
|
+
typeof func.parameters === 'object' &&
|
|
226
|
+
!Array.isArray(func.parameters)
|
|
227
|
+
? func.parameters
|
|
228
|
+
: {};
|
|
229
|
+
sanitizeParameters(parameters);
|
|
230
|
+
this.registerTool(new DiscoveredTool(this.config, func.name, func.description ?? '', parameters));
|
|
152
231
|
}
|
|
153
232
|
}
|
|
154
|
-
|
|
155
|
-
|
|
233
|
+
catch (e) {
|
|
234
|
+
console.error(`Tool discovery command "${discoveryCmd}" failed:`, e);
|
|
235
|
+
throw e;
|
|
236
|
+
}
|
|
156
237
|
}
|
|
157
238
|
/**
|
|
158
239
|
* Retrieves the list of tool schemas (FunctionDeclaration array).
|
|
@@ -192,4 +273,58 @@ export class ToolRegistry {
|
|
|
192
273
|
return this.tools.get(name);
|
|
193
274
|
}
|
|
194
275
|
}
|
|
276
|
+
/**
|
|
277
|
+
* Sanitizes a schema object in-place to ensure compatibility with the Gemini API.
|
|
278
|
+
*
|
|
279
|
+
* NOTE: This function mutates the passed schema object.
|
|
280
|
+
*
|
|
281
|
+
* It performs the following actions:
|
|
282
|
+
* - Removes the `default` property when `anyOf` is present.
|
|
283
|
+
* - Removes unsupported `format` values from string properties, keeping only 'enum' and 'date-time'.
|
|
284
|
+
* - Recursively sanitizes nested schemas within `anyOf`, `items`, and `properties`.
|
|
285
|
+
* - Handles circular references within the schema to prevent infinite loops.
|
|
286
|
+
*
|
|
287
|
+
* @param schema The schema object to sanitize. It will be modified directly.
|
|
288
|
+
*/
|
|
289
|
+
export function sanitizeParameters(schema) {
|
|
290
|
+
_sanitizeParameters(schema, new Set());
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Internal recursive implementation for sanitizeParameters.
|
|
294
|
+
* @param schema The schema object to sanitize.
|
|
295
|
+
* @param visited A set used to track visited schema objects during recursion.
|
|
296
|
+
*/
|
|
297
|
+
function _sanitizeParameters(schema, visited) {
|
|
298
|
+
if (!schema || visited.has(schema)) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
visited.add(schema);
|
|
302
|
+
if (schema.anyOf) {
|
|
303
|
+
// Vertex AI gets confused if both anyOf and default are set.
|
|
304
|
+
schema.default = undefined;
|
|
305
|
+
for (const item of schema.anyOf) {
|
|
306
|
+
if (typeof item !== 'boolean') {
|
|
307
|
+
_sanitizeParameters(item, visited);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
if (schema.items && typeof schema.items !== 'boolean') {
|
|
312
|
+
_sanitizeParameters(schema.items, visited);
|
|
313
|
+
}
|
|
314
|
+
if (schema.properties) {
|
|
315
|
+
for (const item of Object.values(schema.properties)) {
|
|
316
|
+
if (typeof item !== 'boolean') {
|
|
317
|
+
_sanitizeParameters(item, visited);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
// Vertex AI only supports 'enum' and 'date-time' for STRING format.
|
|
322
|
+
if (schema.type === Type.STRING) {
|
|
323
|
+
if (schema.format &&
|
|
324
|
+
schema.format !== 'enum' &&
|
|
325
|
+
schema.format !== 'date-time') {
|
|
326
|
+
schema.format = undefined;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
195
330
|
//# sourceMappingURL=tool-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/tools/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/tools/tool-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
*/
|
|
6
6
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
7
|
import { describe, it, expect, vi, beforeEach, afterEach, } from 'vitest';
|
|
8
|
-
import { ToolRegistry,
|
|
8
|
+
import { ToolRegistry, sanitizeParameters, } from './tool-registry.js';
|
|
9
9
|
import { DiscoveredMCPTool } from './mcp-tool.js';
|
|
10
|
-
import { Config, ApprovalMode
|
|
10
|
+
import { Config, ApprovalMode } from '../config/config.js';
|
|
11
11
|
import { BaseTool } from './tools.js';
|
|
12
12
|
import { mcpToTool, Type, } from '@google/genai';
|
|
13
|
-
import {
|
|
13
|
+
import { spawn } from 'node:child_process';
|
|
14
14
|
// Use vi.hoisted to define the mock function so it can be used in the vi.mock factory
|
|
15
15
|
const mockDiscoverMcpTools = vi.hoisted(() => vi.fn());
|
|
16
16
|
// Mock ./mcp-client.js to control its behavior within tool-registry tests
|
|
@@ -37,7 +37,6 @@ vi.mock('@modelcontextprotocol/sdk/client/index.js', () => {
|
|
|
37
37
|
set onerror(handler) {
|
|
38
38
|
mockMcpClientOnError(handler);
|
|
39
39
|
},
|
|
40
|
-
// listTools and callTool are no longer directly used by ToolRegistry/discoverMcpTools
|
|
41
40
|
}));
|
|
42
41
|
return { Client: MockClient };
|
|
43
42
|
});
|
|
@@ -62,7 +61,6 @@ vi.mock('@google/genai', async () => {
|
|
|
62
61
|
return {
|
|
63
62
|
...actualGenai,
|
|
64
63
|
mcpToTool: vi.fn().mockImplementation(() => ({
|
|
65
|
-
// Default mock implementation
|
|
66
64
|
tool: vi.fn().mockResolvedValue({ functionDeclarations: [] }),
|
|
67
65
|
callTool: vi.fn(),
|
|
68
66
|
})),
|
|
@@ -105,6 +103,7 @@ const baseConfigParams = {
|
|
|
105
103
|
describe('ToolRegistry', () => {
|
|
106
104
|
let config;
|
|
107
105
|
let toolRegistry;
|
|
106
|
+
let mockConfigGetToolDiscoveryCommand;
|
|
108
107
|
beforeEach(() => {
|
|
109
108
|
config = new Config(baseConfigParams);
|
|
110
109
|
toolRegistry = new ToolRegistry(config);
|
|
@@ -112,13 +111,15 @@ describe('ToolRegistry', () => {
|
|
|
112
111
|
vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
113
112
|
vi.spyOn(console, 'debug').mockImplementation(() => { });
|
|
114
113
|
vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
115
|
-
|
|
116
|
-
mockMcpClientConnect.mockReset().mockResolvedValue(undefined); // Default connect success
|
|
114
|
+
mockMcpClientConnect.mockReset().mockResolvedValue(undefined);
|
|
117
115
|
mockStdioTransportClose.mockReset();
|
|
118
116
|
mockSseTransportClose.mockReset();
|
|
119
117
|
vi.mocked(mcpToTool).mockClear();
|
|
120
|
-
// Default mcpToTool to return a callable tool that returns no functions
|
|
121
118
|
vi.mocked(mcpToTool).mockReturnValue(createMockCallableTool([]));
|
|
119
|
+
mockConfigGetToolDiscoveryCommand = vi.spyOn(config, 'getToolDiscoveryCommand');
|
|
120
|
+
vi.spyOn(config, 'getMcpServers');
|
|
121
|
+
vi.spyOn(config, 'getMcpServerCommand');
|
|
122
|
+
mockDiscoverMcpTools.mockReset().mockResolvedValue(undefined);
|
|
122
123
|
});
|
|
123
124
|
afterEach(() => {
|
|
124
125
|
vi.restoreAllMocks();
|
|
@@ -129,18 +130,16 @@ describe('ToolRegistry', () => {
|
|
|
129
130
|
toolRegistry.registerTool(tool);
|
|
130
131
|
expect(toolRegistry.getTool('mock-tool')).toBe(tool);
|
|
131
132
|
});
|
|
132
|
-
// ... other registerTool tests
|
|
133
133
|
});
|
|
134
134
|
describe('getToolsByServer', () => {
|
|
135
135
|
it('should return an empty array if no tools match the server name', () => {
|
|
136
|
-
toolRegistry.registerTool(new MockTool());
|
|
136
|
+
toolRegistry.registerTool(new MockTool());
|
|
137
137
|
expect(toolRegistry.getToolsByServer('any-mcp-server')).toEqual([]);
|
|
138
138
|
});
|
|
139
139
|
it('should return only tools matching the server name', async () => {
|
|
140
140
|
const server1Name = 'mcp-server-uno';
|
|
141
141
|
const server2Name = 'mcp-server-dos';
|
|
142
|
-
|
|
143
|
-
const mockCallable = {}; // Minimal mock callable
|
|
142
|
+
const mockCallable = {};
|
|
144
143
|
const mcpTool1 = new DiscoveredMCPTool(mockCallable, server1Name, 'server1Name__tool-on-server1', 'd1', {}, 'tool-on-server1');
|
|
145
144
|
const mcpTool2 = new DiscoveredMCPTool(mockCallable, server2Name, 'server2Name__tool-on-server2', 'd2', {}, 'tool-on-server2');
|
|
146
145
|
const nonMcpTool = new MockTool('regular-tool');
|
|
@@ -150,48 +149,62 @@ describe('ToolRegistry', () => {
|
|
|
150
149
|
const toolsFromServer1 = toolRegistry.getToolsByServer(server1Name);
|
|
151
150
|
expect(toolsFromServer1).toHaveLength(1);
|
|
152
151
|
expect(toolsFromServer1[0].name).toBe(mcpTool1.name);
|
|
153
|
-
expect(toolsFromServer1[0].serverName).toBe(server1Name);
|
|
154
152
|
const toolsFromServer2 = toolRegistry.getToolsByServer(server2Name);
|
|
155
153
|
expect(toolsFromServer2).toHaveLength(1);
|
|
156
154
|
expect(toolsFromServer2[0].name).toBe(mcpTool2.name);
|
|
157
|
-
expect(toolsFromServer2[0].serverName).toBe(server2Name);
|
|
158
|
-
expect(toolRegistry.getToolsByServer('non-existent-server')).toEqual([]);
|
|
159
155
|
});
|
|
160
156
|
});
|
|
161
157
|
describe('discoverTools', () => {
|
|
162
|
-
|
|
163
|
-
let mockConfigGetMcpServers;
|
|
164
|
-
let mockConfigGetMcpServerCommand;
|
|
165
|
-
let mockExecSync;
|
|
166
|
-
beforeEach(() => {
|
|
167
|
-
mockConfigGetToolDiscoveryCommand = vi.spyOn(config, 'getToolDiscoveryCommand');
|
|
168
|
-
mockConfigGetMcpServers = vi.spyOn(config, 'getMcpServers');
|
|
169
|
-
mockConfigGetMcpServerCommand = vi.spyOn(config, 'getMcpServerCommand');
|
|
170
|
-
mockExecSync = vi.mocked(execSync);
|
|
171
|
-
toolRegistry = new ToolRegistry(config); // Reset registry
|
|
172
|
-
// Reset the mock for discoverMcpTools before each test in this suite
|
|
173
|
-
mockDiscoverMcpTools.mockReset().mockResolvedValue(undefined);
|
|
174
|
-
});
|
|
175
|
-
it('should discover tools using discovery command', async () => {
|
|
176
|
-
// ... this test remains largely the same
|
|
158
|
+
it('should sanitize tool parameters during discovery from command', async () => {
|
|
177
159
|
const discoveryCommand = 'my-discovery-command';
|
|
178
160
|
mockConfigGetToolDiscoveryCommand.mockReturnValue(discoveryCommand);
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
161
|
+
const unsanitizedToolDeclaration = {
|
|
162
|
+
name: 'tool-with-bad-format',
|
|
163
|
+
description: 'A tool with an invalid format property',
|
|
164
|
+
parameters: {
|
|
165
|
+
type: Type.OBJECT,
|
|
166
|
+
properties: {
|
|
167
|
+
some_string: {
|
|
168
|
+
type: Type.STRING,
|
|
169
|
+
format: 'uuid', // This is an unsupported format
|
|
170
|
+
},
|
|
171
|
+
},
|
|
184
172
|
},
|
|
185
|
-
|
|
186
|
-
|
|
173
|
+
};
|
|
174
|
+
const mockSpawn = vi.mocked(spawn);
|
|
175
|
+
const mockChildProcess = {
|
|
176
|
+
stdout: { on: vi.fn() },
|
|
177
|
+
stderr: { on: vi.fn() },
|
|
178
|
+
on: vi.fn(),
|
|
179
|
+
};
|
|
180
|
+
mockSpawn.mockReturnValue(mockChildProcess);
|
|
181
|
+
// Simulate stdout data
|
|
182
|
+
mockChildProcess.stdout.on.mockImplementation((event, callback) => {
|
|
183
|
+
if (event === 'data') {
|
|
184
|
+
callback(Buffer.from(JSON.stringify([
|
|
185
|
+
{ function_declarations: [unsanitizedToolDeclaration] },
|
|
186
|
+
])));
|
|
187
|
+
}
|
|
188
|
+
return mockChildProcess;
|
|
189
|
+
});
|
|
190
|
+
// Simulate process close
|
|
191
|
+
mockChildProcess.on.mockImplementation((event, callback) => {
|
|
192
|
+
if (event === 'close') {
|
|
193
|
+
callback(0);
|
|
194
|
+
}
|
|
195
|
+
return mockChildProcess;
|
|
196
|
+
});
|
|
187
197
|
await toolRegistry.discoverTools();
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
198
|
+
const discoveredTool = toolRegistry.getTool('tool-with-bad-format');
|
|
199
|
+
expect(discoveredTool).toBeDefined();
|
|
200
|
+
const registeredParams = discoveredTool.schema
|
|
201
|
+
.parameters;
|
|
202
|
+
expect(registeredParams.properties?.['some_string']).toBeDefined();
|
|
203
|
+
expect(registeredParams.properties?.['some_string']).toHaveProperty('format', undefined);
|
|
191
204
|
});
|
|
192
205
|
it('should discover tools using MCP servers defined in getMcpServers', async () => {
|
|
193
206
|
mockConfigGetToolDiscoveryCommand.mockReturnValue(undefined);
|
|
194
|
-
|
|
207
|
+
vi.spyOn(config, 'getMcpServerCommand').mockReturnValue(undefined);
|
|
195
208
|
const mcpServerConfigVal = {
|
|
196
209
|
'my-mcp-server': {
|
|
197
210
|
command: 'mcp-server-cmd',
|
|
@@ -199,44 +212,142 @@ describe('ToolRegistry', () => {
|
|
|
199
212
|
trust: true,
|
|
200
213
|
},
|
|
201
214
|
};
|
|
202
|
-
|
|
215
|
+
vi.spyOn(config, 'getMcpServers').mockReturnValue(mcpServerConfigVal);
|
|
203
216
|
await toolRegistry.discoverTools();
|
|
204
217
|
expect(mockDiscoverMcpTools).toHaveBeenCalledWith(mcpServerConfigVal, undefined, toolRegistry);
|
|
205
|
-
// We no longer check these as discoverMcpTools is mocked
|
|
206
|
-
// expect(vi.mocked(mcpToTool)).toHaveBeenCalledTimes(1);
|
|
207
|
-
// expect(Client).toHaveBeenCalledTimes(1);
|
|
208
|
-
// expect(StdioClientTransport).toHaveBeenCalledWith({
|
|
209
|
-
// command: 'mcp-server-cmd',
|
|
210
|
-
// args: ['--port', '1234'],
|
|
211
|
-
// env: expect.any(Object),
|
|
212
|
-
// stderr: 'pipe',
|
|
213
|
-
// });
|
|
214
|
-
// expect(mockMcpClientConnect).toHaveBeenCalled();
|
|
215
|
-
// To verify that tools *would* have been registered, we'd need mockDiscoverMcpTools
|
|
216
|
-
// to call toolRegistry.registerTool, or we test that separately.
|
|
217
|
-
// For now, we just check that the delegation happened.
|
|
218
|
-
});
|
|
219
|
-
it('should discover tools using MCP server command from getMcpServerCommand', async () => {
|
|
220
|
-
mockConfigGetToolDiscoveryCommand.mockReturnValue(undefined);
|
|
221
|
-
mockConfigGetMcpServers.mockReturnValue({});
|
|
222
|
-
mockConfigGetMcpServerCommand.mockReturnValue('mcp-server-start-command --param');
|
|
223
|
-
await toolRegistry.discoverTools();
|
|
224
|
-
expect(mockDiscoverMcpTools).toHaveBeenCalledWith({}, 'mcp-server-start-command --param', toolRegistry);
|
|
225
218
|
});
|
|
226
|
-
it('should
|
|
219
|
+
it('should discover tools using MCP servers defined in getMcpServers', async () => {
|
|
227
220
|
mockConfigGetToolDiscoveryCommand.mockReturnValue(undefined);
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
221
|
+
vi.spyOn(config, 'getMcpServerCommand').mockReturnValue(undefined);
|
|
222
|
+
const mcpServerConfigVal = {
|
|
223
|
+
'my-mcp-server': {
|
|
224
|
+
command: 'mcp-server-cmd',
|
|
225
|
+
args: ['--port', '1234'],
|
|
226
|
+
trust: true,
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
vi.spyOn(config, 'getMcpServers').mockReturnValue(mcpServerConfigVal);
|
|
232
230
|
await toolRegistry.discoverTools();
|
|
233
|
-
expect(mockDiscoverMcpTools).toHaveBeenCalledWith(
|
|
234
|
-
'failing-mcp': { command: 'fail-cmd' },
|
|
235
|
-
}, undefined, toolRegistry);
|
|
236
|
-
expect(toolRegistry.getAllTools()).toHaveLength(0);
|
|
231
|
+
expect(mockDiscoverMcpTools).toHaveBeenCalledWith(mcpServerConfigVal, undefined, toolRegistry);
|
|
237
232
|
});
|
|
238
233
|
});
|
|
239
|
-
|
|
240
|
-
|
|
234
|
+
});
|
|
235
|
+
describe('sanitizeParameters', () => {
|
|
236
|
+
it('should remove unsupported format from a simple string property', () => {
|
|
237
|
+
const schema = {
|
|
238
|
+
type: Type.OBJECT,
|
|
239
|
+
properties: {
|
|
240
|
+
name: { type: Type.STRING },
|
|
241
|
+
id: { type: Type.STRING, format: 'uuid' },
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
sanitizeParameters(schema);
|
|
245
|
+
expect(schema.properties?.['id']).toHaveProperty('format', undefined);
|
|
246
|
+
expect(schema.properties?.['name']).not.toHaveProperty('format');
|
|
247
|
+
});
|
|
248
|
+
it('should NOT remove supported format values', () => {
|
|
249
|
+
const schema = {
|
|
250
|
+
type: Type.OBJECT,
|
|
251
|
+
properties: {
|
|
252
|
+
date: { type: Type.STRING, format: 'date-time' },
|
|
253
|
+
role: {
|
|
254
|
+
type: Type.STRING,
|
|
255
|
+
format: 'enum',
|
|
256
|
+
enum: ['admin', 'user'],
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
};
|
|
260
|
+
const originalSchema = JSON.parse(JSON.stringify(schema));
|
|
261
|
+
sanitizeParameters(schema);
|
|
262
|
+
expect(schema).toEqual(originalSchema);
|
|
263
|
+
});
|
|
264
|
+
it('should handle nested objects recursively', () => {
|
|
265
|
+
const schema = {
|
|
266
|
+
type: Type.OBJECT,
|
|
267
|
+
properties: {
|
|
268
|
+
user: {
|
|
269
|
+
type: Type.OBJECT,
|
|
270
|
+
properties: {
|
|
271
|
+
email: { type: Type.STRING, format: 'email' },
|
|
272
|
+
},
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
};
|
|
276
|
+
sanitizeParameters(schema);
|
|
277
|
+
expect(schema.properties?.['user']?.properties?.['email']).toHaveProperty('format', undefined);
|
|
278
|
+
});
|
|
279
|
+
it('should handle arrays of objects', () => {
|
|
280
|
+
const schema = {
|
|
281
|
+
type: Type.OBJECT,
|
|
282
|
+
properties: {
|
|
283
|
+
items: {
|
|
284
|
+
type: Type.ARRAY,
|
|
285
|
+
items: {
|
|
286
|
+
type: Type.OBJECT,
|
|
287
|
+
properties: {
|
|
288
|
+
itemId: { type: Type.STRING, format: 'uuid' },
|
|
289
|
+
},
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
};
|
|
294
|
+
sanitizeParameters(schema);
|
|
295
|
+
expect(schema.properties?.['items']?.items?.properties?.['itemId']).toHaveProperty('format', undefined);
|
|
296
|
+
});
|
|
297
|
+
it('should handle schemas with no properties to sanitize', () => {
|
|
298
|
+
const schema = {
|
|
299
|
+
type: Type.OBJECT,
|
|
300
|
+
properties: {
|
|
301
|
+
count: { type: Type.NUMBER },
|
|
302
|
+
isActive: { type: Type.BOOLEAN },
|
|
303
|
+
},
|
|
304
|
+
};
|
|
305
|
+
const originalSchema = JSON.parse(JSON.stringify(schema));
|
|
306
|
+
sanitizeParameters(schema);
|
|
307
|
+
expect(schema).toEqual(originalSchema);
|
|
308
|
+
});
|
|
309
|
+
it('should not crash on an empty or undefined schema', () => {
|
|
310
|
+
expect(() => sanitizeParameters({})).not.toThrow();
|
|
311
|
+
expect(() => sanitizeParameters(undefined)).not.toThrow();
|
|
312
|
+
});
|
|
313
|
+
it('should handle cyclic schemas without crashing', () => {
|
|
314
|
+
const schema = {
|
|
315
|
+
type: Type.OBJECT,
|
|
316
|
+
properties: {
|
|
317
|
+
name: { type: Type.STRING, format: 'hostname' },
|
|
318
|
+
},
|
|
319
|
+
};
|
|
320
|
+
schema.properties.self = schema;
|
|
321
|
+
expect(() => sanitizeParameters(schema)).not.toThrow();
|
|
322
|
+
expect(schema.properties.name).toHaveProperty('format', undefined);
|
|
323
|
+
});
|
|
324
|
+
it('should handle complex nested schemas with cycles', () => {
|
|
325
|
+
const userNode = {
|
|
326
|
+
type: Type.OBJECT,
|
|
327
|
+
properties: {
|
|
328
|
+
id: { type: Type.STRING, format: 'uuid' },
|
|
329
|
+
name: { type: Type.STRING },
|
|
330
|
+
manager: {
|
|
331
|
+
type: Type.OBJECT,
|
|
332
|
+
properties: {
|
|
333
|
+
id: { type: Type.STRING, format: 'uuid' },
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
|
+
},
|
|
337
|
+
};
|
|
338
|
+
userNode.properties.reports = {
|
|
339
|
+
type: Type.ARRAY,
|
|
340
|
+
items: userNode,
|
|
341
|
+
};
|
|
342
|
+
const schema = {
|
|
343
|
+
type: Type.OBJECT,
|
|
344
|
+
properties: {
|
|
345
|
+
ceo: userNode,
|
|
346
|
+
},
|
|
347
|
+
};
|
|
348
|
+
expect(() => sanitizeParameters(schema)).not.toThrow();
|
|
349
|
+
expect(schema.properties?.['ceo']?.properties?.['id']).toHaveProperty('format', undefined);
|
|
350
|
+
expect(schema.properties?.['ceo']?.properties?.['manager']?.properties?.['id']).toHaveProperty('format', undefined);
|
|
351
|
+
});
|
|
241
352
|
});
|
|
242
353
|
//# sourceMappingURL=tool-registry.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.test.js","sourceRoot":"","sources":["../../../src/tools/tool-registry.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-registry.test.js","sourceRoot":"","sources":["../../../src/tools/tool-registry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -138,11 +138,14 @@ export interface FileDiff {
|
|
|
138
138
|
export interface ToolEditConfirmationDetails {
|
|
139
139
|
type: 'edit';
|
|
140
140
|
title: string;
|
|
141
|
-
onConfirm: (outcome: ToolConfirmationOutcome) => Promise<void>;
|
|
141
|
+
onConfirm: (outcome: ToolConfirmationOutcome, payload?: ToolConfirmationPayload) => Promise<void>;
|
|
142
142
|
fileName: string;
|
|
143
143
|
fileDiff: string;
|
|
144
144
|
isModifying?: boolean;
|
|
145
145
|
}
|
|
146
|
+
export interface ToolConfirmationPayload {
|
|
147
|
+
newContent: string;
|
|
148
|
+
}
|
|
146
149
|
export interface ToolExecuteConfirmationDetails {
|
|
147
150
|
type: 'exec';
|
|
148
151
|
title: string;
|