> ## Documentation Index
> Fetch the complete documentation index at: https://whyops.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Decision Graphs

> Visualize the exact reasoning path of your agents.

The core visual feature of the WhyOps dashboard is the **Decision Graph**.

When you navigate to a specific Trace in your WhyOps Project, you won't see a flat list of logs. Instead, you'll see a Directed Acyclic Graph (DAG) that maps out exactly how your agent arrived at its final conclusion.

## Why Graphs?

Autonomous agents do not execute linearly. They:

* Think (Chain of Thought).
* Plan.
* Execute tools.
* Retry when tools fail.
* Compile multiple pieces of context into a final answer.

A traditional log view forces you to read through hundreds of JSON lines to figure out *what happened when*. A graph shows you the causality immediately.

## Reading the Graph

### Nodes

Each node in the graph represents a specific **Event** that occurred during the trace.

* **User Message**: The starting point. The prompt that kicked off the trace.
* **LLM Call**: Nodes representing a request to an LLM provider.
* **Thinking**: Intermediate reasoning steps (like Anthropic's extended thinking blocks).
* **Tool Execution**: Nodes representing a call to an external tool or database.
* **Errors**: Highlighted in red, representing a failure (e.g., an upstream timeout or a tool crash).

### Edges

The lines connecting the nodes represent causality and data flow.

* A **solid line** indicates chronological and causal flow (e.g., LLM requested a tool → Tool executed).
* If your agent uses complex frameworks that fan-out (running multiple tools in parallel), you will see the graph branch out and then converge back into the next LLM call.

## Interactions

* **Pan and Zoom**: The graph is fully interactive. You can drag the canvas to explore massive multi-step reasoning traces.
* **Node Selection**: Clicking on any node in the graph opens the **Trace Inspector** pane on the right side of the screen, revealing the deep technical details of that specific step.
* **Layout Management**: Powered by `reactflow` and `dagre`, the layout automatically organizes itself to minimize crossing edges, making even the most complex traces readable.

## Detecting Loops visually

Because we render traces as graphs, **infinite retry loops** become instantly obvious. If your agent calls a `search` tool, gets an error, and calls the exact same `search` tool 5 times in a row, you will see a visual cluster of identical tool execution nodes, often flagged with a red warning badge generated by our Static Analysis engine.
