Files
EvoScientist-Multi/EvoScientist/cli/widgets/compacting_widget.py
T
Xi Zhang 65db3a4fcd Add status bar and compact summary widgets with context window resolu… (#152)
* Add status bar and compact summary widgets with context window resolution

- Implemented a shared status bar for CLI and TUI frontends, including helpers for managing session metrics and context windows.
- Created a `CompactSummaryWidget` for displaying manual summaries in a collapsible format.
- Introduced a `CompactingWidget` to indicate ongoing compacting processes.
- Added a base class `TimedStatusWidget` for widgets that require a timer.
- Developed context window resolution helpers to retrieve context window sizes from various model attributes.
- Enhanced tests for context window resolution and status bar functionalities, ensuring accurate behavior across different scenarios.
- Updated existing tests to cover new features and maintain code quality.

* refactor(Channel): simplify lambda function in _send_with_retry method

* feat: enhance context editing logic and improve error handling in StreamState

* refactor(Channel): streamline lambda function in _send_with_retry method

* feat: rename auto-approve option to auto-mode for unattended execution; update checkpoint queries to filter by agent name; improve compatibility validation logic

* feat: rename auto-approve option to auto-mode; update related logic and tests for improved unattended execution

* fix: correct formatting of console message for MCP server configuration status

* feat: add check for None summary_message in _apply_summarization_event to prevent errors

* feat: enhance _load_checkpoint_messages to validate message format and apply summarization event
2026-04-12 17:47:37 +01:00

31 lines
779 B
Python

"""Transient widget shown while manual /compact is running in the TUI."""
from __future__ import annotations
from .timed_status_widget import TimedStatusWidget
class CompactingWidget(TimedStatusWidget):
"""Timer-backed status line for an in-progress manual compact."""
DEFAULT_CSS = """
CompactingWidget {
height: auto;
color: #f59e0b;
padding: 0 0;
margin: 0 0 1 0;
}
"""
def __init__(self) -> None:
super().__init__()
def _refresh_display(self) -> None:
self.update(f"Compacting conversation... ({self.elapsed_seconds}s)")
async def cleanup(self) -> None:
"""Stop timer and remove from DOM."""
self._stop_timer()
if self.is_mounted:
await self.remove()