@@ -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
@@ -663,21 +667,56 @@ def add(
663667 type = "chat" ,
664668 info = {"user_id" : target_user_id , "session_id" : str (uuid .uuid4 ())},
665669 )
670+
671+ mem_ids = []
666672 for mem in memories :
667- self .mem_cubes [mem_cube_id ].text_mem .add (mem )
673+ mem_id_list : list [str ] = self .mem_cubes [mem_cube_id ].text_mem .add (mem )
674+ mem_ids .extend (mem_id_list )
675+
676+ # submit messages for scheduler
677+ if self .enable_mem_scheduler and self .mem_scheduler is not None :
678+ mem_cube = self .mem_cubes [mem_cube_id ]
679+ message_item = ScheduleMessageItem (
680+ user_id = target_user_id ,
681+ mem_cube_id = mem_cube_id ,
682+ mem_cube = mem_cube ,
683+ label = ADD_LABEL ,
684+ content = json .dumps (mem_ids ),
685+ timestamp = datetime .now (),
686+ )
687+ self .mem_scheduler .submit_messages (messages = [message_item ])
688+
689+ # user doc input
668690 if (
669691 (doc_path is not None )
670692 and self .config .enable_textual_memory
671693 and self .mem_cubes [mem_cube_id ].text_mem
672694 ):
673695 documents = self ._get_all_documents (doc_path )
674- doc_memory = self .mem_reader .get_memory (
696+ doc_memories = self .mem_reader .get_memory (
675697 documents ,
676698 type = "doc" ,
677699 info = {"user_id" : target_user_id , "session_id" : str (uuid .uuid4 ())},
678700 )
679- for mem in doc_memory :
680- self .mem_cubes [mem_cube_id ].text_mem .add (mem )
701+
702+ mem_ids = []
703+ for mem in doc_memories :
704+ mem_id_list : list [str ] = self .mem_cubes [mem_cube_id ].text_mem .add (mem )
705+ mem_ids .extend (mem_id_list )
706+
707+ # submit messages for scheduler
708+ if self .enable_mem_scheduler and self .mem_scheduler is not None :
709+ mem_cube = self .mem_cubes [mem_cube_id ]
710+ message_item = ScheduleMessageItem (
711+ user_id = target_user_id ,
712+ mem_cube_id = mem_cube_id ,
713+ mem_cube = mem_cube ,
714+ label = ADD_LABEL ,
715+ content = json .dumps (mem_ids ),
716+ timestamp = datetime .now (),
717+ )
718+ self .mem_scheduler .submit_messages (messages = [message_item ])
719+
681720 logger .info (f"Add memory to { mem_cube_id } successfully" )
682721
683722 def get (
0 commit comments