These are interesting ideas. You've already gone beyond basic Rama usage into advanced territory :)
We do have a Clojure API to Rama, and the Java API is actually just a thin wrapper around that. It's unlikely we'll expose that anytime soon, but it's also not a big project to make a Clojure wrapper around the Java API. It would work well even though Clojure -> Java -> Clojure is a bit unusual.
For your first two ideas, the Rama implementation is well set up to add first-class support for these. It would be something like "ReifiedModule reified = RamaModule.reified(new MyModule())", and the "ReifiedModule" would let you inspect and walk each declared depot, PState, and dataflow graph. On top of that we could build a visual debugger like in your second idea.
I like this idea a lot and added it to our roadmap. That said, it is definitely doable with a Clojure wrapper, although it's a non-trivial amount of work, especially the debugger.
As for your third idea, generating dataflow code from a domain-specific representation is actually straightforward as-is, and we do things like that in the Mastodon implementation. The "KeyToLinkedEntitySetPStateGroup" abstraction, for example, generates dataflow code to implement that data structure on top of multiple, more primitive data structures. For instance, it uses a Rama macro to implement "adding to a linked set" which expands to a series of operations on multiple PStates.
More generally, since you're defining dataflow code from within a general purpose language, you can dynamically generate that dataflow code.
I'll be interested in hearing what other ideas you have in these areas or others, especially after playing with the build or Rama we're releasing next week.