agent-zero/plugins/_code_execution/README.md
frdel 4ffcdf5246 Handle shell/SSH process exits as completion
Detect and treat terminated local/SSH/TTY shells as definitive command completion. Add is_terminated and get_exit_code helpers to LocalInteractiveSession, SSHInteractiveSession, and TTYSession; expand _is_closed_pty_error to recognize exited TTY processes. CodeExecution now reports a shell-exit prompt, recreates terminated sessions lazily before the next command, and returns immediately when a shell has exited. Docs and README updated to describe strict-mode/exit behavior, and tests were added/updated to cover the new termination detection and handling.
2026-07-20 17:04:05 +02:00

56 lines
2.4 KiB
Markdown

# Code Execution
Run terminal commands and execute Python or Node.js code through Agent Zero using persistent shell sessions.
## What It Does
This plugin provides the code execution tool used by agents for development tasks. It supports:
- **Terminal commands** in interactive shell sessions
- **Python execution** through `ipython -c`
- **Node.js execution** through `node /exe/node_eval.js`
- **Persistent sessions** keyed by session number
- **Session reset and output retrieval**
- **Local or SSH-backed execution** depending on plugin configuration
## Main Behavior
- **Persistent shells**
- Maintains per-session shell state in agent data so subsequent calls can reuse the same terminal session.
- Groups multi-line terminal input in the current shell so only the final prompt marks the command complete.
- **Multiple runtimes**
- Dispatches requests based on `runtime`: `terminal`, `python`, `nodejs`, `output`, or `reset`.
- **Remote execution support**
- Can open SSH interactive sessions instead of local shells when configured.
- **Streaming output**
- Continuously reads shell output, updates the current log item, and detects progress while commands are running.
- Detects local shell exit and SSH channel termination when strict mode, `exit`, or a lost connection prevents a final prompt from appearing.
- **Long-running work**
- Keeps normal command execution responsive while giving the `output` runtime longer polling windows for builds, installs, servers, tests, and training jobs.
- **Safety around running sessions**
- Tracks whether a shell is currently busy and can prevent overlapping commands unless explicitly allowed.
## Key Files
- **Tool**
- `tools/code_execution_tool.py` contains runtime dispatch, session lifecycle, and streaming output logic.
- **Helpers**
- `helpers/shell_local.py` provides the local interactive shell implementation.
- `helpers/shell_ssh.py` provides the SSH-backed interactive shell implementation.
- **Configuration**
- `default_config.yaml` defines execution, prompt, and timeout settings.
- **Prompts**
- `prompts/` contains the response templates shown to the agent.
## Configuration Scope
- **Settings section**: `agent`
- **Per-project config**: `true`
- **Per-agent config**: `true`
- **Always enabled**: `false`
## Plugin Metadata
- **Name**: `_code_execution`
- **Title**: `Code Execution`
- **Description**: Code execution tool supporting terminal, Python, and Node.js runtimes via local TTY or SSH.