#!/usr/bin/env bash # Voice-Agent Mac-Worker — Ein-Befehl-Update. # # Macht: git pull (im Repo-Root) + pip install -r requirements.txt + Worker-Restart. # Idempotent. Beendet sich mit Health-Check. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" WORKDIR="$(cd "$SCRIPT_DIR/.." && pwd)" REPO_DIR="$(cd "$WORKDIR/.." && pwd)" LABEL="com.voiceagent.worker" SERVICE_TARGET="gui/$(id -u)/${LABEL}" echo "[1/4] git pull ($REPO_DIR)" git -C "$REPO_DIR" pull --ff-only echo "[2/4] pip install (venv: $WORKDIR/.venv)" if [ ! -x "$WORKDIR/.venv/bin/pip" ]; then echo "FEHLER: $WORKDIR/.venv fehlt. Bitte zuerst $SCRIPT_DIR/install-launchagent.sh ausführen." >&2 exit 1 fi "$WORKDIR/.venv/bin/pip" install -r "$WORKDIR/requirements.txt" echo "[3/4] Worker neu starten (kickstart -k $SERVICE_TARGET)" if ! launchctl print "$SERVICE_TARGET" >/dev/null 2>&1; then echo "FEHLER: LaunchAgent ist nicht geladen. Bitte $SCRIPT_DIR/install-launchagent.sh ausführen." >&2 exit 1 fi launchctl kickstart -k "$SERVICE_TARGET" echo "[4/4] Health-Check (max. 8 s warten)" for _ in 1 2 3 4 5 6 7 8; do sleep 1 if curl -fsS http://127.0.0.1:8080/health >/dev/null 2>&1; then echo "[OK] Update durch, Worker läuft." curl -s http://127.0.0.1:8080/health | python3 -m json.tool 2>/dev/null || true exit 0 fi done echo "[!] Health-Check schlägt nach Update fehl." >&2 tail -n 30 "$HOME/Library/Logs/voice-agent-worker.err.log" 2>/dev/null || true exit 1