LFM2.5-VL-3B-WebGPU / test /mcp-client.test.js
shubeydoo's picture
Initial release
6c30253
Raw
History Blame Contribute Delete
1.57 kB
import test from 'node:test';
import assert from 'node:assert/strict';
import { compactMcpResult, normalizeMcpTools } from '../src/tools/mcp-client.js';
import { prepareToolCall } from '../src/tools/tool-registry.js';
test('normalizes compatible MCP tools for the existing tool loop', () => {
const [tool] = normalizeMcpTools([{
name: 'search_docs',
description: 'Search documentation.',
inputSchema: {
type: 'object',
properties: { query: { type: 'string' } },
required: ['query'],
additionalProperties: false,
},
}]);
assert.equal(tool.source, 'mcp');
assert.equal(tool.enabled, false);
tool.enabled = true;
const prepared = prepareToolCall({ name: 'search_docs', arguments: { query: 'WebGPU' }, positional: [] }, [tool]);
assert.deepEqual(prepared.args, { query: 'WebGPU' });
});
test('skips MCP tools with unsupported names or non-object schemas', () => {
const tools = normalizeMcpTools([
{ name: 'bad-name', inputSchema: { type: 'object', properties: {} } },
{ name: 'primitive', inputSchema: { type: 'string' } },
{ name: 'valid_tool', inputSchema: { type: 'object', properties: {} } },
]);
assert.deepEqual(tools.map(tool => tool.name), ['valid_tool']);
});
test('compacts large MCP text results before returning them to the model', () => {
const result = compactMcpResult({ content: [{ type: 'text', text: 'x'.repeat(18000) }] });
assert.equal(result.truncated, true);
assert.equal(result.content[0].text.length, 4000);
assert.ok(JSON.stringify(result).length < 4200);
});