From f02cafe2c6e3b1b97131af76b853ae668939a0e7 Mon Sep 17 00:00:00 2001 From: mdxw73 <57395659+mdxw73@users.noreply.github.com> Date: Mon, 1 Dec 2025 12:02:23 +0000 Subject: [PATCH 1/4] Update _provider.py --- python/packages/mem0/agent_framework_mem0/_provider.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/python/packages/mem0/agent_framework_mem0/_provider.py b/python/packages/mem0/agent_framework_mem0/_provider.py index 3c962d58c2..6d726f3a0f 100644 --- a/python/packages/mem0/agent_framework_mem0/_provider.py +++ b/python/packages/mem0/agent_framework_mem0/_provider.py @@ -146,6 +146,10 @@ async def invoking(self, messages: ChatMessage | MutableSequence[ChatMessage], * messages_list = [messages] if isinstance(messages, ChatMessage) else list(messages) input_text = "\n".join(msg.text for msg in messages_list if msg and msg.text and msg.text.strip()) + # Validate input text is not empty before searching (possible for function approval responses) + if not input_text.strip(): + return Context(messages=None) + search_response: MemorySearchResponse_v1_1 | MemorySearchResponse_v2 = await self.mem0_client.search( # type: ignore[misc] query=input_text, user_id=self.user_id, From fcd269db4e09cbe42db7b5fdbe0845c6240aedf2 Mon Sep 17 00:00:00 2001 From: mdxw73 <57395659+mdxw73@users.noreply.github.com> Date: Tue, 2 Dec 2025 11:00:18 +0000 Subject: [PATCH 2/4] Update test_mem0_context_provider.py --- .../mem0/tests/test_mem0_context_provider.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/python/packages/mem0/tests/test_mem0_context_provider.py b/python/packages/mem0/tests/test_mem0_context_provider.py index 324a655bf3..d9b124fefa 100644 --- a/python/packages/mem0/tests/test_mem0_context_provider.py +++ b/python/packages/mem0/tests/test_mem0_context_provider.py @@ -406,6 +406,27 @@ async def test_model_invoking_no_memories_returns_none_instructions(self, mock_m assert isinstance(context, Context) assert not context.messages + async def test_model_invoking_function_approval_response_returns_none_instructions(self, mock_mem0_client: AsyncMock) -> None: + """Test invoking with function approval response content messages returns context with None instructions.""" + from agent_framework import FunctionApprovalResponseContent, FunctionCallContent + + provider = Mem0Provider(user_id="user123", mem0_client=mock_mem0_client) + function_call = FunctionCallContent(call_id="1", name="test_func", arguments='{"arg1": "value1"}') + message = ChatMessage(role=Role.USER, contents=[ + FunctionApprovalResponseContent( + id="approval_1", + function_call=function_call, + approved=True, + ) + ]) + + mock_mem0_client.search.return_value = [] + + context = await provider.invoking(message) + + assert isinstance(context, Context) + assert not context.messages + async def test_model_invoking_filters_empty_message_text(self, mock_mem0_client: AsyncMock) -> None: """Test that empty message text is filtered out from query.""" provider = Mem0Provider(user_id="user123", mem0_client=mock_mem0_client) From 27df49510208425d2ff6fad925d5f832593cf6f9 Mon Sep 17 00:00:00 2001 From: mdxw73 <57395659+mdxw73@users.noreply.github.com> Date: Tue, 2 Dec 2025 20:28:32 +0000 Subject: [PATCH 3/4] Update test_mem0_context_provider.py Ruff linting fixes --- .../mem0/tests/test_mem0_context_provider.py | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/python/packages/mem0/tests/test_mem0_context_provider.py b/python/packages/mem0/tests/test_mem0_context_provider.py index d9b124fefa..089d9c6592 100644 --- a/python/packages/mem0/tests/test_mem0_context_provider.py +++ b/python/packages/mem0/tests/test_mem0_context_provider.py @@ -406,19 +406,31 @@ async def test_model_invoking_no_memories_returns_none_instructions(self, mock_m assert isinstance(context, Context) assert not context.messages - async def test_model_invoking_function_approval_response_returns_none_instructions(self, mock_mem0_client: AsyncMock) -> None: + async def test_model_invoking_function_approval_response_returns_none_instructions( + self, mock_mem0_client: AsyncMock + ) -> None: """Test invoking with function approval response content messages returns context with None instructions.""" from agent_framework import FunctionApprovalResponseContent, FunctionCallContent provider = Mem0Provider(user_id="user123", mem0_client=mock_mem0_client) function_call = FunctionCallContent(call_id="1", name="test_func", arguments='{"arg1": "value1"}') - message = ChatMessage(role=Role.USER, contents=[ - FunctionApprovalResponseContent( - id="approval_1", - function_call=function_call, - approved=True, - ) - ]) + message = ChatMessage( + role=Role.USER, + contents=[ + FunctionApprovalResponseContent( + id="approval_1", + function_call=function_call, + approved=True, + ) + ], + ) + + mock_mem0_client.search.return_value = [] + + context = await provider.invoking(message) + + assert isinstance(context, Context) + assert not context.messages mock_mem0_client.search.return_value = [] From ca051285a808c0bfc8eda9cd645a99f9067758ed Mon Sep 17 00:00:00 2001 From: mdxw73 <57395659+mdxw73@users.noreply.github.com> Date: Tue, 2 Dec 2025 20:32:56 +0000 Subject: [PATCH 4/4] Update test_mem0_context_provider.py --- python/packages/mem0/tests/test_mem0_context_provider.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/python/packages/mem0/tests/test_mem0_context_provider.py b/python/packages/mem0/tests/test_mem0_context_provider.py index 089d9c6592..4c1be141dc 100644 --- a/python/packages/mem0/tests/test_mem0_context_provider.py +++ b/python/packages/mem0/tests/test_mem0_context_provider.py @@ -432,13 +432,6 @@ async def test_model_invoking_function_approval_response_returns_none_instructio assert isinstance(context, Context) assert not context.messages - mock_mem0_client.search.return_value = [] - - context = await provider.invoking(message) - - assert isinstance(context, Context) - assert not context.messages - async def test_model_invoking_filters_empty_message_text(self, mock_mem0_client: AsyncMock) -> None: """Test that empty message text is filtered out from query.""" provider = Mem0Provider(user_id="user123", mem0_client=mock_mem0_client)