Files
hermes-agent/tools
Austin Pickett bf84561b9d fix(tui_gateway): keep a container backend's terminal.cwd as the session workspace
Under a container terminal backend (docker/modal/...), terminal.cwd names a path
inside the sandbox (/workspace). _completion_cwd host-validated it with
os.path.isdir, failed, and fell back to the gateway's own cwd ($HOME for the
desktop). Every host file then looked "inside the workspace", so file.attach
never staged it into the bind-mounted attachments/ dir and the agent was handed
a host path that does not exist in the container.

- _completion_cwd keeps an absolute container cwd unvalidated when the bound
  backend is non-local (matching _terminal_task_cwd), including a named
  profile's own container terminal.cwd and a config-only (unbridged) backend.
- _session_is_local_backend reads the effective backend (env or config), so a
  container cwd is never "healed" to its nearest host ancestor (/).
- map_cache_path_to_container also matches through a symlinked HERMES_HOME:
  @file: expansion passes resolved paths, the mount roots keep the configured
  spelling, so staged attachments leaked their host path.

Covers the desktop attachment path of #103147. Typed @file: refs to binary
files outside the mounted dirs still render the host path.
2026-09-28 19:41:57 -04:00
..