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:
@@ -116,6 +116,33 @@ Providers register themselves at boot. No API key? That provider doesn't registe
|
||||
*provider-configs*))))))
|
||||
#+end_src
|
||||
|
||||
** Provider connection test (for TUI config)
|
||||
;; REPL-verified: 2026-05-04
|
||||
#+begin_src lisp
|
||||
(defun test-provider-connection (provider &optional api-key)
|
||||
"Test a provider API key by hitting its models endpoint.
|
||||
Returns (:ok) on success, (:fail reason) on failure.
|
||||
If API-KEY is nil, reads from environment."
|
||||
(let* ((config (provider-config provider))
|
||||
(base-url (getf config :base-url))
|
||||
(key-env (getf config :key-env))
|
||||
(url-env (getf config :url-env))
|
||||
(key (or api-key (when key-env (uiop:getenv key-env)))))
|
||||
(handler-case
|
||||
(let ((url (if url-env
|
||||
(let ((host (or (uiop:getenv url-env) "")))
|
||||
(format nil "http://~a/api/tags" host))
|
||||
(format nil "~a/models" (or base-url "")))))
|
||||
(if key-env
|
||||
(progn (dex:get url :headers `(("Authorization" . ,(format nil "Bearer ~a" key)))
|
||||
:connect-timeout 5 :read-timeout 10)
|
||||
'(:ok))
|
||||
(if url-env
|
||||
(progn (dex:get url :connect-timeout 5 :read-timeout 10) '(:ok))
|
||||
'(:fail "No URL source for this provider"))))
|
||||
(error (c) `(:fail ,(format nil "~a" c))))))
|
||||
#+end_src
|
||||
|
||||
** Boot registration
|
||||
#+begin_src lisp
|
||||
(provider-register-all)
|
||||
|
||||
Reference in New Issue
Block a user