@@ -586,6 +586,7 @@ def add(
586586 user_id (str, optional): The identifier of the user to add the memories to.
587587 If None, the default user is used.
588588 """
589+ # user input messages
589590 assert (messages is not None ) or (memory_content is not None ) or (doc_path is not None ), (
590591 "messages_or_doc_path or memory_content or doc_path must be provided."
591592 )
@@ -625,23 +626,26 @@ def add(
625626 type = "chat" ,
626627 info = {"user_id" : target_user_id , "session_id" : str (uuid .uuid4 ())},
627628 )
629+
630+ mem_ids = []
628631 for mem in memories :
629- self .mem_cubes [mem_cube_id ].text_mem .add (mem )
632+ mem_id_list : list [str ] = self .mem_cubes [mem_cube_id ].text_mem .add (mem )
633+ mem_ids .extend (mem_id_list )
630634
631635 # submit messages for scheduler
632- mem_cube = self .mem_cubes [mem_cube_id ]
633636 if self .enable_mem_scheduler and self .mem_scheduler is not None :
634- text_messages = [ message [ "content" ] for message in messages ]
637+ mem_cube = self . mem_cubes [ mem_cube_id ]
635638 message_item = ScheduleMessageItem (
636639 user_id = target_user_id ,
637640 mem_cube_id = mem_cube_id ,
638641 mem_cube = mem_cube ,
639642 label = ADD_LABEL ,
640- content = json .dumps (text_messages ),
643+ content = json .dumps (mem_ids ),
641644 timestamp = datetime .now (),
642645 )
643646 self .mem_scheduler .submit_messages (messages = [message_item ])
644647
648+ # user profile
645649 if (
646650 (memory_content is not None )
647651 and self .config .enable_textual_memory
@@ -669,21 +673,56 @@ def add(
669673 type = "chat" ,
670674 info = {"user_id" : target_user_id , "session_id" : str (uuid .uuid4 ())},
671675 )
676+
677+ mem_ids = []
672678 for mem in memories :
673- self .mem_cubes [mem_cube_id ].text_mem .add (mem )
679+ mem_id_list : list [str ] = self .mem_cubes [mem_cube_id ].text_mem .add (mem )
680+ mem_ids .extend (mem_id_list )
681+
682+ # submit messages for scheduler
683+ if self .enable_mem_scheduler and self .mem_scheduler is not None :
684+ mem_cube = self .mem_cubes [mem_cube_id ]
685+ message_item = ScheduleMessageItem (
686+ user_id = target_user_id ,
687+ mem_cube_id = mem_cube_id ,
688+ mem_cube = mem_cube ,
689+ label = ADD_LABEL ,
690+ content = json .dumps (mem_ids ),
691+ timestamp = datetime .now (),
692+ )
693+ self .mem_scheduler .submit_messages (messages = [message_item ])
694+
695+ # user doc input
674696 if (
675697 (doc_path is not None )
676698 and self .config .enable_textual_memory
677699 and self .mem_cubes [mem_cube_id ].text_mem
678700 ):
679701 documents = self ._get_all_documents (doc_path )
680- doc_memory = self .mem_reader .get_memory (
702+ doc_memories = self .mem_reader .get_memory (
681703 documents ,
682704 type = "doc" ,
683705 info = {"user_id" : target_user_id , "session_id" : str (uuid .uuid4 ())},
684706 )
685- for mem in doc_memory :
686- self .mem_cubes [mem_cube_id ].text_mem .add (mem )
707+
708+ mem_ids = []
709+ for mem in doc_memories :
710+ mem_id_list : list [str ] = self .mem_cubes [mem_cube_id ].text_mem .add (mem )
711+ mem_ids .extend (mem_id_list )
712+
713+ # submit messages for scheduler
714+ if self .enable_mem_scheduler and self .mem_scheduler is not None :
715+ mem_cube = self .mem_cubes [mem_cube_id ]
716+ message_item = ScheduleMessageItem (
717+ user_id = target_user_id ,
718+ mem_cube_id = mem_cube_id ,
719+ mem_cube = mem_cube ,
720+ label = ADD_LABEL ,
721+ content = json .dumps (mem_ids ),
722+ timestamp = datetime .now (),
723+ )
724+ self .mem_scheduler .submit_messages (messages = [message_item ])
725+
687726 logger .info (f"Add memory to { mem_cube_id } successfully" )
688727
689728 def get (
0 commit comments