Skip to content

Commit 11b7ea1

Browse files
committed
feat: add AgentHierarchyDialog component for displaying agent details and hierarchy
1 parent 5a8b54b commit 11b7ea1

9 files changed

Lines changed: 3578 additions & 1639 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,4 @@ Thumbs.db
2828
STRUCTURE.md
2929
CONVENTIONS.md
3030
coverage
31+
CLAUDE.md

CHANGELOG.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,44 @@
22

33
---
44

5+
## [Unreleased]
6+
7+
### Added
8+
9+
#### Agents — Hierarchy View
10+
- **Agent Hierarchy view** — interactive graph visualization of agent fleet using ReactFlow + dagre auto-layout; toggle between Cards and Hierarchy views when 2+ agents exist
11+
- **5 layout modes** — Compact (adaptive columns), Balanced (split columns), Delegation (parent/child clarity), Channel (binding analysis), Workspace (ownership clusters); persisted in localStorage; popover selector with descriptions
12+
- **Node types** — Gateway hub (agent count), Agent nodes (status dot, model, session/token stats, default badge), Channel nodes (icon + account IDs), Workspace nodes (path + owning agents)
13+
- **Edge types** — Gateway→Agent (solid), Agent→Agent delegation (animated dashed green), Channel→Agent bindings (blue), implicit default route (dashed muted), Agent→Workspace (amber)
14+
- **Agent detail dialog** — click any agent node to open a full detail panel with identity, activity stats, configuration (model, tool profile, workspace), channel bindings, and delegation tree (parent + sub-agents)
15+
- **Layout persistence** — dragged node positions saved to localStorage; Reset button to recompute layout; positions cleared on layout mode switch
16+
- **Fit-to-view** — auto-fits on mount; ReactFlow controls (zoom, pan) with themed styling
17+
18+
#### Agents — Shared Utilities
19+
- **`computeAgentSessionStats`** — extracted session stat computation (count, activeCount, tokens, lastActive) to `utils.ts`; used by both cards view and hierarchy view, replacing the inline duplicate in `index.tsx`
20+
- **`formatTokens`, `formatAgo`, `shortPath`, `channelIcon`** — shared formatting helpers extracted to `utils.ts`; used by hierarchy view and detail dialog
21+
22+
#### Types
23+
- **`subagents` field** — added `subagents?: string[] | { allowAgents?: string[] }` to `ParsedConfig` agent list entry type; matches OpenClaw `types.agents.ts` schema for delegation configuration
24+
25+
### Changed
26+
27+
#### Dependencies
28+
- **`@xyflow/react`** (`^12.10.1`), **`dagre`** (`^0.8.5`), **`@types/dagre`** (`^0.7.54`) — added for hierarchy graph rendering and auto-layout
29+
30+
#### Agents Page
31+
- **View mode toggle** — header toolbar gains a Cards/Hierarchy toggle button (visible when 2+ agents); hierarchy view replaces the cards+tabs layout with the full-height graph
32+
- **Session stats refactor** — inline `sessionsByAgentId` computation in `index.tsx` replaced with shared `computeAgentSessionStats` call; field names normalized (`all``count`, `active``activeCount`)
33+
34+
### Fixed
35+
36+
#### Agents — Hierarchy View
37+
- **Unclickable layout buttons** — Popover trigger and Reset button were independently `absolute`-positioned inside `<ReactFlow>`, which captures pointer events on its internal pane; wrapped both in a single `div` with `z-50 pointer-events-auto` to lift above the event pane
38+
- **Double dagre layout computation**`extractPositions()` redundantly called `dagre.layout()` even though every layout function already called it before passing the graph; removed the duplicate call
39+
- **Misleading `_handleLayoutModeChange` prefix** — renamed to `handleLayoutModeChange`; underscore prefix conventionally signals unused variables but this callback is actively used
40+
41+
---
42+
543
## [2026.2.26] — 2026.2.26
644

745
### Added

0 commit comments

Comments
 (0)