refactor: remove portal deployment coupling
This commit is contained in:
+12
-60
@@ -1,68 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
# run-stack.sh — avvia i 3 layer reali di ThothII per la validazione end-to-end.
|
||||
# run-stack.sh — avvia lo stack Compose locale di ThothII in primo piano.
|
||||
#
|
||||
# frontend (browser) → backend (Fastify :8787) → pi --mode rpc (GLM 5.2) → tht/harness → DWH
|
||||
# Il core include Pi; DWH, vector DB, embedding e LLM sono endpoint esterni configurati
|
||||
# in deploy/env/local.env. Non richiede un eseguibile Pi sull'host.
|
||||
#
|
||||
# Prerequisiti: VPN attiva, `pi` su PATH (GLM 5.2 configurato), harness/.env popolato,
|
||||
# harness/config/tht.yaml -> workspace cliente, deps installate nei 3 progetti.
|
||||
#
|
||||
# Uso: ./scripts/run-stack.sh
|
||||
# Stop: Ctrl-C (termina backend + frontend; i processi pi figli del backend muoiono con esso).
|
||||
# Preparazione: cp deploy/env/local.env.example deploy/env/local.env e compilare i valori.
|
||||
# Uso: ./scripts/run-stack.sh [argomenti aggiuntivi per docker compose up]
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)"
|
||||
HARNESS="$ROOT/harness"
|
||||
BACKEND="$ROOT/backend"
|
||||
FRONTEND="$ROOT/frontend"
|
||||
THT_BIN="$HARNESS/.venv/bin/tht"
|
||||
BACKEND_PORT="${BACKEND_PORT:-8787}"
|
||||
FRONTEND_PORT="${FRONTEND_PORT:-5173}"
|
||||
LOCAL_ENV_FILE="${THT_LOCAL_ENV_FILE:-$ROOT/deploy/env/local.env}"
|
||||
|
||||
# --- preflight ---------------------------------------------------------------
|
||||
[ -f "$HARNESS/.env" ] || { echo "ERRORE: $HARNESS/.env mancante (credenziali DWH/vector)"; exit 1; }
|
||||
[ -x "$THT_BIN" ] || { echo "ERRORE: $THT_BIN non trovato (esegui: cd harness && python -m venv .venv && pip install -e .)"; exit 1; }
|
||||
command -v pi >/dev/null || { echo "ERRORE: 'pi' non sul PATH (configura @earendil-works/pi-coding-agent con GLM 5.2)"; exit 1; }
|
||||
[ -e "$HARNESS/config/tht.yaml" ] || { echo "ERRORE: $HARNESS/config/tht.yaml mancante (symlink al workspace)"; exit 1; }
|
||||
[[ -f "$LOCAL_ENV_FILE" ]] || {
|
||||
echo "ERRORE: $LOCAL_ENV_FILE mancante. Copia deploy/env/local.env.example e configura gli endpoint." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Carica le variabili del DWH/vector nell'ambiente: il backend le passa a pi e a tht.
|
||||
set -a; . "$HARNESS/.env"; set +a
|
||||
|
||||
# tht deve essere raggiungibile dal processo pi che il backend spawna.
|
||||
export PATH="$HARNESS/.venv/bin:$PATH"
|
||||
|
||||
echo "== ThothII stack =="
|
||||
echo " harness : $HARNESS (tht: $THT_BIN)"
|
||||
echo " backend : http://localhost:$BACKEND_PORT"
|
||||
echo " frontend: http://localhost:$FRONTEND_PORT"
|
||||
echo " pi : $(command -v pi)"
|
||||
echo
|
||||
|
||||
# --- avvio -------------------------------------------------------------------
|
||||
pids=()
|
||||
cleanup() { echo; echo "Arresto stack..."; for p in "${pids[@]}"; do kill "$p" 2>/dev/null || true; done; }
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
# Backend: usa il pi reale + il tht del venv, cwd harness per lo spawn di pi.
|
||||
(
|
||||
cd "$BACKEND"
|
||||
PORT="$BACKEND_PORT" \
|
||||
THT_HARNESS_DIR="$HARNESS" \
|
||||
THT_BIN="$THT_BIN" \
|
||||
PI_BIN="pi" \
|
||||
AUTH_MODE="none" \
|
||||
THT_DWH_PRECHECK="1" \
|
||||
npm run dev
|
||||
) &
|
||||
pids+=($!)
|
||||
|
||||
# Frontend: il browser usa sempre /api; Vite lo inoltra al backend locale.
|
||||
(
|
||||
cd "$FRONTEND"
|
||||
THT_FRONTEND_API_UPSTREAM="http://localhost:$BACKEND_PORT" \
|
||||
npm run dev -- --port "$FRONTEND_PORT"
|
||||
) &
|
||||
pids+=($!)
|
||||
|
||||
echo "Stack avviato. Apri http://localhost:$FRONTEND_PORT e crea una nuova domanda."
|
||||
echo "Ctrl-C per fermare."
|
||||
wait
|
||||
exec docker compose --env-file "$LOCAL_ENV_FILE" \
|
||||
-f "$ROOT/compose.yaml" -f "$ROOT/deploy/compose.local.yaml" up --build "$@"
|
||||
|
||||
Reference in New Issue
Block a user