From f5c64a4d6d556bfea5b6e7c1a2afb08349361c1f Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Wed, 1 Jul 2026 10:42:53 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=90=20test:=20Guard=20Web=20Search=20D?= =?UTF-8?q?escription=20Length=20(#14044)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * test: Guard web search description length * test: Check registered web search description * style: Format web search description assertion --- packages/api/src/tools/definitions.spec.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/api/src/tools/definitions.spec.ts b/packages/api/src/tools/definitions.spec.ts index 316bfcf44d..0291ea789c 100644 --- a/packages/api/src/tools/definitions.spec.ts +++ b/packages/api/src/tools/definitions.spec.ts @@ -1,4 +1,4 @@ -import { Providers } from '@librechat/agents'; +import { Providers, WebSearchToolDefinition } from '@librechat/agents'; import type { LoadToolDefinitionsParams, LoadToolDefinitionsDeps, @@ -8,6 +8,8 @@ import { toolkitExpansion, toolkitParent } from './toolkits/mapping'; import { getToolDefinition } from './registry/definitions'; import { loadToolDefinitions } from './definitions'; +const MAX_PROVIDER_TOOL_DESCRIPTION_LENGTH = 1024; + describe('definitions.ts', () => { const mockGetOrFetchMCPServerTools = jest.fn().mockResolvedValue(null); const mockIsBuiltInTool = jest.fn().mockReturnValue(false); @@ -16,6 +18,18 @@ describe('definitions.ts', () => { jest.clearAllMocks(); }); + it('keeps the registered web_search description within common API limits', () => { + const definition = getToolDefinition(WebSearchToolDefinition.name); + + if (definition == null) { + throw new Error('Expected web_search tool definition to be registered'); + } + + expect(definition.description).toBe(WebSearchToolDefinition.description); + expect(definition.description).toMatch(/search/i); + expect(definition.description.length).toBeLessThanOrEqual(MAX_PROVIDER_TOOL_DESCRIPTION_LENGTH); + }); + describe('loadToolDefinitions', () => { it('should return empty result for empty tools array', async () => { const params: LoadToolDefinitionsParams = {