#!/bin/bash
# artemistest — instaleaza agentul subtire Artemis pe macOS.
#
#   curl -fsSL http://vpn.katolab.ro:8088/artemistest.sh | bash
#
# Pe calculatorul asta raman doar: fereastra, uneltele care ating discul local si
# ecranul de aprobare. Bucla agentului, promptul, definitiile uneltelor, conversatiile,
# knowledge base-ul, cautarea web si SSH-ul stau pe serverul de AI.
#
# Legatura o deschide agentul catre server, deci NU trebuie deschis niciun port aici.
# Ruleaz-o din nou oricand ca sa actualizezi.
set -u

LAN="http://10.11.90.169"
NET="http://vpn.katolab.ro"

verde()  { printf "  \033[32m[ok]\033[0m   %s\n" "$1"; }
rosu()   { printf "  \033[31m[nu]\033[0m   %s\n" "$1"; }
info()   { printf "         \033[90m%s\033[0m\n" "$1"; }

printf "\033[36m== Artemis (agent subtire) — macOS ==\033[0m\n"

# ---- 1. de unde descarcam, si ce adrese raspund ----
SRV=""
for g in "$LAN:8088" "$NET:8088"; do
  if curl -fsS --max-time 6 -o /dev/null "$g/artemistest.sh" 2>/dev/null; then SRV="$g"; break; fi
done
if [ -z "$SRV" ]; then
  rosu "nu ajung la serverul de fisiere nici pe $LAN:8088, nici pe $NET:8088"
  info "esti pe VPN, sau merge redirectionarea de pe router?"
  exit 1
fi

active=0
for g in "$LAN:7788" "$NET:7788"; do
  if curl -fsS --max-time 6 "$g/sanatate" >/dev/null 2>&1; then
    verde "serverul Artemis raspunde la $g"; active=$((active+1))
  else
    info "nu ajung la $g"
  fi
done
[ "$active" -eq 0 ] && info "agentul se instaleaza oricum si se reconecteaza singur cand serverul revine."
info "descarc de la: $SRV"

# ---- 2. unde il punem ----
DEST="/Applications"
[ -w "$DEST" ] || DEST="$HOME/Applications"
mkdir -p "$DEST" || { rosu "nu pot scrie in $DEST"; exit 1; }

# ---- 3. descarcam si despachetam ----
TMP=$(mktemp -d) || exit 1
trap 'rm -rf "$TMP"' EXIT
if ! curl -fL --progress-bar --max-time 600 -o "$TMP/a.tgz" "$SRV/artemistest-mac.tar.gz"; then
  rosu "descarcarea a esuat"; exit 1
fi
tar xzf "$TMP/a.tgz" -C "$TMP" || { rosu "arhiva nu se despacheteaza"; exit 1; }
[ -d "$TMP/Artemis.app" ] || { rosu "arhiva nu contine Artemis.app"; exit 1; }

# daca ruleaza, il inchidem ca sa putem inlocui pachetul
pkill -x artemis 2>/dev/null && info "am inchis versiunea care rula"
sleep 1

rm -rf "$DEST/Artemis.app"
mv "$TMP/Artemis.app" "$DEST/Artemis.app" || { rosu "nu pot instala in $DEST"; exit 1; }

# Aplicatia e semnata local, nu de Apple. curl nu pune eticheta de carantina, dar daca
# arhiva a trecut prin browser ar pune-o si macOS ar refuza pornirea -- deci o scoatem.
xattr -dr com.apple.quarantine "$DEST/Artemis.app" 2>/dev/null
codesign --force --deep --sign - "$DEST/Artemis.app" >/dev/null 2>&1

MB=$(du -sm "$DEST/Artemis.app" | cut -f1)
verde "instalat: $DEST/Artemis.app (${MB} MB)"

# ---- 4. pornim ----
printf "\n"
verde "gata — pornesc Artemis"
info "pe calculatorul asta: fereastra + uneltele locale + aprobarile"
info "pe server: bucla, promptul, uneltele de retea, conversatiile, knowledge base"
info "niciun port deschis aici: agentul suna el serverul"
printf "\n"
info "aplicatia incearca intai adresa din retea, apoi cea publica, la fiecare"
info "reconectare — deci merge si de acasa, si de la birou, fara reinstalare."
printf "\n"
info "la prima pornire te conectezi cu contul tau. Conversatiile sunt criptate"
info "cu parola ta, deci nimeni altcineva nu le poate citi — dar nici tu daca"
info "pierzi parola, fiindca nu exista recuperare."
printf "\n"
open "$DEST/Artemis.app" 2>/dev/null || info "porneste-l din $DEST"
