refactor(setup): Implement strict command router to eliminate fallthrough bugs
Some checks failed
Deploy-Agent-V15-Stdin / JOB-V15-STDIN (push) Failing after 2s
Some checks failed
Deploy-Agent-V15-Stdin / JOB-V15-STDIN (push) Failing after 2s
This commit is contained in:
105
opencortex.sh
105
opencortex.sh
@@ -152,51 +152,64 @@ setup_system() {
|
||||
fi
|
||||
}
|
||||
|
||||
# --- 3. AUTO-SETUP ---
|
||||
if [ ! -f "$SCRIPT_DIR/src/package.lisp" ] || [ ! -f "$SCRIPT_DIR/.env" ]; then
|
||||
setup_system
|
||||
# --- 3. COMMAND ROUTER ---
|
||||
# By default, if no arguments are provided, we assume the user wants the CLI fallback.
|
||||
COMMAND="cli"
|
||||
|
||||
# However, if the system is completely uninitialized, we force the 'setup' command.
|
||||
if [ ! -f "/src/package.lisp" ] || [ ! -f "/.env" ]; then
|
||||
COMMAND="setup"
|
||||
fi
|
||||
|
||||
# --- 4. BOOT ---
|
||||
if [[ "$1" == "--boot" ]]; then
|
||||
export SKILLS_DIR="${SCRIPT_DIR}/skills"
|
||||
[ -z "$MEMEX_DIR" ] && export MEMEX_DIR="$HOME/memex"
|
||||
exec sbcl --eval '(load (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))' --eval '(setf *debugger-hook* (lambda (c h) (declare (ignore h)) (format *error-output* "FATAL LISP ERROR: ~a~%" c) (uiop:print-backtrace :stream *error-output*) (uiop:quit 1)))' --eval '(push (truename (uiop:getenv "SCRIPT_DIR")) asdf:*central-registry*)' --eval '(format t "--- Quickloading OpenCortex ---~%")' --eval "(ql:quickload '(:opencortex :croatoan))" --eval '(opencortex:main)'
|
||||
fi
|
||||
|
||||
# --- 5. INTERACT ---
|
||||
if [[ "$1" == "tui" ]]; then
|
||||
if ! nc -z $HOST $PORT 2>/dev/null; then
|
||||
echo -e "${YELLOW}Brain is offline. Awakening...${NC}"
|
||||
"$SCRIPT_DIR/opencortex.sh" --boot > "$SCRIPT_DIR/brain.log" 2>&1 &
|
||||
for i in {1..15}; do
|
||||
sleep 2
|
||||
if nc -z $HOST $PORT 2>/dev/null; then break; fi
|
||||
echo -n "."
|
||||
done
|
||||
echo ""
|
||||
fi
|
||||
echo -e "${BLUE}Launching Croatoan TUI...${NC}"
|
||||
export SKILLS_DIR="${SCRIPT_DIR}/skills"
|
||||
[ -z "$MEMEX_DIR" ] && export MEMEX_DIR="$HOME/memex"
|
||||
exec sbcl --eval '(load (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))' --eval '(push (truename (uiop:getenv "SCRIPT_DIR")) asdf:*central-registry*)' --eval '(ql:quickload :opencortex/tui)' --eval '(opencortex.tui:main)'
|
||||
fi
|
||||
|
||||
# --- 6. CLI FALLBACK ---
|
||||
if [ -z "$1" ]; then
|
||||
if ! nc -z $HOST $PORT 2>/dev/null; then
|
||||
echo -e "${YELLOW}Brain is offline. Awakening...${NC}"
|
||||
"$SCRIPT_DIR/opencortex.sh" --boot > "$SCRIPT_DIR/brain.log" 2>&1 &
|
||||
for i in {1..15}; do
|
||||
sleep 2
|
||||
if nc -z $HOST $PORT 2>/dev/null; then break; fi
|
||||
echo -n "."
|
||||
done
|
||||
echo ""
|
||||
fi
|
||||
if command_exists socat; then
|
||||
exec socat - TCP:$HOST:$PORT
|
||||
else
|
||||
exec nc $HOST $PORT
|
||||
fi
|
||||
fi
|
||||
case "" in
|
||||
setup)
|
||||
setup_system
|
||||
;;
|
||||
|
||||
--boot|boot)
|
||||
export SKILLS_DIR="/skills"
|
||||
[ -z "" ] && export MEMEX_DIR="/home/user/memex"
|
||||
exec sbcl --eval '(load (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))' --eval '(setf *debugger-hook* (lambda (c h) (declare (ignore h)) (format *error-output* "FATAL LISP ERROR: ~a~%" c) (uiop:print-backtrace :stream *error-output*) (uiop:quit 1)))' --eval '(push (truename (uiop:getenv "SCRIPT_DIR")) asdf:*central-registry*)' --eval '(format t "--- Quickloading OpenCortex ---~%")' --eval "(ql:quickload '(:opencortex :croatoan))" --eval '(opencortex:main)'
|
||||
;;
|
||||
|
||||
tui)
|
||||
if ! nc -z 2>/dev/null; then
|
||||
echo -e "Brain is offline. Awakening..."
|
||||
"/opencortex.sh" --boot > "/brain.log" 2>&1 &
|
||||
for i in {1..15}; do
|
||||
sleep 2
|
||||
if nc -z 2>/dev/null; then break; fi
|
||||
echo -n "."
|
||||
done
|
||||
echo ""
|
||||
fi
|
||||
echo -e "Launching Croatoan TUI..."
|
||||
export SKILLS_DIR="/skills"
|
||||
[ -z "" ] && export MEMEX_DIR="/home/user/memex"
|
||||
exec sbcl --eval '(load (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))' --eval '(push (truename (uiop:getenv "SCRIPT_DIR")) asdf:*central-registry*)' --eval '(ql:quickload :opencortex/tui)' --eval '(opencortex.tui:main)'
|
||||
;;
|
||||
|
||||
cli)
|
||||
if ! nc -z 2>/dev/null; then
|
||||
echo -e "Brain is offline. Awakening..."
|
||||
"/opencortex.sh" --boot > "/brain.log" 2>&1 &
|
||||
for i in {1..15}; do
|
||||
sleep 2
|
||||
if nc -z 2>/dev/null; then break; fi
|
||||
echo -n "."
|
||||
done
|
||||
echo ""
|
||||
fi
|
||||
if command_exists socat; then
|
||||
exec socat - TCP::
|
||||
else
|
||||
exec nc
|
||||
fi
|
||||
;;
|
||||
|
||||
*)
|
||||
echo -e "Unknown command: "
|
||||
echo "Available commands: setup, boot, tui, cli"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user