feat(canvas): A2A topology overlay with animated delegation edges - #751
Merged
Merged
Conversation
…sue #744) - New A2ATopologyOverlay component polls /activity fan-out every 60s and writes directed edges to a2aEdges store slice (separate from topology edges) - buildA2AEdges aggregates delegate rows per source→target pair; violet-500 animated edge when last call <5 min ago, blue-500 static otherwise - Toolbar toggle persists to localStorage (molecule:show-a2a-edges) - Canvas.tsx merges a2aEdges into allEdges via useMemo; pointerEvents:none on all edge elements keeps nodes draggable - 24 new unit tests across pure function, helper, and component suites - Fix Canvas.a11y and Canvas.pan-to-node store mocks (missing A2A fields) Closes #744 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Contributor
Author
|
Dev Lead review complete — APPROVED for merge. Quality gates verified:
Merge order: after PR #724 lands on main — topology overlay depends on hibernation auto-wake. |
9 tasks
4 tasks
molecule-ai Bot
pushed a commit
that referenced
this pull request
Apr 21, 2026
…overlay feat(canvas): A2A topology overlay with animated delegation edges
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.
Summary
A2ATopologyOverlaycomponent — null-rendering side-effect that fan-outsGET /workspaces/:id/activity?type=delegation&limit=500&source=agentfor every visible node every 60 s, aggregates by source→target pair, and writes directed edges to thea2aEdgesZustand slicepointerEvents: noneon all edge elements so canvas nodes remain draggablelocalStorageviamolecule:show-a2a-edgesCanvas.tsxcombines topology edges and A2A overlay edges viauseMemobefore passing to ReactFlow;a2aEdgesis kept as a separate store slice sonestNode/removeNodedon't accidentally clear the overlaybuildA2AEdgesfiltering + aggregation + edge properties,formatA2ARelativeTime, andA2ATopologyOverlaycomponent integration (toggle, visible-node filtering, fail-safe error handling)Closes #744
Test plan
npm test— 689 tests, 0 failuresnpm run build— compiled successfully, no type errors'use client'self-check — no missing directives🤖 Generated with Claude Code