From f4245fdad2bcf06f3a2400e44e37ca3d539403a2 Mon Sep 17 00:00:00 2001 From: harshitgavita-07 Date: Fri, 2 Oct 2026 23:54:49 +0530 Subject: [PATCH 1/2] fix(agent-framework): give each add_memory call its own document Clarified memory handling by removing custom_id in memory addition. --- .../src/supermemory_agent_framework/tools.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/agent-framework-python/src/supermemory_agent_framework/tools.py b/packages/agent-framework-python/src/supermemory_agent_framework/tools.py index 2b70bdd7..c97b0541 100644 --- a/packages/agent-framework-python/src/supermemory_agent_framework/tools.py +++ b/packages/agent-framework-python/src/supermemory_agent_framework/tools.py @@ -130,10 +130,12 @@ class SupermemoryTools: ) -> str: """Add (remember) memories/details/information about the user or other facts or entities. Run when explicitly asked or when the user mentions any information generalizable beyond the context of the current conversation.""" try: + # No custom_id: each remembered fact is its own document. A shared id would + # make every call update one document, replacing the previous memory and + # colliding with the conversation transcript saved under connection.custom_id. response = await self._client.add( content=memory, container_tag=self._connection.container_tag, - custom_id=self._connection.custom_id, ) result: MemoryAddResult = { "success": True, From 00c02db17686f6b5eb53c692cdbaa5c25cdd212d Mon Sep 17 00:00:00 2001 From: harshitgavita-07 Date: Fri, 2 Oct 2026 23:55:19 +0530 Subject: [PATCH 2/2] test(agent-framework): add_memory must not reuse the conversation document id Add tests to ensure unique document IDs for memory entries. --- .../tests/test_tools.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/packages/agent-framework-python/tests/test_tools.py b/packages/agent-framework-python/tests/test_tools.py index 00da0f7d..17fdb080 100644 --- a/packages/agent-framework-python/tests/test_tools.py +++ b/packages/agent-framework-python/tests/test_tools.py @@ -47,3 +47,31 @@ class TestSupermemoryTools: conn = _make_conn(conversation_id="conv-123") tools = SupermemoryTools(conn) assert tools._connection.custom_id == "conversation_conv-123" + + +class _RecordingClient: + def __init__(self) -> None: + self.add_calls: list[dict] = [] + + async def add(self, **kwargs): + self.add_calls.append(kwargs) + return {"id": f"doc-{len(self.add_calls)}", "status": "queued"} + + +class TestAddMemoryDocumentIdentity: + @pytest.mark.asyncio + async def test_add_memory_does_not_reuse_conversation_document_id(self) -> None: + conn = _make_conn(conversation_id="conv-123") + tools = SupermemoryTools(conn) + client = _RecordingClient() + tools._client = client + + await tools.add_memory("The user likes green tea.") + await tools.add_memory("The user lives in Lisbon.") + + assert len(client.add_calls) == 2 + # A shared custom_id makes Supermemory treat every call as an update of one + # document, so the second memory replaces the first and both collide with the + # conversation transcript saved under the same id. + assert all(call.get("custom_id") != conn.custom_id for call in client.add_calls) + assert all(call["container_tag"] == "msft_agent_chat" for call in client.add_calls)