|
241 | 241 | {:type :toolCallPrepare |
242 | 242 | :id tool-call-id |
243 | 243 | :name (:name event-data) |
| 244 | + :server (:server event-data) |
244 | 245 | :origin (:origin event-data) |
245 | 246 | :arguments-text (:arguments-text event-data)} |
246 | 247 | :summary (:summary event-data))) |
|
251 | 252 | {:type :toolCallRun |
252 | 253 | :id tool-call-id |
253 | 254 | :name (:name event-data) |
| 255 | + :server (:server event-data) |
254 | 256 | :origin (:origin event-data) |
255 | 257 | :arguments (:arguments event-data) |
256 | 258 | :manual-approval (:manual-approval event-data)} |
|
263 | 265 | {:type :toolCallRunning |
264 | 266 | :id tool-call-id |
265 | 267 | :name (:name event-data) |
| 268 | + :server (:server event-data) |
266 | 269 | :origin (:origin event-data) |
267 | 270 | :arguments (:arguments event-data)} |
268 | 271 | :details (:details event-data) |
|
275 | 278 | :id tool-call-id |
276 | 279 | :origin (:origin event-data) |
277 | 280 | :name (:name event-data) |
| 281 | + :server (:server event-data) |
278 | 282 | :arguments (:arguments event-data) |
279 | 283 | :error (:error event-data) |
280 | 284 | :total-time-ms (:total-time-ms event-data) |
|
285 | 289 | :send-toolCallRejected |
286 | 290 | (let [tool-call-state (get-tool-call-state @db* (:chat-id chat-ctx) tool-call-id) |
287 | 291 | name (:name tool-call-state) |
| 292 | + server (:server tool-call-state) |
288 | 293 | origin (:origin tool-call-state) |
289 | 294 | arguments (:arguments tool-call-state)] |
290 | 295 | (send-content! chat-ctx :assistant |
|
293 | 298 | :id tool-call-id |
294 | 299 | :origin (or (:origin event-data) origin) |
295 | 300 | :name (or (:name event-data) name) |
| 301 | + :server (or (:server event-data) server) |
296 | 302 | :arguments (or (:arguments event-data) arguments) |
297 | 303 | :reason (:code (:reason event-data) :user)} |
298 | 304 | :details (:details event-data) |
|
333 | 339 | ;; :resources (map) is updated by the :add-resources and remove-resources actions |
334 | 340 | ;; NOTE: :future and :resources are forcibly removed from the state directly, NOT VIA ACTIONS. |
335 | 341 | :name (:name event-data) |
| 342 | + :server (:server event-data) |
336 | 343 | :arguments (:arguments event-data) |
337 | 344 | :origin (:origin event-data) |
338 | 345 | :decision-reason {:code :none |
|
441 | 448 | (defn ^:private tool-name->origin [name all-tools] |
442 | 449 | (:origin (first (filter #(= name (:name %)) all-tools)))) |
443 | 450 |
|
| 451 | +(defn ^:private tool-name->server [name all-tools] |
| 452 | + (:server (first (filter #(= name (:name %)) all-tools)))) |
| 453 | + |
444 | 454 | (defn ^:private tokenize-args [^String s] |
445 | 455 | (if (string/blank? s) |
446 | 456 | [] |
|
560 | 570 | (assert-chat-not-stopped! chat-ctx) |
561 | 571 | (transition-tool-call! db* chat-ctx id :tool-prepare |
562 | 572 | {:name name |
| 573 | + :server (tool-name->server name all-tools) |
563 | 574 | :origin (tool-name->origin name all-tools) |
564 | 575 | :arguments-text arguments-text |
565 | 576 | :summary (f.tools/tool-call-summary all-tools name nil config)})) |
|
576 | 587 | details (f.tools/tool-call-details-before-invocation name arguments) |
577 | 588 | summary (f.tools/tool-call-summary all-tools name arguments config) |
578 | 589 | origin (tool-name->origin name all-tools) |
| 590 | + server (tool-name->server name all-tools) |
579 | 591 | approval (f.tools/approval all-tools name arguments @db* config behavior) |
580 | 592 | ask? (= :ask approval)] |
581 | 593 | ;; assert: In :preparing or :stopping or :cleanup |
|
585 | 597 | {:approved?* approved?* |
586 | 598 | :future-cleanup-complete?* (promise) |
587 | 599 | :name name |
588 | | - :origin (tool-name->origin name all-tools) |
| 600 | + :server server |
| 601 | + :origin origin |
589 | 602 | :arguments arguments |
590 | 603 | :manual-approval ask? |
591 | 604 | :details details |
|
627 | 640 | :content (assoc tool-call |
628 | 641 | :details details |
629 | 642 | :summary summary |
630 | | - :origin origin)}) |
| 643 | + :origin origin |
| 644 | + :server server)}) |
631 | 645 | (add-to-history! {:role "tool_call_output" |
632 | 646 | :content (assoc tool-call |
633 | 647 | :error (:error result) |
634 | 648 | :output result |
635 | 649 | :details details |
636 | 650 | :summary summary |
637 | | - :origin origin)}) |
| 651 | + :origin origin |
| 652 | + :server server)}) |
638 | 653 | ;; assert: In :executing or :stopping |
639 | 654 | (let [state (get-tool-call-state @db* chat-id id) |
640 | 655 | status (:status state)] |
641 | 656 | (case status |
642 | 657 | :executing (transition-tool-call! db* chat-ctx id :execution-end |
643 | 658 | {:origin origin |
644 | 659 | :name name |
| 660 | + :server server |
645 | 661 | :arguments arguments |
646 | 662 | :error (:error result) |
647 | 663 | :outputs (:contents result) |
|
652 | 668 | :stopping (transition-tool-call! db* chat-ctx id :stop-attempted |
653 | 669 | {:origin origin |
654 | 670 | :name name |
| 671 | + :server server |
655 | 672 | :arguments arguments |
656 | 673 | :error (:error result) |
657 | 674 | :outputs (:contents result) |
|
664 | 681 | {:delayed-future delayed-future |
665 | 682 | :origin origin |
666 | 683 | :name name |
| 684 | + :server server |
667 | 685 | :arguments arguments |
668 | 686 | :start-time (System/currentTimeMillis) |
669 | 687 | :details details |
|
681 | 699 | (transition-tool-call! db* chat-ctx id :send-reject |
682 | 700 | {:origin origin |
683 | 701 | :name name |
| 702 | + :server server |
684 | 703 | :arguments arguments |
685 | 704 | :reason code |
686 | 705 | :details details |
|
789 | 808 | "tool_call" {:type :toolCallPrepare |
790 | 809 | :origin (:origin message-content) |
791 | 810 | :name (:name message-content) |
| 811 | + :server (:server message-content) |
792 | 812 | :arguments-text "" |
793 | 813 | :id (:id message-content)} |
794 | 814 | "tool_call_output" {:type :toolCalled |
795 | 815 | :origin (:origin message-content) |
796 | 816 | :name (:name message-content) |
| 817 | + :server (:server message-content) |
797 | 818 | :arguments (:arguments message-content) |
798 | 819 | :error (:error message-content) |
799 | 820 | :id (:id message-content) |
|
0 commit comments