-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathinstall.sh
More file actions
128 lines (109 loc) · 3.24 KB
/
Copy pathinstall.sh
File metadata and controls
128 lines (109 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/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"