@principal-ai/subsystems-react 0.56.10 → 0.56.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/subsystem/DiagnosticToggle.d.ts.map +1 -1
  2. package/dist/subsystem/DiagnosticToggle.js +2 -1
  3. package/dist/subsystem/DiagnosticToggle.js.map +1 -1
  4. package/dist/subsystem/SubsystemComponentGraph.d.ts +2 -1
  5. package/dist/subsystem/SubsystemComponentGraph.d.ts.map +1 -1
  6. package/dist/subsystem/SubsystemComponentGraph.js +64 -27
  7. package/dist/subsystem/SubsystemComponentGraph.js.map +1 -1
  8. package/dist/subsystem/SubsystemFileTree.d.ts.map +1 -1
  9. package/dist/subsystem/SubsystemFileTree.js +2 -1
  10. package/dist/subsystem/SubsystemFileTree.js.map +1 -1
  11. package/dist/subsystem/TrailStepsNav.d.ts +3 -1
  12. package/dist/subsystem/TrailStepsNav.d.ts.map +1 -1
  13. package/dist/subsystem/TrailStepsNav.js +13 -10
  14. package/dist/subsystem/TrailStepsNav.js.map +1 -1
  15. package/dist/subsystem/TrailsPanel.d.ts +5 -3
  16. package/dist/subsystem/TrailsPanel.d.ts.map +1 -1
  17. package/dist/subsystem/TrailsPanel.js +44 -68
  18. package/dist/subsystem/TrailsPanel.js.map +1 -1
  19. package/dist/subsystem/trailSidebarScope.d.ts +11 -0
  20. package/dist/subsystem/trailSidebarScope.d.ts.map +1 -0
  21. package/dist/subsystem/trailSidebarScope.js +47 -0
  22. package/dist/subsystem/trailSidebarScope.js.map +1 -0
  23. package/package.json +1 -1
  24. package/src/stories/Canvases/Subsystem/TrailSidebarViews.stories.tsx +68 -0
  25. package/src/subsystem/DiagnosticToggle.tsx +2 -1
  26. package/src/subsystem/SubsystemComponentGraph.sidebar.test.tsx +106 -5
  27. package/src/subsystem/SubsystemComponentGraph.tsx +87 -41
  28. package/src/subsystem/SubsystemFileTree.tsx +2 -1
  29. package/src/subsystem/TrailStepsNav.test.tsx +60 -0
  30. package/src/subsystem/TrailStepsNav.tsx +16 -10
  31. package/src/subsystem/TrailsPanel.test.tsx +99 -35
  32. package/src/subsystem/TrailsPanel.tsx +43 -86
  33. package/src/subsystem/trailSidebarScope.test.ts +89 -0
  34. package/src/subsystem/trailSidebarScope.ts +62 -0
