fix(mvp): Final TUI system definition, syntax fixes, and robust bootstrapper
Some checks failed
Deploy-Agent-V15-Stdin / JOB-V15-STDIN (push) Failing after 20s

This commit is contained in:
2026-04-17 17:49:27 -04:00
parent c889fe1cea
commit d4be2fcdc7
6 changed files with 38 additions and 31 deletions

View File

@@ -75,3 +75,12 @@ This system contains the empirical tests required by the Engineering Standards.
(uiop:symbol-call :fiveam :run! (uiop:find-symbol* :memory-suite :opencortex-memory-tests))
(uiop:symbol-call :fiveam :run! (uiop:find-symbol* :immune-suite :opencortex-immune-system-tests))))
#+end_src
** TUI Client Definition
This system defines the native Croatoan TUI client.
#+begin_src lisp :tangle ../opencortex.asd
(defsystem :opencortex/tui
:depends-on (:opencortex :croatoan :usocket :bordeaux-threads)
:components ((:file "src/tui-client")))
#+end_src

View File

@@ -115,7 +115,7 @@ setup_system() {
sbcl --non-interactive \
--eval "(load (merge-pathnames \"quicklisp/setup.lisp\" (user-homedir-pathname)))" \
--eval "(push (truename \"$SCRIPT_DIR/\") asdf:*central-registry*)" \
--eval "(ql:quickload :opencortex)"
--eval "(ql:quickload '(:opencortex :croatoan))"
if [ $? -ne 0 ]; then
echo -e "${RED}✗ Compilation or Loading failed.${NC}"
@@ -171,7 +171,7 @@ if [[ "$1" == "--boot" ]]; then
--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 \"$SCRIPT_DIR/\") asdf:*central-registry*)" \
--eval "(format t \"--- Quickloading OpenCortex ---~%\")" \
--eval "(ql:quickload :opencortex)" \
--eval "(ql:quickload '(:opencortex :croatoan))" \
--eval "(opencortex:main)"
fi
@@ -194,7 +194,7 @@ if [[ "$1" == "tui" ]]; then
exec sbcl --non-interactive \
--load ~/quicklisp/setup.lisp \
--eval "(push (truename \"$SCRIPT_DIR/\") asdf:*central-registry*)" \
--eval "(ql:quickload :opencortex/tui :silent t)" \
--eval "(ql:quickload '(:opencortex :croatoan)/tui :silent t)" \
--eval "(opencortex.tui:main)"
fi

View File

@@ -333,7 +333,7 @@ The `initialize-all-skills` function is the unified orchestrator for the system
'("org-skill-policy" "org-skill-bouncer"))))
(dolist (req mandatory-skills)
(unless (member req sorted-files :key #'pathname-name :test #'string-equal)
(error "BOOT FAILURE: Mandatory skill '~a' not found in skills directory: ~a" req (uiop:native-namestring skills-dir))))
(error "BOOT FAILURE: Mandatory skill '~a' not found in skills directory: ~a" req (uiop:native-namestring skills-dir)))
(harness-log "==================================================")
(harness-log " LOADER: Initializing ~a skills..." (length sorted-files))

View File

@@ -37,3 +37,7 @@
(uiop:symbol-call :fiveam :run! (uiop:find-symbol* :boot-suite :opencortex-boot-tests))
(uiop:symbol-call :fiveam :run! (uiop:find-symbol* :memory-suite :opencortex-memory-tests))
(uiop:symbol-call :fiveam :run! (uiop:find-symbol* :immune-suite :opencortex-immune-system-tests))))
(defsystem :opencortex/tui
:depends-on (:opencortex :croatoan :usocket :bordeaux-threads)
:components ((:file "src/tui-client")))

View File

@@ -106,7 +106,7 @@ setup_system() {
sbcl --non-interactive \
--eval "(load (merge-pathnames \"quicklisp/setup.lisp\" (user-homedir-pathname)))" \
--eval "(push (truename \"$SCRIPT_DIR/\") asdf:*central-registry*)" \
--eval "(ql:quickload :opencortex)"
--eval "(ql:quickload '(:opencortex :croatoan))"
if [ $? -ne 0 ]; then
echo -e "${RED}✗ Compilation or Loading failed.${NC}"
@@ -157,12 +157,12 @@ if [[ "$1" == "--boot" ]]; then
fi
done < "$SCRIPT_DIR/.env"
fi
exec sbcl --non-interactive \
exec sbcl --non-interactive \\
--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 \"$SCRIPT_DIR/\") asdf:*central-registry*)" \
--eval "(format t \"--- Quickloading OpenCortex ---~%\")" \
--eval "(ql:quickload :opencortex)" \
--eval "(ql:quickload '(:opencortex :croatoan))" \
--eval "(opencortex:main)"
fi
@@ -182,34 +182,28 @@ if [[ "$1" == "tui" ]]; then
# Launch TUI
echo -e "${BLUE}Launching Croatoan TUI...${NC}"
exec sbcl --non-interactive \
--load ~/quicklisp/setup.lisp \
exec sbcl --non-interactive \\
--eval "(load (merge-pathnames \"quicklisp/setup.lisp\" (user-homedir-pathname)))" \
--eval "(push (truename \"$SCRIPT_DIR/\") asdf:*central-registry*)" \
--eval "(ql:quickload :opencortex/tui :silent t)" \
--eval "(format t \"--- Loading TUI ---~%\")" --eval "(ql:quickload :opencortex/tui)" \
--eval "(opencortex.tui:main)"
fi
connect() {
if command_exists socat && socat - TCP:$HOST:$PORT,connect-timeout=1 2>/dev/null; then
socat - TCP:$HOST:$PORT
return 0
elif command_exists nc && nc -z $HOST $PORT 2>/dev/null; then
nc $HOST $PORT
return 0
fi
if nc -z $HOST $PORT 2>/dev/null; then return 0; fi
return 1
}
if connect; then exit 0; fi
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 connect; then exit 0; fi
echo -n "."
done
echo -e "${RED}\n✗ Failed to connect to brain.${NC}"
exit 1
if [ -z "$1" ]; then
if ! connect; 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 connect; then break; fi; echo -n "."; done; echo ""
fi
if connect; then
if command_exists socat; then exec socat - TCP:$HOST:$PORT; else exec nc $HOST $PORT; fi
else
echo -e "${RED}✗ Failed to connect to brain.${NC}"; exit 1
fi
fi

View File

@@ -205,7 +205,7 @@
'("org-skill-policy" "org-skill-bouncer"))))
(dolist (req mandatory-skills)
(unless (member req sorted-files :key #'pathname-name :test #'string-equal)
(error "BOOT FAILURE: Mandatory skill '~a' not found in skills directory: ~a" req (uiop:native-namestring skills-dir))))
(error "BOOT FAILURE: Mandatory skill '~a' not found in skills directory: ~a" req (uiop:native-namestring skills-dir)))
(harness-log "==================================================")
(harness-log " LOADER: Initializing ~a skills..." (length sorted-files))