package agent import ( "fmt" "git.mlow.ca/mlow/lmcli/pkg/agent/toolbox" "git.mlow.ca/mlow/lmcli/pkg/api" ) var AvailableTools map[string]api.ToolSpec = map[string]api.ToolSpec{ "dir_tree": toolbox.DirTreeTool, "read_dir": toolbox.ReadDirTool, "read_file": toolbox.ReadFileTool, "write_file": toolbox.WriteFileTool, "file_insert_lines": toolbox.FileInsertLinesTool, "file_replace_lines": toolbox.FileReplaceLinesTool, } func ExecuteToolCalls(calls []api.ToolCall, available []api.ToolSpec) ([]api.ToolResult, error) { var toolResults []api.ToolResult for _, call := range calls { var tool *api.ToolSpec for i := range available { if available[i].Name == call.Name { tool = &available[i] break } } if tool == nil { return nil, fmt.Errorf("Requested tool '%s' is not available. Hallucination?", call.Name) } // Execute the tool result, err := tool.Impl(tool, call.Parameters) if err != nil { return nil, fmt.Errorf("Tool '%s' error: %v\n", call.Name, err) } toolResult := api.ToolResult{ ToolCallID: call.ID, ToolName: call.Name, Result: result, } toolResults = append(toolResults, toolResult) } return toolResults, nil }