# License: GPL-3.0 or later.
#
# status-line — Display the current branch or worktree in the
-# Claude Code status bar.
+# Claude Code status bar and sync the paseo agent name.
# Pre-flight: critical environment variables.
if [ -z "$GUIX_BIN" ]; then
[ -n "$branch" ] && echo "🌿 $branch"
fi
fi
+
+# Sync paseo agent name with current worktree state.
+PASEO="$HOME/.guix-home/profile/bin/paseo"
+
+# Find the agent ID: prefer PASEO_AGENT_ID from env, fall back to
+# finding the running agent via paseo ls.
+agent_id="${PASEO_AGENT_ID}"
+if [ -z "$agent_id" ] && [ -x "$PASEO" ]; then
+ agent_id=$("$PASEO" ls --json 2>/dev/null \
+ | $GUIX_BIN/grep -B10 '"status": "running"' \
+ | $GUIX_BIN/grep '"id"' \
+ | $GUIX_BIN/sed 's/.*"id": "\([^"]*\)".*/\1/' \
+ | $GUIX_BIN/head -1)
+fi
+
+if [ -n "$agent_id" ] && [ -x "$PASEO" ]; then
+ current_name=$("$PASEO" inspect "$agent_id" --json 2>/dev/null \
+ | $GUIX_BIN/grep '"Name"' \
+ | $GUIX_BIN/sed \
+ 's/.*"Name"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
+
+ if echo "$PWD" | $GUIX_BIN/grep -q '/worktrees/'; then
+ suffix="🌿 $CLAUDE_CODE_SESSION_ID"
+ if ! echo "$current_name" | $GUIX_BIN/grep -qF "$suffix"; then
+ "$PASEO" agent update "$agent_id" \
+ --name "$current_name $suffix" >/dev/null 2>&1
+ fi
+ else
+ if echo "$current_name" | $GUIX_BIN/grep -q '🌿'; then
+ clean_name=$(echo "$current_name" \
+ | $GUIX_BIN/sed 's/ 🌿 [a-f0-9-]*$//')
+ "$PASEO" agent update "$agent_id" \
+ --name "$clean_name" >/dev/null 2>&1
+ fi
+ fi
+fi
;;; Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
;;; License: GPL-3.0 or later.
;;;
-;;; Paseo test cases.
+;;; Paseo test cases — verifies the daemon can start under
+;;; timeout(1) without crashing.
(define-module (tests paseo)
- #:use-module (guix gexp)
- #:use-module (tests common)
#:use-module (conf home paseo)
+ #:use-module (gnu packages base)
+ #:use-module (guix gexp)
#:export (paseo-test-cases))
+(define %timeout-body
+ (let ((bin (file-append paseo "/bin/paseo"))
+ (timeout (file-append coreutils "/bin/timeout")))
+ `(let* ((st (system* ,timeout "5" ,bin
+ "daemon" "start" "--foreground"))
+ (rc (status:exit-val st)))
+ (= rc 124))))
+
(define (paseo-test-cases marionette)
- "Return a gexp with Paseo test assertion."
- #~(begin
- #$(assert-binary-exists "paseo: binary exists" paseo "paseo" marionette)))
+ "Return a gexp with Paseo test assertions."
+ #~(test-assert "paseo: daemon starts"
+ (marionette-eval '#$%timeout-body
+ #$marionette)))