@@ -15,9 +15,9 @@ describe("Ollama Fetcher", () => {
1515 describe ( "parseOllamaModel" , ( ) => {
1616 it ( "should correctly parse Ollama model info" , ( ) => {
1717 const modelData = ollamaModelsData [ "qwen3-2to16:latest" ]
18- const parsedModel = parseOllamaModel ( modelData )
18+ const { modelInfo } = parseOllamaModel ( modelData )
1919
20- expect ( parsedModel ) . toEqual ( {
20+ expect ( modelInfo ) . toEqual ( {
2121 maxTokens : 40960 ,
2222 contextWindow : 40960 ,
2323 supportsImages : false ,
@@ -39,9 +39,9 @@ describe("Ollama Fetcher", () => {
3939 } ,
4040 }
4141
42- const parsedModel = parseOllamaModel ( modelDataWithNullFamilies as any )
42+ const { modelInfo } = parseOllamaModel ( modelDataWithNullFamilies as any )
4343
44- expect ( parsedModel ) . toEqual ( {
44+ expect ( modelInfo ) . toEqual ( {
4545 maxTokens : 40960 ,
4646 contextWindow : 40960 ,
4747 supportsImages : false ,
@@ -54,16 +54,18 @@ describe("Ollama Fetcher", () => {
5454 } )
5555 } )
5656
57- it ( "should return null when capabilities does not include 'tools'" , ( ) => {
57+ it ( "should return null with reason when capabilities does not include 'tools'" , ( ) => {
5858 const modelDataWithoutTools = {
5959 ...ollamaModelsData [ "qwen3-2to16:latest" ] ,
6060 capabilities : [ "completion" ] , // No "tools" capability
6161 }
6262
63- const parsedModel = parseOllamaModel ( modelDataWithoutTools as any )
63+ const { modelInfo , filteredReason } = parseOllamaModel ( modelDataWithoutTools as any , "test-model" )
6464
6565 // Models without tools capability are filtered out (return null)
66- expect ( parsedModel ) . toBeNull ( )
66+ expect ( modelInfo ) . toBeNull ( )
67+ expect ( filteredReason ) . toContain ( "test-model" )
68+ expect ( filteredReason ) . toContain ( "do not include 'tools'" )
6769 } )
6870
6971 it ( "should return model info when capabilities includes 'tools'" , ( ) => {
@@ -72,22 +74,25 @@ describe("Ollama Fetcher", () => {
7274 capabilities : [ "completion" , "tools" ] , // Has "tools" capability
7375 }
7476
75- const parsedModel = parseOllamaModel ( modelDataWithTools as any )
77+ const { modelInfo , filteredReason } = parseOllamaModel ( modelDataWithTools as any )
7678
77- expect ( parsedModel ) . not . toBeNull ( )
78- expect ( parsedModel ! . contextWindow ) . toBeGreaterThan ( 0 )
79+ expect ( modelInfo ) . not . toBeNull ( )
80+ expect ( modelInfo ! . contextWindow ) . toBeGreaterThan ( 0 )
81+ expect ( filteredReason ) . toBeUndefined ( )
7982 } )
8083
81- it ( "should return null when capabilities is undefined (no tool support)" , ( ) => {
84+ it ( "should return null with reason when capabilities is undefined (no tool support)" , ( ) => {
8285 const modelDataWithoutCapabilities = {
8386 ...ollamaModelsData [ "qwen3-2to16:latest" ] ,
8487 capabilities : undefined , // No capabilities array
8588 }
8689
87- const parsedModel = parseOllamaModel ( modelDataWithoutCapabilities as any )
90+ const { modelInfo , filteredReason } = parseOllamaModel ( modelDataWithoutCapabilities as any , "test-model" )
8891
8992 // Models without explicit tools capability are filtered out
90- expect ( parsedModel ) . toBeNull ( )
93+ expect ( modelInfo ) . toBeNull ( )
94+ expect ( filteredReason ) . toContain ( "test-model" )
95+ expect ( filteredReason ) . toContain ( "no capabilities reported" )
9196 } )
9297
9398 it ( "should return null when model has vision but no tools capability" , ( ) => {
@@ -96,10 +101,10 @@ describe("Ollama Fetcher", () => {
96101 capabilities : [ "completion" , "vision" ] ,
97102 }
98103
99- const parsedModel = parseOllamaModel ( modelDataWithVision as any )
104+ const { modelInfo } = parseOllamaModel ( modelDataWithVision as any )
100105
101106 // No "tools" capability means filtered out
102- expect ( parsedModel ) . toBeNull ( )
107+ expect ( modelInfo ) . toBeNull ( )
103108 } )
104109
105110 it ( "should return model with both vision and tools when both capabilities present" , ( ) => {
@@ -108,11 +113,11 @@ describe("Ollama Fetcher", () => {
108113 capabilities : [ "completion" , "vision" , "tools" ] ,
109114 }
110115
111- const parsedModel = parseOllamaModel ( modelDataWithBoth as any )
116+ const { modelInfo } = parseOllamaModel ( modelDataWithBoth as any )
112117
113- expect ( parsedModel ) . not . toBeNull ( )
114- expect ( parsedModel ! . supportsImages ) . toBe ( true )
115- expect ( parsedModel ! . contextWindow ) . toBeGreaterThan ( 0 )
118+ expect ( modelInfo ) . not . toBeNull ( )
119+ expect ( modelInfo ! . supportsImages ) . toBe ( true )
120+ expect ( modelInfo ! . contextWindow ) . toBeGreaterThan ( 0 )
116121 } )
117122 } )
118123
@@ -177,7 +182,7 @@ describe("Ollama Fetcher", () => {
177182 expect ( Object . keys ( result ) . length ) . toBe ( 1 )
178183 expect ( result [ modelName ] ) . toBeDefined ( )
179184
180- const expectedParsedDetails = parseOllamaModel ( mockApiShowResponse as any )
185+ const { modelInfo : expectedParsedDetails } = parseOllamaModel ( mockApiShowResponse as any )
181186 expect ( result [ modelName ] ) . toEqual ( expectedParsedDetails )
182187 } )
183188
0 commit comments