diff --git a/mem0/client/main.py b/mem0/client/main.py index ca06e552..981d1ba5 100644 --- a/mem0/client/main.py +++ b/mem0/client/main.py @@ -89,7 +89,7 @@ class MemoryClient: timeout=300, ) self.user_email = self._validate_api_key() - capture_client_event("client.init", self) + capture_client_event("client.init", self, {"sync_type": "sync"}) def _validate_api_key(self): """Validate the API key by making a test request.""" @@ -143,7 +143,7 @@ class MemoryClient: response.raise_for_status() if "metadata" in kwargs: del kwargs["metadata"] - capture_client_event("client.add", self, {"keys": list(kwargs.keys())}) + capture_client_event("client.add", self, {"keys": list(kwargs.keys()), "sync_type": "sync"}) return response.json() @api_error_handler @@ -162,7 +162,7 @@ class MemoryClient: params = self._prepare_params() response = self.client.get(f"/v1/memories/{memory_id}/", params=params) response.raise_for_status() - capture_client_event("client.get", self, {"memory_id": memory_id}) + capture_client_event("client.get", self, {"memory_id": memory_id, "sync_type": "sync"}) return response.json() @api_error_handler @@ -194,7 +194,7 @@ class MemoryClient: capture_client_event( "client.get_all", self, - {"api_version": version, "keys": list(kwargs.keys())}, + {"api_version": version, "keys": list(kwargs.keys()), "sync_type": "sync"}, ) return response.json() @@ -220,7 +220,7 @@ class MemoryClient: response.raise_for_status() if "metadata" in kwargs: del kwargs["metadata"] - capture_client_event("client.search", self, {"api_version": version, "keys": list(kwargs.keys())}) + capture_client_event("client.search", self, {"api_version": version, "keys": list(kwargs.keys()), "sync_type": "sync"}) return response.json() @api_error_handler @@ -233,7 +233,7 @@ class MemoryClient: Returns: Dict[str, Any]: The response from the server. """ - capture_client_event("client.update", self, {"memory_id": memory_id}) + capture_client_event("client.update", self, {"memory_id": memory_id, "sync_type": "sync"}) params = self._prepare_params() response = self.client.put(f"/v1/memories/{memory_id}/", json={"text": data}, params=params) response.raise_for_status() @@ -255,7 +255,7 @@ class MemoryClient: params = self._prepare_params() response = self.client.delete(f"/v1/memories/{memory_id}/", params=params) response.raise_for_status() - capture_client_event("client.delete", self, {"memory_id": memory_id}) + capture_client_event("client.delete", self, {"memory_id": memory_id, "sync_type": "sync"}) return response.json() @api_error_handler @@ -274,7 +274,7 @@ class MemoryClient: params = self._prepare_params(kwargs) response = self.client.delete("/v1/memories/", params=params) response.raise_for_status() - capture_client_event("client.delete_all", self, {"keys": list(kwargs.keys())}) + capture_client_event("client.delete_all", self, {"keys": list(kwargs.keys()), "sync_type": "sync"}) return response.json() @api_error_handler @@ -293,7 +293,7 @@ class MemoryClient: params = self._prepare_params() response = self.client.get(f"/v1/memories/{memory_id}/history/", params=params) response.raise_for_status() - capture_client_event("client.history", self, {"memory_id": memory_id}) + capture_client_event("client.history", self, {"memory_id": memory_id, "sync_type": "sync"}) return response.json() @api_error_handler @@ -302,7 +302,7 @@ class MemoryClient: params = self._prepare_params() response = self.client.get("/v1/entities/", params=params) response.raise_for_status() - capture_client_event("client.users", self) + capture_client_event("client.users", self, {"sync_type": "sync"}) return response.json() @api_error_handler @@ -354,7 +354,7 @@ class MemoryClient: response.raise_for_status() capture_client_event( - "client.delete_users", self, {"user_id": user_id, "agent_id": agent_id, "app_id": app_id, "run_id": run_id} + "client.delete_users", self, {"user_id": user_id, "agent_id": agent_id, "app_id": app_id, "run_id": run_id, "sync_type": "sync"} ) return { "message": "Entity deleted successfully." @@ -378,7 +378,7 @@ class MemoryClient: # This will also delete the memories self.delete_users() - capture_client_event("client.reset", self) + capture_client_event("client.reset", self, {"sync_type": "sync"}) return {"message": "Client reset successful. All users and memories deleted."} @api_error_handler @@ -399,7 +399,7 @@ class MemoryClient: response = self.client.put("/v1/batch/", json={"memories": memories}) response.raise_for_status() - capture_client_event("client.batch_update", self) + capture_client_event("client.batch_update", self, {"sync_type": "sync"}) return response.json() @api_error_handler @@ -419,7 +419,7 @@ class MemoryClient: response = self.client.request("DELETE", "/v1/batch/", json={"memories": memories}) response.raise_for_status() - capture_client_event("client.batch_delete", self) + capture_client_event("client.batch_delete", self, {"sync_type": "sync"}) return response.json() @api_error_handler @@ -435,7 +435,7 @@ class MemoryClient: """ response = self.client.post("/v1/exports/", json={"schema": schema, **self._prepare_params(kwargs)}) response.raise_for_status() - capture_client_event("client.create_memory_export", self, {"schema": schema, "keys": list(kwargs.keys())}) + capture_client_event("client.create_memory_export", self, {"schema": schema, "keys": list(kwargs.keys()), "sync_type": "sync"}) return response.json() @api_error_handler @@ -450,7 +450,7 @@ class MemoryClient: """ response = self.client.post("/v1/exports/get/", json=self._prepare_params(kwargs)) response.raise_for_status() - capture_client_event("client.get_memory_export", self, {"keys": list(kwargs.keys())}) + capture_client_event("client.get_memory_export", self, {"keys": list(kwargs.keys()), "sync_type": "sync"}) return response.json() @api_error_handler @@ -476,7 +476,7 @@ class MemoryClient: params=params, ) response.raise_for_status() - capture_client_event("client.get_project_details", self, {"fields": fields}) + capture_client_event("client.get_project_details", self, {"fields": fields, "sync_type": "sync"}) return response.json() @api_error_handler @@ -515,7 +515,7 @@ class MemoryClient: capture_client_event( "client.update_project", self, - {"custom_instructions": custom_instructions, "custom_categories": custom_categories}, + {"custom_instructions": custom_instructions, "custom_categories": custom_categories, "sync_type": "sync"}, ) return response.json() @@ -544,7 +544,7 @@ class MemoryClient: response = self.client.get(f"api/v1/webhooks/projects/{project_id}/") response.raise_for_status() - capture_client_event("client.get_webhook", self) + capture_client_event("client.get_webhook", self, {"sync_type": "sync"}) return response.json() @api_error_handler @@ -567,7 +567,7 @@ class MemoryClient: payload = {"url": url, "name": name, "event_types": event_types} response = self.client.post(f"api/v1/webhooks/projects/{project_id}/", json=payload) response.raise_for_status() - capture_client_event("client.create_webhook", self) + capture_client_event("client.create_webhook", self, {"sync_type": "sync"}) return response.json() @api_error_handler @@ -596,7 +596,7 @@ class MemoryClient: payload = {k: v for k, v in {"name": name, "url": url, "event_types": event_types}.items() if v is not None} response = self.client.put(f"api/v1/webhooks/{webhook_id}/", json=payload) response.raise_for_status() - capture_client_event("client.update_webhook", self, {"webhook_id": webhook_id}) + capture_client_event("client.update_webhook", self, {"webhook_id": webhook_id, "sync_type": "sync"}) return response.json() @api_error_handler @@ -615,7 +615,7 @@ class MemoryClient: response = self.client.delete(f"api/v1/webhooks/{webhook_id}/") response.raise_for_status() - capture_client_event("client.delete_webhook", self, {"webhook_id": webhook_id}) + capture_client_event("client.delete_webhook", self, {"webhook_id": webhook_id, "sync_type": "sync"}) return response.json() @api_error_handler @@ -632,7 +632,7 @@ class MemoryClient: response = self.client.post("/v1/feedback/", json=data) response.raise_for_status() - capture_client_event("client.feedback", self, data) + capture_client_event("client.feedback", self, data, {"sync_type": "sync"}) return response.json() def _prepare_payload( @@ -721,7 +721,7 @@ class AsyncMemoryClient: response.raise_for_status() if "metadata" in kwargs: del kwargs["metadata"] - capture_client_event("async_client.add", self.sync_client, {"keys": list(kwargs.keys())}) + capture_client_event("client.add", self.sync_client, {"keys": list(kwargs.keys()), "sync_type": "async"}) return response.json() @api_error_handler @@ -729,7 +729,7 @@ class AsyncMemoryClient: params = self.sync_client._prepare_params() response = await self.async_client.get(f"/v1/memories/{memory_id}/", params=params) response.raise_for_status() - capture_client_event("async_client.get", self.sync_client, {"memory_id": memory_id}) + capture_client_event("client.get", self.sync_client, {"memory_id": memory_id, "sync_type": "async"}) return response.json() @api_error_handler @@ -743,7 +743,7 @@ class AsyncMemoryClient: if "metadata" in kwargs: del kwargs["metadata"] capture_client_event( - "async_client.get_all", self.sync_client, {"api_version": version, "keys": list(kwargs.keys())} + "client.get_all", self.sync_client, {"api_version": version, "keys": list(kwargs.keys()), "sync_type": "async"} ) return response.json() @@ -756,7 +756,7 @@ class AsyncMemoryClient: if "metadata" in kwargs: del kwargs["metadata"] capture_client_event( - "async_client.search", self.sync_client, {"api_version": version, "keys": list(kwargs.keys())} + "client.search", self.sync_client, {"api_version": version, "keys": list(kwargs.keys()), "sync_type": "async"} ) return response.json() @@ -765,7 +765,7 @@ class AsyncMemoryClient: params = self.sync_client._prepare_params() response = await self.async_client.put(f"/v1/memories/{memory_id}/", json={"text": data}, params=params) response.raise_for_status() - capture_client_event("async_client.update", self.sync_client, {"memory_id": memory_id}) + capture_client_event("client.update", self.sync_client, {"memory_id": memory_id, "sync_type": "async"}) return response.json() @api_error_handler @@ -773,7 +773,7 @@ class AsyncMemoryClient: params = self.sync_client._prepare_params() response = await self.async_client.delete(f"/v1/memories/{memory_id}/", params=params) response.raise_for_status() - capture_client_event("async_client.delete", self.sync_client, {"memory_id": memory_id}) + capture_client_event("client.delete", self.sync_client, {"memory_id": memory_id, "sync_type": "async"}) return response.json() @api_error_handler @@ -781,7 +781,7 @@ class AsyncMemoryClient: params = self.sync_client._prepare_params(kwargs) response = await self.async_client.delete("/v1/memories/", params=params) response.raise_for_status() - capture_client_event("async_client.delete_all", self.sync_client, {"keys": list(kwargs.keys())}) + capture_client_event("client.delete_all", self.sync_client, {"keys": list(kwargs.keys()), "sync_type": "async"}) return response.json() @api_error_handler @@ -789,7 +789,7 @@ class AsyncMemoryClient: params = self.sync_client._prepare_params() response = await self.async_client.get(f"/v1/memories/{memory_id}/history/", params=params) response.raise_for_status() - capture_client_event("async_client.history", self.sync_client, {"memory_id": memory_id}) + capture_client_event("client.history", self.sync_client, {"memory_id": memory_id, "sync_type": "async"}) return response.json() @api_error_handler @@ -797,7 +797,7 @@ class AsyncMemoryClient: params = self.sync_client._prepare_params() response = await self.async_client.get("/v1/entities/", params=params) response.raise_for_status() - capture_client_event("async_client.users", self.sync_client) + capture_client_event("client.users", self.sync_client, {"sync_type": "async"}) return response.json() @api_error_handler @@ -848,7 +848,7 @@ class AsyncMemoryClient: response = await self.async_client.delete(f"/v1/entities/{entity['type']}/{entity['id']}/", params=params) response.raise_for_status() - capture_client_event("async_client.delete_users", self.sync_client) + capture_client_event("client.delete_users", self.sync_client, {"sync_type": "async"}) return { "message": "Entity deleted successfully." if (user_id or agent_id or app_id or run_id) @@ -858,7 +858,7 @@ class AsyncMemoryClient: @api_error_handler async def reset(self) -> Dict[str, str]: await self.delete_users() - capture_client_event("async_client.reset", self.sync_client) + capture_client_event("client.reset", self.sync_client, {"sync_type": "async"}) return {"message": "Client reset successful. All users and memories deleted."} @api_error_handler @@ -879,7 +879,7 @@ class AsyncMemoryClient: response = await self.async_client.put("/v1/batch/", json={"memories": memories}) response.raise_for_status() - capture_client_event("async_client.batch_update", self.sync_client) + capture_client_event("client.batch_update", self.sync_client, {"sync_type": "async"}) return response.json() @api_error_handler @@ -899,7 +899,7 @@ class AsyncMemoryClient: response = await self.async_client.request("DELETE", "/v1/batch/", json={"memories": memories}) response.raise_for_status() - capture_client_event("async_client.batch_delete", self.sync_client) + capture_client_event("client.batch_delete", self.sync_client, {"sync_type": "async"}) return response.json() @api_error_handler @@ -916,7 +916,7 @@ class AsyncMemoryClient: response = await self.async_client.post("/v1/exports/", json={"schema": schema, **self._prepare_params(kwargs)}) response.raise_for_status() capture_client_event( - "async_client.create_memory_export", self.sync_client, {"schema": schema, "keys": list(kwargs.keys())} + "client.create_memory_export", self.sync_client, {"schema": schema, "keys": list(kwargs.keys()), "sync_type": "async"} ) return response.json() @@ -932,7 +932,7 @@ class AsyncMemoryClient: """ response = await self.async_client.post("/v1/exports/get/", json=self._prepare_params(kwargs)) response.raise_for_status() - capture_client_event("async_client.get_memory_export", self.sync_client, {"keys": list(kwargs.keys())}) + capture_client_event("client.get_memory_export", self.sync_client, {"keys": list(kwargs.keys()), "sync_type": "async"}) return response.json() @api_error_handler @@ -946,7 +946,7 @@ class AsyncMemoryClient: params=params, ) response.raise_for_status() - capture_client_event("async_client.get_project", self.sync_client, {"fields": fields}) + capture_client_event("client.get_project", self.sync_client, {"fields": fields, "sync_type": "async"}) return response.json() @api_error_handler @@ -970,9 +970,9 @@ class AsyncMemoryClient: ) response.raise_for_status() capture_client_event( - "async_client.update_project", + "client.update_project", self.sync_client, - {"custom_instructions": custom_instructions, "custom_categories": custom_categories}, + {"custom_instructions": custom_instructions, "custom_categories": custom_categories, "sync_type": "async"}, ) return response.json() @@ -985,7 +985,7 @@ class AsyncMemoryClient: f"api/v1/webhooks/projects/{project_id}/", ) response.raise_for_status() - capture_client_event("async_client.get_webhook", self.sync_client) + capture_client_event("client.get_webhook", self.sync_client, {"sync_type": "async"}) return response.json() @api_error_handler @@ -993,7 +993,7 @@ class AsyncMemoryClient: payload = {"url": url, "name": name, "event_types": event_types} response = await self.async_client.post(f"api/v1/webhooks/projects/{project_id}/", json=payload) response.raise_for_status() - capture_client_event("async_client.create_webhook", self.sync_client) + capture_client_event("client.create_webhook", self.sync_client, {"sync_type": "async"}) return response.json() @api_error_handler @@ -1007,14 +1007,14 @@ class AsyncMemoryClient: payload = {k: v for k, v in {"name": name, "url": url, "event_types": event_types}.items() if v is not None} response = await self.async_client.put(f"api/v1/webhooks/{webhook_id}/", json=payload) response.raise_for_status() - capture_client_event("async_client.update_webhook", self.sync_client, {"webhook_id": webhook_id}) + capture_client_event("client.update_webhook", self.sync_client, {"webhook_id": webhook_id, "sync_type": "async"}) return response.json() @api_error_handler async def delete_webhook(self, webhook_id: int) -> Dict[str, str]: response = await self.async_client.delete(f"api/v1/webhooks/{webhook_id}/") response.raise_for_status() - capture_client_event("async_client.delete_webhook", self.sync_client, {"webhook_id": webhook_id}) + capture_client_event("client.delete_webhook", self.sync_client, {"webhook_id": webhook_id, "sync_type": "async"}) return response.json() @api_error_handler @@ -1031,5 +1031,5 @@ class AsyncMemoryClient: response = await self.async_client.post("/v1/feedback/", json=data) response.raise_for_status() - capture_client_event("async_client.feedback", self.sync_client, data) + capture_client_event("client.feedback", self.sync_client, data, {"sync_type": "async"}) return response.json() diff --git a/mem0/memory/main.py b/mem0/memory/main.py index 64c0907d..7fd3ebde 100644 --- a/mem0/memory/main.py +++ b/mem0/memory/main.py @@ -62,7 +62,7 @@ class Memory(MemoryBase): self.graph = MemoryGraph(self.config) self.enable_graph = True - capture_event("mem0.init", self) + capture_event("mem0.init", self, {"sync_type": "sync"}) @classmethod def from_config(cls, config_dict: Dict[str, Any]): @@ -318,7 +318,7 @@ class Memory(MemoryBase): capture_event( "mem0.add", self, - {"version": self.api_version, "keys": list(filters.keys())}, + {"version": self.api_version, "keys": list(filters.keys()), "sync_type": "sync"}, ) return returned_memories @@ -344,7 +344,7 @@ class Memory(MemoryBase): Returns: dict: Retrieved memory. """ - capture_event("mem0.get", self, {"memory_id": memory_id}) + capture_event("mem0.get", self, {"memory_id": memory_id, "sync_type": "sync"}) memory = self.vector_store.get(vector_id=memory_id) if not memory: return None @@ -394,7 +394,7 @@ class Memory(MemoryBase): if run_id: filters["run_id"] = run_id - capture_event("mem0.get_all", self, {"limit": limit, "keys": list(filters.keys())}) + capture_event("mem0.get_all", self, {"limit": limit, "keys": list(filters.keys()), "sync_type": "sync"}) with concurrent.futures.ThreadPoolExecutor() as executor: future_memories = executor.submit(self._get_all_from_vector_store, filters, limit) @@ -484,7 +484,7 @@ class Memory(MemoryBase): capture_event( "mem0.search", self, - {"limit": limit, "version": self.api_version, "keys": list(filters.keys())}, + {"limit": limit, "version": self.api_version, "keys": list(filters.keys()), "sync_type": "sync"}, ) with concurrent.futures.ThreadPoolExecutor() as executor: @@ -563,7 +563,7 @@ class Memory(MemoryBase): Returns: dict: Updated memory. """ - capture_event("mem0.update", self, {"memory_id": memory_id}) + capture_event("mem0.update", self, {"memory_id": memory_id, "sync_type": "sync"}) existing_embeddings = {data: self.embedding_model.embed(data, "update")} @@ -577,7 +577,7 @@ class Memory(MemoryBase): Args: memory_id (str): ID of the memory to delete. """ - capture_event("mem0.delete", self, {"memory_id": memory_id}) + capture_event("mem0.delete", self, {"memory_id": memory_id, "sync_type": "sync"}) self._delete_memory(memory_id) return {"message": "Memory deleted successfully!"} @@ -603,7 +603,7 @@ class Memory(MemoryBase): "At least one filter is required to delete all memories. If you want to delete all memories, use the `reset()` method." ) - capture_event("mem0.delete_all", self, {"keys": list(filters.keys())}) + capture_event("mem0.delete_all", self, {"keys": list(filters.keys()), "sync_type": "sync"}) memories = self.vector_store.list(filters=filters)[0] for memory in memories: self._delete_memory(memory.id) @@ -625,7 +625,7 @@ class Memory(MemoryBase): Returns: list: List of changes for the memory. """ - capture_event("mem0.history", self, {"memory_id": memory_id}) + capture_event("mem0.history", self, {"memory_id": memory_id, "sync_type": "sync"}) return self.db.get_history(memory_id) def _create_memory(self, data, existing_embeddings, metadata=None): @@ -646,7 +646,7 @@ class Memory(MemoryBase): payloads=[metadata], ) self.db.add_history(memory_id, None, data, "ADD", created_at=metadata["created_at"]) - capture_event("mem0._create_memory", self, {"memory_id": memory_id}) + capture_event("mem0._create_memory", self, {"memory_id": memory_id, "sync_type": "sync"}) return memory_id def _create_procedural_memory(self, messages, metadata=None, prompt=None): @@ -683,7 +683,7 @@ class Memory(MemoryBase): embeddings = self.embedding_model.embed(procedural_memory, memory_action="add") # Create the memory memory_id = self._create_memory(procedural_memory, {procedural_memory: embeddings}, metadata=metadata) - capture_event("mem0._create_procedural_memory", self, {"memory_id": memory_id}) + capture_event("mem0._create_procedural_memory", self, {"memory_id": memory_id, "sync_type": "sync"}) # Return results in the same format as add() result = {"results": [{"id": memory_id, "memory": procedural_memory, "event": "ADD"}]} @@ -730,7 +730,7 @@ class Memory(MemoryBase): created_at=new_metadata["created_at"], updated_at=new_metadata["updated_at"], ) - capture_event("mem0._update_memory", self, {"memory_id": memory_id}) + capture_event("mem0._update_memory", self, {"memory_id": memory_id, "sync_type": "sync"}) return memory_id def _delete_memory(self, memory_id): @@ -739,7 +739,7 @@ class Memory(MemoryBase): prev_value = existing_memory.payload["data"] self.vector_store.delete(vector_id=memory_id) self.db.add_history(memory_id, prev_value, None, "DELETE", is_deleted=1) - capture_event("mem0._delete_memory", self, {"memory_id": memory_id}) + capture_event("mem0._delete_memory", self, {"memory_id": memory_id, "sync_type": "sync"}) return memory_id def reset(self): @@ -752,7 +752,7 @@ class Memory(MemoryBase): self.config.vector_store.provider, self.config.vector_store.config ) self.db.reset() - capture_event("mem0.reset", self) + capture_event("mem0.reset", self, {"sync_type": "sync"}) def chat(self, query): raise NotImplementedError("Chat function not implemented yet.") @@ -783,7 +783,7 @@ class AsyncMemory(MemoryBase): self.graph = MemoryGraph(self.config) self.enable_graph = True - capture_event("async_mem0.init", self) + capture_event("mem0.init", self, {"sync_type": "async"}) @classmethod async def from_config(cls, config_dict: Dict[str, Any]): @@ -1063,7 +1063,7 @@ class AsyncMemory(MemoryBase): except Exception as e: logging.error(f"Error in new_memories_with_actions: {e}") - capture_event("async_mem0.add", self, {"version": self.api_version, "keys": list(filters.keys())}) + capture_event("mem0.add", self, {"version": self.api_version, "keys": list(filters.keys()), "sync_type": "async"}) return returned_memories @@ -1088,7 +1088,7 @@ class AsyncMemory(MemoryBase): Returns: dict: Retrieved memory. """ - capture_event("async_mem0.get", self, {"memory_id": memory_id}) + capture_event("mem0.get", self, {"memory_id": memory_id, "sync_type": "async"}) memory = await asyncio.to_thread(self.vector_store.get, vector_id=memory_id) if not memory: return None @@ -1129,7 +1129,7 @@ class AsyncMemory(MemoryBase): if run_id: filters["run_id"] = run_id - capture_event("async_mem0.get_all", self, {"limit": limit, "keys": list(filters.keys())}) + capture_event("mem0.get_all", self, {"limit": limit, "keys": list(filters.keys()), "sync_type": "async"}) # Run vector store and graph operations concurrently vector_store_task = asyncio.create_task(self._get_all_from_vector_store(filters, limit)) @@ -1216,9 +1216,9 @@ class AsyncMemory(MemoryBase): raise ValueError("One of the filters: user_id, agent_id or run_id is required!") capture_event( - "async_mem0.search", + "mem0.search", self, - {"limit": limit, "version": self.api_version, "keys": list(filters.keys())}, + {"limit": limit, "version": self.api_version, "keys": list(filters.keys()), "sync_type": "async"}, ) # Run vector store and graph operations concurrently @@ -1296,7 +1296,7 @@ class AsyncMemory(MemoryBase): Returns: dict: Updated memory. """ - capture_event("async_mem0.update", self, {"memory_id": memory_id}) + capture_event("mem0.update", self, {"memory_id": memory_id, "sync_type": "async"}) embeddings = await asyncio.to_thread(self.embedding_model.embed, data, "update") existing_embeddings = {data: embeddings} @@ -1311,7 +1311,7 @@ class AsyncMemory(MemoryBase): Args: memory_id (str): ID of the memory to delete. """ - capture_event("async_mem0.delete", self, {"memory_id": memory_id}) + capture_event("mem0.delete", self, {"memory_id": memory_id, "sync_type": "async"}) await self._delete_memory(memory_id) return {"message": "Memory deleted successfully!"} @@ -1337,7 +1337,7 @@ class AsyncMemory(MemoryBase): "At least one filter is required to delete all memories. If you want to delete all memories, use the `reset()` method." ) - capture_event("async_mem0.delete_all", self, {"keys": list(filters.keys())}) + capture_event("mem0.delete_all", self, {"keys": list(filters.keys()), "sync_type": "async"}) memories = await asyncio.to_thread(self.vector_store.list, filters=filters) delete_tasks = [] @@ -1363,7 +1363,7 @@ class AsyncMemory(MemoryBase): Returns: list: List of changes for the memory. """ - capture_event("async_mem0.history", self, {"memory_id": memory_id}) + capture_event("mem0.history", self, {"memory_id": memory_id, "sync_type": "async"}) return await asyncio.to_thread(self.db.get_history, memory_id) async def _create_memory(self, data, existing_embeddings, metadata=None): @@ -1388,7 +1388,7 @@ class AsyncMemory(MemoryBase): await asyncio.to_thread(self.db.add_history, memory_id, None, data, "ADD", created_at=metadata["created_at"]) - capture_event("async_mem0._create_memory", self, {"memory_id": memory_id}) + capture_event("mem0._create_memory", self, {"memory_id": memory_id, "sync_type": "async"}) return memory_id async def _create_procedural_memory(self, messages, metadata=None, llm=None, prompt=None): @@ -1438,7 +1438,7 @@ class AsyncMemory(MemoryBase): embeddings = await asyncio.to_thread(self.embedding_model.embed, procedural_memory, memory_action="add") # Create the memory memory_id = await self._create_memory(procedural_memory, {procedural_memory: embeddings}, metadata=metadata) - capture_event("async_mem0._create_procedural_memory", self, {"memory_id": memory_id}) + capture_event("mem0._create_procedural_memory", self, {"memory_id": memory_id, "sync_type": "async"}) # Return results in the same format as add() result = {"results": [{"id": memory_id, "memory": procedural_memory, "event": "ADD"}]} @@ -1492,7 +1492,7 @@ class AsyncMemory(MemoryBase): updated_at=new_metadata["updated_at"], ) - capture_event("async_mem0._update_memory", self, {"memory_id": memory_id}) + capture_event("mem0._update_memory", self, {"memory_id": memory_id, "sync_type": "async"}) return memory_id async def _delete_memory(self, memory_id): @@ -1503,7 +1503,7 @@ class AsyncMemory(MemoryBase): await asyncio.to_thread(self.vector_store.delete, vector_id=memory_id) await asyncio.to_thread(self.db.add_history, memory_id, prev_value, None, "DELETE", is_deleted=1) - capture_event("async_mem0._delete_memory", self, {"memory_id": memory_id}) + capture_event("mem0._delete_memory", self, {"memory_id": memory_id, "sync_type": "async"}) return memory_id async def reset(self): @@ -1516,7 +1516,7 @@ class AsyncMemory(MemoryBase): self.config.vector_store.provider, self.config.vector_store.config ) await asyncio.to_thread(self.db.reset) - capture_event("async_mem0.reset", self) + capture_event("mem0.reset", self, {"sync_type": "async"}) async def chat(self, query): raise NotImplementedError("Chat function not implemented yet.")