fix(cli, agent): improve streaming handling and state management
- Updated _stream_delta method in HermesCLI to handle None values, flushing the stream and resetting state for clean tool execution. - Enhanced quiet mode handling in AIAgent to ensure proper display closure before tool execution, preventing display issues with intermediate streamed content. These changes improve the robustness of the streaming functionality and ensure a smoother user experience during tool interactions.
This commit is contained in:
10
cli.py
10
cli.py
@@ -1504,7 +1504,7 @@ class HermesCLI:
|
||||
_cprint(f"{_DIM}└{'─' * (w - 2)}┘{_RST}")
|
||||
self._reasoning_box_opened = False
|
||||
|
||||
def _stream_delta(self, text: str) -> None:
|
||||
def _stream_delta(self, text) -> None:
|
||||
"""Line-buffered streaming callback for real-time token rendering.
|
||||
|
||||
Receives text deltas from the agent as tokens arrive. Buffers
|
||||
@@ -1514,7 +1514,15 @@ class HermesCLI:
|
||||
Reasoning/thinking blocks (<REASONING_SCRATCHPAD>, <think>, etc.)
|
||||
are suppressed during streaming since they'd display raw XML tags.
|
||||
The agent strips them from the final response anyway.
|
||||
|
||||
A ``None`` value signals an intermediate turn boundary (tools are
|
||||
about to execute). Flushes any open boxes and resets state so
|
||||
tool feed lines render cleanly between turns.
|
||||
"""
|
||||
if text is None:
|
||||
self._flush_stream()
|
||||
self._reset_stream_state()
|
||||
return
|
||||
if not text:
|
||||
return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user