From 18843d742160904b8340c675ee418fb361d66cd6 Mon Sep 17 00:00:00 2001 From: mptyl Date: Sun, 28 Jun 2026 14:45:07 +0200 Subject: [PATCH] =?UTF-8?q?chore:=20run-stack.sh=20=E2=80=94=20avvia=20i?= =?UTF-8?q?=203=20layer=20reali=20per=20validazione=20end-to-end?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- scripts/run-stack.sh | 67 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 scripts/run-stack.sh diff --git a/scripts/run-stack.sh b/scripts/run-stack.sh new file mode 100755 index 00000000..7987b656 --- /dev/null +++ b/scripts/run-stack.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +# run-stack.sh — avvia i 3 layer reali di ThothII per la validazione end-to-end. +# +# frontend (browser) → backend (Fastify :8787) → pi --mode rpc (GLM 5.2) → tht/harness → DWH +# +# 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). +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}" + +# --- 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; } + +# 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" \ + npm run dev +) & +pids+=($!) + +# Frontend: punta al backend reale. +( + cd "$FRONTEND" + VITE_BACKEND_URL="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