feat: enable persistent shell by default for SSH, add config option
SSH persistent shell now defaults to true — non-local backends benefit most from state persistence across execute() calls. Local backend remains opt-in via TERMINAL_LOCAL_PERSISTENT env var. New config.yaml option: terminal.persistent_shell (default: true) Controls the default for non-local backends. Users can disable with: hermes config set terminal.persistent_shell false Precedence: per-backend env var > TERMINAL_PERSISTENT_SHELL > default. Wired through cli.py, gateway/run.py, and hermes_cli/config.py so the config.yaml value reaches terminal_tool via env var bridge.
This commit is contained in:
@@ -67,16 +67,31 @@ class TestBuildSSHCommand:
|
||||
|
||||
|
||||
class TestTerminalToolConfig:
|
||||
def test_ssh_persistent_default_false(self, monkeypatch):
|
||||
def test_ssh_persistent_default_true(self, monkeypatch):
|
||||
"""SSH persistent defaults to True (via TERMINAL_PERSISTENT_SHELL)."""
|
||||
monkeypatch.delenv("TERMINAL_SSH_PERSISTENT", raising=False)
|
||||
monkeypatch.delenv("TERMINAL_PERSISTENT_SHELL", raising=False)
|
||||
from tools.terminal_tool import _get_env_config
|
||||
assert _get_env_config()["ssh_persistent"] is True
|
||||
|
||||
def test_ssh_persistent_explicit_false(self, monkeypatch):
|
||||
"""Per-backend env var overrides the global default."""
|
||||
monkeypatch.setenv("TERMINAL_SSH_PERSISTENT", "false")
|
||||
from tools.terminal_tool import _get_env_config
|
||||
assert _get_env_config()["ssh_persistent"] is False
|
||||
|
||||
def test_ssh_persistent_true(self, monkeypatch):
|
||||
def test_ssh_persistent_explicit_true(self, monkeypatch):
|
||||
monkeypatch.setenv("TERMINAL_SSH_PERSISTENT", "true")
|
||||
from tools.terminal_tool import _get_env_config
|
||||
assert _get_env_config()["ssh_persistent"] is True
|
||||
|
||||
def test_ssh_persistent_respects_config(self, monkeypatch):
|
||||
"""TERMINAL_PERSISTENT_SHELL=false disables SSH persistent by default."""
|
||||
monkeypatch.delenv("TERMINAL_SSH_PERSISTENT", raising=False)
|
||||
monkeypatch.setenv("TERMINAL_PERSISTENT_SHELL", "false")
|
||||
from tools.terminal_tool import _get_env_config
|
||||
assert _get_env_config()["ssh_persistent"] is False
|
||||
|
||||
|
||||
def _setup_ssh_env(monkeypatch, persistent: bool):
|
||||
monkeypatch.setenv("TERMINAL_ENV", "ssh")
|
||||
|
||||
Reference in New Issue
Block a user