diff --git a/src/langbot/pkg/agent/runner/persistent_state_store.py b/src/langbot/pkg/agent/runner/persistent_state_store.py index 4665f127a..14c9a3403 100644 --- a/src/langbot/pkg/agent/runner/persistent_state_store.py +++ b/src/langbot/pkg/agent/runner/persistent_state_store.py @@ -188,7 +188,7 @@ class PersistentStateStore: except json.JSONDecodeError: pass # Skip invalid JSON - # Seed external.conversation_id from event.conversation_id if not set + # Seed the host conversation ID only before the conversation is reset. if self._check_scope_enabled('conversation', binding) and event.conversation_id: if 'external.conversation_id' not in snapshot['conversation']: from .context_reset import get_reset_generation @@ -196,7 +196,8 @@ class PersistentStateStore: generation = await get_reset_generation( self._db_engine, event.workspace_id, event.bot_id, event.conversation_id ) - snapshot['conversation']['external.conversation_id'] = generation or event.conversation_id + if generation is None: + snapshot['conversation']['external.conversation_id'] = event.conversation_id return snapshot diff --git a/tests/unit_tests/api/service/test_session_context_reset.py b/tests/unit_tests/api/service/test_session_context_reset.py index 70989432f..6a5892a11 100644 --- a/tests/unit_tests/api/service/test_session_context_reset.py +++ b/tests/unit_tests/api/service/test_session_context_reset.py @@ -153,7 +153,7 @@ async def test_reset_starts_new_external_runner_conversation(context_service): snapshot = await store.build_snapshot_from_event(event, binding, descriptor) generation = await get_reset_generation(engine, 'w', 'b', 'person_u') assert isinstance(generation, str) and generation and generation not in {'remote-old', 'person_u'} - assert snapshot['conversation']['external.conversation_id'] == generation + assert 'external.conversation_id' not in snapshot['conversation'] @pytest.mark.asyncio