* fix(remote): resolve workspace cwd, mise Node, host scope, and TUI scrollback honestly
#15296 relay: a folder workspace id (`folder:<uuid>`) carries no path, so the
worktree-id split yielded nothing and $HOME silently won. Resolve the spawn cwd
through worktreeId -> ORCA_WORKSPACE_ROOT -> host default, and refuse an agent
spawn outright when a folder workspace names a root this host cannot resolve.
#11733 ssh: generalize the NVM dotfile scrape into `orca_dotfile_dirs` and drive
mise off `MISE_DATA_DIR` / `XDG_DATA_HOME` instead of a hardcoded
`$HOME/.local/share/mise`.
#13713 ai-vault: an unresolvable workspace host is `unverifiable`, not local.
Widen the default scope to every host rather than scanning the client's own
history and reporting "No agent sessions found".
#6106 terminal: hydration asked the renderer for `scrollback: 0` while an
alt-screen TUI was up, which drops the normal buffer's shell history rather than
the TUI bytes. Drop the flag; readers already split the two buffers apart.
* fix(remote): stop the relay answering host questions for a guest execution host
Three findings from review of the spawn-cwd resolver, all the same shape: a path
question answered against the wrong host, or with the wrong key.
- resolveRelaySpawnCwd refused an agent launch whenever a folder workspace named
a root that did not stat on the relay. But relayHostDirectoryExists stats the
relay's *own* filesystem, and the relay supports WSL shells, so a folder
workspace on a Windows relay launching into WSL now threw where it previously
spawned -- contradicting the function's own doc comment, which says an absent
path for that exact host pair is a miss, not a refusal. Thread the shell's
execution host in and demote the refusal to a miss when the spawn does not run
on the relay's filesystem.
- requireRelaySpawnCwd's doc claims both call sites route through one resolver
so the fence can never be keyed on a directory the spawn won't use, but the
fence key was still computed with the non-stripping splitWorktreeId while the
cwd used splitWorktreeIdForFilesystem. For a `::workspace:<uuid>` id those
disagree by construction, in adjacent lines: the removal fence guarded a path
no spawn ever enters. Same defect in shutdownForWorktreePath and the revive
path; all three now use the filesystem split.
- The remote Node probe expanded `$HOME` and `~/` prefixes out of a dotfile
assignment but not `$XDG_DATA_HOME`, so `MISE_DATA_DIR=$XDG_DATA_HOME/...`
was used as a literal directory name. Add the case arm, defaulting to the
POSIX `$HOME/.local/share` the seed value already uses -- sshd's exec channel
usually has no XDG_DATA_HOME at all.