cowboy mode

This commit is contained in:
AI Christianson 2024-12-11 14:40:47 -05:00
parent c3fe7aa360
commit 04cb8db2b9
4 changed files with 51 additions and 0 deletions

View File

@ -0,0 +1,17 @@
import random
COWBOY_MESSAGES = [
"Yeeehaw! 🤠",
"Yippee ki yay motherfucker! 🤠",
"Saddle up partner! 🤠",
"This ain't my first rodeo! 🤠",
"Lock and load, partner! 🤠"
]
def get_cowboy_message() -> str:
"""Randomly select and return a cowboy message.
Returns:
str: A randomly selected cowboy message
"""
return random.choice(COWBOY_MESSAGES)

View File

@ -6,6 +6,7 @@ from rich.prompt import Confirm
from ra_aid.tools.memory import _global_memory
from ra_aid.proc.interactive import run_interactive_command
from ra_aid.text.processing import truncate_output
from ra_aid.console.cowboy_messages import get_cowboy_message
console = Console()
@ -45,6 +46,9 @@ def run_shell_command(command: str) -> Dict[str, Union[str, int, bool]]:
# Check if we need approval
cowboy_mode = _global_memory.get('config', {}).get('cowboy_mode', False)
if cowboy_mode:
console.print(get_cowboy_message())
if not cowboy_mode:
if not Confirm.ask("Execute this command?", default=True):
return {

View File

@ -0,0 +1,18 @@
import pytest
from ra_aid.console.cowboy_messages import get_cowboy_message, COWBOY_MESSAGES
def test_get_cowboy_message_returns_string():
"""Test that get_cowboy_message returns a non-empty string"""
message = get_cowboy_message()
assert isinstance(message, str)
assert len(message) > 0
def test_cowboy_message_contains_emoji():
"""Test that returned message contains the cowboy emoji"""
message = get_cowboy_message()
assert '🤠' in message
def test_message_from_predefined_list():
"""Test that returned message is from our predefined list"""
message = get_cowboy_message()
assert message in COWBOY_MESSAGES

View File

@ -30,6 +30,18 @@ def test_shell_command_cowboy_mode(mock_console, mock_confirm, mock_run_interact
assert "test output" in result['output']
mock_confirm.ask.assert_not_called()
def test_shell_command_cowboy_message(mock_console, mock_confirm, mock_run_interactive):
"""Test that cowboy mode displays a cowboy message"""
_global_memory['config'] = {'cowboy_mode': True}
with patch('ra_aid.tools.shell.get_cowboy_message') as mock_get_message:
mock_get_message.return_value = '🤠 Test cowboy message!'
result = run_shell_command("echo test")
assert result['success'] is True
mock_console.print.assert_any_call('🤠 Test cowboy message!')
mock_get_message.assert_called_once()
def test_shell_command_interactive_approved(mock_console, mock_confirm, mock_run_interactive):
"""Test shell command execution with interactive approval"""
_global_memory['config'] = {'cowboy_mode': False}