refactor(setup): Implement strict command router to eliminate fallthrough bugs
Some checks failed
Deploy-Agent-V15-Stdin / JOB-V15-STDIN (push) Failing after 2s

This commit is contained in:
2026-04-19 11:47:44 -04:00
parent 6a23c23e89
commit eb33106771
2 changed files with 118 additions and 91 deletions

View File

@@ -162,52 +162,66 @@ setup_system() {
fi fi
} }
# --- 3. AUTO-SETUP --- # --- 3. COMMAND ROUTER ---
if [ ! -f "$SCRIPT_DIR/src/package.lisp" ] || [ ! -f "$SCRIPT_DIR/.env" ]; then # By default, if no arguments are provided, we assume the user wants the CLI fallback.
setup_system 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 fi
# --- 4. BOOT --- case "" in
if [[ "$1" == "--boot" ]]; then setup)
export SKILLS_DIR="${SCRIPT_DIR}/skills" setup_system
[ -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 --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
# --- 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
#+end_src #+end_src

View File

@@ -152,51 +152,64 @@ setup_system() {
fi fi
} }
# --- 3. AUTO-SETUP --- # --- 3. COMMAND ROUTER ---
if [ ! -f "$SCRIPT_DIR/src/package.lisp" ] || [ ! -f "$SCRIPT_DIR/.env" ]; then # By default, if no arguments are provided, we assume the user wants the CLI fallback.
setup_system 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 fi
# --- 4. BOOT --- case "" in
if [[ "$1" == "--boot" ]]; then setup)
export SKILLS_DIR="${SCRIPT_DIR}/skills" setup_system
[ -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 --boot|boot)
export SKILLS_DIR="/skills"
# --- 5. INTERACT --- [ -z "" ] && export MEMEX_DIR="/home/user/memex"
if [[ "$1" == "tui" ]]; then 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)'
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 & tui)
for i in {1..15}; do if ! nc -z 2>/dev/null; then
sleep 2 echo -e "Brain is offline. Awakening..."
if nc -z $HOST $PORT 2>/dev/null; then break; fi "/opencortex.sh" --boot > "/brain.log" 2>&1 &
echo -n "." for i in {1..15}; do
done sleep 2
echo "" if nc -z 2>/dev/null; then break; fi
fi echo -n "."
echo -e "${BLUE}Launching Croatoan TUI...${NC}" done
export SKILLS_DIR="${SCRIPT_DIR}/skills" echo ""
[ -z "$MEMEX_DIR" ] && export MEMEX_DIR="$HOME/memex" fi
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)' echo -e "Launching Croatoan TUI..."
fi export SKILLS_DIR="/skills"
[ -z "" ] && export MEMEX_DIR="/home/user/memex"
# --- 6. CLI FALLBACK --- 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)'
if [ -z "$1" ]; then ;;
if ! nc -z $HOST $PORT 2>/dev/null; then
echo -e "${YELLOW}Brain is offline. Awakening...${NC}" cli)
"$SCRIPT_DIR/opencortex.sh" --boot > "$SCRIPT_DIR/brain.log" 2>&1 & if ! nc -z 2>/dev/null; then
for i in {1..15}; do echo -e "Brain is offline. Awakening..."
sleep 2 "/opencortex.sh" --boot > "/brain.log" 2>&1 &
if nc -z $HOST $PORT 2>/dev/null; then break; fi for i in {1..15}; do
echo -n "." sleep 2
done if nc -z 2>/dev/null; then break; fi
echo "" echo -n "."
fi done
if command_exists socat; then echo ""
exec socat - TCP:$HOST:$PORT fi
else if command_exists socat; then
exec nc $HOST $PORT exec socat - TCP::
fi else
fi exec nc
fi
;;
*)
echo -e "Unknown command: "
echo "Available commands: setup, boot, tui, cli"
exit 1
;;
esac