mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-14 09:11:54 +00:00
The compressor has a "double-collision" fallback path: when the chosen ``summary_role`` collides with the first tail message AND the flipped role would collide with the last head message, it can't emit a standalone summary turn (consecutive same-role messages break Anthropic and friends). It instead prepends the summary + end-of-summary marker to the first tail message's content via ``_merge_summary_into_tail``. With the matching anchor from the previous commit, that first tail message is now usually the user's previously-visible assistant reply — so the persisted assistant turn ends up shaped as ``[CONTEXT COMPACTION ...] ... --- END OF CONTEXT SUMMARY --- ... THE ACTUAL REPLY``. Without splitting it, the session viewer renders one big "Context handoff" bubble and the reply text is buried inside the metadata blob — which is exactly the "can't see the last reply" experience #29824 reports, just one layer deeper. Added ``splitCompactionContent`` that detects the merge marker (kept in sync with ``--- END OF CONTEXT SUMMARY — respond to the message below, not the summary above ---`` in ``agent/context_compressor.py``) and ``MessageBubble`` now recurses on the two halves: the prefix half renders as the muted "Context handoff" row, the remainder half renders with the original assistant styling. Pure (non-merged) summary messages hit the no-remainder branch and still render as a single "Context handoff" row, preserving the original behaviour. |
||
|---|---|---|
| .. | ||
| AnalyticsPage.tsx | ||
| ChannelsPage.tsx | ||
| ChatPage.tsx | ||
| ConfigPage.tsx | ||
| CronPage.tsx | ||
| DocsPage.tsx | ||
| EnvPage.tsx | ||
| FilesPage.tsx | ||
| LogsPage.tsx | ||
| McpPage.tsx | ||
| ModelsPage.tsx | ||
| PairingPage.tsx | ||
| PluginsPage.tsx | ||
| ProfileBuilderPage.tsx | ||
| ProfilesPage.tsx | ||
| SessionsPage.tsx | ||
| SkillsPage.tsx | ||
| SystemPage.tsx | ||
| WebhooksPage.tsx | ||