68 lines
2.2 KiB
Org Mode
68 lines
2.2 KiB
Org Mode
#+TITLE: SKILL: Diagnostics (org-skill-diagnostics.org)
|
|
#+AUTHOR: Agent
|
|
#+FILETAGS: :system:diagnostics:doctor:
|
|
#+PROPERTY: header-args:lisp :tangle org-skill-diagnostics.lisp
|
|
|
|
* Overview
|
|
The *Diagnostics Skill* (Doctor) provides system-wide health checks and dependency verification.
|
|
|
|
* Implementation
|
|
|
|
** Package Context
|
|
#+begin_src lisp
|
|
(in-package :opencortex)
|
|
#+end_src
|
|
|
|
** Dependency Check (doctor-check-dependencies)
|
|
#+begin_src lisp
|
|
(defun doctor-check-dependencies ()
|
|
"Verifies that all required external binaries are available."
|
|
(let ((deps '("sbcl" "emacs" "git" "curl" "nc)
|
|
(all-ok t))
|
|
(format t "DOCTOR: Checking System Dependencies...~%
|
|
(dolist (dep deps)
|
|
(if (uiop:run-program (list "which" dep) :ignore-error-status t)
|
|
(format t " [OK] Found ~a~%" dep)
|
|
(progn
|
|
(format t " [FAIL] Missing ~a~%" dep)
|
|
(setf all-ok nil))))
|
|
all-ok))
|
|
#+end_src
|
|
|
|
** XDG Check (doctor-check-xdg)
|
|
#+begin_src lisp
|
|
(defun doctor-check-xdg ()
|
|
"Verifies XDG environment variables and directory structure."
|
|
(format t "DOCTOR: Checking XDG environment...~%
|
|
(let ((vars '("OC_CONFIG_DIR" "OC_DATA_DIR" "OC_STATE_DIR" "MEMEX_DIR))
|
|
(dolist (var vars)
|
|
(let ((val (uiop:getenv var)))
|
|
(if val
|
|
(format t " [OK] ~a: ~a~%" var val)
|
|
(format t " [WARN] ~a is not set.~%" var)))))
|
|
t)
|
|
#+end_src
|
|
|
|
** Main Diagnostic (doctor-main)
|
|
#+begin_src lisp
|
|
(defun doctor-main ()
|
|
"Runs all diagnostic checks."
|
|
(format t "==================================================~%
|
|
(format t " OpenCortex System Diagnostic~%
|
|
(format t "==================================================~%
|
|
(let ((d-ok (doctor-check-dependencies))
|
|
(x-ok (doctor-check-xdg)))
|
|
(format t "==================================================~%
|
|
(if (and d-ok x-ok)
|
|
(format t " ✓ SYSTEM HEALTHY: Ready for ignition.~%
|
|
(format t " ✗ SYSTEM UNHEALTHY: Issues detected.~%)))
|
|
#+end_src
|
|
|
|
** Skill Registration
|
|
#+begin_src lisp
|
|
(defskill :skill-diagnostics
|
|
:priority 100
|
|
:trigger (lambda (ctx) (eq (getf (getf ctx :payload) :sensor) :heartbeat))
|
|
:deterministic (lambda (action ctx) (declare (ignore action ctx)) nil))
|
|
#+end_src
|