{"repo":"NousResearch/hermes-agent","public_id":"10454","display_label":"Final message sometimes dropped in streaming with commentary","summary":"One issue (in Chinese) reports that the last message in a Feishu conversation is occasionally swallowed. Three similarly titled pull requests concern not suppressing the final response when a commentary message is sent; a link between the issue and these changes is plausible but not confirmed by the titles alone.","subsystem":null,"counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":10540,"merged_at":"2026-04-15T22:00:59+00:00"},"resolution":{"state":"resolved","by":"pr-10540"},"freshness":{"state":"stale","last_verified_at":"2026-04-15T22:00:59+00:00","is_stale":true},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":10454,"pr_number":10540,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-04-15T22:00:59+00:00"}],"members":[{"kind":"issue","number":10454,"title":"[Bug]: 飞书对话中最后一条消息偶尔会被吞掉","url":null,"state":"closed"},{"kind":"pr","number":10519,"title":"fix(streaming): don't suppress final response when commentary message is sent","url":null,"state":"closed","close_reason":{"category":"silent_close","implication":"active"},"merged":false},{"kind":"pr","number":10530,"title":"fix(streaming): don't suppress final response when commentary message is sent","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#10540","number":10540}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":10540,"title":"fix(streaming): don't suppress final response when commentary message is sent","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["gateway/stream_consumer.py"],"fix_hunks":[{"file":"gateway/stream_consumer.py","hunks":["@@ -609,12 +609,15 @@ async def _send_commentary(self, text: str) -> bool:\n                 content=text,\n                 metadata=self.metadata,\n             )\n-            if result.success:\n-                self._already_sent = True\n-                return True\n+            # Note: do NOT set _already_sent = True here.\n+            # Commentary messages are interim status updates (e.g. \"Using browser\n+            # tool...\"), not the final response. Setting already_sent would cause\n+            # the final response to be incorrectly suppressed when there are\n+            # multiple tool calls. See: https://github.com/NousResearch/hermes-agent/issues/10454\n+            return result.success\n         except Exception as e:\n             logger.error(\"Commentary send error: %s\", e)\n-        return False\n+            return False\n \n     async def _send_or_edit(self, text: str) -> bool:\n         \"\"\"Send or edit the streaming message.\n"]}]}],"trust":{"default_tier":"verified","includes_suggested":false}}