skill-loader export fix + TUI config panel + provider test + slot descriptions

- Fix skill loader export: unintern before import (handle existing symbols)
- Add ignore-errors around export (handle package conflicts)
- Add test-provider-connection (live API key testing for TUI config)
- Add *slot-descriptions* with per-slot explanations for TUI config screen
- Rewrite gateway-tui with expanding minibuffer config panel (F2 toggle)
- Fix skill loader exclusion list: add system-model-router
- All org files updated with proper prose
This commit is contained in:
2026-05-04 10:26:50 -04:00
parent 908936d4d3
commit ef4ea1db1b
10 changed files with 657 additions and 719 deletions

View File

@@ -1,7 +1,7 @@
(in-package :passepartout)
(defvar *model-cascade-code* nil
"Cascade for :code tasks: ((:provider . \"model\") ...)")
"Cascade for :code tasks: ((:ollama . \"model\") ...)")
(defvar *model-cascade-plan* nil
"Cascade for :plan tasks.")
@@ -12,8 +12,8 @@
(defvar *model-cascade-background* nil
"Cascade for background tasks (heartbeat, delegation).")
(defvar *local-backends* nil
"Backend keywords considered local (privacy-safe). Set via LOCAL_BACKENDS env var.")
(defvar *local-backends* '(:ollama :llama-cpp)
"Backend keywords considered local (privacy-safe).")
(defun model-classify-complexity (text)
"Classify TEXT into :code, :plan, or :chat."
@@ -53,7 +53,7 @@ Returns model name or :skip."
;; Quadrant: background tasks use background cascade
(if (member sensor '(:heartbeat :delegation :tool-output :loop-error))
(let ((entry (car (or *model-cascade-background*
'((:openrouter . "meta-llama/llama-3.2-3b-instruct:free"))))))
'((:ollama . "phi-2"))))))
(cdr entry))
;; Foreground: classify complexity, use slot cascade
(let* ((slot (model-classify-complexity text))
@@ -62,7 +62,7 @@ Returns model name or :skip."
(:plan *model-cascade-plan*)
(t *model-cascade-chat*)))
(entry (model-cascade-find
(or cascade '((:openrouter . "meta-llama/llama-3.3-70b-instruct:free"))) backend)))
(or cascade '((:ollama . "qwen2.5:14b"))) backend)))
(if entry (cdr entry) nil)))))
(defun model-router-init ()
@@ -79,7 +79,7 @@ Returns model name or :skip."
(if env
(mapcar (lambda (s) (intern (string-upcase (string-trim " " s)) :keyword))
(uiop:split-string env :separator '(#\,)))
nil))))
'(:ollama :llama-cpp)))))
(setf *model-selector* #'model-select)
(log-message "MODEL-ROUTER: Initialized, selector=~a" *model-selector*))