Spaces:
Runtime error
Runtime error
from typing import List | |
from phi.tools import Toolkit | |
from phi.utils.log import logger | |
class ShellTools(Toolkit): | |
def __init__(self): | |
super().__init__(name="shell_tools") | |
self.register(self.run_shell_command) | |
def run_shell_command(self, args: List[str], tail: int = 100) -> str: | |
"""Runs a shell command and returns the output or error. | |
Args: | |
args (List[str]): The command to run as a list of strings. | |
tail (int): The number of lines to return from the output. | |
Returns: | |
str: The output of the command. | |
""" | |
import subprocess | |
try: | |
logger.info(f"Running shell command: {args}") | |
result = subprocess.run(args, capture_output=True, text=True) | |
logger.debug(f"Result: {result}") | |
logger.debug(f"Return code: {result.returncode}") | |
if result.returncode != 0: | |
return f"Error: {result.stderr}" | |
# return only the last n lines of the output | |
return "\n".join(result.stdout.split("\n")[-tail:]) | |
except Exception as e: | |
logger.warning(f"Failed to run shell command: {e}") | |
return f"Error: {e}" | |