@@ -1 +1 @@
1
- {"version":3,"file":"DiagnosticToggle.d.ts","sourceRoot":"","sources":["../../src/subsystem/DiagnosticToggle.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAOH,MAAM,MAAM,yBAAyB,GAAG,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,yBAAyB,CAAC;IAClC,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,uDAAuD;AACvD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,yBAAyB,EACjC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC3D,KAAK,EAAE,MAAM,GACZ,MAAM,CAKR;AAED,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAyBvE;AAED,MAAM,WAAW,8BAA+B,SAAQ,mBAAmB;IACzE,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,UAAU,EACV,YAAgB,EAChB,KAAa,EACb,IAAY,EACZ,MAAc,EACd,IAAS,EACT,SAAS,EACT,QAAgB,EAChB,SAAiB,EACjB,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,8BAA8B,+BA6HhC"}
1
+ {"version":3,"file":"DiagnosticToggle.d.ts","sourceRoot":"","sources":["../../src/subsystem/DiagnosticToggle.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAOH,MAAM,MAAM,yBAAyB,GAAG,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,yBAAyB,CAAC;IAClC,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,uDAAuD;AACvD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,yBAAyB,EACjC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC3D,KAAK,EAAE,MAAM,GACZ,MAAM,CAKR;AAED,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAyBvE;AAED,MAAM,WAAW,8BAA+B,SAAQ,mBAAmB;IACzE,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,UAAU,EACV,YAAgB,EAChB,KAAa,EACb,IAAY,EACZ,MAAc,EACd,IAAS,EACT,SAAS,EACT,QAAgB,EAChB,SAAiB,EACjB,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,8BAA8B,+BA8HhC"}
@@ -92,7 +92,7 @@ export function SubsystemDiagnosticToggle({ status, issueCount, fixableCount = 0
92
92
  justifyContent: bordered || segmented ? 'center' : undefined,
93
93
  gap: 4,
94
94
  height: bordered || segmented ? 28 : 22,
95
- padding: bordered || segmented ? '4px 7px' : showCount ? '0 7px 0 6px' : '0 5px',
95
+ padding: segmented ? '4px 16px' : bordered ? '4px 7px' : showCount ? '0 7px 0 6px' : '0 5px',
96
96
  border: bordered ? `1px solid ${theme.colors.border}` : 'none',
97
97
  borderRadius: 4,
98
98
  background,
@@ -131,6 +131,7 @@ export function SubsystemDiagnosticToggle({ status, issueCount, fixableCount = 0
131
131
  fontFamily: theme.fonts.monospace,
132
132
  fontSize: theme.fontSizes[0],
133
133
  fontWeight: 600,
134
+ marginLeft: segmented && labelText ? 4 : undefined,
134
135
  lineHeight: 1,
135
136
  }, children: issueCount }))] })] }));
136
137
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DiagnosticToggle.js","sourceRoot":"","sources":["../../src/subsystem/DiagnosticToggle.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DiagnosticToggle.js","sourceRoot":"","sources":["../../src/subsystem/DiagnosticToggle.tsx"],"names":[],"mappings":"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"}
@@ -267,7 +267,8 @@ export interface SubsystemComponentGraphProps {
267
267
  /**
268
268
  * Verification issues for this graph (audit findings). When diagnostics are
269
269
  * active the sidebar's bottom panel becomes the issue list instead of the
270
- * file tree / trails.
270
+ * file tree / trails. Graph issue badges and issue-driven dimming are only
271
+ * shown in that mode.
271
272
  */
272
273
  issues?: SubsystemIssue[];
273
274
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SubsystemComponentGraph.d.ts","sourceRoot":"","sources":["../../src/subsystem/SubsystemComponentGraph.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubsystemComponentGraph.d.ts","sourceRoot":"","sources":["../../src/subsystem/SubsystemComponentGraph.tsx"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ import { SubsystemDiagnosticToggle } from './DiagnosticToggle';
29
29
  import { SubsystemIssueList, issueCategory, issueKindOrder, issueRung, ISSUE_KIND_ICON, ISSUE_RUNG_ORDER, } from './IssueList';
30
30
  import { GraphLayoutCover } from './GraphLayoutCover';
31
31
  import { SubsystemFileTree } from './SubsystemFileTree';
32
- import { buildTreePathMapping } from './paths';
32
+ import { buildTrailSidebarScope } from './trailSidebarScope';
33
33
  import { GRAPH_CANVAS_CLASS, GRAPH_NAV_PROPS, GraphChrome, GraphLayerStyle, LAYOUT_FLIP_CLASS, LAYOUT_FLIP_EDGE_MS, LAYOUT_FLIP_NODE_MS } from './graphChrome';
34
34
  import { ComponentDeclaration } from './ComponentDeclaration';
35
35
  import { FileDrawer, FILE_DRAWER_HEIGHT_MS } from './FileDrawer';
@@ -127,7 +127,7 @@ const TrailDrawerContent = memo(function TrailDrawerContent({ render, trail, ste
127
127
  onVisibleStepChange,
128
128
  }) }));
129
129
  });
