Hi Daniel,
You're right that there's not currently a mechanism in Lita to do this. I think the best way to do it would be to add a new extension hook for it. That said, Lita development hasn't been very active in a while, so I wouldn't want to promise that such a thing would get released in a timely manner. I'm the primary author of Lita and have largely moved on from working with Ruby. Lita has also been in a stable enough state that there hasn't been a pressing need to make changes and release a new version. That said, I did plan to get back to it some day. I've also hoped to put out a formal call for new maintainers to keep the project healthy even when I'm not involved myself.
As a more immediate workaround, you could of course use monkey patches, as that's what Ruby allows you to do, but of course there's no guarantee a future version of Lita wouldn't break such an approach. Another possibility—though this is a totally harebrained so take it with a giant grain of salt—would be to create a Lita adapter that wraps another adapter, injecting its own logic before/after delegating the adapter it wraps.
It's very cool to hear that you're writing about Lita! Please share your work with us, either by mailing the list again, or by tweeting at @litachatbot when it's available. I'm sure many people would be interested.