|
92 | 92 | (#'f.tools/get-disabled-tools config "plan")))))) |
93 | 93 |
|
94 | 94 | (deftest approval-test |
95 | | - (let [all-tools [{:name "eca_read" :server "eca"} |
96 | | - {:name "eca_write" :server "eca"} |
97 | | - {:name "eca_shell" :server "eca" :require-approval-fn (constantly true)} |
98 | | - {:name "eca_plan" :server "eca" :require-approval-fn (constantly false)} |
99 | | - {:name "request" :server "web"} |
100 | | - {:name "download" :server "web"}]] |
| 95 | + (let [all-tools [{:name "eca_read" :server {:name "eca"}} |
| 96 | + {:name "eca_write" :server {:name "eca"}} |
| 97 | + {:name "eca_shell" :server {:name "eca"} :require-approval-fn (constantly true)} |
| 98 | + {:name "eca_plan" :server {:name "eca"} :require-approval-fn (constantly false)} |
| 99 | + {:name "request" :server {:name "web"}} |
| 100 | + {:name "download" :server {:name "web"}}]] |
101 | 101 | (testing "tool has require-approval-fn which returns true" |
102 | 102 | (is (= :ask (f.tools/approval all-tools "eca_shell" {} {} {} nil)))) |
103 | 103 | (testing "tool has require-approval-fn which returns false we ignore it" |
|
110 | 110 | (testing "when matches allow config" |
111 | 111 | (is (= :allow (f.tools/approval all-tools "request" {} {} {:toolCall {:approval {:allow {"web__request" {}}}}} nil))) |
112 | 112 | (is (= :allow (f.tools/approval all-tools "eca_read" {} {} {:toolCall {:approval {:allow {"eca_read" {}}}}} nil))) |
113 | | - (is (= :allow (f.tools/approval all-tools "request" {} {} {:toolCall {:approval {:allow {"web" {}}}}} nil)))) |
| 113 | + (is (= :allow (f.tools/approval all-tools "request" {} {} {:toolCall {:approval {:allow {"web" {}}}}} nil))) |
| 114 | + (is (= :allow (f.tools/approval all-tools "eca_read" {} {} {:toolCall {:approval {:allow {"eca" {}}}}} nil)))) |
114 | 115 | (testing "when matches ask config" |
115 | 116 | (is (= :ask (f.tools/approval all-tools "request" {} {} {:toolCall {:approval {:ask {"web__request" {}}}}} nil))) |
116 | 117 | (is (= :ask (f.tools/approval all-tools "eca_read" {} {} {:toolCall {:approval {:ask {"eca_read" {}}}}} nil))) |
|
146 | 147 | (is (= :ask (f.tools/approval all-tools "request" {} {} {} nil))))))) |
147 | 148 |
|
148 | 149 | (deftest behavior-specific-approval-test |
149 | | - (let [all-tools [{:name "eca_shell_command" :server "eca"} |
150 | | - {:name "eca_read_file" :server "eca"}]] |
| 150 | + (let [all-tools [{:name "eca_shell_command" :server {:name "eca"}} |
| 151 | + {:name "eca_read_file" :server {:name "eca"}}]] |
151 | 152 | (testing "behavior-specific approval overrides global rules" |
152 | 153 | (let [config {:toolCall {:approval {:byDefault "allow"}} |
153 | 154 | :behavior {"plan" {:toolCall {:approval {:deny {"eca_shell_command" {:argsMatchers {"command" [".*rm.*"]}}} |
|
0 commit comments