130
- function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirection: layoutDirectionProp, defaultLayoutDirection = 'horizontal', onLayoutDirectionChange, hideLayoutToggle = false, refocusOnLayoutFlip = true, initialTrailId, onTrailSelect, onTrailStepHover, onReorderTrails, stepEmphasis, onRemoveStepEmphasis, onSelect, onEdgeSelect, measured: _measured, maxNodeWidth, showEdgeLabels, showSingletonFrames = true, moduleNesting, edgeView, hideSidebar, trailStepMode = 'focus', autoPlayTrails = false, trailAutoPlayIntervalMs = TRAIL_PLAY_PAUSE_MS, zoomOnTrailFocus = true, trailFocusDurationMs = 300, graphTitle, showTrailTitle = false, description, canvasOverlay, sidebarExtra, sidebarAfterDescription, issues, showIssues, filesActive, focusIssueCategory, laneStatus, onSelectIssue, onApplyIssueFix, onHoverIssue, renderFileViewer, renderTrailViewer, onFileSelect, componentVerification, onInspectSymbol, boundaryColors, codeProcessKeys, hideDrawer = false, persistKey, liveEvents, agentsPanel }) {
130
+ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirection: layoutDirectionProp, defaultLayoutDirection = 'horizontal', onLayoutDirectionChange, hideLayoutToggle = false, refocusOnLayoutFlip = true, initialTrailId, onTrailSelect, onTrailStepHover, onReorderTrails, stepEmphasis, onRemoveStepEmphasis, onSelect, onEdgeSelect, measured: _measured, maxNodeWidth, showEdgeLabels, showSingletonFrames = true, moduleNesting, edgeView, hideSidebar, trailStepMode = 'focus', autoPlayTrails = false, trailAutoPlayIntervalMs = TRAIL_PLAY_PAUSE_MS, zoomOnTrailFocus = true, trailFocusDurationMs = 300, graphTitle, showTrailTitle = false, description, canvasOverlay, sidebarExtra, sidebarAfterDescription, issues, showIssues, filesActive, sidebarScope, onSidebarTrailChange, focusIssueCategory, laneStatus, onSelectIssue, onApplyIssueFix, onHoverIssue, renderFileViewer, renderTrailViewer, onFileSelect, componentVerification, onInspectSymbol, boundaryColors, codeProcessKeys, hideDrawer = false, persistKey, liveEvents, agentsPanel }) {
131
131
  const { theme } = useTheme();
132
132
  const { fitView, fitBounds } = useReactFlow();
133
133
  const viewport = useViewport();
@@ -725,7 +725,7 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
725
725
  // node says "diagnostics here" for every finding the sidebar lists.
726
726
  const issueBadgeByAlias = useMemo(() => {
727
727
  const map = new Map();
728
- if (!issues?.length)
728
+ if (showIssues !== true || !issues?.length)
729
729
  return map;
730
730
  for (const issue of issues) {
731
731
  const rung = issueRung(issue.kind);
@@ -760,7 +760,7 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
760
760
  map.set(alias, { ...badge, kind: kinded.kind });
761
761
  }
762
762
  return map;
763
- }, [issues, issueComponent]);
763
+ }, [showIssues, issues, issueComponent]);
764
764
  // Per-frame diagnostics badge: the same fold, but for findings about a
765
765
  // BOUNDARY rather than a construct. Keyed by the region's React Flow node
766
766
  // id — a `module` target names a module frame, a `process` target a process
@@ -770,7 +770,7 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
770
770
  // borrowing its layer's icon would imply the frame is at fault for it.
771
771
  const regionIssueByNodeId = useMemo(() => {
772
772
  const map = new Map();
773
- if (!issues?.length)
773
+ if (showIssues !== true || !issues?.length)
774
774
  return map;
775
775
  for (const issue of issues) {
776
776
  const target = issue.target;
@@ -791,7 +791,7 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
791
791
  });
792
792
  }
793
793
  return map;
794
- }, [issues]);
794
+ }, [showIssues, issues]);
795
795
  // Per-edge step verification badge: maps edge IDs to step verification status.
796
796
  // Keyed by the React Flow edge id (from → mechanism → to). An edge can have
797
797
  // multiple steps with issues; we show the worst status.
@@ -804,7 +804,7 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
804
804
  step_span_stale: 1,
805
805
  };
