Rama de desarrollo experimental sobre el Oasis de epsylon, sin afiliacion con el proyecto original. Base: 0.9.5. Trae el modulo Karvan —salas efimeras en memoria con autodestruccion por TTL, chat que funciona sin JavaScript y llamadas de audio y video sobre WebRTC— con el enlace en el menu lateral por el mismo patron que el resto de modulos: renderKarvanLink calcado de renderPollsLink, entrada en modules_view y en la lista de /modules. Los estilos del modulo van en su propia hoja, styles/karvan.css, siguiendo el patron de highlight.css: asi se ve igual con cualquier tema, sin depender del tema movil. Sin servidores ICE de terceros: no hay STUN de fabrica, porque un STUN aprende la IP publica y el momento de cada llamada. Solo candidatos host salvo que se configure un TURN propio en oasis-config.json, con credenciales efimeras por el mecanismo REST de coturn. El codigo propio vive separado —views/fork/, backend/fork_routes.js, models/karvan_model.js y translations/fork/— de modo que sobre los ficheros de upstream solo hay enganches de una linea y cada version nueva se integra sin arrastrar nada. Respecto al arbol de Android: fuera el wrapper y main.js, que es su arranque; el tema vuelve a Dark-SNH y se restauran los modulos que en movil se recortan por peso. Verificado arrancando sin OASIS_MOBILE: nueve rutas OK, menu lateral de upstream con 27 grupos y el enlace de Karvan, cero rastro de la interfaz movil (ni hexagonos, ni topbar, ni barra inferior), y una sala creada y servida.
128 lines
3.2 KiB
Bash
128 lines
3.2 KiB
Bash
#!/bin/bash
|
|
|
|
cd src/server
|
|
|
|
printf "==========================\n"
|
|
printf "|| OASIS Installer v0.5 ||\n"
|
|
printf "==========================\n"
|
|
|
|
sudo apt-get install -y git curl tar
|
|
|
|
curl -sL http://deb.nodesource.com/setup_22.x | sudo bash -
|
|
sudo apt-get install -y nodejs
|
|
|
|
GREEN=$'\e[32m'
|
|
DIM=$'\e[2m'
|
|
RESET=$'\e[0m'
|
|
|
|
echo ""
|
|
echo "Installing Node.js packages..."
|
|
echo ""
|
|
|
|
NPM_LOG=$(mktemp)
|
|
if ! npm install . --silent --no-audit --no-fund --no-progress --loglevel=error >"$NPM_LOG" 2>&1; then
|
|
echo "npm install failed. Output:"
|
|
cat "$NPM_LOG"
|
|
rm -f "$NPM_LOG"
|
|
exit 1
|
|
fi
|
|
rm -f "$NPM_LOG"
|
|
|
|
DEPS=$(node -e "const p=require('./package.json'); console.log(Object.keys({...(p.dependencies||{}), ...(p.devDependencies||{})}).sort().join('\n'))" 2>/dev/null)
|
|
for dep in $DEPS; do
|
|
if [ -d "node_modules/$dep" ]; then
|
|
printf " ${GREEN}[✓]${RESET} %s\n" "$dep"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
|
|
npm audit fix --silent --no-fund --no-progress >/dev/null 2>&1 || true
|
|
|
|
MODEL_DIR="../AI"
|
|
LLM_FILE="oasis-42-1-chat.Q4_K_M.gguf"
|
|
LLM_TAR="$LLM_FILE.tar.gz"
|
|
LLM_URL="https://solarnethub.com/code/models/$LLM_TAR"
|
|
EMB_DIR="$MODEL_DIR/embeddings"
|
|
EMB_TAR="oasis-embeddings.tar.gz"
|
|
EMB_URL="https://solarnethub.com/code/models/$EMB_TAR"
|
|
EMB_FILE="$EMB_DIR/onnx/model_quantized.onnx"
|
|
CONFIG_PATH="../configs/oasis-config.json"
|
|
|
|
CHOICE="${OASIS_AI:-}"
|
|
|
|
if [ -z "$CHOICE" ] && [ -t 0 ]; then
|
|
echo ""
|
|
echo "Do you want to enable AI features in Oasis?"
|
|
echo ""
|
|
echo " [1] Full AI: chat assistant (42) + smart navigation prompt (~3.9 GB)"
|
|
echo " [2] Smart navigation only (~150 MB)"
|
|
echo " [3] No AI features (no downloads, AI tabs hidden)"
|
|
echo ""
|
|
read -p "Choose [1/2/3] (default 3): " ANS
|
|
case "$ANS" in
|
|
1) CHOICE="full" ;;
|
|
2) CHOICE="nav" ;;
|
|
*) CHOICE="none" ;;
|
|
esac
|
|
fi
|
|
|
|
if [ -z "$CHOICE" ]; then
|
|
CHOICE="none"
|
|
fi
|
|
|
|
case "$CHOICE" in
|
|
full)
|
|
WANT_LLM=1
|
|
WANT_EMB=1
|
|
;;
|
|
nav)
|
|
WANT_LLM=0
|
|
WANT_EMB=1
|
|
;;
|
|
*)
|
|
WANT_LLM=0
|
|
WANT_EMB=0
|
|
;;
|
|
esac
|
|
|
|
if [ "$WANT_LLM" = "1" ] && [ ! -f "$MODEL_DIR/$LLM_FILE" ]; then
|
|
echo ""
|
|
echo "downloading AI model [size: 3,8 GiB (4.081.004.224 bytes)] ..."
|
|
curl -L -o "$MODEL_DIR/$LLM_TAR" "$LLM_URL"
|
|
echo ""
|
|
echo "extracting package: $LLM_TAR..."
|
|
echo ""
|
|
tar -xzf "$MODEL_DIR/$LLM_TAR" -C "$MODEL_DIR"
|
|
rm "$MODEL_DIR/$LLM_TAR"
|
|
fi
|
|
|
|
if [ "$WANT_EMB" = "1" ] && [ ! -f "$EMB_FILE" ]; then
|
|
echo ""
|
|
echo "downloading embeddings model [size: ~60 MiB] ..."
|
|
curl -L -o "$MODEL_DIR/$EMB_TAR" "$EMB_URL"
|
|
echo ""
|
|
echo "extracting package: $EMB_TAR..."
|
|
echo ""
|
|
tar -xzf "$MODEL_DIR/$EMB_TAR" -C "$MODEL_DIR"
|
|
rm "$MODEL_DIR/$EMB_TAR"
|
|
fi
|
|
|
|
if [ -f "$CONFIG_PATH" ]; then
|
|
AI_VAL="off"; NAV_VAL="off"
|
|
[ "$WANT_LLM" = "1" ] && AI_VAL="on"
|
|
[ "$WANT_EMB" = "1" ] && NAV_VAL="on"
|
|
node -e "
|
|
const fs = require('fs');
|
|
const p = '$CONFIG_PATH';
|
|
const cfg = JSON.parse(fs.readFileSync(p, 'utf8'));
|
|
cfg.modules = cfg.modules || {};
|
|
cfg.modules.aiMod = '$AI_VAL';
|
|
cfg.modules.aiNavMod = '$NAV_VAL';
|
|
fs.writeFileSync(p, JSON.stringify(cfg, null, 2) + '\n');
|
|
"
|
|
fi
|
|
|
|
printf "==========================\n"
|
|
printf "\nOASIS has been correctly deployed! ;)\n\n"
|
|
printf "Run: 'sh oasis.sh' to start ...\n\n"
|