Enhance chat turn processing to correctly handle memory-only responses

This commit is contained in:
2026-06-15 22:56:17 +02:00
parent 9ec66c3196
commit b5f90331e7

View File

@@ -124,6 +124,19 @@ def _attachment_summary(raw_value: Any) -> str:
return ", ".join(labels[:8])
def _is_memory_only_response(row: models.ChatMessage) -> bool:
try:
sources = json.loads(getattr(row, "sources_json", None) or "[]")
except Exception:
return False
if not isinstance(sources, list) or not sources:
return False
for source in sources:
if not isinstance(source, dict) or source.get("type") != "chat_memory":
return False
return True
def _completed_turns(session: models.ChatSession, rows: Sequence[models.ChatMessage]) -> List[Dict[str, Any]]:
turns: List[Dict[str, Any]] = []
pending_user: Optional[models.ChatMessage] = None
@@ -134,6 +147,9 @@ def _completed_turns(session: models.ChatSession, rows: Sequence[models.ChatMess
continue
if row.role != "assistant" or pending_user is None:
continue
if _is_memory_only_response(row):
pending_user = None
continue
user_content = _clean_content(pending_user.content)
assistant_content = _clean_content(row.content)