From 3fb524f8cc128f91150696fbfef04bf66825665f Mon Sep 17 00:00:00 2001 From: Abigayle-Mercer Date: Fri, 31 Oct 2025 10:07:16 -0700 Subject: [PATCH 1/4] added mention support in stream_message() --- jupyter_ai_persona_manager/base_persona.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/jupyter_ai_persona_manager/base_persona.py b/jupyter_ai_persona_manager/base_persona.py index 02e670c..77a1f8f 100644 --- a/jupyter_ai_persona_manager/base_persona.py +++ b/jupyter_ai_persona_manager/base_persona.py @@ -236,6 +236,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 +269,17 @@ async def stream_message( raw_time=False, ), append=True, + is_done=False, # 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, + is_done=True, # 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." From 12e78dec9c68016e5db1fb7a2d8503459d3c5f61 Mon Sep 17 00:00:00 2001 From: Abigayle-Mercer Date: Sun, 2 Nov 2025 07:16:31 -0800 Subject: [PATCH 2/4] changed variable name from is_done to find_mentions to reflect updates made to the ychat.update_message api --- jupyter_ai_persona_manager/base_persona.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jupyter_ai_persona_manager/base_persona.py b/jupyter_ai_persona_manager/base_persona.py index 77a1f8f..7e1196e 100644 --- a/jupyter_ai_persona_manager/base_persona.py +++ b/jupyter_ai_persona_manager/base_persona.py @@ -269,7 +269,7 @@ async def stream_message( raw_time=False, ), append=True, - is_done=False, # Defer mention extraction during streaming + find_mentions=False, # Defer mention extraction during streaming ) # Stream complete - trigger mention extraction and notifications @@ -278,7 +278,7 @@ async def stream_message( if msg: self.ychat.update_message( msg, - is_done=True, # Extract mentions and notify mentioned personas + find_mentions=True, # Extract mentions and notify mentioned personas ) except Exception as e: self.log.error( From d7cbecae492bdbac98bf1681432f38b9d0e888e3 Mon Sep 17 00:00:00 2001 From: Abigayle-Mercer Date: Tue, 2 Dec 2025 11:49:54 -0800 Subject: [PATCH 3/4] updated to be compatible with the new trigger actions API --- jupyter_ai_persona_manager/base_persona.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/jupyter_ai_persona_manager/base_persona.py b/jupyter_ai_persona_manager/base_persona.py index 7e1196e..c35d382 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_callback from pydantic import BaseModel from traitlets import MetaHasTraits from traitlets.config import LoggingConfigurable @@ -269,7 +270,7 @@ async def stream_message( raw_time=False, ), append=True, - find_mentions=False, # Defer mention extraction during streaming + trigger_actions=[], # Defer mention extraction during streaming ) # Stream complete - trigger mention extraction and notifications @@ -278,7 +279,7 @@ async def stream_message( if msg: self.ychat.update_message( msg, - find_mentions=True, # Extract mentions and notify mentioned personas + trigger_actions=[find_mentions_callback], # Extract mentions and notify mentioned personas ) except Exception as e: self.log.error( From 4f14841dbb368378e8b032da0a68510cc12a39a6 Mon Sep 17 00:00:00 2001 From: Abigayle-Mercer Date: Wed, 3 Dec 2025 13:54:35 -0800 Subject: [PATCH 4/4] renamed to correct callback --- jupyter_ai_persona_manager/base_persona.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jupyter_ai_persona_manager/base_persona.py b/jupyter_ai_persona_manager/base_persona.py index c35d382..c4e5a1c 100644 --- a/jupyter_ai_persona_manager/base_persona.py +++ b/jupyter_ai_persona_manager/base_persona.py @@ -7,7 +7,7 @@ from typing import TYPE_CHECKING, Any, Optional from jupyterlab_chat.models import Message, NewMessage, User -from jupyterlab_chat.utils import find_mentions_callback +from jupyterlab_chat.utils import find_mentions from pydantic import BaseModel from traitlets import MetaHasTraits from traitlets.config import LoggingConfigurable @@ -279,7 +279,7 @@ async def stream_message( if msg: self.ychat.update_message( msg, - trigger_actions=[find_mentions_callback], # Extract mentions and notify mentioned personas + trigger_actions=[find_mentions], # Extract mentions and notify mentioned personas ) except Exception as e: self.log.error(