From a86c87236d147f1551100fb29c80e64c8228f734 Mon Sep 17 00:00:00 2001 From: Chirag Arora <76108151+ChiragArora31@users.noreply.github.com> Date: Wed, 10 Jun 2026 12:15:31 +0530 Subject: [PATCH] fix(server): forward explain in REST search (#5423) --- server/main.py | 2 ++ tests/test_server_params.py | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/server/main.py b/server/main.py index dcd367dce..f5cc553f5 100644 --- a/server/main.py +++ b/server/main.py @@ -448,6 +448,8 @@ def search_memories(search_req: SearchRequest, _auth=Depends(verify_auth)): params["top_k"] = search_req.top_k if search_req.threshold is not None: params["threshold"] = search_req.threshold + if search_req.explain is not None: + params["explain"] = search_req.explain return get_memory_instance().search(query=search_req.query, filters=filters, **params) except Exception: raise upstream_error() diff --git a/tests/test_server_params.py b/tests/test_server_params.py index 6233262fe..977738d47 100644 --- a/tests/test_server_params.py +++ b/tests/test_server_params.py @@ -108,6 +108,32 @@ class TestSearchThreshold: assert "threshold" not in kwargs +# =========================================================================== +# SearchRequest: explain parameter +# =========================================================================== + +class TestSearchExplain: + """Verify that the explain parameter is accepted and forwarded.""" + + def test_explain_true_forwarded(self, client, mock_memory): + resp = client.post("/search", json={"query": "food", "user_id": "u1", "explain": True}) + assert resp.status_code == 200 + _, kwargs = mock_memory.search.call_args + assert kwargs["explain"] is True + + def test_explain_false_forwarded(self, client, mock_memory): + resp = client.post("/search", json={"query": "food", "user_id": "u1", "explain": False}) + assert resp.status_code == 200 + _, kwargs = mock_memory.search.call_args + assert kwargs["explain"] is False + + def test_explain_omitted_uses_memory_default(self, client, mock_memory): + resp = client.post("/search", json={"query": "food", "user_id": "u1"}) + assert resp.status_code == 200 + _, kwargs = mock_memory.search.call_args + assert "explain" not in kwargs + + # =========================================================================== # SearchRequest: top_k + threshold together # ===========================================================================