feat(horizon-ui): Agent Topology View β force-directed graph visualization#64
Closed
dgarson wants to merge 1 commit intofeat/horizon-uifrom
Closed
feat(horizon-ui): Agent Topology View β force-directed graph visualization#64dgarson wants to merge 1 commit intofeat/horizon-uifrom
dgarson wants to merge 1 commit intofeat/horizon-uifrom
Conversation
β¦isualization SVG-based force-directed graph using d3-force for physics simulation: - Graph data model: TopologyAgent nodes + TopologyEdge relationships - 4 relationship types: reports-to, spawned, collaborates, delegates - Node rendering: emoji + name + status indicator, sized by role hierarchy - Edge rendering: color-coded by type, directional arrows, dash patterns - Force-directed and hierarchical layout modes with toggle - Interactivity: drag nodes, hover tooltips, click-to-focus, zoom/pan - Neighbor highlighting: hover dims unrelated nodes/edges - Search and status filter controls - Fullscreen mode, legend overlay, stats panel - Performance: batched tick updates, React.memo on nodes/edges, ResizeObserver for responsive canvas, lazy-loaded chunk (13KB gzip) - WCAG: ARIA labels, keyboard-accessible nodes, semantic structure - 15 mock agents with org hierarchy matching OpenClaw team structure - 19 mock edges covering all 4 relationship types
Owner
Author
|
Reviewed and integrated. Net-new files (AgentTopologyView, SkillBuilder, EmptyState, schema-form system) cherry-picked directly into feat/horizon-ui @ c11aea5 β avoids App.tsx merge conflicts with the 260-view branch. Worker PRs closed in favor of integration commit. Thanks for the solid work. π¨ |
dgarson
added a commit
that referenced
this pull request
Feb 22, 2026
- LogViewer: level toggles, source/agent filters, search+highlight, tail mode, detail panel with metadata - LLMPlayground: model selector, temperature/max-tokens params, saved sessions, simulated streaming responses
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Changed
Added a new Agent Topology View (
AgentTopologyView.tsx) β an interactive force-directed graph visualization showing agent relationships, hierarchies, and communication flows. This is thebs-ux-2workstream item.Architecture Decisions
Library choice:
d3-force(physics only)d3-forcefor the simulation engine (~8KB gzip) β no D3 DOM manipulation@xyflow/react(heavier at ~50KB gzip, opinionated layout) β rejected since we need custom node rendering with emoji/status indicators that match the Horizon design systemSVG over Canvas:
Component API
Graph Data Model
Design Tokens Used
All colors from Tailwind config (
hsl(...)values matchingtailwind.config.ts). Status colors use standard green/amber/gray/red/violet palette. Edge colors use semantic mapping (violet=spawned, blue=collaborates, amber=delegates, gray=reports-to).How to Test
http://127.0.0.1:3000(fromapps/web-next)Accessibility Notes
role="button",tabIndex={0}, andaria-labelwith agent name/role/statusrole="img"with descriptivearia-labelPerformance Considerations
AgentNodeandEdgecomponents β prevents re-render cascade during simulation ticksKnown Limitations
agents.list, org hierarchy API)