mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-10-30 20:35:22 +08:00
fix(agent): keep reset generation out of external conversation ID (#2818)
Fixes #2814 After a session reset, keep the reset generation marker out of provider-facing external conversation state so Runner plugins start a new remote conversation.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user