Function: gptel--inspect-fsm
gptel--inspect-fsm is a natively compiled function defined in
gptel.el.
Signature
(gptel--inspect-fsm &optional FSM)
Documentation
Inspect gptel request state FSM.
FSM defaults to the state of the last request in the current buffer.
Source Code
;; Defined in /nix/store/q3r7g81pvghw7a523kjk2k2zih3pfk8z-emacs-packages-deps/share/emacs/site-lisp/elpa/gptel-20261002.545/gptel.el
(defun gptel--inspect-fsm (&optional fsm)
"Inspect gptel request state FSM.
FSM defaults to the state of the last request in the current
buffer."
(unless fsm
(setq fsm (or gptel--fsm-last
(cadr (cl-find-if
(lambda (proc-list)
(eq (thread-first (cadr proc-list)
(gptel-fsm-info)
(plist-get :buffer))
(current-buffer)))
gptel--request-alist)))))
(unless (cl-typep fsm 'gptel-fsm)
(user-error "No gptel request log in this buffer yet!"))
(require 'tabulated-list)
(with-current-buffer (get-buffer-create "*gptel-diagnostic*")
(setq tabulated-list-format [("Request attribute" 30 t) ("Value" 30)])
(let* ((pb (lambda (s) (propertize s 'face 'font-lock-builtin-face)))
(ps (lambda (s) (propertize s 'face 'font-lock-string-face)))
(fmt (lambda (s) (cond ((memq (car-safe s) '(closure lambda))
(format "#<lambda %#x>" (sxhash s)))
((byte-code-function-p s)
(format "#<compiled %#x>" (sxhash s)))
((stringp s) (string-replace "\n" "⮐ " s))
(t (prin1-to-string s)))))
(inhibit-read-only t)
(info (gptel-fsm-info fsm))
(entries-info
(cl-loop
for idx upfrom 3
for (key val) on info by #'cddr
unless (memq key '(:data :history :tools
:partial_text :partial_json))
collect
(list idx `[,(funcall pb (symbol-name key))
,(funcall ps (funcall fmt val))])))
(entries-data
(cl-loop
for idx upfrom 50
for (key val) on (plist-get info :data) by #'cddr
unless (memq key '(:messages :stream :contents :query))
collect
(list idx `[,(funcall pb (symbol-name key))
,(funcall ps (funcall fmt val))]))))
(setq tabulated-list-entries
(nconc (list `(2 [,(funcall pb ":state")
,(funcall ps
(mapconcat
fmt (reverse (cons (gptel-fsm-state fsm)
(plist-get info :history)))
" → "))]))
entries-info
entries-data))
(tabulated-list-print)
(tabulated-list-mode)
(tabulated-list-init-header)
(hl-line-mode 1)
(display-buffer
(current-buffer)
'((display-buffer-in-side-window)
(side . bottom)
(window-height . fit-window-to-buffer)
(slot . 10)
(body-function . select-window))))))