Skip to content

Commit c1deabc

Browse files
committed
Support accept and remember in tool calls
1 parent 7d5e956 commit c1deabc

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed

eca-chat.el

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,23 @@ Must be a positive integer."
483483
(propertize (funcall keybinding-for #'eca-chat-tool-call-accept-all)
484484
'font-lock-face 'eca-chat-tool-call-keybinding-face)
485485
(propertize "\n" 'font-lock-face 'eca-chat-tool-call-spacing-face)
486+
(eca-buttonize
487+
eca-chat-mode-map
488+
(propertize "Accept and remember"
489+
'eca-tool-call-pending-approval-accept-and-remember t
490+
'line-prefix spacing-line-prefix
491+
'font-lock-face 'eca-chat-tool-call-accept-and-remember-face)
492+
(lambda ()
493+
(eca-api-notify session
494+
:method "chat/toolCallApprove"
495+
:params (list :chatId eca-chat--id
496+
:save "session"
497+
:toolCallId id))))
498+
(propertize " for this session "
499+
'font-lock-face 'eca-chat-tool-call-approval-content-face)
500+
(propertize (funcall keybinding-for #'eca-chat-tool-call-accept-all-and-remember)
501+
'font-lock-face 'eca-chat-tool-call-keybinding-face)
502+
(propertize "\n" 'font-lock-face 'eca-chat-tool-call-spacing-face)
486503
(eca-buttonize
487504
eca-chat-mode-map
488505
(propertize "Reject"
@@ -1071,15 +1088,16 @@ If FORCE? decide to OPEN? or not."
10711088

10721089
(defun eca-chat--refresh-progress (session)
10731090
"Refresh the progress TEXT for SESSION."
1074-
(eca-chat--with-current-buffer (eca-chat--get-buffer session)
1075-
(save-excursion
1076-
(-some-> (eca-chat--prompt-progress-field-ov)
1077-
(overlay-start)
1078-
(goto-char))
1079-
(delete-region (point) (line-end-position))
1080-
(insert (propertize eca-chat--progress-text
1081-
'font-lock-face 'eca-chat-system-messages-face)
1082-
eca-chat--spinner-string))))
1091+
(when-let ((buffer (eca-chat--get-buffer session)))
1092+
(eca-chat--with-current-buffer buffer
1093+
(save-excursion
1094+
(-some-> (eca-chat--prompt-progress-field-ov)
1095+
(overlay-start)
1096+
(goto-char))
1097+
(delete-region (point) (line-end-position))
1098+
(insert (propertize eca-chat--progress-text
1099+
'font-lock-face 'eca-chat-system-messages-face)
1100+
eca-chat--spinner-string)))))
10831101

10841102
(defun eca-chat--refresh-context ()
10851103
"Refresh chat context."

eca-util.el

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,9 @@ Inheirits BASE-MAP."
192192
("m" "Select model" eca-chat-select-model)
193193
("b" "Change behavior" eca-chat-select-behavior)
194194
("o" "Open/close chat window" eca-chat-toggle-window)
195-
("a" "Accept next pending tool call" eca-chat-tool-call-accept-next)]
195+
("a" "Accept all pending tool calls" eca-chat-tool-call-accept-all)
196+
("s" "Accept all pending tool calls and remember" eca-chat-tool-call-accept-all-and-remember)
197+
("A" "Accept next pending tool call" eca-chat-tool-call-accept-next)]
196198

197199
["Navigation"
198200
("C" "Chat" eca)

0 commit comments

Comments
 (0)