Lots of different ways to go about it; showing the clients where the AI is, is simple; just produce an object that does
sync (vehicle, by objects_attach and detach. Projectiles, through effects. etc). This method has always been public since when I had first shown it.
You can always use this script command to force all clients to rely on the host for where projectiles are
(set allow_client_side_weapon_projectiles false)
Using LUA in the server (SAPP or Chimera), you can do similar to the above, and check stuff like animations to show. With LUA on both server and client (Chimera), you can make use of RCON messages to pass information directly. As Chimera is opensource, its possible that you can directly add it as a default feature rather than RCON, as there was progress to adding custom netcode (I don't believe its done, but if any of it is on the repository yet, or, at least when it is, you can re-purpose it for your own use)