806
806
  const map = new Map();
807
- if (!issues?.length || !trails?.length) {
807
+ if (showIssues !== true || !issues?.length || !trails?.length) {
808
808
  return map;
809
809
  }
810
810
  for (const issue of issues) {
@@ -831,7 +831,7 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
831
831
  });
832
832
  }
833
833
  return map;
834
- }, [issues, trails, issueStep]);
834
+ }, [showIssues, issues, trails, issueStep]);
835
835
  // Expanded verification layers in the diagnostics list. When any layer with
836
836
  // findings is expanded, the canvas dims everything that layer does not
837
837
  // implicate (see `issueFocus`). The list publishes this through
@@ -864,7 +864,7 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
864
864
  // Returns null when nothing is expanded, no expanded layer has findings, or
865
865
  // the findings implicate nothing — so no dimming is applied.
866
866
  const issueFocus = useMemo(() => {
867
- if (!issues?.length || expandedIssueCategories.length === 0)
867
+ if (showIssues !== true || !issues?.length || expandedIssueCategories.length === 0)
868
868
  return null;
869
869
  const active = new Set(expandedIssueCategories);
870
870
  const activeIssues = issues.filter((i) => active.has(issueCategory(i)));
@@ -927,7 +927,7 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
927
927
  edgeIds.add(e.id);
928
928
  }
929
929
  return { nodeIds, edgeIds };
930
- }, [issues, expandedIssueCategories, components, trails, resolveAlias]);
930
+ }, [showIssues, issues, expandedIssueCategories, components, trails, resolveAlias]);
931
931
  const issueFocusNodeIds = issueFocus?.nodeIds ?? null;
932
932
  const issueFocusEdgeIds = issueFocus?.edgeIds ?? null;
933
933
  // When an edge is selected, dim every other edge + its label to focus it.
@@ -1258,7 +1258,12 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
1258
1258
  issueModuleFocusRef.current = null;
1259
1259
  }, []);
1260
1260
  const hasTrails = useMemo(() => (trails?.length ?? 0) > 0, [trails]);
1261
- const treePaths = useMemo(() => buildTreePathMapping(components), [components]);
1261
+ const { treePaths, trail: sidebarTrail } = sidebarScope;
1262
+ const treeFilePaths = useMemo(() => treePaths.entries.map((entry) => entry.displayPath), [treePaths]);
1263
+ useEffect(() => {
1264
+ if (persistKey)
1265
+ writeViewState(persistKey, { sidebarTrailId: sidebarTrail?.id ?? null });
1266
+ }, [persistKey, sidebarTrail?.id]);
1262
1267
  // Alias → component, so the Trails panel can show human hop names instead
1263
1268
  // of model-local aliases (and the site/`via` distinction can read).
1264
1269
  const componentByAlias = useMemo(() => new Map(components.map((c) => [c.alias, c])), [components]);
@@ -1508,12 +1513,13 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
1508
1513
  }
1509
1514
  setExpandedTrails(new Set([tl.id]));
1510
1515
  setLayoutTrailId(tl.id);
1516
+ onSidebarTrailChange(tl.id);
1511
1517
  setFocusedStepIndex(null);
1512
1518
  setFocusedTrailId(tl.id);
1513
1519
  onTrailSelect?.({ trailId: tl.id });
1514
1520
  fitFocusBounds(new Set(tl.steps.map((s) => trailStepGraphEdgeId(s))));
1515
1521
  setDrawerTarget((prev) => (prev?.kind === 'trail' ? null : prev));
