From 3c54def0bb2637da6b0700d72defa3a3f838909b Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 28 Jun 2026 15:29:37 -0400 Subject: fix(ai-term): keep agent buffers alive through the kill-all sweep F1 (cj/dashboard-only) kills every other buffer, burying only those on the undead list. Agent buffers were never registered, so the sweep killed live agents and detached their sessions. Agent buffers are a dynamic family ("agent []") that an exact-name list can't pre-enumerate, so undead-buffers gains a regexp list (cj/undead-buffer-regexps) and a centralized cj/--buffer-undead-p predicate. Both kill paths route through it. ai-term registers the "agent [" pattern, so every agent -- current or future, however created -- is buried rather than killed. --- modules/ai-term.el | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'modules/ai-term.el') diff --git a/modules/ai-term.el b/modules/ai-term.el index ff240b9bf..6dfb669a9 100644 --- a/modules/ai-term.el +++ b/modules/ai-term.el @@ -30,6 +30,7 @@ (require 'keybindings) ;; provides cj/register-prefix-map (C-; a) (declare-function eat "eat" (&optional program arg)) +(declare-function cj/make-buffer-pattern-undead "undead-buffers") (defvar eat-buffer-name) (defvar eat-semi-char-mode-map) @@ -516,6 +517,12 @@ repeated capture/replay drifts the dock height a couple rows per cycle." (add-hook 'window-configuration-change-hook #'cj/--ai-term-track-geometry) +;; Agent buffers ("agent []") are buried, not killed, by the +;; kill-all sweep (F1 / `cj/dashboard-only'). Register the family pattern so +;; every agent -- however and whenever created -- survives with its session. +(with-eval-after-load 'undead-buffers + (cj/make-buffer-pattern-undead "\\`agent \\[")) + (defun cj/--ai-term-reuse-existing-agent (buffer _alist) "Display-buffer action: reuse any window in this frame already showing an agent buffer. -- cgit v1.2.3