Jester is probably a very difficult card for an AI to get right. Because, fundamentally, AIs are much easier to program if you make them modular - for example, make "what card do I play next" a separate decision from "what will I buy at the end of the turn". Of course, in dominion, all of these decisions are intertwined, but some time you can perhaps try to handwave some interaction away when making particular decisions. With Jester, you can't do that at all.
In order to decide whether to buy Jester, presumably the AI would need to have some idea of what Jester will do for its deck or for its opponents deck.
But what Jester does for you depends *entirely* on your opponent's deck and, in this set, on your deck too. It could be a reliable curser if you've built an engine that plays Fortune Teller+Jester each turn and your opponent still has green (but to do that, the AI needs to know to play Fortune Teller before Jester!) or it could be a gainer, where what cards you get depends on what your opponent is doing.
So it creates very detailed dependencies in what the AI needs to know to make decisions. To decide whether to buy Jester, it needs to know how it will play Jester, and to know how to play Jester it needs to know something about its opponents deck state AND information about its own current deck, and getting a reasonable guess at what the opponent will have in their deck by the time it plays Jester requires a good guess at what a reasonable strategy for the opponent is.
Makes it very hard to split up decisions without getting recursive dependencies among them.