1516
- }, [fitFocusBounds, trailStepMode, onTrailSelect]);
1522
+ }, [fitFocusBounds, trailStepMode, onTrailSelect, onSidebarTrailChange]);
1517
1523
  const clearTrailFocus = useCallback(() => {
1518
1524
  if (pendingFocusFitRef.current != null) {
1519
1525
  window.clearTimeout(pendingFocusFitRef.current);
@@ -1521,25 +1527,26 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
1521
1527
  }
1522
1528
  setExpandedTrails(new Set());
1523
1529
  setLayoutTrailId(null);
1530
+ onSidebarTrailChange(null);
1524
1531
  setFocusedTrailId(null);
1525
1532
  setFocusedStepIndex(null);
1526
1533
  setHoveredTrailStep(null);
1527
1534
  setDrawerTarget((prev) => (prev?.kind === 'trail' ? null : prev));
1528
1535
  onTrailSelect?.(null);
1529
- }, [onTrailSelect]);
1530
- // A hidden trail must not leave the file view filtered to its cast.
1536
+ }, [onTrailSelect, onSidebarTrailChange]);
1537
+ // Switching panels keeps the selected trail, but drops transient hover previews.
1531
1538
  const filesWereActive = useRef(false);
1532
1539
  useEffect(() => {
1533
1540
  const enteringFiles = filesActive && !filesWereActive.current;
1534
1541
  filesWereActive.current = filesActive;
1535
1542
  if (!enteringFiles)
1536
1543
  return;
1537
- clearTrailFocus();
1538
- setExpandedTrails(new Set());
1544
+ if (!sidebarTrail)
1545
+ clearTrailFocus();
1539
1546
  setSelectedEdgeId(null);
1540
- setLayoutTrailId(null);
1547
+ setHoveredTrailStep(null);
1541
1548
  onTrailStepHover?.(null);
1542
- }, [filesActive, clearTrailFocus, onTrailStepHover]);
1549
+ }, [filesActive, clearTrailFocus, onTrailStepHover, sidebarTrail]);
1543
1550
  // Host deep-link: opening the graph from a trail row selects that
1544
1551
  // flow — expand its steps and focus its edges.
1545
1552
  // Guarded by a ref so a later in-tab selection isn't yanked
@@ -1579,6 +1586,7 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
1579
1586
  return;
1580
1587
  }
1581
1588
  // Toggle: clicking the selected step unselects it (back to whole flow).
1589
+ onSidebarTrailChange(tl.id);
1582
1590
  if (focusedTrailId === tl.id && focusedStepIndex === stepIndex) {
1583
1591
  setFocusedStepIndex(null);
1584
1592
  // Pointer is still over the row — keep hover preview so dimming doesn't
@@ -1635,6 +1643,7 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
1635
1643
  renderTrailViewer,
1636
1644
  trailStepMode,
1637
1645
  onTrailSelect,
1646
+ onSidebarTrailChange,
1638
1647
  ]);
