class LongTermMemory(ContextProvider): ... async def invoking( self, messages: ChatMessage | MutableSequence[ChatMessage], **kwargs: Any ) -> Context: ... await self._save_memory(messages, line_sep_memories) ... async def _save_memory( self, messages: ChatMessage | MutableSequence[ChatMessage], relevant_memory: str | None = None, ) -> None: detect_messages = ( [ ChatMessage(role=Role.USER, text=f"Existing related memories:\n\n{relevant_memory}"), ] + list(messages) if relevant_memory.strip() else list(messages) ) response = await self._extractor.run(detect_messages) extract_result: ExtractResult = cast(ExtractResult, response.value) if extract_result.should_write_memory: self._semantic_store.add_messages( messages=[ {"role": "user", "content": extract_result.memory_to_write} ], session_tag=self._session_tag, )