@botpress/adk-cli
Version:
Command-line interface for the Botpress Agent Development Kit (ADK)
124 lines (87 loc) • 4.28 kB
Markdown
# Agent Steps
Agent Steps is the execution visualizer on the right side of the **Chat** page. It shows exactly what the agent did to process each conversation message — in real time.
## What Users See
When a user sends a message in the webchat (left panel), the Agent Steps panel (right panel) shows the execution flow as a sequence of collapsible cards:
```
┌─ User Message: "Help me with order #123"
│
├─ 🤖 Bot Handler (onWebchatConversation)
│ ├─ Iteration 1
│ │ ├─ 🟣 Tool: lookupOrder (input: {orderId: "123"})
│ │ └─ → continued
│ ├─ Iteration 2
│ │ ├─ 🔵 Message: "I found order #123. It was shipped yesterday..."
│ │ └─ → message_sent
│ └─ 🟢 State: conversation.lastOrderId = "123"
│
└─ Total: 2 iterations, $0.0034, 1.2s
```
## Data Model
### Turns
A **Turn** is one conversation exchange — from the user's input through the agent's complete response. Each turn contains:
- **User message** or **event** that triggered processing
- **Handler span** — the conversation/event/trigger handler that processed it
- **Steps** — autonomous iterations (the agent's think-decide-act loops)
- **Direct messages** — messages sent outside iterations
- **State mutations** — state changes made during the turn
- **Total cost** — aggregated AI cost across all iterations
### Steps (Autonomous Iterations)
Each **Step** is one iteration of the autonomous agent loop. The agent:
1. Receives context (conversation history, available tools)
2. Makes an LLM call (the **cognitive request**)
3. Decides what to do: call a tool, send a message, or stop
Each step shows:
- **Iteration number** (1, 2, 3...)
- **Exit reason**: "continued" (more work to do), "tool_called", "message_sent", "errored"
- **Cognitive request** metadata: model, input/output tokens, cost, duration
- **Tools called** in this iteration
- **Messages sent** in this iteration
### Tool Calls
Displayed as **violet cards** (or green for `search_knowledge`). Each shows:
- Tool name
- Input (JSON)
- Output (JSON or markdown for knowledge search results)
- Duration
- Status (ok / error / running)
### Bot Messages
Displayed as **blue cards**. Each shows:
- Message content (markdown rendered)
- Duration
- Long messages are clamped at 300 characters — click to expand
### State Mutations
Displayed as **teal cards**. Each shows:
- State type (bot, user, conversation)
- Two-column "Before" and "After" view
- Only changed keys shown by default (toggle for full state)
- JSON tree view for complex objects
### Trigger Handlers
When a trigger fires instead of a conversation message, the turn shows an **amber card** with:
- Trigger name
- Event type that fired it
- Same iteration/tool/message structure inside
## Status Indicators
| Visual | Meaning |
| ---------------------------- | -------------------------------------- |
| ✓ Green checkmark | Completed successfully |
| ✗ Red X | Failed (error message in detail panel) |
| ⟳ Blue spinner | Currently executing |
| Shimmer text ("thinking...") | LLM is generating |
## AI Metrics
Each iteration's cognitive request shows:
- **Model**: e.g., "claude-3.5-sonnet"
- **Input tokens**: count + cost
- **Output tokens**: count + cost
- **Total cost**: USD with 4 decimal places
- **Duration**: milliseconds
Turn-level cost is the sum of all iteration costs.
## Interactions
- **Collapse/Expand**: Click any card to toggle children. "Collapse All" / "Expand All" buttons in header.
- **Detail Panel**: Click a step to open a resizable detail panel on the right with full span data.
- **Copy**: Copy buttons on IDs, tokens, error messages.
- **Open Traces**: "Open conversation traces" link in the header navigates to the full Traces page filtered to this conversation.
## Real-Time Updates
Agent Steps streams data via SSE (Server-Sent Events):
- Running spans show a live timer
- New spans animate in from the top
- Auto-scrolls to bottom when new content arrives
- Stale detection marks spans as errored if the CLI stops sending updates for 5+ seconds