From 4da384e68fc78e8acb40b4aea442916eb63b50f2 Mon Sep 17 00:00:00 2001 From: ARIA Date: Tue, 12 May 2026 18:59:29 +0200 Subject: [PATCH] fix: include memory IDs in search and list_all output for deletion support The LLM could not delete memories because IDs were stripped from tool responses. Now all three output paths include memory IDs: - mem0_list_all: [id] prefix before each memory text - mem0_search: id field in each result item - prefetch context: [id] prefix in injected --- __init__.py | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/__init__.py b/__init__.py index fc12fdf..af2ee39 100644 --- a/__init__.py +++ b/__init__.py @@ -284,12 +284,16 @@ class Mem0LocalMemoryProvider(MemoryProvider): ) def _format_search_results(self, results: List[Dict]) -> str: - """Format search results into a bullet list string.""" - lines = [ - r.get("text") or r.get("memory", "") - for r in results - if r.get("text") or r.get("memory") - ] + """Format search results into a bullet list string with IDs.""" + lines = [] + for r in results: + text = r.get("text") or r.get("memory", "") + if text: + mem_id = r.get("id", "") + if mem_id: + lines.append(f"[{mem_id}] {text}") + else: + lines.append(text) return "\n".join(f"- {line}" for line in lines) if lines else "" def initialize(self, session_id: str, **kwargs) -> None: @@ -471,7 +475,15 @@ class Mem0LocalMemoryProvider(MemoryProvider): self._record_success() if not memories: return json.dumps({"result": "No memories stored yet."}) - lines = [m.get("text", "") for m in memories if m.get("text")] + lines = [] + for m in memories: + text = m.get("text", "") + if text: + mem_id = m.get("id", "") + if mem_id: + lines.append(f"[{mem_id}] {text}") + else: + lines.append(text) return json.dumps({"result": "\n".join(lines), "count": len(lines)}) except Exception as e: self._record_failure() @@ -493,9 +505,12 @@ class Mem0LocalMemoryProvider(MemoryProvider): if not results: return json.dumps({"result": "No relevant memories found."}) items = [ - {"memory": r.get("text", ""), "score": r.get("score", 0)} + {"id": r.get("id", ""), "memory": r.get("text", ""), "score": r.get("score", 0)} for r in results + if r.get("text") ] + if not items: + return json.dumps({"result": "No relevant memories found."}) return json.dumps({"results": items, "count": len(items)}) except Exception as e: self._record_failure()