default cwd to /workspace for all exec, pty, and job calls
All subprocess and PTY spawns now start in WORKSPACE_DIR (default /workspace) instead of inheriting /app from the Python process.
This commit is contained in:
@@ -18,6 +18,8 @@ from typing import Any
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s")
|
||||
log = logging.getLogger("mcp")
|
||||
|
||||
WORKSPACE = os.environ.get("WORKSPACE_DIR", "/workspace")
|
||||
|
||||
import pyte
|
||||
import ptyprocess
|
||||
import uvicorn
|
||||
@@ -49,6 +51,7 @@ class PtySession:
|
||||
["/bin/bash", "--login"],
|
||||
dimensions=(rows, cols),
|
||||
env={**os.environ, "TERM": "xterm-256color", "COLUMNS": str(cols), "LINES": str(rows)},
|
||||
cwd=WORKSPACE,
|
||||
)
|
||||
self._reader = threading.Thread(target=self._read_loop, daemon=True)
|
||||
self._reader.start()
|
||||
@@ -100,6 +103,7 @@ class BackgroundJob:
|
||||
stderr=subprocess.STDOUT,
|
||||
text=True,
|
||||
executable="/bin/bash",
|
||||
cwd=WORKSPACE,
|
||||
)
|
||||
self._reader = threading.Thread(target=self._read_loop, daemon=True)
|
||||
self._reader.start()
|
||||
@@ -256,6 +260,7 @@ async def _dispatch(name: str, args: dict) -> dict:
|
||||
r = subprocess.run(
|
||||
cmd, shell=True, capture_output=True, text=True,
|
||||
timeout=timeout, executable="/bin/bash",
|
||||
cwd=WORKSPACE,
|
||||
)
|
||||
return {"stdout": r.stdout, "stderr": r.stderr, "exit_code": r.returncode}
|
||||
except subprocess.TimeoutExpired:
|
||||
|
||||
Reference in New Issue
Block a user