Klient-distribution: självständiga binärer + curl|sh-installer
- daemon: byt node-pty -> @homebridge/node-pty-prebuilt-multiarch (N-API- prebuilds för x64+arm64, ingen kompilering); esbuild-bundle av daemonen - .gitea/workflows/release.yaml: på tag v* bygger pkg båda arkitekturerna på Pi-runnern (utan QEMU — prebuilds för båda finns) och publicerar som Gitea-release-assets via API - install.sh: 'curl -fsSL .../install.sh | sh' — detekterar arch, hämtar rätt binär från senaste releasen, lägger agent-helm i PATH, skapar config.env + valfri systemd-user-service (Arch/Ubuntu) - deploy/client-build/package.json: pkg-config (assets för prebuilds) - DEPLOY.md: klient-installationssektion Verifierat lokalt: pkg-binär (x64, 83 MB) startar, node-pty spawnar pty, ansluter och input/output funkar end-to-end. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
96
install.sh
Executable file
96
install.sh
Executable file
@@ -0,0 +1,96 @@
|
||||
#!/bin/sh
|
||||
# agent-helm — klient-installer (självständig binär, Node + node-pty inbäddat).
|
||||
#
|
||||
# curl -fsSL https://gitea.brasse-pc.eu/brasse/agent-helm/raw/branch/main/install.sh | sh
|
||||
#
|
||||
# Valfria env-vars (annars defaults / fyll i config efteråt):
|
||||
# AGENT_HELM_TOKEN=... delad token mot servern
|
||||
# AGENT_HELM_SERVER=wss://... server-URL (default wss://rcai.brasse-pc.eu)
|
||||
# AGENT_CMD=gemini kommandot som körs i pty:n
|
||||
# PREFIX=/usr/local install-prefix för binären
|
||||
set -eu
|
||||
|
||||
OWNER=brasse
|
||||
REPO=agent-helm
|
||||
BASE=https://gitea.brasse-pc.eu
|
||||
API="$BASE/api/v1/repos/$OWNER/$REPO"
|
||||
|
||||
# --- OS + arkitektur ---
|
||||
[ "$(uname -s)" = "Linux" ] || { echo "agent-helm: bara Linux stöds just nu"; exit 1; }
|
||||
case "$(uname -m)" in
|
||||
x86_64|amd64) ARCH=x64 ;;
|
||||
aarch64|arm64) ARCH=arm64 ;;
|
||||
*) echo "agent-helm: arkitektur $(uname -m) stöds inte (endast x64/arm64)"; exit 1 ;;
|
||||
esac
|
||||
ASSET="agent-helm-linux-$ARCH"
|
||||
|
||||
command -v curl >/dev/null 2>&1 || { echo "agent-helm: curl krävs"; exit 1; }
|
||||
|
||||
# --- senaste release-tag ---
|
||||
echo "agent-helm: slår upp senaste release ..."
|
||||
TAG=$(curl -fsSL "$API/releases/latest" | tr ',' '\n' | grep -m1 '"tag_name"' | cut -d'"' -f4)
|
||||
[ -n "${TAG:-}" ] || { echo "agent-helm: hittade ingen release på $BASE"; exit 1; }
|
||||
URL="$BASE/$OWNER/$REPO/releases/download/$TAG/$ASSET"
|
||||
|
||||
# --- bin-katalog (root -> /usr/local/bin, annars sudo, annars ~/.local/bin) ---
|
||||
PREFIX="${PREFIX:-/usr/local}"
|
||||
SUDO=""
|
||||
if [ "$(id -u)" = 0 ] || [ -w "$PREFIX/bin" ]; then
|
||||
BIN="$PREFIX/bin"
|
||||
elif command -v sudo >/dev/null 2>&1; then
|
||||
BIN="$PREFIX/bin"; SUDO=sudo
|
||||
else
|
||||
BIN="$HOME/.local/bin"; mkdir -p "$BIN"
|
||||
fi
|
||||
|
||||
echo "agent-helm: hämtar $ASSET ($TAG) -> $BIN/agent-helm"
|
||||
tmp=$(mktemp)
|
||||
curl -fSL "$URL" -o "$tmp"
|
||||
chmod +x "$tmp"
|
||||
$SUDO install -m 0755 "$tmp" "$BIN/agent-helm"
|
||||
rm -f "$tmp"
|
||||
|
||||
# --- config ---
|
||||
CFGDIR="$HOME/.config/agent-helm"
|
||||
CFG="$CFGDIR/config.env"
|
||||
mkdir -p "$CFGDIR"
|
||||
if [ ! -f "$CFG" ]; then
|
||||
cat > "$CFG" <<EOF
|
||||
# agent-helm klient-config
|
||||
AGENT_HELM_TOKEN=${AGENT_HELM_TOKEN:-}
|
||||
SERVER_URL=${AGENT_HELM_SERVER:-wss://rcai.brasse-pc.eu}
|
||||
AGENT_CMD=${AGENT_CMD:-gemini}
|
||||
# AGENT_CWD=/sökväg/till/projekt
|
||||
EOF
|
||||
chmod 600 "$CFG"
|
||||
echo "agent-helm: config skapad: $CFG"
|
||||
else
|
||||
echo "agent-helm: behåller befintlig config: $CFG"
|
||||
fi
|
||||
|
||||
# --- systemd user-service (valfri) ---
|
||||
UNITDIR="$HOME/.config/systemd/user"
|
||||
mkdir -p "$UNITDIR"
|
||||
cat > "$UNITDIR/agent-helm.service" <<EOF
|
||||
[Unit]
|
||||
Description=agent-helm klient (daemon)
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=$CFG
|
||||
ExecStart=$BIN/agent-helm
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
EOF
|
||||
|
||||
echo ""
|
||||
echo " ✓ installerad: $BIN/agent-helm (version $TAG, $ARCH)"
|
||||
case ":$PATH:" in *":$BIN:"*) ;; *) echo " ⚠ lägg till $BIN i din PATH";; esac
|
||||
echo ""
|
||||
echo " Nästa steg:"
|
||||
echo " 1) sätt token: \${EDITOR:-nano} $CFG"
|
||||
echo " 2a) kör direkt: set -a; . $CFG; agent-helm"
|
||||
echo " 2b) eller som tjänst: systemctl --user daemon-reload && systemctl --user enable --now agent-helm"
|
||||
Reference in New Issue
Block a user