mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-01 07:27:46 +00:00
## Summary - **E2B file tools**: New MCP tools (`read_file`/`write_file`/`edit_file`/`glob`/`grep`) that operate directly on the E2B sandbox filesystem (`/home/user`). When E2B is active, these replace SDK built-in `Read/Write/Edit/Glob/Grep` so all tools share a single coherent filesystem with `bash_exec` — no sync needed. - **E2B sandbox lifecycle**: New `e2b_sandbox.py` manages sandbox creation and reconnection via Redis, with stale-key cleanup on reconnection failure. - **E2B enabled by default**: `use_e2b_sandbox` defaults to `True`; set `CHAT_USE_E2B_SANDBOX=false` to disable. - **Centralized output truncation**: All MCP tool outputs are truncated via `_truncating` wrapper and stashed (`_pending_tool_outputs`) to bypass SDK's head-truncation for the frontend. - **Frontend tool display**: `GenericTool.tsx` now renders bash stdout/stderr, file content, edit diffs (old/new), todo lists, and glob/grep results with category-specific icons and status text. - **Workspace file tools + E2B**: `read_workspace_file`'s `save_to_path` and `write_workspace_file`'s `source_path` route to E2B sandbox when active. ## Files changed | Area | Files | What | |------|-------|------| | E2B file tools | `sdk/e2b_file_tools.py`, `sdk/e2b_file_tools_test.py` | MCP file tool handlers + tests | | E2B sandbox | `tools/e2b_sandbox.py` | Sandbox lifecycle (create/reconnect/Redis) | | Tool adapter | `sdk/tool_adapter.py` | MCP server, truncation, stash, path validation | | Service | `sdk/service.py` | E2B integration, prompt supplements | | Security | `sdk/security_hooks.py`, `sdk/security_hooks_test.py` | Path validation for E2B mode | | Bash exec | `tools/bash_exec.py` | E2B execution path | | Workspace files | `tools/workspace_files.py`, `tools/workspace_files_test.py` | E2B-aware save/source paths | | Config | `copilot/config.py` | E2B config fields (default on) | | Truncation | `util/truncate.py` | Middle-out truncation fix | | Frontend | `GenericTool.tsx` | Tool-specific display rendering | ## Test plan - [x] `security_hooks_test.py` — 43 tests (path validation, tool access, deny messages) - [x] `e2b_file_tools_test.py` — 19 tests (path resolution, local read safety) - [x] `workspace_files_test.py` — 17 tests (ephemeral path validation) - [x] CI green (backend 3.11/3.12/3.13, lint, types, e2e)
37 B
37 B