Compare commits

...

2 Commits

Author SHA1 Message Date
Pakobbix b69efe9482 Merge pull request 'fix: include memory IDs in output for deletion support' (#5) from fix/include-memory-ids-in-output into main
Reviewed-on: #5
2026-05-12 17:00:30 +00:00
ARIA 4da384e68f 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 <mem0_context>
2026-05-12 18:59:29 +02:00
+23 -8
View File
@@ -284,12 +284,16 @@ class Mem0LocalMemoryProvider(MemoryProvider):
) )
def _format_search_results(self, results: List[Dict]) -> str: def _format_search_results(self, results: List[Dict]) -> str:
"""Format search results into a bullet list string.""" """Format search results into a bullet list string with IDs."""
lines = [ lines = []
r.get("text") or r.get("memory", "") for r in results:
for r in results text = r.get("text") or r.get("memory", "")
if 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 "" return "\n".join(f"- {line}" for line in lines) if lines else ""
def initialize(self, session_id: str, **kwargs) -> None: def initialize(self, session_id: str, **kwargs) -> None:
@@ -471,7 +475,15 @@ class Mem0LocalMemoryProvider(MemoryProvider):
self._record_success() self._record_success()
if not memories: if not memories:
return json.dumps({"result": "No memories stored yet."}) 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)}) return json.dumps({"result": "\n".join(lines), "count": len(lines)})
except Exception as e: except Exception as e:
self._record_failure() self._record_failure()
@@ -493,9 +505,12 @@ class Mem0LocalMemoryProvider(MemoryProvider):
if not results: if not results:
return json.dumps({"result": "No relevant memories found."}) return json.dumps({"result": "No relevant memories found."})
items = [ 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 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)}) return json.dumps({"results": items, "count": len(items)})
except Exception as e: except Exception as e:
self._record_failure() self._record_failure()