8a4ac6c570
* fix(cli): prepend node bin dir to service unit PATH so npx-based agents resolve systemd/launchd units hard-coded a system-only PATH. Under per-user node managers (fnm, nvm, asdf, volta, mise), node lives in a versioned subdirectory like ~/.local/share/fnm/node-versions/v24.14.0/installation/bin, so the daemon could exec node (ExecStart resolves the absolute path) but could not exec npx — every ACP agent built with `npx -y <bridge-pkg>` (claude, codex, opencode, …) failed at spawn time with "peer disconnected before response". `captureLauncher()` already records the node binary path. Its parent dir is exactly where the matching npm/npx live, so prepend it to the unit's PATH (with dedup so /usr/local/bin etc. don't appear twice). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(cli): guard pathWithNodeBinDir against non-POSIX nodePath `path.dirname` returns `'.'` on POSIX when given a path with no `/` separator (e.g. a Windows-style `C:\…\node.exe`). Prepending `.` to a service unit's PATH would put CWD ahead of system dirs in the daemon context — a latent privilege-escalation footgun if any future caller ever passed a relative or bare-filename nodePath. Production is safe because `captureLauncher()` uses `process.execPath` (always absolute on Linux/macOS), so the guard is defensive, not a behavior change. Adds regression tests for both systemd and launchd, plus a previously missing launchd system-mode + versioned-bin-dir test. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Kandev Agent <agent@kandev.dev> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>