#!/usr/bin/env bash # Verlinkt die Extension und kopiert models.json/settings.json aus dem Repo nach ~/.pi/agent/. # Die Extension ist ein Symlink: Änderungen im Repo gelten ab dem nächsten pi-Start bzw. /reload. # Erneut ausführen nur nach Änderungen an models.json oder settings.json. set -euo pipefail REPO="$(cd "$(dirname "$0")" && pwd)" mkdir -p ~/.pi/agent/extensions # A previous, differing copy is kept as .bak before it is replaced by the symlink. EXT=~/.pi/agent/extensions/pi-coding-extension.ts if [ -f "$EXT" ] && [ ! -L "$EXT" ] && ! cmp -s "$EXT" "$REPO/pi-coding-extension.ts"; then cp "$EXT" "$EXT.bak" echo "Backup: pi-coding-extension.ts → pi-coding-extension.ts.bak" fi ln -sfn "$REPO/pi-coding-extension.ts" "$EXT" echo "Verlinkt: ~/.pi/agent/extensions/pi-coding-extension.ts → $REPO/pi-coding-extension.ts" cp "$REPO/models.json" ~/.pi/agent/models.json echo "Kopiert: models.json → ~/.pi/agent/" # settings.json: nur die 'packages'-Liste aktualisieren, alle anderen Nutzer-Einstellungen # (defaultProvider, defaultModel, enabledModels, …) bleiben unberührt. # Grund: pi schreibt Modell-Auswahl und weitere Präferenzen in diese Datei — ein vollständiges # Überschreiben würde sie bei jedem Deploy löschen. PACKAGES=$(jq '.packages' "$REPO/settings.json") if [ -f ~/.pi/agent/settings.json ]; then cp ~/.pi/agent/settings.json ~/.pi/agent/settings.json.bak echo "Backup: settings.json → settings.json.bak" jq --argjson p "$PACKAGES" '.packages = $p' ~/.pi/agent/settings.json > /tmp/pi_settings_merge.json \ && mv /tmp/pi_settings_merge.json ~/.pi/agent/settings.json else cp "$REPO/settings.json" ~/.pi/agent/settings.json fi echo "Aktualisiert: settings.json (nur packages-Feld) → ~/.pi/agent/" echo "" echo "Fertig. Bitte /reload in pi agent ausführen."