diff --git a/jupyter_ai_persona_manager/base_persona.py b/jupyter_ai_persona_manager/base_persona.py index 02e670c..c4e5a1c 100644 --- a/jupyter_ai_persona_manager/base_persona.py +++ b/jupyter_ai_persona_manager/base_persona.py @@ -7,6 +7,7 @@ from typing import TYPE_CHECKING, Any, Optional from jupyterlab_chat.models import Message, NewMessage, User +from jupyterlab_chat.utils import find_mentions from pydantic import BaseModel from traitlets import MetaHasTraits from traitlets.config import LoggingConfigurable @@ -236,6 +237,9 @@ async def stream_message( stream, then continuously updates it until the stream is closed. - Automatically manages its awareness state to show writing status. + + - Triggers mention detection after streaming completes, allowing + personas to mention each other in their responses. """ stream_id: Optional[str] = None try: @@ -266,7 +270,17 @@ async def stream_message( raw_time=False, ), append=True, + trigger_actions=[], # Defer mention extraction during streaming ) + + # Stream complete - trigger mention extraction and notifications + if stream_id: + msg = self.ychat.get_message(stream_id) + if msg: + self.ychat.update_message( + msg, + trigger_actions=[find_mentions], # Extract mentions and notify mentioned personas + ) except Exception as e: self.log.error( f"Persona '{self.name}' encountered an exception printed below when attempting to stream output."