This is pretty cool to see, I've actually started recently on creating a lighter mafia-esque system that can be loaded into KoL directly via chat commands. My intention with it is to provide a mafia-lite experience that works anywhere, in particular mobile. The fact that KoLMafia will support JS scripts is cool because it means I can simply run them with a mock.
There's only one thing I'm wary of though and that's the fact all the ash functions are (presumably) synchronous. This behaviour is a lot harder to mock as a lot of things in the browser are inherently asynchronous*. While this is not a total killer, it does make it a lot more complex as it requires synchronizing everything through a SharedArrayBuffer with Atomics.wait. The problem with this is that (at least for now) it completely kills the ability to use it on any browser other than desktop Chrome, as no other browser supports SharedArrayBuffer/Atomics.wait (Firefox does under certain conditions, but KoL does not send the appropriate headers to enable it).
* As an example navigating the main iframe requires using `mainPane.addEventListener("load", () => ...)` which is strictly asynchronous. There is no way to make this (amongst many other things) in the browser synchronous.