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")
|
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s")
|
||||||
log = logging.getLogger("mcp")
|
log = logging.getLogger("mcp")
|
||||||
|
|
||||||
|
WORKSPACE = os.environ.get("WORKSPACE_DIR", "/workspace")
|
||||||
|
|
||||||
import pyte
|
import pyte
|
||||||
import ptyprocess
|
import ptyprocess
|
||||||
import uvicorn
|
import uvicorn
|
||||||
@@ -49,6 +51,7 @@ class PtySession:
|
|||||||
["/bin/bash", "--login"],
|
["/bin/bash", "--login"],
|
||||||
dimensions=(rows, cols),
|
dimensions=(rows, cols),
|
||||||
env={**os.environ, "TERM": "xterm-256color", "COLUMNS": str(cols), "LINES": str(rows)},
|
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 = threading.Thread(target=self._read_loop, daemon=True)
|
||||||
self._reader.start()
|
self._reader.start()
|
||||||
@@ -100,6 +103,7 @@ class BackgroundJob:
|
|||||||
stderr=subprocess.STDOUT,
|
stderr=subprocess.STDOUT,
|
||||||
text=True,
|
text=True,
|
||||||
executable="/bin/bash",
|
executable="/bin/bash",
|
||||||
|
cwd=WORKSPACE,
|
||||||
)
|
)
|
||||||
self._reader = threading.Thread(target=self._read_loop, daemon=True)
|
self._reader = threading.Thread(target=self._read_loop, daemon=True)
|
||||||
self._reader.start()
|
self._reader.start()
|
||||||
@@ -256,6 +260,7 @@ async def _dispatch(name: str, args: dict) -> dict:
|
|||||||
r = subprocess.run(
|
r = subprocess.run(
|
||||||
cmd, shell=True, capture_output=True, text=True,
|
cmd, shell=True, capture_output=True, text=True,
|
||||||
timeout=timeout, executable="/bin/bash",
|
timeout=timeout, executable="/bin/bash",
|
||||||
|
cwd=WORKSPACE,
|
||||||
)
|
)
|
||||||
return {"stdout": r.stdout, "stderr": r.stderr, "exit_code": r.returncode}
|
return {"stdout": r.stdout, "stderr": r.stderr, "exit_code": r.returncode}
|
||||||
except subprocess.TimeoutExpired:
|
except subprocess.TimeoutExpired:
|
||||||
|
|||||||
Reference in New Issue
Block a user