From 9707027a442a9c11d3a598a7f03d2ee76f34562e Mon Sep 17 00:00:00 2001 From: Amr Gharbeia Date: Tue, 28 Apr 2026 14:01:33 -0400 Subject: [PATCH] fix(harness): remove ellipsis placeholder and implement symbol exporting in skill loader --- harness/package.org | 100 +++++++++++++++++++++++++------------------- harness/skills.org | 20 +++++++++ 2 files changed, 78 insertions(+), 42 deletions(-) diff --git a/harness/package.org b/harness/package.org index dd1cdf5..0768042 100644 --- a/harness/package.org +++ b/harness/package.org @@ -120,6 +120,14 @@ The ~package.lisp~ file defines the public API of the ~opencortex~ harness. It s #:def-cognitive-tool #:*cognitive-tools* + ;; --- Engineering Standards Skill --- + #:verify-git-clean-p + + ;; --- Literate Programming Skill --- + #:literate-check-block-balance + #:check-tangle-sync + #:*tangle-targets* + ;; --- Emacs Edit Skill --- #:emacs-edit-read-file #:emacs-edit-write-file @@ -130,6 +138,8 @@ The ~package.lisp~ file defines the public API of the ~opencortex~ harness. It s #:emacs-edit-find-headline-by-title #:emacs-edit-generate-id #:emacs-edit-id-format + #:emacs-edit-ast-to-org + #:emacs-edit-modify ;; --- Lisp Utils Skill --- #:lisp-utils-validate @@ -138,6 +148,19 @@ The ~package.lisp~ file defines the public API of the ~opencortex~ harness. It s #:lisp-utils-check-semantic #:lisp-utils-register + ;; --- Config Manager & Diagnostics Skill --- + #:register-provider + #:save-providers + #:configure-provider + #:run-setup-wizard + #:get-oc-config-dir + #:prompt-for + #:save-secret + #:doctor-check-dependencies + #:doctor-check-xdg + #:doctor-check-llm + #:doctor-run-all + ;; --- Tool Permissions Skill --- #:get-tool-permission #:set-tool-permission @@ -271,54 +294,47 @@ Centralized logging function. It simultaneously writes to standard output and th #+end_src * Global Test Runner #+begin_src lisp :tangle (expand-file-name "run-all-tests.lisp" (concat (or (getenv "INSTALL_DIR") ".") "/harness")) -(load "~/quicklisp/setup.lisp") +(load (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname))) -(push #p"./" asdf:*central-registry*) +(let ((oc-dir (or (uiop:getenv "OC_DATA_DIR") + (namestring (truename "./"))))) + (push (uiop:ensure-directory-pathname oc-dir) asdf:*central-registry*)) -(ql:quickload '(:usocket :bordeaux-threads :cl-postgres :split-sequence - :dexador :jonathan :cl-dotenv :hunchentoot - :trivial-garbage :s-sql :str :uuid :cl-json :uiop :fiveam)) +(progn + (ql:quickload :opencortex :silent t) + (finish-output)) -(asdf:load-system :opencortex) -(asdf:load-system :opencortex/tests) +(format t "~%=== Initializing Skills BEFORE loading tests ===~%") +(finish-output) +(opencortex:initialize-all-skills) + +(format t "~%=== Loading Test System ===~%") +(finish-output) +(progn + (ql:quickload :opencortex/tests :silent t) + (finish-output)) (format t "~%=== Running ALL Test Suites ===~%") +(finish-output) -;; Engineering Standards tests -(when (find-package :OPENCORTEX-ENGINEERING-STANDARDS-TESTS) - (fiveam:run! 'OPENCORTEX-ENGINEERING-STANDARDS-TESTS::ENGINEERING-STANDARDS-SUITE)) - -;; Literate Programming tests -(when (find-package :OPENCORTEX-LITERATE-PROGRAMMING-TESTS) - (fiveam:run! 'OPENCORTEX-LITERATE-PROGRAMMING-TESTS::LITERATE-PROGRAMMING-SUITE)) - -;; Communication tests -(when (find-package :OPENCORTEX-COMMUNICATION-TESTS) - (fiveam:run! 'OPENCORTEX-COMMUNICATION-TESTS::COMMUNICATION-PROTOCOL-SUITE)) - -;; Pipeline tests -(when (find-package :OPENCORTEX-PIPELINE-TESTS) - (fiveam:run! 'OPENCORTEX-PIPELINE-TESTS::PIPELINE-SUITE)) - -;; Boot sequence tests -(when (find-package :OPENCORTEX-BOOT-TESTS) - (fiveam:run! 'OPENCORTEX-BOOT-TESTS::BOOT-SUITE)) - -;; Memory tests -(when (find-package :OPENCORTEX-MEMORY-TESTS) - (fiveam:run! 'OPENCORTEX-MEMORY-TESTS::MEMORY-SUITE)) - -;; Immune system tests -(when (find-package :OPENCORTEX-IMMUNE-SYSTEM-TESTS) - (fiveam:run! 'OPENCORTEX-IMMUNE-SYSTEM-TESTS::IMMUNE-SUITE)) - -;; Emacs edit tests -(when (find-package :OPENCORTEX-EMACS-EDIT-TESTS) - (fiveam:run! 'OPENCORTEX-EMACS-EDIT-TESTS::EMACS-EDIT-SUITE)) - -;; Lisp utils tests -(when (find-package :OPENCORTEX-LISP-UTILS-TESTS) - (fiveam:run! 'OPENCORTEX-LISP-UTILS-TESTS::LISP-UTILS-SUITE)) +(let ((suites '(("ENGINEERING-STANDARDS" . "OPENCORTEX-ENGINEERING-STANDARDS-TESTS::ENGINEERING-STANDARDS-SUITE") + ("LITERATE-PROGRAMMING" . "OPENCORTEX-LITERATE-PROGRAMMING-TESTS::LITERATE-PROGRAMMING-SUITE") + ("COMMUNICATION" . "OPENCORTEX-COMMUNICATION-TESTS::COMMUNICATION-PROTOCOL-SUITE") + ("PIPELINE" . "OPENCORTEX-PIPELINE-TESTS::PIPELINE-SUITE") + ("BOOT" . "OPENCORTEX-BOOT-TESTS::BOOT-SUITE") + ("MEMORY" . "OPENCORTEX-MEMORY-TESTS::MEMORY-SUITE") + ("IMMUNE" . "OPENCORTEX-IMMUNE-SYSTEM-TESTS::IMMUNE-SUITE") + ("EMACS-EDIT" . "OPENCORTEX-EMACS-EDIT-TESTS::EMACS-EDIT-SUITE") + ("LISP-UTILS" . "OPENCORTEX-LISP-UTILS-TESTS::LISP-UTILS-SUITE") + ("SELF-EDIT" . "OPENCORTEX-SELF-EDIT-TESTS::SELF-EDIT-SUITE") + ("TOOL-PERMISSIONS" . "OPENCORTEX-TOOL-PERMISSIONS-TESTS::TOOL-PERMISSIONS-SUITE") + ("CONFIG" . "OPENCORTEX-CONFIG-MANAGER-TESTS::CONFIG-SUITE") + ("DIAGNOSTICS" . "OPENCORTEX-DIAGNOSTICS-TESTS::DIAGNOSTICS-SUITE")))) + (dolist (suite suites) + (let ((pkg (intern (string-upcase (car (uiop:split-string (cdr suite) :separator "::"))) :keyword))) + (when (find-package pkg) + (format t "~&--- Suite: ~A ---~%" (car suite)) + (fiveam:run! (uiop:safe-read-from-string (cdr suite))))))) (format t "~%=== ALL TESTS COMPLETE ===~%") #+end_src diff --git a/harness/skills.org b/harness/skills.org index 61e8cbf..05bd551 100644 --- a/harness/skills.org +++ b/harness/skills.org @@ -296,6 +296,26 @@ Only loads blocks that specify a .lisp tangle target, ignoring tests and example (use-package :opencortex new-pkg))) (let ((*read-eval* nil) (*package* (find-package pkg-name))) (eval (read-from-string (format nil "(progn ~a)" lisp-code)))) + + ;; Export symbols back to :OPENCORTEX for discoverability and testing + (let* ((target-pkg (find-package :opencortex)) + (raw-name (string-upcase skill-base-name)) + (short-name (if (uiop:string-prefix-p "ORG-SKILL-" raw-name) + (subseq raw-name 10) + raw-name))) + (do-symbols (sym (find-package pkg-name)) + (when (eq (symbol-package sym) (find-package pkg-name)) + (let ((sn (symbol-name sym))) + (when (or (uiop:string-prefix-p raw-name sn) + (uiop:string-prefix-p short-name sn)) + (harness-log "LOADER: Exporting ~a to :OPENCORTEX" sn) + ;; Resolve potential name conflicts by uninterning first + (let ((existing (find-symbol sn target-pkg))) + (when (and existing (not (eq existing sym))) + (unintern existing target-pkg))) + (import sym target-pkg) + (export sym target-pkg)))))) + (setf (skill-entry-status entry) :ready) t))) (error (c)