Files
agent-helm/install.sh
Bjorn Blomberg 98c4d13360
All checks were successful
build-and-push / build (push) Successful in 22s
release-client / build-release (push) Successful in 48s
BeforeTool-hook + kort-vy (strukturerade godkännanden) + release på master-push
Feature: strukturerade verktygsgodkännanden
- shared: protokoll för approval (daemon:approval, server:approval[-resolved],
  web:approval-decision, server:approval-decision)
- daemon: hook-läge ('agent-helm hook' — samma binär), lokal 127.0.0.1-endpoint
  som hooken POST:ar till, long-poll tills beslut; graceful default (allow) när
  ingen UI; timeout-fallback; skickar AGENT_HELM_HOOK_PORT till agentens env
- server: routar daemon:approval -> prenumeranter, beslut -> daemon + döljer kort
- web: reaktiv approvals-lista + kort-overlay (Tillåt/Neka), mobilanpassad

CI:
- release.yaml triggar nu även på master-push -> rullande 'latest'-release
  (versionerade releaser kvar på v*-taggar); install.sh hämtar 'latest'

Docs: hook-konfig (gemini settings.json) + hook-env i .env.example + DEPLOY.md.
Säkerhet: hook-endpoint binder endast 127.0.0.1; inga hemligheter i repot.

Verifierat lokalt: hook->daemon->server->kort->beslut->hook ger {"decision":"allow"};
alla paket typecheckar; web bygger.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 18:03:12 +02:00

94 lines
2.8 KiB
Bash
Executable File

#!/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; }
# --- version: 'latest' (rullande master-bygge) om inget annat anges ---
TAG="${AGENT_HELM_VERSION:-latest}"
URL="$BASE/$OWNER/$REPO/releases/download/$TAG/$ASSET"
# --- bin-katalog: /usr/local/bin om root/skrivbar, annars ~/.local/bin (ingen sudo).
# För system-wide utan att vara root: curl -fsSL ... | sudo sh
PREFIX="${PREFIX:-/usr/local}"
if [ "$(id -u)" = 0 ] || { mkdir -p "$PREFIX/bin" 2>/dev/null && [ -w "$PREFIX/bin" ]; }; then
BIN="$PREFIX/bin"
else
BIN="$HOME/.local/bin"
fi
mkdir -p "$BIN"
echo "agent-helm: hämtar $ASSET ($TAG) -> $BIN/agent-helm"
tmp=$(mktemp)
curl -fSL "$URL" -o "$tmp"
chmod +x "$tmp"
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"