Please, help me understand this.
Tell me where in your source files is the description of the move. What interests me is written in the following excerpt from the publication "Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm":
A move in chess may be described in two parts: selecting the piece to move, and then selecting among the legal moves for that piece. We represent the policy pi(ajs) by a 8 * 8 * 73 stack of planes encoding a probability distribution over 4,672 possible moves. Each of the 8*8 positions identifies the square from which to “pick up” a piece. The first 56 planes encode possible ‘queen moves’ for any piece: a number of squares [1::7] in which the piece will be moved, along one of eight relative compass directions fN;NE;E; SE; S; SW;W;NWg. The next 8 planes encode possible knight moves for that piece. The final 9 planes encode possible underpromotions for pawn moves or captures in two possible diagonals, to knight, bishop or rook respectively. Other pawn moves or captures from the seventh rank are promoted to a queen.
I would say a good place to start looking at the logic is https://github.com/Zeta36/chess-alpha-zero/blob/master/src/chess_zero/agent/player_chess.py, and then the other files in the agent folder.