Skip to content

Commit 79b9d5a

Browse files
author
Bruce Hauman
committed
Use extract-latest-tool-executions in pretty-print listener
- Add extract-latest-tool-executions that only gets most recent tool calls - Pretty-print listener now uses this to avoid showing historical executions - Session history still shows all executions inline using extract-tool-executions - Prevents duplication when resuming sessions while keeping real-time progress visible
1 parent ba92a25 commit 79b9d5a

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

src/clojure_mcp/prompt_cli.clj

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,25 @@
153153
;; Not an AI message with tools, continue
154154
(recur tail executions))))))
155155

156+
(defn extract-latest-tool-executions
157+
"Extract only the most recent tool request/result pairs from messages.
158+
Only returns executions if the last message is a TOOL_EXECUTION_RESULT.
159+
Returns vector of {:type :tool-execution :request <req> :result <res>}"
160+
[messages]
161+
(when (and (seq messages)
162+
(= "TOOL_EXECUTION_RESULT" (:type (last messages))))
163+
(let [reversed (reverse messages)
164+
results (take-while #(= "TOOL_EXECUTION_RESULT" (:type %)) reversed)
165+
ai-msg (first (drop-while #(= "TOOL_EXECUTION_RESULT" (:type %)) reversed))]
166+
(when (and ai-msg (= "AI" (:type ai-msg)))
167+
(let [requests (:toolExecutionRequests ai-msg)]
168+
(mapv (fn [req res]
169+
{:type :tool-execution
170+
:request req
171+
:result res})
172+
requests
173+
(reverse results)))))))
174+
156175
(defn print-tool-executions
157176
"Print formatted tool executions"
158177
[executions]
@@ -189,7 +208,7 @@
189208
(listener/create-listener
190209
{:on-request (fn [req]
191210
(when-let [messages (:messages req)]
192-
(when-let [executions (extract-tool-executions messages)]
211+
(when-let [executions (extract-latest-tool-executions messages)]
193212
(print-tool-executions executions))))
194213
:on-response (fn [resp]
195214
(when-let [ai-message (:ai-message resp)]

0 commit comments

Comments
 (0)