From 4e87523c4f0dfb6aea55f032e2d8b0bdec4ad77c Mon Sep 17 00:00:00 2001 From: Ahmed Abushagur Date: Mon, 27 Apr 2026 18:31:40 -0700 Subject: [PATCH] fix(packer): repair cursor tarball + hermes interactive install (#3367) agent-tarballs.yml has been failing nightly since 2026-03-27 and packer-snapshots.yml since 2026-04-25. Two distinct breakages. cursor: capture-agent.sh's allowlist was missing cursor, so the install step succeeded but the capture step rejected the agent name. Adds cursor to the allowlist plus its capture paths (~/.local/bin/ for the `agent` symlink, ~/.local/share/cursor-agent/ for the extracted package, matching what verify.sh and cursor-proxy already expect). hermes: The upstream installer launches an interactive setup wizard after install, which fails in CI with `/dev/tty: No such device or address`. Production code already passes `--skip-setup` (see packages/cli/src/shared/agent-setup.ts:1336); packer/agents.json was the lone exception. Adds the same flag. Both pipelines read from packer/agents.json, so this single edit unblocks both the daily tarball build and the DO marketplace image build for hermes. Co-authored-by: Claude Opus 4.7 (1M context) --- packer/agents.json | 2 +- packer/scripts/capture-agent.sh | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packer/agents.json b/packer/agents.json index 9ab6bb61..08211546 100644 --- a/packer/agents.json +++ b/packer/agents.json @@ -33,7 +33,7 @@ "hermes": { "tier": "minimal", "install": [ - "curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash || [ -f ~/.local/bin/hermes ]" + "curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash -s -- --skip-setup || [ -f ~/.local/bin/hermes ]" ] }, "junie": { diff --git a/packer/scripts/capture-agent.sh b/packer/scripts/capture-agent.sh index 7f5498c2..7f4c2ee8 100644 --- a/packer/scripts/capture-agent.sh +++ b/packer/scripts/capture-agent.sh @@ -13,9 +13,9 @@ fi # Validate agent name against allowed list to prevent injection case "${AGENT_NAME}" in - openclaw|codex|kilocode|claude|opencode|hermes|junie) ;; + openclaw|codex|kilocode|claude|opencode|hermes|junie|cursor) ;; *) - printf 'Error: Invalid agent name: %s\nAllowed: openclaw, codex, kilocode, claude, opencode, hermes, junie\n' "${AGENT_NAME}" >&2 + printf 'Error: Invalid agent name: %s\nAllowed: openclaw, codex, kilocode, claude, opencode, hermes, junie, cursor\n' "${AGENT_NAME}" >&2 exit 1 ;; esac @@ -51,6 +51,12 @@ case "${AGENT_NAME}" in # Without this, the ~/.local/bin/hermes symlink is dangling after tarball extraction. echo "/root/.hermes/" >> "${PATHS_FILE}" ;; + cursor) + # Cursor installs to ~/.local/bin/agent (since 2026-03-25) with the + # extracted package under ~/.local/share/cursor-agent/. + echo "/root/.local/bin/" >> "${PATHS_FILE}" + echo "/root/.local/share/cursor-agent/" >> "${PATHS_FILE}" + ;; *) echo "Unknown agent: ${AGENT_NAME}" >&2 exit 1