mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
Fix(CLI): duplicated Command Action display in CLI (#9260)
Co-authored-by: openhands <openhands@all-hands.dev>
This commit is contained in:
parent
bda0a64a3d
commit
ea3c4f9366
@ -191,19 +191,24 @@ def display_event(event: Event, config: OpenHandsConfig) -> None:
|
||||
if isinstance(event, MessageAction):
|
||||
if event.source == EventSource.AGENT:
|
||||
display_message(event.content)
|
||||
|
||||
if isinstance(event, CmdRunAction):
|
||||
display_command(event)
|
||||
# Only display the command if it's not already confirmed
|
||||
# Commands are always shown when AWAITING_CONFIRMATION, so we don't need to show them again when CONFIRMED
|
||||
if event.confirmation_state != ActionConfirmationStatus.CONFIRMED:
|
||||
display_command(event)
|
||||
|
||||
if event.confirmation_state == ActionConfirmationStatus.CONFIRMED:
|
||||
initialize_streaming_output()
|
||||
if isinstance(event, CmdOutputObservation):
|
||||
elif isinstance(event, CmdOutputObservation):
|
||||
display_command_output(event.content)
|
||||
if isinstance(event, FileEditObservation):
|
||||
elif isinstance(event, FileEditObservation):
|
||||
display_file_edit(event)
|
||||
if isinstance(event, FileReadObservation):
|
||||
elif isinstance(event, FileReadObservation):
|
||||
display_file_read(event)
|
||||
if isinstance(event, AgentStateChangedObservation):
|
||||
elif isinstance(event, AgentStateChangedObservation):
|
||||
display_agent_state_change_message(event.agent_state)
|
||||
if isinstance(event, ErrorObservation):
|
||||
elif isinstance(event, ErrorObservation):
|
||||
display_error(event.content)
|
||||
|
||||
|
||||
|
||||
@ -85,12 +85,31 @@ class TestDisplayFunctions:
|
||||
@patch('openhands.cli.tui.display_command')
|
||||
def test_display_event_cmd_action(self, mock_display_command):
|
||||
config = MagicMock(spec=OpenHandsConfig)
|
||||
# Test that commands awaiting confirmation are displayed
|
||||
cmd_action = CmdRunAction(command='echo test')
|
||||
cmd_action.confirmation_state = ActionConfirmationStatus.AWAITING_CONFIRMATION
|
||||
|
||||
display_event(cmd_action, config)
|
||||
|
||||
mock_display_command.assert_called_once_with(cmd_action)
|
||||
|
||||
@patch('openhands.cli.tui.display_command')
|
||||
@patch('openhands.cli.tui.initialize_streaming_output')
|
||||
def test_display_event_cmd_action_confirmed(
|
||||
self, mock_init_streaming, mock_display_command
|
||||
):
|
||||
config = MagicMock(spec=OpenHandsConfig)
|
||||
# Test that confirmed commands don't display the command but do initialize streaming
|
||||
cmd_action = CmdRunAction(command='echo test')
|
||||
cmd_action.confirmation_state = ActionConfirmationStatus.CONFIRMED
|
||||
|
||||
display_event(cmd_action, config)
|
||||
|
||||
# Command should not be displayed (since it was already shown when awaiting confirmation)
|
||||
mock_display_command.assert_not_called()
|
||||
# But streaming should be initialized
|
||||
mock_init_streaming.assert_called_once()
|
||||
|
||||
@patch('openhands.cli.tui.display_command_output')
|
||||
def test_display_event_cmd_output(self, mock_display_output):
|
||||
config = MagicMock(spec=OpenHandsConfig)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user