diff --git a/src/server/parallel.ts b/src/server/parallel.ts index cf6f6131..177b2b0c 100644 --- a/src/server/parallel.ts +++ b/src/server/parallel.ts @@ -9,9 +9,16 @@ export interface WebConfig { parallelApiKey?: string; } export function webSearchProvider(value?: string): WebSearchProvider { - if (!value) return 'parallel'; - if (value === 'parallel' || value === 'browser' || value === 'disabled') - return value; + // Tolerate surrounding whitespace from .env files, matching the other + // environment parsers; a blank value falls back to the default. + const normalized = value?.trim(); + if (!normalized) return 'parallel'; + if ( + normalized === 'parallel' || + normalized === 'browser' || + normalized === 'disabled' + ) + return normalized; throw new Error( 'WEB_SEARCH_PROVIDER must be parallel, browser, or disabled.', ); diff --git a/tests/parallel.test.ts b/tests/parallel.test.ts index 82e79e9e..44c682b1 100644 --- a/tests/parallel.test.ts +++ b/tests/parallel.test.ts @@ -40,6 +40,11 @@ describe('Parallel research', () => { expect(webSearchProvider('disabled')).toBe('disabled'); expect(() => webSearchProvider('other')).toThrow('WEB_SEARCH_PROVIDER'); }); + it('tolerates surrounding whitespace from .env values', () => { + expect(webSearchProvider(' browser ')).toBe('browser'); + expect(webSearchProvider('disabled\n')).toBe('disabled'); + expect(webSearchProvider(' ')).toBe('parallel'); + }); it('searches, extracts and grounds a topic-only brief without a browser', async () => { mcp.callTool .mockResolvedValueOnce(result(page(), page('https://example.org')))