yippie
This commit is contained in:
131
start.sh
Executable file
131
start.sh
Executable file
@@ -0,0 +1,131 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
|
||||
# --- Color Definitions ---
|
||||
CYAN='\033[96m'
|
||||
GREEN='\033[92m'
|
||||
YELLOW='\033[93m'
|
||||
RED='\033[91m'
|
||||
RESET='\033[0m'
|
||||
BOLD='\033[1m'
|
||||
|
||||
# --- Paths & Dependencies ---
|
||||
MODEL_DIR="./models"
|
||||
AGENT_DIR="./agents"
|
||||
LLAMA_SERVER="./core/llama.cpp/build/bin/llama-server"
|
||||
PYTHON_SCRIPT="./core/smarterframework.py"
|
||||
|
||||
echo -e "${CYAN}${BOLD}=== SmarterAgents Core Launch System ===${RESET}"
|
||||
|
||||
# Ensure local dev and log folders exist in workspace
|
||||
mkdir -p dev
|
||||
mkdir -p core/logs
|
||||
|
||||
# Verify core compilation target exists
|
||||
if [ ! -f "$LLAMA_SERVER" ]; then
|
||||
echo -e "${RED}[ERR] compiled 'llama-server' binary missing at '$LLAMA_SERVER'.${RESET}"
|
||||
echo -e "Please run cmake build inside core/llama.cpp as detailed in the README."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 1. Model Selection
|
||||
mapfile -t MODELS < <(find "$MODEL_DIR" -name "*.gguf" 2>/dev/null)
|
||||
if [ ${#MODELS[@]} -eq 0 ]; then
|
||||
echo -e "${RED}[ERR] No GGUF models discovered in '$MODEL_DIR'. Please copy a model there first.${RESET}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "\n${YELLOW}Discovered Models:${RESET}"
|
||||
for i in "${!MODELS[@]}"; do
|
||||
echo -e " [$i] $(basename "${MODELS[$i]}")"
|
||||
done
|
||||
read -rp "Select Model Index [0-$((${#MODELS[@]} - 1))]: " MODEL_IDX
|
||||
SELECTED_MODEL="${MODELS[$MODEL_IDX]}"
|
||||
|
||||
# 2. Agent Selection
|
||||
mapfile -t AGENTS < <(find "$AGENT_DIR" -name "*.md" 2>/dev/null)
|
||||
if [ ${#AGENTS[@]} -eq 0 ]; then
|
||||
echo -e "${RED}[ERR] No Markdown agents discovered in '$AGENT_DIR'.${RESET}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "\n${YELLOW}Discovered Agent Personas:${RESET}"
|
||||
for i in "${!AGENTS[@]}"; do
|
||||
echo -e " [$i] $(basename "${AGENTS[$i]}")"
|
||||
done
|
||||
read -rp "Select Agent Index [0-$((${#AGENTS[@]} - 1))]: " AGENT_IDX
|
||||
SELECTED_AGENT="${AGENTS[$AGENT_IDX]}"
|
||||
|
||||
# 3. Environment Variable Export for Python Orchestrator
|
||||
GRAMMAR_FILE=""
|
||||
for path in "tools/tool_rules.gbnf" "tools/tool_rules.gnbf" "agents/tools/tool_rules.gbnf" "agents/tools/tool_rules.gnbf"; do
|
||||
if [ -f "$path" ]; then
|
||||
GRAMMAR_FILE="$path"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "$GRAMMAR_FILE" ]; then
|
||||
export AMDA_GRAMMAR_FILE="$GRAMMAR_FILE"
|
||||
else
|
||||
export AMDA_GRAMMAR_FILE="tools/tool_rules.gbnf"
|
||||
fi
|
||||
|
||||
export AMDA_BACKEND_URL="http://127.0.0.1:8080"
|
||||
export AMDA_SYSTEM_PROMPT="$SELECTED_AGENT"
|
||||
|
||||
# 4. Vulkan Background Server Initialization
|
||||
PHYS_CORES=8
|
||||
|
||||
echo -e "\n${CYAN}[Init] Booting Vulkan llama-server daemon...${RESET}"
|
||||
echo -e "${DIM}Assigning 100% compute threads to $PHYS_CORES physical cores.${RESET}"
|
||||
|
||||
# Start llama-server and capture process PID
|
||||
"$LLAMA_SERVER" \
|
||||
--model "$SELECTED_MODEL" \
|
||||
--host "127.0.0.1" \
|
||||
--port "8080" \
|
||||
--ctx-size 16384 \
|
||||
--parallel 1 \
|
||||
--threads "$PHYS_CORES" \
|
||||
--batch-size 128 \
|
||||
--ubatch-size 64 \
|
||||
--no-mmap \
|
||||
-ngl 999 \
|
||||
-fa on \
|
||||
-ctk q8_0 \
|
||||
-ctv q8_0 \
|
||||
--jinja > core/logs/llama-server.log 2>&1 & # <-- Added --jinja here
|
||||
SERVER_PID=$!
|
||||
|
||||
# Safe Target-Specific cleanup (Only kill the llama-server child process)
|
||||
cleanup() {
|
||||
echo -e "\n${YELLOW}[Exit] Shutting down llama-server daemon... (PID: $SERVER_PID)${RESET}"
|
||||
kill -9 "$SERVER_PID" 2>/dev/null || true
|
||||
wait "$SERVER_PID" 2>/dev/null || true
|
||||
}
|
||||
trap cleanup EXIT INT TERM HUP
|
||||
|
||||
# 5. Health Check Diagnostics
|
||||
echo -e "${CYAN}[Health] Polling background loop for local endpoint availability...${RESET}"
|
||||
RETRIES=15
|
||||
CONNECTED=false
|
||||
for ((i=1; i<=RETRIES; i++)); do
|
||||
if curl -s -o /dev/null -w "%{http_code}" "$AMDA_BACKEND_URL/health" | grep -q "200"; then
|
||||
echo -e "${GREEN}[Ready] Local Vulkan compute engine activated successfully.${RESET}"
|
||||
CONNECTED=true
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
if [ "$CONNECTED" = false ]; then
|
||||
echo -e "${RED}[ERR] llama-server failed to activate within timeout period.${RESET}"
|
||||
echo -e "Diagnostics: Last 15 lines of core/logs/llama-server.log:"
|
||||
tail -n 15 core/logs/llama-server.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 6. Transfer Execution to Python TUI Engine
|
||||
echo -e "${CYAN}[Exec] Handoff control to asynchronous user interface...${RESET}\n"
|
||||
python3 "$PYTHON_SCRIPT"
|
||||
Reference in New Issue
Block a user