Skip to content

Commit f4c316c

Browse files
authored
Fix varlock path compatibility for debug/startup/subagents (#203)
1 parent 070a21f commit f4c316c

8 files changed

Lines changed: 28 additions & 13 deletions

File tree

bin/baudbot.service

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Restart=on-failure
2222
RestartSec=10
2323

2424
# Environment
25-
Environment=PATH=/home/baudbot_agent/.varlock/bin:/home/baudbot_agent/opt/node/bin:/usr/local/bin:/usr/bin:/bin
25+
Environment=PATH=/home/baudbot_agent/.varlock/bin:/home/baudbot_agent/.config/varlock/bin:/home/baudbot_agent/opt/node/bin:/usr/local/bin:/usr/bin:/bin
2626
Environment=HOME=/home/baudbot_agent
2727

2828
# Security hardening

bin/ci/setup-arch.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,10 @@ echo "$CLI_TARGET" | grep -qE '^/opt/baudbot/releases/.+/bin/baudbot$'
7777
baudbot --version
7878
HELP_OUT=$(baudbot --help)
7979
echo "$HELP_OUT" | grep -q "baudbot"
80-
# varlock installed for agent user
81-
test -x /home/baudbot_agent/.varlock/bin/varlock
80+
# varlock installed for agent user (supports both legacy and current install paths)
81+
test -x /home/baudbot_agent/.varlock/bin/varlock || test -x /home/baudbot_agent/.config/varlock/bin/varlock
8282
# Agent can load env (smoke test — varlock validates schema + .env)
83-
sudo -u baudbot_agent bash -c 'export PATH="$HOME/.varlock/bin:$HOME/opt/node/bin:$PATH" && cd ~ && varlock load --path ~/.config/'
83+
sudo -u baudbot_agent bash -c 'export PATH="$HOME/.varlock/bin:$HOME/.config/varlock/bin:$HOME/opt/node/bin:$PATH" && cd ~ && varlock load --path ~/.config/'
8484
echo " ✓ bootstrap + install verification passed"
8585

8686
echo "=== Running CLI smoke checks ==="

bin/ci/setup-ubuntu.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,10 @@ echo "$CLI_TARGET" | grep -qE '^/opt/baudbot/releases/.+/bin/baudbot$'
9696
baudbot --version
9797
HELP_OUT=$(baudbot --help)
9898
echo "$HELP_OUT" | grep -q "baudbot"
99-
# varlock installed for agent user
100-
test -x /home/baudbot_agent/.varlock/bin/varlock
99+
# varlock installed for agent user (supports both legacy and current install paths)
100+
test -x /home/baudbot_agent/.varlock/bin/varlock || test -x /home/baudbot_agent/.config/varlock/bin/varlock
101101
# Agent can load env (smoke test — varlock validates schema + .env)
102-
sudo -u baudbot_agent bash -c 'export PATH="$HOME/.varlock/bin:$HOME/opt/node/bin:$PATH" && cd ~ && varlock load --path ~/.config/'
102+
sudo -u baudbot_agent bash -c 'export PATH="$HOME/.varlock/bin:$HOME/.config/varlock/bin:$HOME/opt/node/bin:$PATH" && cd ~ && varlock load --path ~/.config/'
103103
echo " ✓ bootstrap + install verification passed"
104104

105105
echo "=== Running CLI smoke checks ==="

bin/doctor.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,14 @@ if [ -n "${BAUDBOT_ROOT:-}" ] && command -v rg &>/dev/null; then
8080
fi
8181
fi
8282

83-
if command -v varlock &>/dev/null || [ -x "$BAUDBOT_HOME/.varlock/bin/varlock" ]; then
83+
if command -v varlock &>/dev/null || [ -x "$BAUDBOT_HOME/.varlock/bin/varlock" ] || [ -x "$BAUDBOT_HOME/.config/varlock/bin/varlock" ]; then
8484
pass "varlock is installed"
8585
if [ -f "$BAUDBOT_HOME/.varlock/config.json" ] && grep -q '"anonymousId"' "$BAUDBOT_HOME/.varlock/config.json"; then
8686
warn "$BAUDBOT_HOME/.varlock/config.json includes anonymousId (export VARLOCK_TELEMETRY_DISABLED=1 or remove this field)"
8787
fi
88+
if [ -f "$BAUDBOT_HOME/.config/varlock/config.json" ] && grep -q '"anonymousId"' "$BAUDBOT_HOME/.config/varlock/config.json"; then
89+
warn "$BAUDBOT_HOME/.config/varlock/config.json includes anonymousId (export VARLOCK_TELEMETRY_DISABLED=1 or remove this field)"
90+
fi
8891
else
8992
fail "varlock not found"
9093
fi

bin/lib/baudbot-runtime.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ cmd_debug() {
519519

520520
exec sudo -u "$AGENT_USER" bash -lc "
521521
unset PKG_EXECPATH
522-
export PATH='$AGENT_HOME/.varlock/bin:$node_bin_dir':\$PATH
522+
export PATH='$AGENT_HOME/.varlock/bin:$AGENT_HOME/.config/varlock/bin:$node_bin_dir':\$PATH
523523
export VARLOCK_TELEMETRY_DISABLED=1
524524
cd ~
525525
varlock run --path ~/.config/ -- pi \

bin/subagents.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ spawn_one() {
283283
sudo -u "$AGENT_USER" mkdir -p "$AGENT_HOME/.pi/agent/logs"
284284

285285
local tmux_cmd
286-
tmux_cmd="cd $(shell_quote "$cwd") && export PATH=\"\$HOME/.varlock/bin:\$HOME/opt/node/bin:\$PATH\" && export PI_SESSION_NAME=$(shell_quote "$session_name") && exec varlock run --path \"\$HOME/.config/\" -- pi --session-control --skill $(shell_quote "$skill_path") --model $(shell_quote "$model") > $(shell_quote "$log_path") 2>&1"
286+
tmux_cmd="cd $(shell_quote "$cwd") && export PATH=\"\$HOME/.varlock/bin:\$HOME/.config/varlock/bin:\$HOME/opt/node/bin:\$PATH\" && export PI_SESSION_NAME=$(shell_quote "$session_name") && exec varlock run --path \"\$HOME/.config/\" -- pi --session-control --skill $(shell_quote "$skill_path") --model $(shell_quote "$model") > $(shell_quote "$log_path") 2>&1"
287287
sudo -u "$AGENT_USER" tmux new-session -d -s "$session_name" "$tmux_cmd"
288288

289289
local alias_path="$CONTROL_DIR/$ready_alias.alias"

setup.sh

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,12 +252,24 @@ echo "=== Installing varlock ==="
252252
# varlock must be available to the agent user (start.sh adds ~/.varlock/bin to PATH).
253253
# Install as agent user so it lands in the right home directory.
254254
AGENT_VARLOCK="$BAUDBOT_HOME/.varlock/bin/varlock"
255-
if [ -x "$AGENT_VARLOCK" ]; then
255+
AGENT_VARLOCK_CONFIG_BIN="$BAUDBOT_HOME/.config/varlock/bin/varlock"
256+
if [ -x "$AGENT_VARLOCK" ] || [ -x "$AGENT_VARLOCK_CONFIG_BIN" ]; then
256257
echo "varlock already installed for baudbot_agent, skipping"
257258
else
258259
sudo -u baudbot_agent bash -c 'curl -sSfL https://varlock.dev/install.sh | sh -s'
259260
fi
260261

262+
# Newer varlock installers place the binary under ~/.config/varlock/bin.
263+
# Keep a compatibility link at ~/.varlock/bin/varlock for existing runtime scripts.
264+
# If a real legacy binary already exists, preserve it (do not replace with symlink).
265+
if [ -x "$AGENT_VARLOCK_CONFIG_BIN" ]; then
266+
if [ -x "$AGENT_VARLOCK" ] && [ ! -L "$AGENT_VARLOCK" ]; then
267+
echo "Keeping existing legacy varlock binary at $AGENT_VARLOCK"
268+
else
269+
sudo -u baudbot_agent bash -c "mkdir -p '$BAUDBOT_HOME/.varlock/bin' && ln -sfn '$AGENT_VARLOCK_CONFIG_BIN' '$AGENT_VARLOCK'"
270+
fi
271+
fi
272+
261273
echo "=== Publishing initial git-free /opt release ==="
262274
# Build an immutable release snapshot from the local source checkout, then deploy
263275
# from /opt/baudbot/releases/<sha>. This keeps live operations decoupled from

start.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ cd ~
1818

1919
NODE_BIN_DIR="$(bb_resolve_runtime_node_bin_dir "$HOME")"
2020

21-
# Set PATH
22-
export PATH="$HOME/.varlock/bin:$NODE_BIN_DIR:$PATH"
21+
# Set PATH (varlock may be installed in ~/.varlock/bin or ~/.config/varlock/bin)
22+
export PATH="$HOME/.varlock/bin:$HOME/.config/varlock/bin:$NODE_BIN_DIR:$PATH"
2323

2424
# Work around varlock telemetry config crash by opting out at runtime.
2525
export VARLOCK_TELEMETRY_DISABLED=1

0 commit comments

Comments
 (0)