From 27b399d0990b2f43dd434c731ddcab2c39b343db Mon Sep 17 00:00:00 2001 From: Prathap <436prathap@gmail.com> Date: Tue, 31 Mar 2026 19:16:35 +0530 Subject: [PATCH] fix(channels): push session history into agent context on channel messages --- src/openjarvis/system.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/openjarvis/system.py b/src/openjarvis/system.py index 92dbf40c..b3074cb0 100644 --- a/src/openjarvis/system.py +++ b/src/openjarvis/system.py @@ -63,6 +63,7 @@ class JarvisSystem: tools: Optional[List[str]] = None, system_prompt: Optional[str] = None, operator_id: Optional[str] = None, + prior_messages: Optional[List[Message]] = None, ) -> Dict[str, Any]: """Execute a query through the system and return a result dict.""" if temperature is None: @@ -106,6 +107,7 @@ class JarvisSystem: max_tokens, system_prompt=system_prompt, operator_id=operator_id, + prior_messages=prior_messages, ) # Direct engine mode @@ -133,6 +135,7 @@ class JarvisSystem: *, system_prompt=None, operator_id=None, + prior_messages=None, ) -> Dict[str, Any]: """Run through an agent.""" from openjarvis.agents._stubs import AgentContext @@ -153,6 +156,11 @@ class JarvisSystem: # Build context ctx = AgentContext() + # Seed prior conversation turns (channel session history) + if prior_messages: + for msg in prior_messages: + ctx.conversation.add(msg) + # Inject memory context messages into the agent conversation if messages and len(messages) > 1: # Context messages were prepended by inject_context @@ -297,7 +305,6 @@ class JarvisSystem: A connected :class:`~openjarvis.channels._stubs.BaseChannel` instance whose ``on_message`` method accepts a callable. """ - from openjarvis.agents._stubs import AgentContext from openjarvis.core.types import Message, Role from openjarvis.sessions.session import SessionStore @@ -320,14 +327,13 @@ class JarvisSystem: channel_user_id=cm.sender, ) - # Rebuild prior conversation turns into AgentContext - ctx = AgentContext() + prior_msgs: List[Message] = [] for sm in session.messages: try: role = Role(sm.role) except ValueError: role = Role.USER - ctx.conversation.add(Message(role=role, content=sm.content)) + prior_msgs.append(Message(role=role, content=sm.content)) reply = "" try: @@ -336,10 +342,15 @@ class JarvisSystem: cm.content, context=False, agent=_system.agent_name, + prior_messages=prior_msgs, ) reply = result.get("content", "") else: - result = _system.ask(cm.content, context=False) + result = _system.ask( + cm.content, + context=False, + prior_messages=prior_msgs, + ) reply = result.get("content", "") except Exception: logger.exception("Channel message handler error")