mirror of https://github.com/kortix-ai/suna.git
cleaning
This commit is contained in:
parent
01c1501198
commit
67c7eded8d
|
@ -59,7 +59,8 @@ class SandboxWebsiteTool(SandboxToolsBase):
|
||||||
async def update_website_file(self, file_path: str, content: str, create_dirs: bool = True) -> ToolResult:
|
async def update_website_file(self, file_path: str, content: str, create_dirs: bool = True) -> ToolResult:
|
||||||
print(f"\033[33mUpdating website file: {file_path}\033[0m")
|
print(f"\033[33mUpdating website file: {file_path}\033[0m")
|
||||||
try:
|
try:
|
||||||
site_dir = "/workspace/site"
|
|
||||||
|
site_dir = f"{self.workspace_path}/site"
|
||||||
full_path = f"{site_dir}/{file_path}"
|
full_path = f"{site_dir}/{file_path}"
|
||||||
|
|
||||||
# Create the site directory if it doesn't exist
|
# Create the site directory if it doesn't exist
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
import os
|
|
||||||
import asyncio
|
|
||||||
import subprocess
|
|
||||||
from agentpress.tool import Tool, ToolResult, openapi_schema, xml_schema
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
class TerminalTool(Tool):
|
|
||||||
"""Terminal command execution tool for workspace operations."""
|
|
||||||
|
|
||||||
def __init__(self, store_id: Optional[str] = None):
|
|
||||||
super().__init__()
|
|
||||||
self.workspace = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'workspace')
|
|
||||||
os.makedirs(self.workspace, exist_ok=True)
|
|
||||||
|
|
||||||
@openapi_schema({
|
|
||||||
"type": "function",
|
|
||||||
"function": {
|
|
||||||
"name": "execute_command",
|
|
||||||
"description": "Execute a shell command in the workspace directory",
|
|
||||||
"parameters": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"command": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The shell command to execute"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": ["command"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
@xml_schema(
|
|
||||||
tag_name="execute-command",
|
|
||||||
mappings=[
|
|
||||||
{"param_name": "command", "node_type": "content", "path": "."}
|
|
||||||
],
|
|
||||||
example='''
|
|
||||||
<execute-command>
|
|
||||||
npm install package-name
|
|
||||||
</execute-command>
|
|
||||||
'''
|
|
||||||
)
|
|
||||||
async def execute_command(self, command: str) -> ToolResult:
|
|
||||||
original_dir = os.getcwd()
|
|
||||||
try:
|
|
||||||
os.chdir(self.workspace)
|
|
||||||
|
|
||||||
process = await asyncio.create_subprocess_shell(
|
|
||||||
command,
|
|
||||||
stdout=asyncio.subprocess.PIPE,
|
|
||||||
stderr=asyncio.subprocess.PIPE,
|
|
||||||
cwd=self.workspace
|
|
||||||
)
|
|
||||||
stdout, stderr = await process.communicate()
|
|
||||||
|
|
||||||
output = stdout.decode() if stdout else ""
|
|
||||||
error = stderr.decode() if stderr else ""
|
|
||||||
success = process.returncode == 0
|
|
||||||
|
|
||||||
if success:
|
|
||||||
return self.success_response({
|
|
||||||
"output": output,
|
|
||||||
"error": error,
|
|
||||||
"exit_code": process.returncode,
|
|
||||||
"cwd": self.workspace
|
|
||||||
})
|
|
||||||
else:
|
|
||||||
return self.fail_response(f"Command failed with exit code {process.returncode}: {error}")
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
return self.fail_response(f"Error executing command: {str(e)}")
|
|
||||||
finally:
|
|
||||||
os.chdir(original_dir)
|
|
||||||
|
|
Loading…
Reference in New Issue