|
5 | 5 | [babashka.fs :as fs] |
6 | 6 | [clojure.string :as string] |
7 | 7 | [eca.diff :as diff] |
| 8 | + [eca.features.tools.editor :as f.tools.editor] |
8 | 9 | [eca.features.tools.filesystem :as f.tools.filesystem] |
9 | 10 | [eca.features.tools.mcp :as f.mcp] |
10 | 11 | [eca.features.tools.shell :as f.tools.shell] |
|
31 | 32 | (when (get-in config [:nativeTools :filesystem :enabled]) |
32 | 33 | f.tools.filesystem/definitions) |
33 | 34 | (when (get-in config [:nativeTools :shell :enabled]) |
34 | | - f.tools.shell/definitions)))) |
| 35 | + f.tools.shell/definitions) |
| 36 | + (when (get-in config [:nativeTools :editor :enabled]) |
| 37 | + f.tools.editor/definitions)))) |
35 | 38 |
|
36 | 39 | (defn ^:private native-tools [db config] |
37 | 40 | (vals (native-definitions db config))) |
|
53 | 56 | (mapv #(assoc % :origin :native) (native-tools db config)) |
54 | 57 | (mapv #(assoc % :origin :mcp) (f.mcp/all-tools db)))))) |
55 | 58 |
|
56 | | -(defn call-tool! [^String name ^Map arguments db config] |
| 59 | +(defn call-tool! [^String name ^Map arguments db config messenger] |
57 | 60 | (logger/info logger-tag (format "Calling tool '%s' with args '%s'" name arguments)) |
58 | 61 | (let [arguments (update-keys arguments clojure.core/name)] |
59 | 62 | (try |
60 | 63 | (let [result (if-let [native-tool-handler (get-in (native-definitions db config) [name :handler])] |
61 | | - (native-tool-handler arguments {:db db :config config}) |
| 64 | + (native-tool-handler arguments {:db db |
| 65 | + :config config |
| 66 | + :messenger messenger}) |
62 | 67 | (f.mcp/call-tool! name arguments db))] |
63 | 68 | (logger/debug logger-tag "Tool call result: " result) |
64 | 69 | result) |
|
114 | 119 |
|
115 | 120 | (defn manual-approval? [name config] |
116 | 121 | (boolean |
117 | | - (let [manual-approval? (get-in config [:toolCall :manualApproval] nil)] |
118 | | - (if (coll? manual-approval?) |
119 | | - (some #(= name (str %)) manual-approval?) |
120 | | - manual-approval?)))) |
| 122 | + (let [manual-approval? (get-in config [:toolCall :manualApproval] nil)] |
| 123 | + (if (coll? manual-approval?) |
| 124 | + (some #(= name (str %)) manual-approval?) |
| 125 | + manual-approval?)))) |
121 | 126 |
|
122 | 127 | (defn tool-call-summary [all-tools name args] |
123 | 128 | (when-let [summary-fn (:summary-fn (first (filter #(= name (:name %)) |
|
0 commit comments