The AI is very technically-simple. It assigns each possible move a utitlity value based on simple metrics and picks the best one. There's a tiny bit of level-specific code and a tiny bit of randomness outside of puzzle battles.
(In other words, I hardcoded it like +10 pts for stone removal, +2n pts for burns adjacent to n opponent's stones.)
Oooh, well it plays well enough, I'm surprised there's no tree search at all for how good it is lol.