mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-03 20:06:08 +01:00 
			
		
		
		
	refactor(llm): improve type safety in tool calling stage and simplify tool call handling
This commit is contained in:
		@@ -69,9 +69,19 @@ export class ToolCallingStage extends BasePipelineStage<ToolExecutionInput, { re
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Check if the registry has any tools
 | 
					        // Check if the registry has any tools
 | 
				
			||||||
        // Convert from ToolHandler[] to ToolInterface[] with proper type conversion
 | 
					 | 
				
			||||||
        const registryTools = toolRegistry.getAllTools();
 | 
					        const registryTools = toolRegistry.getAllTools();
 | 
				
			||||||
        const availableTools: ToolInterface[] = registryTools.map(tool => tool as unknown as ToolInterface);
 | 
					        
 | 
				
			||||||
 | 
					        // Convert ToolHandler[] to ToolInterface[] with proper type safety
 | 
				
			||||||
 | 
					        const availableTools: ToolInterface[] = registryTools.map(tool => {
 | 
				
			||||||
 | 
					            // Create a proper ToolInterface from the ToolHandler
 | 
				
			||||||
 | 
					            const toolInterface: ToolInterface = {
 | 
				
			||||||
 | 
					                // Pass through the execute method
 | 
				
			||||||
 | 
					                execute: (args: Record<string, unknown>) => tool.execute(args),
 | 
				
			||||||
 | 
					                // Include other properties from the tool definition
 | 
				
			||||||
 | 
					                ...tool.definition
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					            return toolInterface;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
        log.info(`Available tools in registry: ${availableTools.length}`);
 | 
					        log.info(`Available tools in registry: ${availableTools.length}`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Log available tools for debugging
 | 
					        // Log available tools for debugging
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -366,7 +366,6 @@ export class OllamaService extends BaseAIService {
 | 
				
			|||||||
                },
 | 
					                },
 | 
				
			||||||
                async (callback) => {
 | 
					                async (callback) => {
 | 
				
			||||||
                    let completeText = '';
 | 
					                    let completeText = '';
 | 
				
			||||||
                    let responseToolCalls: ToolCall[] = [];
 | 
					 | 
				
			||||||
                    let chunkCount = 0;
 | 
					                    let chunkCount = 0;
 | 
				
			||||||
                    
 | 
					                    
 | 
				
			||||||
                    // Create a response object that will be updated during streaming
 | 
					                    // Create a response object that will be updated during streaming
 | 
				
			||||||
@@ -410,9 +409,7 @@ export class OllamaService extends BaseAIService {
 | 
				
			|||||||
                            const toolCalls = StreamProcessor.extractToolCalls(chunk);
 | 
					                            const toolCalls = StreamProcessor.extractToolCalls(chunk);
 | 
				
			||||||
                            // Update response tool calls if any are found
 | 
					                            // Update response tool calls if any are found
 | 
				
			||||||
                            if (toolCalls.length > 0) {
 | 
					                            if (toolCalls.length > 0) {
 | 
				
			||||||
                                // Update tool calls in the overall response
 | 
					                                // Update the response object's tool_calls for final return
 | 
				
			||||||
                                responseToolCalls = toolCalls;
 | 
					 | 
				
			||||||
                                // Also update the response object's tool_calls for final return
 | 
					 | 
				
			||||||
                                response.tool_calls = toolCalls;
 | 
					                                response.tool_calls = toolCalls;
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user