Adán Flores Ramírez
Frida Command interpreter to Gradio
a3643ce
from command_interpreter.tasks import Tasks
from termcolor import colored
def search_command(command, objects: list[object]):
for object in objects:
if hasattr(object, command):
method = getattr(object, command)
if callable(method):
return method
return None
def execute_function(command, tasks, grounding: bool = True):
try:
exec_commad = search_command(
command.action,
[tasks],
)
if exec_commad is None:
print(colored(f"❌ Command {command} is not implemented in GPSRTask or in the subtask managers.", "red"))
else:
# Enhanced execution output with better formatting
print(f"\n{colored('▶️ EXECUTING:', 'green', attrs=['bold'])} {colored(command.action, 'cyan', attrs=['bold'])}")
print(colored("─" * 60, "green"))
status, res = exec_commad(command, grounding)
# Format and display results with better visual hierarchy
print(f"{colored('🎯 Action:', 'yellow', attrs=['bold'])} {colored(str(command.action), 'white', attrs=['bold'])}")
# Status with appropriate color based on success/failure
try:
status_value = status.value if hasattr(status, 'value') else int(status)
status_str = str(status).upper()
if status_value == 0 or 'EXECUTION_SUCCESS' in status_str or status_str == 'SUCCESS':
status_color = 'green'
status_icon = '✅'
else:
status_color = 'red'
status_icon = '❌'
except Exception:
status_color = 'yellow'
status_icon = '⚠️'
print(f"{colored('📊 Status:', 'yellow', attrs=['bold'])} {colored(status_icon, status_color)} {colored(str(status), status_color, attrs=['bold'])}")
print(f"{colored('📝 Result:', 'yellow', attrs=['bold'])} {colored(str(res), 'cyan', attrs=['bold'])}")
print(colored("─" * 60, "green"))
print(colored("✓ Command execution completed", "green"))
try:
status = status.value
except Exception:
try:
status = int(status)
except Exception:
pass
tasks.add_command_history(
command,
res,
status,
)
# return action (str), success (bool), result (str)
return (command.action,
True if status_color == 'green' else False,
res)
except Exception as e:
print(colored("─" * 60, "red"))
print(colored("💥 EXECUTION ERROR", "red", attrs=['bold']))
print(colored("─" * 60, "red"))
print(colored(f"Command: {str(command)}", "yellow"))
print(colored(f"Error: {str(e)}", "red", attrs=['bold']))
print(colored("─" * 60, "red"))
def clear_command_history(tasks):
tasks.clear_command_history()