Fix empty partial activity tail recency

This commit is contained in:
Frank Song
2026-05-28 15:30:49 +08:00
parent 5528e2c579
commit 9190ab4449
7 changed files with 145 additions and 5 deletions

View File

@@ -369,12 +369,35 @@ def _message_timestamp(message):
return None
def _is_empty_partial_activity_message(message):
"""Return True for cancelled/recovered activity rows with no reply text."""
if not isinstance(message, dict):
return False
if message.get('role') != 'assistant' or not message.get('_partial'):
return False
content = message.get('content', '')
if isinstance(content, str):
return not content.strip()
if isinstance(content, list):
for part in content:
if isinstance(part, dict):
if part.get('type') == 'text' and str(part.get('text') or part.get('content') or '').strip():
return False
continue
if str(part or '').strip():
return False
return True
return not str(content or '').strip()
def _last_message_timestamp(messages):
if not isinstance(messages, list):
return None
for message in reversed(messages):
if isinstance(message, dict) and message.get('role') == 'tool':
continue
if _is_empty_partial_activity_message(message):
continue
ts = _message_timestamp(message)
if ts:
return ts