#!/usr/bin/env bash
# Instalador guiado del agente Linux MCP CCSM.
# Descargar desde el portal y ejecutar explícitamente con bash.
set -Eeuo pipefail

if ! command -v python3 >/dev/null 2>&1; then
  echo "Se necesita Python 3.9 o superior para instalar el agente." >&2
  exit 1
fi

workdir="$(mktemp -d)"
trap 'rm -rf -- "$workdir"' EXIT
cat > "$workdir/ccsm-agent.b64" <<'CCSM_PACKAGE_DATA'
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
BgAAAAAJAAkALgIAAGJAAAAAAA==
CCSM_PACKAGE_DATA

python3 - "$workdir" <<'PYTHON_EXTRACT'
import base64
import io
import json
import pathlib
import sys
import zipfile

directory = pathlib.Path(sys.argv[1])
archive = base64.b64decode((directory / 'ccsm-agent.b64').read_bytes())
expected = set(json.loads('["bridge_agent.py","ccsm-linux-bridge.service","config.example.json","install.sh","ccsm-pair","ccsm-root-ca.pem","README.md","LEEME-PRIMERO.txt","INSTALAR-AGENTE-LINUX.sh"]'))
with zipfile.ZipFile(io.BytesIO(archive)) as bundle:
    if set(bundle.namelist()) != expected:
        sys.exit('Paquete CCSM incompleto o no autorizado.')
    for name in expected:
        if pathlib.PurePath(name).name != name:
            sys.exit('Nombre de archivo no autorizado.')
        (directory / name).write_bytes(bundle.read(name))
PYTHON_EXTRACT

if [[ "$#" -gt 0 ]] && [[ "$1" == "--extract-only" ]]; then
  if [[ "$#" -lt 2 ]]; then
    echo "Uso: bash Instalar-Agente-CCSM-v0.2.4.sh --extract-only RUTA" >&2
    exit 2
  fi
  mkdir -p -- "$2"
  for name in bridge_agent.py ccsm-linux-bridge.service config.example.json install.sh ccsm-pair ccsm-root-ca.pem README.md LEEME-PRIMERO.txt INSTALAR-AGENTE-LINUX.sh; do
    cp -- "$workdir/$name" "$2/$name"
  done
  echo "Paquete extraído sin instalar en: $2"
  exit 0
fi

echo "MCP CCSM: iniciando el asistente de instalación..."
bash "$workdir/INSTALAR-AGENTE-LINUX.sh"
