From 509dfad857dce845b64396f00eef3834ae2d490e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=A9=98?= Date: Sat, 6 Jun 2026 03:59:08 +0000 Subject: [PATCH] fix: support UWF_HERMES_BIN env var for hermes binary path Replace hardcoded HERMES_COMMAND constant with resolveHermesCommand() that checks UWF_HERMES_BIN first, falling back to 'hermes' via PATH. This fixes environments where hermes is installed in a venv or non-standard location that isn't in the non-login shell PATH (e.g. ~/.local/bin symlink only available in login shell). Refs #134 --- packages/agent-hermes/src/acp-client.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/agent-hermes/src/acp-client.ts b/packages/agent-hermes/src/acp-client.ts index fa29b4d..5a5343a 100644 --- a/packages/agent-hermes/src/acp-client.ts +++ b/packages/agent-hermes/src/acp-client.ts @@ -12,7 +12,11 @@ const OWN_VERSION = ( } ).version; -const HERMES_COMMAND = "hermes"; +/** Resolve hermes binary: `UWF_HERMES_BIN` override → default `"hermes"` via PATH. */ +function resolveHermesCommand(): string { + const override = process.env.UWF_HERMES_BIN; + return override !== undefined && override !== "" ? override : "hermes"; +} const PROTOCOL_VERSION = 1; type JsonRpcResponse = { @@ -271,7 +275,8 @@ export class HermesAcpClient { return; } - const child = spawn(HERMES_COMMAND, ["acp"], { + const hermesCommand = resolveHermesCommand(); + const child = spawn(hermesCommand, ["acp"], { env: process.env, shell: false, stdio: ["pipe", "pipe", "pipe"],