Skip to content

Commit 20d261f

Browse files
committed
Merged master
2 parents 7473ce8 + 88bad56 commit 20d261f

File tree

5 files changed

+60
-7
lines changed

5 files changed

+60
-7
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
- Added ability to cancel tool calls. Only the shell tool
66
currently. #145
77

8+
## 0.64.0
9+
10+
- Add `server` to tool call messages.
11+
812
## 0.63.3
913

1014
- Fix last word going after tool call for openai-chat API.

docs/protocol.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,11 @@ interface ChatToolCallPrepareContent {
673673
*/
674674
name: string;
675675

676+
/**
677+
* Server name of this tool
678+
*/
679+
server: string;
680+
676681
/*
677682
* Argument text of this tool call
678683
*/
@@ -709,6 +714,11 @@ interface ChatToolCallRunContent {
709714
*/
710715
name: string;
711716

717+
/**
718+
* Server name of this tool
719+
*/
720+
server: string;
721+
712722
/*
713723
* Arguments of this tool call
714724
*/
@@ -750,6 +760,11 @@ interface ChatToolCallRunningContent {
750760
*/
751761
name: string;
752762

763+
/**
764+
* Server name of this tool
765+
*/
766+
server: string;
767+
753768
/*
754769
* Arguments of this tool call
755770
*/
@@ -786,6 +801,11 @@ interface ChatToolCalledContent {
786801
*/
787802
name: string;
788803

804+
/**
805+
* Server name of this tool
806+
*/
807+
server: string;
808+
789809
/*
790810
* Arguments of this tool call
791811
*/
@@ -847,6 +867,11 @@ interface ChatToolCallRejectedContent {
847867
*/
848868
name: string;
849869

870+
/**
871+
* Server name of this tool
872+
*/
873+
server: string;
874+
850875
/*
851876
* Arguments of this tool call
852877
*/

resources/ECA_VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.63.3
1+
0.64.0

src/eca/features/chat.clj

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@
241241
{:type :toolCallPrepare
242242
:id tool-call-id
243243
:name (:name event-data)
244+
:server (:server event-data)
244245
:origin (:origin event-data)
245246
:arguments-text (:arguments-text event-data)}
246247
:summary (:summary event-data)))
@@ -251,6 +252,7 @@
251252
{:type :toolCallRun
252253
:id tool-call-id
253254
:name (:name event-data)
255+
:server (:server event-data)
254256
:origin (:origin event-data)
255257
:arguments (:arguments event-data)
256258
:manual-approval (:manual-approval event-data)}
@@ -263,6 +265,7 @@
263265
{:type :toolCallRunning
264266
:id tool-call-id
265267
:name (:name event-data)
268+
:server (:server event-data)
266269
:origin (:origin event-data)
267270
:arguments (:arguments event-data)}
268271
:details (:details event-data)
@@ -275,6 +278,7 @@
275278
:id tool-call-id
276279
:origin (:origin event-data)
277280
:name (:name event-data)
281+
:server (:server event-data)
278282
:arguments (:arguments event-data)
279283
:error (:error event-data)
280284
:total-time-ms (:total-time-ms event-data)
@@ -285,6 +289,7 @@
285289
:send-toolCallRejected
286290
(let [tool-call-state (get-tool-call-state @db* (:chat-id chat-ctx) tool-call-id)
287291
name (:name tool-call-state)
292+
server (:server tool-call-state)
288293
origin (:origin tool-call-state)
289294
arguments (:arguments tool-call-state)]
290295
(send-content! chat-ctx :assistant
@@ -293,6 +298,7 @@
293298
:id tool-call-id
294299
:origin (or (:origin event-data) origin)
295300
:name (or (:name event-data) name)
301+
:server (or (:server event-data) server)
296302
:arguments (or (:arguments event-data) arguments)
297303
:reason (:code (:reason event-data) :user)}
298304
:details (:details event-data)
@@ -333,6 +339,7 @@
333339
;; :resources (map) is updated by the :add-resources and remove-resources actions
334340
;; NOTE: :future and :resources are forcibly removed from the state directly, NOT VIA ACTIONS.
335341
:name (:name event-data)
342+
:server (:server event-data)
336343
:arguments (:arguments event-data)
337344
:origin (:origin event-data)
338345
:decision-reason {:code :none
@@ -441,6 +448,9 @@
441448
(defn ^:private tool-name->origin [name all-tools]
442449
(:origin (first (filter #(= name (:name %)) all-tools))))
443450

451+
(defn ^:private tool-name->server [name all-tools]
452+
(:server (first (filter #(= name (:name %)) all-tools))))
453+
444454
(defn ^:private tokenize-args [^String s]
445455
(if (string/blank? s)
446456
[]
@@ -560,6 +570,7 @@
560570
(assert-chat-not-stopped! chat-ctx)
561571
(transition-tool-call! db* chat-ctx id :tool-prepare
562572
{:name name
573+
:server (tool-name->server name all-tools)
563574
:origin (tool-name->origin name all-tools)
564575
:arguments-text arguments-text
565576
:summary (f.tools/tool-call-summary all-tools name nil config)}))
@@ -576,6 +587,7 @@
576587
details (f.tools/tool-call-details-before-invocation name arguments)
577588
summary (f.tools/tool-call-summary all-tools name arguments config)
578589
origin (tool-name->origin name all-tools)
590+
server (tool-name->server name all-tools)
579591
approval (f.tools/approval all-tools name arguments @db* config behavior)
580592
ask? (= :ask approval)]
581593
;; assert: In :preparing or :stopping or :cleanup
@@ -585,7 +597,8 @@
585597
{:approved?* approved?*
586598
:future-cleanup-complete?* (promise)
587599
:name name
588-
:origin (tool-name->origin name all-tools)
600+
:server server
601+
:origin origin
589602
:arguments arguments
590603
:manual-approval ask?
591604
:details details
@@ -627,21 +640,24 @@
627640
:content (assoc tool-call
628641
:details details
629642
:summary summary
630-
:origin origin)})
643+
:origin origin
644+
:server server)})
631645
(add-to-history! {:role "tool_call_output"
632646
:content (assoc tool-call
633647
:error (:error result)
634648
:output result
635649
:details details
636650
:summary summary
637-
:origin origin)})
651+
:origin origin
652+
:server server)})
638653
;; assert: In :executing or :stopping
639654
(let [state (get-tool-call-state @db* chat-id id)
640655
status (:status state)]
641656
(case status
642657
:executing (transition-tool-call! db* chat-ctx id :execution-end
643658
{:origin origin
644659
:name name
660+
:server server
645661
:arguments arguments
646662
:error (:error result)
647663
:outputs (:contents result)
@@ -652,6 +668,7 @@
652668
:stopping (transition-tool-call! db* chat-ctx id :stop-attempted
653669
{:origin origin
654670
:name name
671+
:server server
655672
:arguments arguments
656673
:error (:error result)
657674
:outputs (:contents result)
@@ -664,6 +681,7 @@
664681
{:delayed-future delayed-future
665682
:origin origin
666683
:name name
684+
:server server
667685
:arguments arguments
668686
:start-time (System/currentTimeMillis)
669687
:details details
@@ -681,6 +699,7 @@
681699
(transition-tool-call! db* chat-ctx id :send-reject
682700
{:origin origin
683701
:name name
702+
:server server
684703
:arguments arguments
685704
:reason code
686705
:details details
@@ -789,11 +808,13 @@
789808
"tool_call" {:type :toolCallPrepare
790809
:origin (:origin message-content)
791810
:name (:name message-content)
811+
:server (:server message-content)
792812
:arguments-text ""
793813
:id (:id message-content)}
794814
"tool_call_output" {:type :toolCalled
795815
:origin (:origin message-content)
796816
:name (:name message-content)
817+
:server (:server message-content)
797818
:arguments (:arguments message-content)
798819
:error (:error message-content)
799820
:id (:id message-content)

test/eca/features/chat_tool_call_state_test.clj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@
2626
chat-ctx {:chat-id chat-id :request-id "req-1" :messenger (h/messenger)}
2727
resources {:a 1 :b 2}]
2828
(#'f.chat/execute-action! :init-tool-call-state db* chat-ctx tool-call-id {:name tool-name
29+
:server "eca"
2930
:arguments tool-arguments
3031
:origin tool-origin})
3132
(is (= (#'f.chat/get-tool-call-state @db* chat-id tool-call-id)
3233
{:name tool-name
34+
:server "eca"
3335
:arguments tool-arguments
3436
:origin tool-origin
3537
:decision-reason {:code :none
@@ -889,17 +891,18 @@
889891
approved?* (promise)]
890892

891893
(#'f.chat/transition-tool-call! db* chat-ctx tool-call-id :tool-prepare
892-
{:name "test" :origin "test" :arguments-text "{}"})
894+
{:name "test" :server "eca" :origin "test" :arguments-text "{}"})
893895
(#'f.chat/transition-tool-call! db* chat-ctx tool-call-id :tool-run
894-
{:approved?* approved?* :name "test" :origin "test" :arguments {} :manual-approval false})
896+
{:approved?* approved?* :name "test" :server "eca" :origin "test" :arguments {} :manual-approval false})
895897
(#'f.chat/transition-tool-call! db* chat-ctx tool-call-id :approval-allow)
896898
(#'f.chat/transition-tool-call! db* chat-ctx tool-call-id :execution-start
897-
{:name "test" :origin "test" :arguments {}})
899+
{:name "test" :server "eca" :origin "test" :arguments {}})
898900

899901
(testing ":executing -> :cleanup with error"
900902
(let [error-result {:outputs nil
901903
:error "File not found: /nonexistent/path"
902904
:name "test"
905+
:server "eca"
903906
:origin "test"
904907
:arguments {}}
905908
result (#'f.chat/transition-tool-call! db* chat-ctx tool-call-id :execution-end error-result)]

0 commit comments

Comments
 (0)