@@ -16,6 +16,14 @@ vi.mock("../../../../config/ContextProxy")
1616describe ( "getAllowedJSONToolsForMode" , ( ) => {
1717 let mockProvider : Partial < ClineProvider >
1818 let mockContext : any
19+ const modelWithImages = {
20+ id : "mock-model" ,
21+ info : { contextWindow : 2048 , supportsPromptCache : false , supportsImages : true } ,
22+ }
23+ const modelWithoutImages = {
24+ id : "mock-model" ,
25+ info : { contextWindow : 2048 , supportsPromptCache : false , supportsImages : false } ,
26+ }
1927
2028 beforeEach ( ( ) => {
2129 vi . clearAllMocks ( )
@@ -102,7 +110,12 @@ describe("getAllowedJSONToolsForMode", () => {
102110
103111 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
104112
105- const tools = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , false , false )
113+ const tools = await getAllowedJSONToolsForMode (
114+ "code" as Mode ,
115+ mockProvider as ClineProvider ,
116+ false ,
117+ undefined ,
118+ )
106119
107120 const applyDiffTool = tools . find ( ( tool ) => "function" in tool && tool . function . name === "apply_diff" )
108121 expect ( applyDiffTool ) . toBeUndefined ( )
@@ -117,7 +130,12 @@ describe("getAllowedJSONToolsForMode", () => {
117130
118131 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
119132
120- const tools = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , true )
133+ const tools = await getAllowedJSONToolsForMode (
134+ "code" as Mode ,
135+ mockProvider as ClineProvider ,
136+ true ,
137+ modelWithImages ,
138+ )
121139
122140 // Check for duplicate tool names
123141 const toolNames = tools . map ( ( tool ) => ( "function" in tool ? tool . function . name : "" ) )
@@ -133,8 +151,18 @@ describe("getAllowedJSONToolsForMode", () => {
133151
134152 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
135153
136- const tools1 = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , true )
137- const tools2 = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , true )
154+ const tools1 = await getAllowedJSONToolsForMode (
155+ "code" as Mode ,
156+ mockProvider as ClineProvider ,
157+ true ,
158+ modelWithImages ,
159+ )
160+ const tools2 = await getAllowedJSONToolsForMode (
161+ "code" as Mode ,
162+ mockProvider as ClineProvider ,
163+ true ,
164+ modelWithImages ,
165+ )
138166
139167 expect ( tools1 . length ) . toBe ( tools2 . length )
140168 } )
@@ -149,7 +177,12 @@ describe("getAllowedJSONToolsForMode", () => {
149177 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
150178 vi . mocked ( CodeIndexManager . getInstance ) . mockReturnValue ( undefined )
151179
152- const tools = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , true )
180+ const tools = await getAllowedJSONToolsForMode (
181+ "code" as Mode ,
182+ mockProvider as ClineProvider ,
183+ true ,
184+ modelWithImages ,
185+ )
153186
154187 const codebaseSearchTool = tools . find (
155188 ( tool ) => "function" in tool && tool . function . name === "codebase_search" ,
@@ -165,7 +198,12 @@ describe("getAllowedJSONToolsForMode", () => {
165198
166199 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
167200
168- const tools = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , true )
201+ const tools = await getAllowedJSONToolsForMode (
202+ "code" as Mode ,
203+ mockProvider as ClineProvider ,
204+ true ,
205+ modelWithImages ,
206+ )
169207
170208 const browserActionTool = tools . find (
171209 ( tool ) => "function" in tool && tool . function . name === "browser_action" ,
@@ -181,7 +219,12 @@ describe("getAllowedJSONToolsForMode", () => {
181219
182220 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
183221
184- const tools = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , false )
222+ const tools = await getAllowedJSONToolsForMode (
223+ "code" as Mode ,
224+ mockProvider as ClineProvider ,
225+ true ,
226+ modelWithoutImages ,
227+ )
185228
186229 const browserActionTool = tools . find (
187230 ( tool ) => "function" in tool && tool . function . name === "browser_action" ,
@@ -199,7 +242,12 @@ describe("getAllowedJSONToolsForMode", () => {
199242
200243 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
201244
202- const tools = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , true )
245+ const tools = await getAllowedJSONToolsForMode (
246+ "code" as Mode ,
247+ mockProvider as ClineProvider ,
248+ true ,
249+ modelWithImages ,
250+ )
203251
204252 const todoListTool = tools . find ( ( tool ) => "function" in tool && tool . function . name === "update_todo_list" )
205253 expect ( todoListTool ) . toBeUndefined ( )
@@ -214,7 +262,12 @@ describe("getAllowedJSONToolsForMode", () => {
214262
215263 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
216264
217- const tools = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , true )
265+ const tools = await getAllowedJSONToolsForMode (
266+ "code" as Mode ,
267+ mockProvider as ClineProvider ,
268+ true ,
269+ modelWithImages ,
270+ )
218271
219272 const generateImageTool = tools . find (
220273 ( tool ) => "function" in tool && tool . function . name === "generate_image" ,
@@ -231,7 +284,12 @@ describe("getAllowedJSONToolsForMode", () => {
231284
232285 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
233286
234- const tools = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , true )
287+ const tools = await getAllowedJSONToolsForMode (
288+ "code" as Mode ,
289+ mockProvider as ClineProvider ,
290+ true ,
291+ modelWithImages ,
292+ )
235293
236294 const runSlashCommandTool = tools . find (
237295 ( tool ) => "function" in tool && tool . function . name === "run_slash_command" ,
@@ -248,7 +306,12 @@ describe("getAllowedJSONToolsForMode", () => {
248306
249307 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
250308
251- const tools = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , true )
309+ const tools = await getAllowedJSONToolsForMode (
310+ "code" as Mode ,
311+ mockProvider as ClineProvider ,
312+ true ,
313+ modelWithImages ,
314+ )
252315
253316 const askTool = tools . find ( ( tool ) => "function" in tool && tool . function . name === "ask_followup_question" )
254317 expect ( askTool ) . toBeDefined ( )
@@ -261,7 +324,12 @@ describe("getAllowedJSONToolsForMode", () => {
261324
262325 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
263326
264- const tools = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , true )
327+ const tools = await getAllowedJSONToolsForMode (
328+ "code" as Mode ,
329+ mockProvider as ClineProvider ,
330+ true ,
331+ modelWithoutImages ,
332+ )
265333
266334 const completionTool = tools . find (
267335 ( tool ) => "function" in tool && tool . function . name === "attempt_completion" ,
@@ -276,7 +344,12 @@ describe("getAllowedJSONToolsForMode", () => {
276344
277345 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
278346
279- const tools = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , true )
347+ const tools = await getAllowedJSONToolsForMode (
348+ "code" as Mode ,
349+ mockProvider as ClineProvider ,
350+ true ,
351+ modelWithImages ,
352+ )
280353
281354 const switchModeTool = tools . find ( ( tool ) => "function" in tool && tool . function . name === "switch_mode" )
282355 expect ( switchModeTool ) . toBeDefined ( )
@@ -289,7 +362,12 @@ describe("getAllowedJSONToolsForMode", () => {
289362
290363 vi . mocked ( mockProvider . getState ! ) . mockResolvedValue ( providerState as ClineProviderState )
291364
292- const tools = await getAllowedJSONToolsForMode ( "code" as Mode , mockProvider as ClineProvider , true , true )
365+ const tools = await getAllowedJSONToolsForMode (
366+ "code" as Mode ,
367+ mockProvider as ClineProvider ,
368+ true ,
369+ modelWithImages ,
370+ )
293371
294372 const newTaskTool = tools . find ( ( tool ) => "function" in tool && tool . function . name === "new_task" )
295373 expect ( newTaskTool ) . toBeDefined ( )
0 commit comments