So, any suggestions for adjusting the NPCs to make it a good fight?
Yes, not enough battle field control.
You've got plenty of raw power here to make it 'a good fight'. In fact, counting the warhorses you are probably more on the 'risking TPK' side of the spectrum than 'cake walk'. You've got a lot of foes here.
However, I'm not seeing a lot of tactical synergy on the part of the bad guys. The whole is less than the sum of the parts. Except for the fact that the bowmen have precise shot, there isn't much working together on the part of the bad guy team. Only the battle leader really wants to get up close and personal, and both he and the assassin are glass cannons. Everyone else on side B wants to stay off the front line, and while the war horses make the mooks much much harder to surround and kill off in the long run, they don't help the mooks support the front line troops very well. That mobility is going to waste if while the three elites are fighting especially if it results in reduced 'to hit' rolls compared to standing about 20' behind the front line and taking careful aim. The net result will be 6 PC against 3 low AC opponents, with the only added complication being a small amount of damage per turn coming from arrows flying in, then a longer period of cat and mouse with the mounted archers.
What prevents the battle leader, adept, or assassin from being overrun and being individually surrounded by the PC party so that they can concentrate force on them?
Presumably the Adept could have mirror image, which will help him, but mostly it will probably result in simply changing where he shows up in the target priority list and probably giving the archers one more round to take pop shots. Without mirror image, I'd expect the Adept to be immediately outflanked and his spells rendered useless. With mirror image I expect the adept to be mostly ignored in favor of everyone ganging up on the battle leader, before turning attention to the assassin (or vica verse depending on targets of oppurtunity).
That said, I wouldn't worry to much about optimizing the foes you have. It's already a huge fight and your PC's seem not to be power gaming, and the PC party is balanced but don't look like the sort that goes through monsters like hyperkinetic ginsu knives.