# Pipecircuit visualization
`pipecircuit-visualization` derives reviewable architecture diagrams from a
crate's Rust source. It walks the crate's module tree, finds every explicit
`StateMachine` and `StepInputOf` implementation, follows imports, and expands
each outcome enum into its variants.
No diagram-specific step list is maintained:
```rust
use pipecircuit_visualization::{CrateArchitecture, DiagramTarget};
let architecture = CrateArchitecture::read(env!("CARGO_MANIFEST_DIR"))?;
let players = architecture.state_machine("Players")?;
let snapshot = players.render(DiagramTarget::TextTree);
```
The uncolored text tree is intended for expect tests and redirected output.
`AnsiTextTree` gives its role markers a terminal-safe lime treatment. The same
graph can be projected to `MermaidFlowchart` for Markdown and browser tooling
or `GraphvizDot` for Graphviz, SVG, and image generation.
The separately installable `pipecircuit-cli` package exposes the interactive
surface:
```text
pipec diagram Players
```
It selects ANSI text only for an interactive terminal and honors `NO_COLOR`.
Generation fails when a referenced local type, module, state machine, input,
or outcome cannot be resolved. Procedural macros that generate
`StepInputOf` implementations are not source-visible on stable Rust and are
not currently supported; step implementations themselves must remain ordinary
Rust. This keeps incomplete diagrams from masquerading as complete ones.