Check our internal ActionLogger and WorkflowSystemTracer and create APIs so that those implementations are straightforward and show 0 knowledge of workflow internals.
Some examples:
to get access to actions you need to wrap a render then wrap actions + wrap render child + wrap actions (all you want is "an API for knowing about actions")
relying on "session.parent = null" for root
tracking of the map of workflow names
the fact that we are mirroring the skipping logic to figure out if workflow will skip a render
Check our internal ActionLogger and WorkflowSystemTracer and create APIs so that those implementations are straightforward and show 0 knowledge of workflow internals.
Some examples: