diff --git a/.gitignore b/.gitignore index 55f905293cf..dc290f269a4 100644 --- a/.gitignore +++ b/.gitignore @@ -83,3 +83,4 @@ USER.md .agent/*.json !.agent/workflows/ local/ +package-lock.json diff --git a/src/agents/tools/web-search.ts b/src/agents/tools/web-search.ts index 0500bea0714..4f63ed350d2 100644 --- a/src/agents/tools/web-search.ts +++ b/src/agents/tools/web-search.ts @@ -569,7 +569,7 @@ async function runWebSearch(params: { params.provider === "brave" ? `${params.provider}:${params.query}:${params.count}:${params.country || "default"}:${params.search_lang || "default"}:${params.ui_lang || "default"}:${params.freshness || "default"}` : params.provider === "perplexity" - ? `${params.provider}:${params.query}:${params.perplexityBaseUrl ?? DEFAULT_PERPLEXITY_BASE_URL}:${params.perplexityModel ?? DEFAULT_PERPLEXITY_MODEL}` + ? `${params.provider}:${params.query}:${params.perplexityBaseUrl ?? DEFAULT_PERPLEXITY_BASE_URL}:${params.perplexityModel ?? DEFAULT_PERPLEXITY_MODEL}:${params.freshness || "default"}` : `${params.provider}:${params.query}:${params.grokModel ?? DEFAULT_GROK_MODEL}:${String(params.grokInlineCitations ?? false)}`, ); const cached = readCache(SEARCH_CACHE, cacheKey); diff --git a/src/agents/tools/web-tools.enabled-defaults.e2e.test.ts b/src/agents/tools/web-tools.enabled-defaults.e2e.test.ts index 4c62bcdb527..c95e328b75e 100644 --- a/src/agents/tools/web-tools.enabled-defaults.e2e.test.ts +++ b/src/agents/tools/web-tools.enabled-defaults.e2e.test.ts @@ -159,7 +159,7 @@ describe("web_search perplexity baseUrl defaults", () => { expect(body.model).toBe("sonar-pro"); }); - it("rejects freshness for Perplexity provider", async () => { + it("passes freshness to Perplexity provider as search_recency_filter", async () => { vi.stubEnv("PERPLEXITY_API_KEY", "pplx-test"); const mockFetch = vi.fn(() => Promise.resolve({ @@ -174,10 +174,11 @@ describe("web_search perplexity baseUrl defaults", () => { config: { tools: { web: { search: { provider: "perplexity" } } } }, sandboxed: true, }); - const result = await tool?.execute?.(1, { query: "test", freshness: "pw" }); + await tool?.execute?.(1, { query: "perplexity-freshness-test", freshness: "pw" }); - expect(mockFetch).not.toHaveBeenCalled(); - expect(result?.details).toMatchObject({ error: "unsupported_freshness" }); + expect(mockFetch).toHaveBeenCalledOnce(); + const body = JSON.parse(mockFetch.mock.calls[0][1].body as string); + expect(body.search_recency_filter).toBe("week"); }); it("defaults to OpenRouter when OPENROUTER_API_KEY is set", async () => {