From a063fe61cdeaa470a6d2232d08e03eb31879ba18 Mon Sep 17 00:00:00 2001 From: Ahmed Abushagur Date: Thu, 19 Feb 2026 13:49:52 -0800 Subject: [PATCH] fix: sprite npm PATH resolution and gateway timeout (#1484) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: sprite npm PATH resolution and gateway timeout Sprites use nvm-managed node, so npm global bin is at /.sprite/languages/node/nvm/.../bin/ which isn't in default PATH. Dynamically resolve $(npm prefix -g)/bin in install, launch, and gateway commands for all sprite agents. Also increase openclaw gateway timeout from 30s to 60s — gateway starts slowly on sprites but TUI connects once ready. Co-Authored-By: Claude Opus 4.6 * fix: add opencode bin dir to PATH in sprite launch command OpenCode installs to $HOME/.opencode/bin/ which isn't in the sprite's default PATH or the npm prefix path. Co-Authored-By: Claude Opus 4.6 --------- Co-authored-by: Claude Opus 4.6 --- shared/common.sh | 4 ++-- sprite/codex.sh | 4 ++-- sprite/kilocode.sh | 4 ++-- sprite/openclaw.sh | 6 +++--- sprite/opencode.sh | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/shared/common.sh b/shared/common.sh index b5cd44cf..6273bb46 100644 --- a/shared/common.sh +++ b/shared/common.sh @@ -3208,7 +3208,7 @@ setup_openclaw_config() { start_openclaw_gateway() { local run_callback="${1}" log_step "Starting OpenClaw gateway daemon..." - ${run_callback} "source ~/.spawnrc 2>/dev/null; export PATH=\$HOME/.bun/bin:/.sprite/languages/bun/bin:\$HOME/.local/bin:\$PATH; if command -v setsid >/dev/null 2>&1; then setsid openclaw gateway > /tmp/openclaw-gateway.log 2>&1 < /dev/null & else nohup openclaw gateway > /tmp/openclaw-gateway.log 2>&1 < /dev/null & fi" + ${run_callback} "source ~/.spawnrc 2>/dev/null; export PATH=\$(npm prefix -g 2>/dev/null)/bin:\$HOME/.bun/bin:/.sprite/languages/bun/bin:\$HOME/.local/bin:\$PATH; if command -v setsid >/dev/null 2>&1; then setsid openclaw gateway > /tmp/openclaw-gateway.log 2>&1 < /dev/null & else nohup openclaw gateway > /tmp/openclaw-gateway.log 2>&1 < /dev/null & fi" } # Wait for OpenClaw gateway to be ready @@ -3221,7 +3221,7 @@ start_openclaw_gateway() { # 0 if gateway starts successfully, 1 if timeout wait_for_openclaw_gateway() { local run_callback="${1}" - local max_wait=30 + local max_wait=60 local elapsed=0 log_step "Waiting for OpenClaw gateway to start..." diff --git a/sprite/codex.sh b/sprite/codex.sh index 3ab5ef97..178bb42f 100755 --- a/sprite/codex.sh +++ b/sprite/codex.sh @@ -13,7 +13,7 @@ log_info "Codex CLI on Sprite" echo "" agent_install() { - install_agent "Codex CLI" "npm install -g @openai/codex" cloud_run + install_agent "Codex CLI" "export PATH=\$(npm prefix -g 2>/dev/null)/bin:\$PATH && npm install -g @openai/codex" cloud_run } agent_env_vars() { @@ -24,7 +24,7 @@ agent_env_vars() { } agent_launch_cmd() { - echo 'source ~/.spawnrc 2>/dev/null; export PATH=$HOME/.bun/bin:/.sprite/languages/bun/bin:$PATH; codex' + echo 'source ~/.spawnrc 2>/dev/null; export PATH=$(npm prefix -g 2>/dev/null)/bin:$HOME/.bun/bin:/.sprite/languages/bun/bin:$PATH; codex' } spawn_agent "Codex CLI" diff --git a/sprite/kilocode.sh b/sprite/kilocode.sh index 6fe96f32..1f11bcf7 100755 --- a/sprite/kilocode.sh +++ b/sprite/kilocode.sh @@ -13,7 +13,7 @@ log_info "Kilo Code on Sprite" echo "" agent_install() { - install_agent "Kilo Code" "npm install -g @kilocode/cli" cloud_run + install_agent "Kilo Code" "export PATH=\$(npm prefix -g 2>/dev/null)/bin:\$PATH && npm install -g @kilocode/cli" cloud_run } agent_env_vars() { @@ -24,7 +24,7 @@ agent_env_vars() { } agent_launch_cmd() { - echo 'source ~/.spawnrc 2>/dev/null; export PATH=$HOME/.bun/bin:/.sprite/languages/bun/bin:$PATH; kilocode' + echo 'source ~/.spawnrc 2>/dev/null; export PATH=$(npm prefix -g 2>/dev/null)/bin:$HOME/.bun/bin:/.sprite/languages/bun/bin:$PATH; kilocode' } spawn_agent "Kilo Code" diff --git a/sprite/openclaw.sh b/sprite/openclaw.sh index 3f032bee..b505fe29 100755 --- a/sprite/openclaw.sh +++ b/sprite/openclaw.sh @@ -16,8 +16,8 @@ AGENT_MODEL_PROMPT=1 AGENT_MODEL_DEFAULT="openrouter/auto" agent_install() { - # npm global bin may not be in PATH on sprites — find it and persist to .spawnrc - install_agent "openclaw" "export PATH=\$HOME/.bun/bin:/.sprite/languages/bun/bin:\$PATH && npm install -g openclaw && NPM_BIN=\$(npm bin -g 2>/dev/null) && echo \"export PATH=\$NPM_BIN:\\\$PATH\" >> ~/.spawnrc && export PATH=\$NPM_BIN:\$PATH && command -v openclaw" cloud_run + # npm global prefix on sprites is under nvm — bin dir is not in default PATH + install_agent "openclaw" "export PATH=\$(npm prefix -g 2>/dev/null)/bin:\$HOME/.bun/bin:/.sprite/languages/bun/bin:\$PATH && npm install -g openclaw && command -v openclaw" cloud_run } agent_env_vars() { @@ -37,7 +37,7 @@ agent_pre_launch() { } agent_launch_cmd() { - echo 'source ~/.spawnrc 2>/dev/null; export PATH=$HOME/.bun/bin:/.sprite/languages/bun/bin:$PATH; openclaw tui' + echo 'source ~/.spawnrc 2>/dev/null; export PATH=$(npm prefix -g 2>/dev/null)/bin:$HOME/.bun/bin:/.sprite/languages/bun/bin:$PATH; openclaw tui' } spawn_agent "OpenClaw" diff --git a/sprite/opencode.sh b/sprite/opencode.sh index 317542a1..23b6f2c8 100755 --- a/sprite/opencode.sh +++ b/sprite/opencode.sh @@ -22,7 +22,7 @@ agent_env_vars() { } agent_launch_cmd() { - echo 'source ~/.spawnrc 2>/dev/null; export PATH=$HOME/.bun/bin:/.sprite/languages/bun/bin:$PATH; opencode' + echo 'source ~/.spawnrc 2>/dev/null; export PATH=$HOME/.opencode/bin:$(npm prefix -g 2>/dev/null)/bin:$HOME/.bun/bin:/.sprite/languages/bun/bin:$PATH; opencode' } spawn_agent "OpenCode"