feat(desktop): visualize agent graph topology - #3954
Conversation
Generated-by: OpenAI Codex
|
I reviewed this PR at exact head Spec: NO-GO — 2×P1 + 2×P2
The findings were reproduced by static inspection; the isolated worktree lacked installed Standards: NO-GO — 1×P3
Other checks: What I did not check: full local Desktop suite beyond the checks noted. Gate: exact head has P1/P2 findings and therefore cannot be approved or merged until the stable-layout/inspection and edge/work-wait issues are fixed and the Astryx exception is documented or removed.
|
Keep operator positions readable as bounded snapshots change and expose inspection omissions instead of implying that partial data is complete. Document the reviewed native-button exception in the generated severity contract.
Fixes #2596
Summary
Agent Graph shows operator status but its flat list hides which work depends on what, so chains and waiting paths require opening child Sessions one by one.
The panel already receives bounded operators, edges, work previews, and readiness data, but previously rendered only independent rows. This adds a read-only directed topology with visible status/work/wait context, keyboard-selectable operator inspection, and the existing list as a narrow-window and accessibility alternative. Stable provisioning order, selected-node viewport anchoring, and routed skip-level edges keep the topology readable as snapshots change. Operator inspection exposes bounded work, dependency, activation, claim, and activity records with explicit omission counts, and snapshot invalidation refreshes those details.
Native scrolling keeps oversized bounded snapshots reachable. Pan/zoom and arbitrary cyclic layout remain outside this operational DAG view.
Design-system review
The topology node intentionally uses one native
<button>JSX callsite. Astryx Button wraps children in anoverflow: hidden; text-overflow: ellipsisspan, which prevents the heading, work preview, and wait reason from becoming grid items. The surface inventory keeps this file visible through an explicit one-callsite exception; a second native button restores the blocker, as covered by the policy test.Verification
Before — dependencies are not represented:
After — the dependency edge, node status, work preview, and wait reason are visible:
npm run lintnpm run format:checknpm run buildnpm run typechecknpx knip --workspace apps/desktopnpx knip --workspace packages/uinpm run astryx:surface-inventorynpm run check:asf-headersAI use
Select exactly one:
Tool(s) and scope: OpenAI Codex implemented the topology UI, tests, inventory policy, verification evidence, and PR draft.
Checklist
Does this PR entail a change in behavior?