1639
1648
  useEffect(() => {
1640
1649
  return () => {
@@ -2039,7 +2048,7 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
2039
2048
  (description || filesActive || issuesActive || sidebarExtra || sidebarAfterDescription ||
2040
2049
  hasTrails);
2041
2050
  const sidebarBodyVisible = hasTrails || filesActive || issuesActive;
2042
- const sidebarTabs = issuesActive
2051
+ const sidebarTabs = issuesActive && !sidebarTrail
2043
2052
  ? agentsPanel
2044
2053
  ? [
2045
2054
  { id: 'issues', label: 'Issues' },
@@ -2050,11 +2059,12 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
2050
2059
  // Header block: extras, then the description.
2051
2060
  const sidebarHeader = (_jsxs(_Fragment, { children: [sidebarExtra, description && (_jsx("div", { style: { fontSize: theme.fontSizes[0], lineHeight: 1.5 }, children: _jsx(IndustryMarkdownSlide, { content: description, slideIdPrefix: "subsystem-desc", slideIndex: 0, isVisible: true, theme: theme, disableScroll: true, disableBasePadding: true, enableKeyboardScrolling: false, autoFocusOnVisible: false }) })), sidebarAfterDescription] }));
2052
2061
  // Lower panel: diagnostics, the file tree, or the trail flow list.
2053
- const sidebarBody = issuesActive ? (diagnosticsTab === 'agents' && agentsPanel ? (_jsx(SubsystemAgentsPanel, { ...agentsPanel })) : (_jsx(SubsystemIssueList, { issues: issues ?? [], focusCategory: focusIssueCategory, laneStatus: laneStatus, onSelectIssue: focusIssueTarget, onDeselectIssue: unfocusIssueTarget, onApplyFix: onApplyIssueFix, onHoverIssue: onHoverIssue, onExpandedCategoriesChange: handleExpandedCategoriesChange }))) : filesActive ? (_jsx(SubsystemFileTree, { files: treePaths.entries.map((entry) => entry.displayPath), selectedFile: openFile ? treePaths.toDisplay.get(openFile) : null, onSelectFile: (path) => {
2062
+ const sidebarPanel = issuesActive ? (diagnosticsTab === 'agents' && agentsPanel && !sidebarTrail ? (_jsx(SubsystemAgentsPanel, { ...agentsPanel })) : (_jsx(SubsystemIssueList, { issues: sidebarScope.issues, focusCategory: focusIssueCategory, laneStatus: sidebarTrail ? undefined : laneStatus, onSelectIssue: focusIssueTarget, onDeselectIssue: unfocusIssueTarget, onApplyFix: onApplyIssueFix, onHoverIssue: onHoverIssue, onExpandedCategoriesChange: handleExpandedCategoriesChange }))) : filesActive ? treePaths.entries.length === 0 ? (_jsx("div", { style: { padding: 16, color: theme.colors.textSecondary }, children: "No files for this trail." })) : (_jsx(SubsystemFileTree, { headerless: true, files: treeFilePaths, selectedFile: openFile ? treePaths.toDisplay.get(openFile) : null, onSelectFile: (path) => {
2054
2063
  const file = treePaths.toFile.get(path);
2055
2064
  if (file)
2056
2065
  onOpenDeclarationFile(file);
2057
- } })) : trails && trails.length > 0 ? (_jsx(TrailsPanel, { drilldown: trailStepMode !== 'dim', trails: trails, expandedTrails: expandedTrails, focusedTrailId: focusedTrailId, focusedStepIndex: focusedStepIndex, hoveredTrailStep: hoveredTrailStep, onToggleCollapsed: toggleTrailCollapsed, onFocusFlow: focusTrailEdges, onClearFocus: clearTrailFocus, onFocusStep: focusTrailStep, onHoverStep: (tl, i) => {
2066
+ } })) : null;
2067
+ const trailNavigation = trails && trails.length > 0 ? (_jsx(TrailsPanel, { drilldown: trailStepMode !== 'dim', trails: trails, expandedTrails: expandedTrails, focusedTrailId: sidebarTrail?.id ?? focusedTrailId, focusedStepIndex: !sidebarTrail || focusedTrailId === sidebarTrail.id ? focusedStepIndex : null, detailContent: sidebarPanel, hoveredTrailStep: hoveredTrailStep, onToggleCollapsed: toggleTrailCollapsed, onFocusFlow: focusTrailEdges, onClearFocus: clearTrailFocus, onFocusStep: focusTrailStep, onHoverStep: (tl, i) => {
2058
2068
  setHoveredTrailStep({ trailId: tl.id, stepIndex: i });
2059
2069
  onTrailStepHover?.({ trailId: tl.id, stepIndex: i });
2060
2070
  }, onHoverFlow: (tl) => {
@@ -2064,6 +2074,9 @@ function Inner({ components, trails, graphifyRelations, orderByLine, layoutDirec
2064
2074
  setHoveredTrailStep(null);
2065
2075
  onTrailStepHover?.(null);
2066
2076
  }, onReorder: onReorderTrails, componentByAlias: componentByAlias, stepEmphasis: stepEmphasis, onRemoveStepEmphasis: onRemoveStepEmphasis })) : null;
2077
+ const sidebarBody = sidebarTrail && trailStepMode !== 'dim'
2078
+ ? trailNavigation
2079
+ : sidebarPanel ?? trailNavigation;
2067
2080
  const fileOverlayView = fileOverlay && (_jsxs("div", { style: {
2068
2081
  position: 'absolute',
2069
2082
  inset: 0,
@@ -2368,15 +2381,39 @@ export function SubsystemComponentGraph(props) {
2368
2381
  const wrapRef = useRef(null);
2369
2382
  const [size, setSize] = useState(null);
2370
2383
  const [filesOpen, setFilesOpen] = useState(false);
2371
- const fileCount = useMemo(() => buildTreePathMapping(props.components).entries.length, [props.components]);
2372
- const hasFiles = fileCount > 0;
2384
+ // Browsing a trail is independent of selecting one of its files or findings.
2385
+ const [sidebarTrailId, setSidebarTrailId] = useState(() => {
2386
+ const saved = readViewState(props.persistKey);
2387
+ return saved.sidebarTrailId !== undefined ? saved.sidebarTrailId : saved.focusedTrailId ?? null;
2388
+ });
2389
+ const sidebarScope = useMemo(() => buildTrailSidebarScope(props.components, props.trails, props.issues, sidebarTrailId), [props.components, props.trails, props.issues, sidebarTrailId]);
2390
+ const fileCount = sidebarScope.treePaths.entries.length;
2391
+ const trailViewLabel = sidebarScope.trail ? 'Trail' : 'Trails';
2392
+ const trailCount = props.trails?.length ?? 0;
2393
+ const hasFiles = fileCount > 0 || sidebarScope.trail != null;
2394
+ const sidebarDiagnostic = sidebarScope.trail ? {
2395
+ ...props.diagnostic,
2396
+ status: props.issues == null ? props.diagnostic?.status ?? 'unknown'
2397
+ : sidebarScope.issues.length > 0 ? 'issues' : 'ok',
2398
+ issueCount: sidebarScope.issues.length,
2399
+ fixableCount: sidebarScope.issues.filter((issue) => issue.fix != null).length,
2400
+ title: undefined,
2401
+ } : props.diagnostic ?? { status: 'unknown', issueCount: props.issues?.length };
2402
+ const hasIssues = (props.issues != null
2403
+ ? sidebarScope.issues.length
2404
+ : sidebarDiagnostic.issueCount ?? 0) > 0;
2405
+ useEffect(() => {
2406
+ if (sidebarTrailId != null && !sidebarScope.trail)
2407
+ setSidebarTrailId(null);
2408
+ }, [sidebarTrailId, sidebarScope.trail]);
2373
2409
  const [diagnosticsOpen, setDiagnosticsOpen] = useState(props.showIssues ?? (props.issues?.length ?? 0) > 0);
2374
- const issuesActive = props.showIssues ?? diagnosticsOpen;
2410
+ const issuesRequested = props.showIssues ?? diagnosticsOpen;
2411
+ const issuesActive = hasIssues && issuesRequested;
2375
2412
  const filesActive = filesOpen && hasFiles && !issuesActive;
2376
2413
  const selectSidebarView = (view) => {
2377
2414
  const nextIssuesActive = view === 'issues';
2378
2415
  setFilesOpen(view === 'files');
2379
- if (nextIssuesActive !== issuesActive) {
2416
+ if (nextIssuesActive !== issuesRequested) {
2380
2417
  if (props.showIssues === undefined)
2381
2418
  setDiagnosticsOpen(nextIssuesActive);
2382
2419
  props.diagnostic?.onToggle?.();
@@ -2388,7 +2425,7 @@ export function SubsystemComponentGraph(props) {
2388
2425
  justifyContent: 'center',
2389
2426
  gap: 4,
2390
2427
  height: 28,
2391
- padding: '4px 7px',
2428
+ padding: '4px 16px',
2392
2429
  fontFamily: theme.fonts.monospace,
2393
2430
  fontSize: theme.fontSizes[0],
2394
2431
  border: 'none',
@@ -2456,6 +2493,6 @@ export function SubsystemComponentGraph(props) {
2456
2493
  padding: 2,
2457
2494
  border: `1px solid ${theme.colors.border}`,
2458
2495
  borderRadius: 6,
2459
- }, children: [_jsxs("button", { type: "button", "aria-label": "Trails", "aria-pressed": !filesActive && !issuesActive, onClick: () => selectSidebarView('trails'), style: viewButtonStyle(!filesActive && !issuesActive), children: [_jsx(Route, { size: 14, "aria-hidden": true }), _jsx("span", { children: "Trails" })] }), hasFiles && (_jsxs("button", { type: "button", "aria-label": `Files (${fileCount} files)`, title: "Show files", "aria-pressed": filesActive, onClick: () => selectSidebarView('files'), style: viewButtonStyle(filesActive), children: [_jsx(Files, { size: 14, "aria-hidden": true }), _jsx("span", { children: "Files" }), _jsx("span", { style: { fontWeight: 600 }, children: fileCount })] })), _jsx(SubsystemDiagnosticToggle, { ...(props.diagnostic ?? { status: 'unknown', issueCount: props.issues?.length }), labelText: "Issues", segmented: true, active: issuesActive, onToggle: () => selectSidebarView('issues') })] })] })), _jsx("div", { ref: wrapRef, style: { flex: 1, minHeight: 0, display: 'flex', flexDirection: 'column' }, children: constructsOnly ? (_jsx(ConstructsCatalog, { components: props.components, onSelect: props.onSelect, title: props.title, hideSidebar: props.hideSidebar, description: props.description, descriptionOpen: props.descriptionOpen, onDescriptionOpenChange: props.onDescriptionOpenChange, diagnostic: props.diagnostic, sidebarExtra: props.sidebarExtra, sidebarAfterDescription: props.sidebarAfterDescription, renderFileViewer: props.renderFileViewer, onFileSelect: props.onFileSelect, componentVerification: props.componentVerification, onInspectSymbol: props.onInspectSymbol })) : (_jsx(ReactFlowProvider, { children: _jsx(Inner, { ...props, showIssues: issuesActive, filesActive: filesActive, measured: size }) })) })] }));
2496
+ }, children: [_jsxs("button", { type: "button", "aria-label": sidebarScope.trail ? 'Trail' : `Trails (${trailCount} ${trailCount === 1 ? 'trail' : 'trails'})`, "aria-pressed": !filesActive && !issuesActive, onClick: () => selectSidebarView('trails'), style: viewButtonStyle(!filesActive && !issuesActive), children: [_jsx(Route, { size: 14, "aria-hidden": true }), _jsx("span", { children: trailViewLabel }), !sidebarScope.trail && _jsx("span", { style: { fontWeight: 600, marginLeft: 4 }, children: trailCount })] }), hasFiles && (_jsxs("button", { type: "button", "aria-label": `Files (${fileCount} files)`, title: "Show files", "aria-pressed": filesActive, onClick: () => selectSidebarView('files'), style: viewButtonStyle(filesActive), children: [_jsx(Files, { size: 14, "aria-hidden": true }), _jsx("span", { children: "Files" }), _jsx("span", { style: { fontWeight: 600, marginLeft: 4 }, children: fileCount })] })), hasIssues && (_jsx(SubsystemDiagnosticToggle, { ...sidebarDiagnostic, labelText: "Issues", segmented: true, active: issuesActive, onToggle: () => selectSidebarView('issues') }))] })] })), _jsx("div", { ref: wrapRef, style: { flex: 1, minHeight: 0, display: 'flex', flexDirection: 'column' }, children: constructsOnly ? (_jsx(ConstructsCatalog, { components: props.components, onSelect: props.onSelect, title: props.title, hideSidebar: props.hideSidebar, description: props.description, descriptionOpen: props.descriptionOpen, onDescriptionOpenChange: props.onDescriptionOpenChange, diagnostic: props.diagnostic, sidebarExtra: props.sidebarExtra, sidebarAfterDescription: props.sidebarAfterDescription, renderFileViewer: props.renderFileViewer, onFileSelect: props.onFileSelect, componentVerification: props.componentVerification, onInspectSymbol: props.onInspectSymbol })) : (_jsx(ReactFlowProvider, { children: _jsx(Inner, { ...props, showIssues: issuesActive, filesActive: filesActive, measured: size, sidebarScope: sidebarScope, onSidebarTrailChange: setSidebarTrailId }) })) })] }));
2460
2497
  }
2461
2498
  //# sourceMappingURL=SubsystemComponentGraph.js.map