@principal-ai/subsystems-react 0.17.0
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.
- package/README.md +93 -0
- package/dist/components/ConfigurationSelector.d.ts +35 -0
- package/dist/components/ConfigurationSelector.d.ts.map +1 -0
- package/dist/components/ConfigurationSelector.js +63 -0
- package/dist/components/ConfigurationSelector.js.map +1 -0
- package/dist/components/GraphRenderer.d.ts +295 -0
- package/dist/components/GraphRenderer.d.ts.map +1 -0
- package/dist/components/GraphRenderer.js +2008 -0
- package/dist/components/GraphRenderer.js.map +1 -0
- package/dist/components/MultiCanvasRenderer.d.ts +75 -0
- package/dist/components/MultiCanvasRenderer.d.ts.map +1 -0
- package/dist/components/MultiCanvasRenderer.js +203 -0
- package/dist/components/MultiCanvasRenderer.js.map +1 -0
- package/dist/components/NodeTooltip.d.ts +24 -0
- package/dist/components/NodeTooltip.d.ts.map +1 -0
- package/dist/components/NodeTooltip.js +160 -0
- package/dist/components/NodeTooltip.js.map +1 -0
- package/dist/components/SelectionSidebar.d.ts +18 -0
- package/dist/components/SelectionSidebar.d.ts.map +1 -0
- package/dist/components/SelectionSidebar.js +190 -0
- package/dist/components/SelectionSidebar.js.map +1 -0
- package/dist/components/SequenceDiagramRenderer.d.ts +77 -0
- package/dist/components/SequenceDiagramRenderer.d.ts.map +1 -0
- package/dist/components/SequenceDiagramRenderer.js +604 -0
- package/dist/components/SequenceDiagramRenderer.js.map +1 -0
- package/dist/components/WorkflowSequenceDiagram.d.ts +63 -0
- package/dist/components/WorkflowSequenceDiagram.d.ts.map +1 -0
- package/dist/components/WorkflowSequenceDiagram.js +147 -0
- package/dist/components/WorkflowSequenceDiagram.js.map +1 -0
- package/dist/components/dashboard/DashboardRenderer.d.ts +10 -0
- package/dist/components/dashboard/DashboardRenderer.d.ts.map +1 -0
- package/dist/components/dashboard/DashboardRenderer.js +179 -0
- package/dist/components/dashboard/DashboardRenderer.js.map +1 -0
- package/dist/components/dashboard/MetricPanel.d.ts +10 -0
- package/dist/components/dashboard/MetricPanel.d.ts.map +1 -0
- package/dist/components/dashboard/MetricPanel.js +103 -0
- package/dist/components/dashboard/MetricPanel.js.map +1 -0
- package/dist/components/dashboard/MockDataProvider.d.ts +30 -0
- package/dist/components/dashboard/MockDataProvider.d.ts.map +1 -0
- package/dist/components/dashboard/MockDataProvider.js +270 -0
- package/dist/components/dashboard/MockDataProvider.js.map +1 -0
- package/dist/components/dashboard/components/BarChart.d.ts +10 -0
- package/dist/components/dashboard/components/BarChart.d.ts.map +1 -0
- package/dist/components/dashboard/components/BarChart.js +167 -0
- package/dist/components/dashboard/components/BarChart.js.map +1 -0
- package/dist/components/dashboard/components/LineChart.d.ts +10 -0
- package/dist/components/dashboard/components/LineChart.d.ts.map +1 -0
- package/dist/components/dashboard/components/LineChart.js +141 -0
- package/dist/components/dashboard/components/LineChart.js.map +1 -0
- package/dist/components/dashboard/components/MetricCard.d.ts +9 -0
- package/dist/components/dashboard/components/MetricCard.d.ts.map +1 -0
- package/dist/components/dashboard/components/MetricCard.js +163 -0
- package/dist/components/dashboard/components/MetricCard.js.map +1 -0
- package/dist/components/dashboard/components/SourceLink.d.ts +9 -0
- package/dist/components/dashboard/components/SourceLink.d.ts.map +1 -0
- package/dist/components/dashboard/components/SourceLink.js +39 -0
- package/dist/components/dashboard/components/SourceLink.js.map +1 -0
- package/dist/components/dashboard/components/TimeRangeSelector.d.ts +9 -0
- package/dist/components/dashboard/components/TimeRangeSelector.d.ts.map +1 -0
- package/dist/components/dashboard/components/TimeRangeSelector.js +167 -0
- package/dist/components/dashboard/components/TimeRangeSelector.js.map +1 -0
- package/dist/components/dashboard/components/index.d.ts +6 -0
- package/dist/components/dashboard/components/index.d.ts.map +1 -0
- package/dist/components/dashboard/components/index.js +6 -0
- package/dist/components/dashboard/components/index.js.map +1 -0
- package/dist/components/dashboard/index.d.ts +6 -0
- package/dist/components/dashboard/index.d.ts.map +1 -0
- package/dist/components/dashboard/index.js +8 -0
- package/dist/components/dashboard/index.js.map +1 -0
- package/dist/components/dashboard/types.d.ts +74 -0
- package/dist/components/dashboard/types.d.ts.map +1 -0
- package/dist/components/dashboard/types.js +8 -0
- package/dist/components/dashboard/types.js.map +1 -0
- package/dist/components/session-events/SessionEventFeed.d.ts +34 -0
- package/dist/components/session-events/SessionEventFeed.d.ts.map +1 -0
- package/dist/components/session-events/SessionEventFeed.js +1196 -0
- package/dist/components/session-events/SessionEventFeed.js.map +1 -0
- package/dist/components/session-events/index.d.ts +7 -0
- package/dist/components/session-events/index.d.ts.map +1 -0
- package/dist/components/session-events/index.js +6 -0
- package/dist/components/session-events/index.js.map +1 -0
- package/dist/components/state-view/PipelineView.d.ts +14 -0
- package/dist/components/state-view/PipelineView.d.ts.map +1 -0
- package/dist/components/state-view/PipelineView.js +195 -0
- package/dist/components/state-view/PipelineView.js.map +1 -0
- package/dist/components/state-view/index.d.ts +14 -0
- package/dist/components/state-view/index.d.ts.map +1 -0
- package/dist/components/state-view/index.js +12 -0
- package/dist/components/state-view/index.js.map +1 -0
- package/dist/components/state-view/types.d.ts +188 -0
- package/dist/components/state-view/types.d.ts.map +1 -0
- package/dist/components/state-view/types.js +10 -0
- package/dist/components/state-view/types.js.map +1 -0
- package/dist/components/state-view/useStateView.d.ts +32 -0
- package/dist/components/state-view/useStateView.d.ts.map +1 -0
- package/dist/components/state-view/useStateView.js +129 -0
- package/dist/components/state-view/useStateView.js.map +1 -0
- package/dist/contexts/GraphEditContext.d.ts +20 -0
- package/dist/contexts/GraphEditContext.d.ts.map +1 -0
- package/dist/contexts/GraphEditContext.js +8 -0
- package/dist/contexts/GraphEditContext.js.map +1 -0
- package/dist/contexts/TooltipPortalContext.d.ts +8 -0
- package/dist/contexts/TooltipPortalContext.d.ts.map +1 -0
- package/dist/contexts/TooltipPortalContext.js +8 -0
- package/dist/contexts/TooltipPortalContext.js.map +1 -0
- package/dist/edges/CustomEdge.d.ts +24 -0
- package/dist/edges/CustomEdge.d.ts.map +1 -0
- package/dist/edges/CustomEdge.js +222 -0
- package/dist/edges/CustomEdge.js.map +1 -0
- package/dist/edges/GenericEdge.d.ts +18 -0
- package/dist/edges/GenericEdge.d.ts.map +1 -0
- package/dist/edges/GenericEdge.js +10 -0
- package/dist/edges/GenericEdge.js.map +1 -0
- package/dist/graphify/anchor.d.ts +28 -0
- package/dist/graphify/anchor.d.ts.map +1 -0
- package/dist/graphify/anchor.js +132 -0
- package/dist/graphify/anchor.js.map +1 -0
- package/dist/graphify/consolidated.d.ts +210 -0
- package/dist/graphify/consolidated.d.ts.map +1 -0
- package/dist/graphify/consolidated.js +11 -0
- package/dist/graphify/consolidated.js.map +1 -0
- package/dist/graphify/ids.d.ts +19 -0
- package/dist/graphify/ids.d.ts.map +1 -0
- package/dist/graphify/ids.js +46 -0
- package/dist/graphify/ids.js.map +1 -0
- package/dist/graphify/index.d.ts +18 -0
- package/dist/graphify/index.d.ts.map +1 -0
- package/dist/graphify/index.js +12 -0
- package/dist/graphify/index.js.map +1 -0
- package/dist/graphify/kind.d.ts +23 -0
- package/dist/graphify/kind.d.ts.map +1 -0
- package/dist/graphify/kind.js +77 -0
- package/dist/graphify/kind.js.map +1 -0
- package/dist/graphify/resolve.d.ts +48 -0
- package/dist/graphify/resolve.d.ts.map +1 -0
- package/dist/graphify/resolve.js +83 -0
- package/dist/graphify/resolve.js.map +1 -0
- package/dist/graphify/signature.d.ts +87 -0
- package/dist/graphify/signature.d.ts.map +1 -0
- package/dist/graphify/signature.js +276 -0
- package/dist/graphify/signature.js.map +1 -0
- package/dist/graphify/types.d.ts +141 -0
- package/dist/graphify/types.d.ts.map +1 -0
- package/dist/graphify/types.js +8 -0
- package/dist/graphify/types.js.map +1 -0
- package/dist/hooks/useElkLayout.d.ts +66 -0
- package/dist/hooks/useElkLayout.d.ts.map +1 -0
- package/dist/hooks/useElkLayout.js +136 -0
- package/dist/hooks/useElkLayout.js.map +1 -0
- package/dist/hooks/usePathBasedEvents.d.ts +42 -0
- package/dist/hooks/usePathBasedEvents.d.ts.map +1 -0
- package/dist/hooks/usePathBasedEvents.js +119 -0
- package/dist/hooks/usePathBasedEvents.js.map +1 -0
- package/dist/hooks/useSequenceLayout.d.ts +186 -0
- package/dist/hooks/useSequenceLayout.d.ts.map +1 -0
- package/dist/hooks/useSequenceLayout.js +327 -0
- package/dist/hooks/useSequenceLayout.js.map +1 -0
- package/dist/hooks/useUndoRedo.d.ts +80 -0
- package/dist/hooks/useUndoRedo.d.ts.map +1 -0
- package/dist/hooks/useUndoRedo.js +70 -0
- package/dist/hooks/useUndoRedo.js.map +1 -0
- package/dist/index.d.ts +73 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/nodes/CustomNode.d.ts +28 -0
- package/dist/nodes/CustomNode.d.ts.map +1 -0
- package/dist/nodes/CustomNode.js +820 -0
- package/dist/nodes/CustomNode.js.map +1 -0
- package/dist/nodes/GenericNode.d.ts +20 -0
- package/dist/nodes/GenericNode.d.ts.map +1 -0
- package/dist/nodes/GenericNode.js +20 -0
- package/dist/nodes/GenericNode.js.map +1 -0
- package/dist/nodes/otel/OtelBoundaryNode.d.ts +55 -0
- package/dist/nodes/otel/OtelBoundaryNode.d.ts.map +1 -0
- package/dist/nodes/otel/OtelBoundaryNode.js +81 -0
- package/dist/nodes/otel/OtelBoundaryNode.js.map +1 -0
- package/dist/nodes/otel/OtelEventNode.d.ts +59 -0
- package/dist/nodes/otel/OtelEventNode.d.ts.map +1 -0
- package/dist/nodes/otel/OtelEventNode.js +82 -0
- package/dist/nodes/otel/OtelEventNode.js.map +1 -0
- package/dist/nodes/otel/OtelResourceNode.d.ts +53 -0
- package/dist/nodes/otel/OtelResourceNode.d.ts.map +1 -0
- package/dist/nodes/otel/OtelResourceNode.js +105 -0
- package/dist/nodes/otel/OtelResourceNode.js.map +1 -0
- package/dist/nodes/otel/OtelScopeNode.d.ts +53 -0
- package/dist/nodes/otel/OtelScopeNode.d.ts.map +1 -0
- package/dist/nodes/otel/OtelScopeNode.js +81 -0
- package/dist/nodes/otel/OtelScopeNode.js.map +1 -0
- package/dist/nodes/otel/OtelSpanConventionNode.d.ts +61 -0
- package/dist/nodes/otel/OtelSpanConventionNode.d.ts.map +1 -0
- package/dist/nodes/otel/OtelSpanConventionNode.js +131 -0
- package/dist/nodes/otel/OtelSpanConventionNode.js.map +1 -0
- package/dist/nodes/otel/index.d.ts +17 -0
- package/dist/nodes/otel/index.d.ts.map +1 -0
- package/dist/nodes/otel/index.js +13 -0
- package/dist/nodes/otel/index.js.map +1 -0
- package/dist/nodes/otel/shared/NodeBadges.d.ts +10 -0
- package/dist/nodes/otel/shared/NodeBadges.d.ts.map +1 -0
- package/dist/nodes/otel/shared/NodeBadges.js +178 -0
- package/dist/nodes/otel/shared/NodeBadges.js.map +1 -0
- package/dist/nodes/otel/shared/NodeContent.d.ts +10 -0
- package/dist/nodes/otel/shared/NodeContent.d.ts.map +1 -0
- package/dist/nodes/otel/shared/NodeContent.js +96 -0
- package/dist/nodes/otel/shared/NodeContent.js.map +1 -0
- package/dist/nodes/otel/shared/index.d.ts +8 -0
- package/dist/nodes/otel/shared/index.d.ts.map +1 -0
- package/dist/nodes/otel/shared/index.js +8 -0
- package/dist/nodes/otel/shared/index.js.map +1 -0
- package/dist/nodes/otel/shared/types.d.ts +129 -0
- package/dist/nodes/otel/shared/types.d.ts.map +1 -0
- package/dist/nodes/otel/shared/types.js +5 -0
- package/dist/nodes/otel/shared/types.js.map +1 -0
- package/dist/nodes/otel/shared/useNodeBehavior.d.ts +42 -0
- package/dist/nodes/otel/shared/useNodeBehavior.d.ts.map +1 -0
- package/dist/nodes/otel/shared/useNodeBehavior.js +61 -0
- package/dist/nodes/otel/shared/useNodeBehavior.js.map +1 -0
- package/dist/pierre/PierreFileView.d.ts +17 -0
- package/dist/pierre/PierreFileView.d.ts.map +1 -0
- package/dist/pierre/PierreFileView.js +46 -0
- package/dist/pierre/PierreFileView.js.map +1 -0
- package/dist/pierre/PierreSnippetView.d.ts +28 -0
- package/dist/pierre/PierreSnippetView.d.ts.map +1 -0
- package/dist/pierre/PierreSnippetView.js +105 -0
- package/dist/pierre/PierreSnippetView.js.map +1 -0
- package/dist/pierre/PierreThroughlineCodeView.d.ts +22 -0
- package/dist/pierre/PierreThroughlineCodeView.d.ts.map +1 -0
- package/dist/pierre/PierreThroughlineCodeView.js +206 -0
- package/dist/pierre/PierreThroughlineCodeView.js.map +1 -0
- package/dist/pierre/constructColors.d.ts +24 -0
- package/dist/pierre/constructColors.d.ts.map +1 -0
- package/dist/pierre/constructColors.js +91 -0
- package/dist/pierre/constructColors.js.map +1 -0
- package/dist/pierre/index.d.ts +12 -0
- package/dist/pierre/index.d.ts.map +1 -0
- package/dist/pierre/index.js +7 -0
- package/dist/pierre/index.js.map +1 -0
- package/dist/pierre/pierreBackground.d.ts +15 -0
- package/dist/pierre/pierreBackground.d.ts.map +1 -0
- package/dist/pierre/pierreBackground.js +31 -0
- package/dist/pierre/pierreBackground.js.map +1 -0
- package/dist/pierre/pierreFileLang.d.ts +27 -0
- package/dist/pierre/pierreFileLang.d.ts.map +1 -0
- package/dist/pierre/pierreFileLang.js +52 -0
- package/dist/pierre/pierreFileLang.js.map +1 -0
- package/dist/pierre/pierreSyntaxTheme.d.ts +11 -0
- package/dist/pierre/pierreSyntaxTheme.d.ts.map +1 -0
- package/dist/pierre/pierreSyntaxTheme.js +20 -0
- package/dist/pierre/pierreSyntaxTheme.js.map +1 -0
- package/dist/pierre/scrollAnchor.d.ts +5 -0
- package/dist/pierre/scrollAnchor.d.ts.map +1 -0
- package/dist/pierre/scrollAnchor.js +9 -0
- package/dist/pierre/scrollAnchor.js.map +1 -0
- package/dist/pierre/sliceSnippet.d.ts +10 -0
- package/dist/pierre/sliceSnippet.d.ts.map +1 -0
- package/dist/pierre/sliceSnippet.js +16 -0
- package/dist/pierre/sliceSnippet.js.map +1 -0
- package/dist/pierre/syntaxTokens.d.ts +11 -0
- package/dist/pierre/syntaxTokens.d.ts.map +1 -0
- package/dist/pierre/syntaxTokens.js +51 -0
- package/dist/pierre/syntaxTokens.js.map +1 -0
- package/dist/stories/Subsystem/ComponentGraph/fixtures.d.ts +8 -0
- package/dist/stories/Subsystem/ComponentGraph/fixtures.d.ts.map +1 -0
- package/dist/stories/Subsystem/ComponentGraph/fixtures.js +116 -0
- package/dist/stories/Subsystem/ComponentGraph/fixtures.js.map +1 -0
- package/dist/subsystem/ComponentDeclaration.d.ts +87 -0
- package/dist/subsystem/ComponentDeclaration.d.ts.map +1 -0
- package/dist/subsystem/ComponentDeclaration.js +374 -0
- package/dist/subsystem/ComponentDeclaration.js.map +1 -0
- package/dist/subsystem/FileDrawer.d.ts +17 -0
- package/dist/subsystem/FileDrawer.d.ts.map +1 -0
- package/dist/subsystem/FileDrawer.js +72 -0
- package/dist/subsystem/FileDrawer.js.map +1 -0
- package/dist/subsystem/GraphLayoutCover.d.ts +20 -0
- package/dist/subsystem/GraphLayoutCover.d.ts.map +1 -0
- package/dist/subsystem/GraphLayoutCover.js +42 -0
- package/dist/subsystem/GraphLayoutCover.js.map +1 -0
- package/dist/subsystem/SubsystemComponentGraph.d.ts +96 -0
- package/dist/subsystem/SubsystemComponentGraph.d.ts.map +1 -0
- package/dist/subsystem/SubsystemComponentGraph.js +1059 -0
- package/dist/subsystem/SubsystemComponentGraph.js.map +1 -0
- package/dist/subsystem/SubsystemFileTree.d.ts +24 -0
- package/dist/subsystem/SubsystemFileTree.d.ts.map +1 -0
- package/dist/subsystem/SubsystemFileTree.js +150 -0
- package/dist/subsystem/SubsystemFileTree.js.map +1 -0
- package/dist/subsystem/declarationRef.d.ts +39 -0
- package/dist/subsystem/declarationRef.d.ts.map +1 -0
- package/dist/subsystem/declarationRef.js +32 -0
- package/dist/subsystem/declarationRef.js.map +1 -0
- package/dist/subsystem/formatDeclaration.d.ts +11 -0
- package/dist/subsystem/formatDeclaration.d.ts.map +1 -0
- package/dist/subsystem/formatDeclaration.js +146 -0
- package/dist/subsystem/formatDeclaration.js.map +1 -0
- package/dist/subsystem/model.d.ts +353 -0
- package/dist/subsystem/model.d.ts.map +1 -0
- package/dist/subsystem/model.js +503 -0
- package/dist/subsystem/model.js.map +1 -0
- package/dist/subsystem/nodes.d.ts +69 -0
- package/dist/subsystem/nodes.d.ts.map +1 -0
- package/dist/subsystem/nodes.js +289 -0
- package/dist/subsystem/nodes.js.map +1 -0
- package/dist/subsystem/paths.d.ts +63 -0
- package/dist/subsystem/paths.d.ts.map +1 -0
- package/dist/subsystem/paths.js +86 -0
- package/dist/subsystem/paths.js.map +1 -0
- package/dist/subsystem/tokenizeComponent.d.ts +20 -0
- package/dist/subsystem/tokenizeComponent.d.ts.map +1 -0
- package/dist/subsystem/tokenizeComponent.js +56 -0
- package/dist/subsystem/tokenizeComponent.js.map +1 -0
- package/dist/subsystem/tokenizeFormatted.d.ts +12 -0
- package/dist/subsystem/tokenizeFormatted.d.ts.map +1 -0
- package/dist/subsystem/tokenizeFormatted.js +13 -0
- package/dist/subsystem/tokenizeFormatted.js.map +1 -0
- package/dist/utils/animationMapping.d.ts +53 -0
- package/dist/utils/animationMapping.d.ts.map +1 -0
- package/dist/utils/animationMapping.js +126 -0
- package/dist/utils/animationMapping.js.map +1 -0
- package/dist/utils/canvasBounds.d.ts +50 -0
- package/dist/utils/canvasBounds.d.ts.map +1 -0
- package/dist/utils/canvasBounds.js +88 -0
- package/dist/utils/canvasBounds.js.map +1 -0
- package/dist/utils/elkLayout.d.ts +137 -0
- package/dist/utils/elkLayout.d.ts.map +1 -0
- package/dist/utils/elkLayout.js +596 -0
- package/dist/utils/elkLayout.js.map +1 -0
- package/dist/utils/graphConverter.d.ts +18 -0
- package/dist/utils/graphConverter.d.ts.map +1 -0
- package/dist/utils/graphConverter.js +114 -0
- package/dist/utils/graphConverter.js.map +1 -0
- package/dist/utils/iconResolver.d.ts +29 -0
- package/dist/utils/iconResolver.d.ts.map +1 -0
- package/dist/utils/iconResolver.js +30 -0
- package/dist/utils/iconResolver.js.map +1 -0
- package/dist/utils/orientationUtils.d.ts +19 -0
- package/dist/utils/orientationUtils.d.ts.map +1 -0
- package/dist/utils/orientationUtils.js +62 -0
- package/dist/utils/orientationUtils.js.map +1 -0
- package/package.json +80 -0
- package/src/components/ConfigurationSelector.tsx +133 -0
- package/src/components/GraphRenderer.tsx +3195 -0
- package/src/components/MultiCanvasRenderer.tsx +295 -0
- package/src/components/NodeTooltip.tsx +279 -0
- package/src/components/PendingChanges.test.tsx +375 -0
- package/src/components/SelectionSidebar.tsx +352 -0
- package/src/components/SequenceDiagramRenderer.tsx +1156 -0
- package/src/components/WorkflowSequenceDiagram.tsx +270 -0
- package/src/components/dashboard/DashboardRenderer.tsx +317 -0
- package/src/components/dashboard/MetricPanel.tsx +254 -0
- package/src/components/dashboard/MockDataProvider.ts +330 -0
- package/src/components/dashboard/components/BarChart.tsx +299 -0
- package/src/components/dashboard/components/LineChart.tsx +279 -0
- package/src/components/dashboard/components/MetricCard.tsx +270 -0
- package/src/components/dashboard/components/SourceLink.tsx +63 -0
- package/src/components/dashboard/components/TimeRangeSelector.tsx +280 -0
- package/src/components/dashboard/components/index.ts +5 -0
- package/src/components/dashboard/index.ts +47 -0
- package/src/components/dashboard/types.ts +126 -0
- package/src/components/session-events/SessionEventFeed.tsx +1797 -0
- package/src/components/session-events/index.ts +13 -0
- package/src/components/state-view/PipelineView.tsx +347 -0
- package/src/components/state-view/index.ts +14 -0
- package/src/components/state-view/types.ts +261 -0
- package/src/components/state-view/useStateView.ts +205 -0
- package/src/contexts/GraphEditContext.tsx +27 -0
- package/src/contexts/TooltipPortalContext.ts +8 -0
- package/src/edges/CustomEdge.tsx +402 -0
- package/src/edges/GenericEdge.tsx +36 -0
- package/src/graphify/anchor.test.ts +124 -0
- package/src/graphify/anchor.ts +160 -0
- package/src/graphify/consolidated.ts +246 -0
- package/src/graphify/ids.ts +48 -0
- package/src/graphify/index.ts +72 -0
- package/src/graphify/kind.test.ts +108 -0
- package/src/graphify/kind.ts +120 -0
- package/src/graphify/resolve.test.ts +89 -0
- package/src/graphify/resolve.ts +115 -0
- package/src/graphify/signature.test.ts +278 -0
- package/src/graphify/signature.ts +354 -0
- package/src/graphify/types.ts +164 -0
- package/src/hooks/useElkLayout.test.ts +134 -0
- package/src/hooks/useElkLayout.ts +191 -0
- package/src/hooks/usePathBasedEvents.ts +192 -0
- package/src/hooks/useSequenceLayout.ts +543 -0
- package/src/hooks/useUndoRedo.ts +144 -0
- package/src/index.ts +341 -0
- package/src/nodes/CustomNode.tsx +1231 -0
- package/src/nodes/GenericNode.tsx +55 -0
- package/src/nodes/otel/OtelBoundaryNode.tsx +224 -0
- package/src/nodes/otel/OtelEventNode.tsx +225 -0
- package/src/nodes/otel/OtelResourceNode.tsx +251 -0
- package/src/nodes/otel/OtelScopeNode.tsx +221 -0
- package/src/nodes/otel/OtelSpanConventionNode.tsx +295 -0
- package/src/nodes/otel/index.ts +23 -0
- package/src/nodes/otel/shared/NodeBadges.tsx +295 -0
- package/src/nodes/otel/shared/NodeContent.tsx +204 -0
- package/src/nodes/otel/shared/index.ts +8 -0
- package/src/nodes/otel/shared/types.ts +138 -0
- package/src/nodes/otel/shared/useNodeBehavior.ts +114 -0
- package/src/pierre/PierreFileView.tsx +81 -0
- package/src/pierre/PierreSnippetView.tsx +184 -0
- package/src/pierre/PierreThroughlineCodeView.tsx +304 -0
- package/src/pierre/constructColors.test.ts +52 -0
- package/src/pierre/constructColors.ts +112 -0
- package/src/pierre/index.ts +18 -0
- package/src/pierre/pierreBackground.ts +33 -0
- package/src/pierre/pierreFileLang.test.ts +26 -0
- package/src/pierre/pierreFileLang.ts +55 -0
- package/src/pierre/pierreSyntaxTheme.ts +23 -0
- package/src/pierre/scrollAnchor.test.ts +13 -0
- package/src/pierre/scrollAnchor.ts +11 -0
- package/src/pierre/sliceSnippet.test.ts +21 -0
- package/src/pierre/sliceSnippet.ts +31 -0
- package/src/pierre/syntaxTokens.test.ts +35 -0
- package/src/pierre/syntaxTokens.ts +60 -0
- package/src/stories/Audit/BoundaryNodes.stories.tsx +385 -0
- package/src/stories/Audit/CanvasEdgeTypes.stories.tsx +1448 -0
- package/src/stories/Audit/CanvasNodeTypes.stories.tsx +1049 -0
- package/src/stories/Audit/ColorPriority.stories.tsx +895 -0
- package/src/stories/Audit/DiamondBadges.stories.tsx +629 -0
- package/src/stories/Audit/NodeDimensionsTesting.stories.tsx +724 -0
- package/src/stories/Audit/NodeFieldsAudit.stories.tsx +996 -0
- package/src/stories/Audit/NodeFontSizeTesting.stories.tsx +715 -0
- package/src/stories/Audit/NodeShapes.stories.tsx +1208 -0
- package/src/stories/Audit/WideNodesTesting.stories.tsx +1045 -0
- package/src/stories/Components/DashboardRenderer.stories.tsx +263 -0
- package/src/stories/Components/GraphRenderer.stories.tsx +3236 -0
- package/src/stories/Components/MultiCanvasRenderer.stories.tsx +370 -0
- package/src/stories/Components/SequenceDiagram.stories.tsx +255 -0
- package/src/stories/Components/StateView.stories.tsx +417 -0
- package/src/stories/Components/TraceViewer.stories.tsx +442 -0
- package/src/stories/Components/WorkflowSequenceDiagram.stories.tsx +802 -0
- package/src/stories/Features/AnimationWorkshop.stories.tsx +727 -0
- package/src/stories/Features/ChangeTypeVisual.stories.tsx +67 -0
- package/src/stories/Features/EventDrivenAnimations.stories.tsx +513 -0
- package/src/stories/Features/MultiConfig.stories.tsx +539 -0
- package/src/stories/Introduction.mdx +34 -0
- package/src/stories/Layout/ElkEdgeRouting.stories.tsx +539 -0
- package/src/stories/Layout/GraphOrientation.stories.tsx +500 -0
- package/src/stories/Layout/MultiDirectionalConnections.stories.tsx +352 -0
- package/src/stories/Nodes/NodeDefinitionComparison.stories.tsx +560 -0
- package/src/stories/Nodes/NodeNameFallbacks.stories.tsx +491 -0
- package/src/stories/Nodes/NumericColors.stories.tsx +440 -0
- package/src/stories/OTEL/EventNameDisplay.stories.tsx +694 -0
- package/src/stories/OTEL/EventNameFallback.stories.tsx +578 -0
- package/src/stories/OTEL/OtelComponents.stories.tsx +422 -0
- package/src/stories/OTEL/OtelNodeTypesPrototype.stories.tsx +806 -0
- package/src/stories/OTEL/RawEventCards.stories.tsx +57 -0
- package/src/stories/OTEL/SpanBadges.stories.tsx +840 -0
- package/src/stories/OTEL/ValidationEventsCanvas.stories.tsx +209 -0
- package/src/stories/Pierre/CodeView.stories.tsx +219 -0
- package/src/stories/RealWorld/BacklogMdCanvases.stories.tsx +721 -0
- package/src/stories/RealWorld/FileCitySequence.stories.tsx +516 -0
- package/src/stories/RealWorld/RealCanvasFiles.stories.tsx +336 -0
- package/src/stories/Subsystem/ComponentDeclarationAudit.stories.tsx +321 -0
- package/src/stories/Subsystem/ComponentGraph/Appearance.stories.tsx +365 -0
- package/src/stories/Subsystem/ComponentGraph/Basics.stories.tsx +137 -0
- package/src/stories/Subsystem/ComponentGraph/Captures.stories.tsx +238 -0
- package/src/stories/Subsystem/ComponentGraph/DetailPanel.stories.tsx +315 -0
- package/src/stories/Subsystem/ComponentGraph/Flows.stories.tsx +239 -0
- package/src/stories/Subsystem/ComponentGraph/FrameworkStereotype.stories.tsx +216 -0
- package/src/stories/Subsystem/ComponentGraph/GraphTitle.stories.tsx +70 -0
- package/src/stories/Subsystem/ComponentGraph/Processes.stories.tsx +68 -0
- package/src/stories/Subsystem/ComponentGraph/Scenarios.stories.tsx +959 -0
- package/src/stories/Subsystem/ComponentGraph/Spotlights.stories.tsx +681 -0
- package/src/stories/Subsystem/ComponentGraph/fixtures.ts +129 -0
- package/src/stories/__traces__/test-run.canvas.json +241 -0
- package/src/stories/data/activity-feed-analytics.dashboard.json +300 -0
- package/src/stories/data/file-city-images-transformed.otel.canvas.json +295 -0
- package/src/stories/data/file-city-workflows.json +269 -0
- package/src/stories/data/graph-converter-test-execution.json +443 -0
- package/src/stories/data/graph-converter-test.workflow.json +105 -0
- package/src/stories/data/graph-converter-validated-execution.json +58 -0
- package/src/stories/data/opencode-session-raw-events.json +273396 -0
- package/src/subsystem/ComponentDeclaration.tsx +643 -0
- package/src/subsystem/FileDrawer.tsx +106 -0
- package/src/subsystem/GraphLayoutCover.tsx +69 -0
- package/src/subsystem/SubsystemComponentGraph.tsx +1644 -0
- package/src/subsystem/SubsystemFileTree.tsx +190 -0
- package/src/subsystem/declarationRef.test.ts +33 -0
- package/src/subsystem/declarationRef.ts +63 -0
- package/src/subsystem/formatDeclaration.ts +174 -0
- package/src/subsystem/model.test.ts +244 -0
- package/src/subsystem/model.ts +850 -0
- package/src/subsystem/nodes.test.ts +56 -0
- package/src/subsystem/nodes.tsx +443 -0
- package/src/subsystem/paths.test.ts +123 -0
- package/src/subsystem/paths.ts +127 -0
- package/src/subsystem/tokenizeComponent.ts +70 -0
- package/src/subsystem/tokenizeFormatted.ts +19 -0
- package/src/utils/animationMapping.ts +166 -0
- package/src/utils/canvasBounds.ts +146 -0
- package/src/utils/elkLayout.test.ts +240 -0
- package/src/utils/elkLayout.ts +779 -0
- package/src/utils/graphConverter.ts +148 -0
- package/src/utils/iconResolver.tsx +53 -0
- package/src/utils/orientationUtils.ts +73 -0
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subsystem component-graph data model + converters.
|
|
3
|
+
*
|
|
4
|
+
* A subsystem snapshot (see the "Subsystem artifact: facets" topic) is captured
|
|
5
|
+
* as component nodes (construct-tagged source units), file refs, integration edges,
|
|
6
|
+
* and entry points. This module defines the minimal document shape for the
|
|
7
|
+
* *graph* facet and converts it to React Flow nodes/edges — packages render as
|
|
8
|
+
* subgraphs, only cross-package edges leave the box, and shared seams
|
|
9
|
+
* (registries/barrels/facades) are edge targets, never member nodes.
|
|
10
|
+
*
|
|
11
|
+
* Self-contained in this package (not yet promoted to `@principal-ai/core`), so
|
|
12
|
+
* we can iterate on the UI + story without publishing a dependency.
|
|
13
|
+
*/
|
|
14
|
+
import { type Edge, type Node } from '@xyflow/react';
|
|
15
|
+
import type { GraphifyComponentDetail } from '../graphify';
|
|
16
|
+
import type { SubsystemDeclarationRef } from './declarationRef';
|
|
17
|
+
export type SubsystemComponentConstruct = 'class' | 'function' | 'method' | 'interface' | 'type_alias' | 'enum' | 'module' | 'store' | 'external';
|
|
18
|
+
/**
|
|
19
|
+
* Semantic role — where the node sits in the topology, orthogonal to
|
|
20
|
+
* `construct` (what it is). Roles have *inherited* anatomy: an entry renders
|
|
21
|
+
* as its real code shape (function dispatcher, type contract); a service has
|
|
22
|
+
* no source at all (`construct: 'external'` + purl identity). Contrast with
|
|
23
|
+
* `construct: 'store'`, which introduces its own anatomy (the state block) —
|
|
24
|
+
* that is why store is a construct and not a role. Role nodes must stay anchored to real code: an
|
|
25
|
+
* `entry` is a boundary element (route dispatcher, message contract) carrying
|
|
26
|
+
* the wire address as identity; a `service` is an external system the process
|
|
27
|
+
* calls out to (identity via purl, no `process` — it belongs to no region).
|
|
28
|
+
*/
|
|
29
|
+
export type SubsystemComponentRole = 'entry' | 'service';
|
|
30
|
+
/**
|
|
31
|
+
* Framework that owns a stereotype vocabulary (open string).
|
|
32
|
+
* Examples: `react`, `vue`, `nestjs`, `django`, `spring`.
|
|
33
|
+
* Empty when the node is language-only / framework-agnostic.
|
|
34
|
+
*/
|
|
35
|
+
export type SubsystemFramework = string;
|
|
36
|
+
/**
|
|
37
|
+
* Framework-level pattern stamped on a language construct (open string).
|
|
38
|
+
* Examples: `component`, `hook`, `middleware`, `controller`, `guard`.
|
|
39
|
+
* Empty when no framework pattern applies. Pair with `framework` when set —
|
|
40
|
+
* a React component stays `construct: 'function'` with
|
|
41
|
+
* `framework: 'react'` + `stereotype: 'component'`.
|
|
42
|
+
*/
|
|
43
|
+
export type SubsystemStereotype = string;
|
|
44
|
+
export type SubsystemDeclTokenKind = 'keyword' | 'name' | 'member' | 'type' | 'punctuation' | 'string' | 'newline';
|
|
45
|
+
export interface SubsystemDeclToken {
|
|
46
|
+
text: string;
|
|
47
|
+
kind: SubsystemDeclTokenKind;
|
|
48
|
+
/** Shiki/Pierre foreground when tokenized client-side; omitted on legacy wire tokens. */
|
|
49
|
+
color?: string;
|
|
50
|
+
}
|
|
51
|
+
export type SubsystemEdgeMechanism = 'imports' | 'imports_from' | 're_exports' | 'defines' | 'calls' | 'extends' | 'inherits' | 'implements' | 'mixes_in' | 'uses' | 'method' | 'references' | 'contains' | 'feeds' | 'produces' | 'writes' | 'reads' | 'watches' | 'registers-into';
|
|
52
|
+
/** A component node — the named unit, construct-tagged; `file` is its location. */
|
|
53
|
+
export interface SubsystemComponent {
|
|
54
|
+
id: string;
|
|
55
|
+
name: string;
|
|
56
|
+
/**
|
|
57
|
+
* The node's construct — what it IS as a declaration (class, function,
|
|
58
|
+
* method, interface, type alias, enum, store, external), driving node
|
|
59
|
+
* anatomy, color, badge, and the verification strategy. Every construct
|
|
60
|
+
* anchors to a definition; runtime occurrences (variables, activations,
|
|
61
|
+
* instances) are NOT constructs — they belong to a future execution-mode
|
|
62
|
+
* graph whose occurrence nodes reference these definitions. Ontology:
|
|
63
|
+
* construct = what it is, framework + stereotype = which framework pattern
|
|
64
|
+
* it plays, role = where it sits, process = where it runs. Prefer
|
|
65
|
+
* `framework` + `stereotype` over inventing framework-specific constructs
|
|
66
|
+
* (a React component is still `construct: 'function'`).
|
|
67
|
+
*/
|
|
68
|
+
construct: SubsystemComponentConstruct;
|
|
69
|
+
/** Source location the component lives in (repo-root-relative path). */
|
|
70
|
+
file: string;
|
|
71
|
+
/** PURL identifying the repo or package this component lives in (for subgraph grouping). */
|
|
72
|
+
purl: string;
|
|
73
|
+
/** One-line purpose shown on the node. */
|
|
74
|
+
purpose?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Semantic role — where the node sits in the topology (boundary element,
|
|
77
|
+
* external system), orthogonal to `construct` (what it is). Drives the
|
|
78
|
+
* glyph and the edge-pairing rules: boundary-crossing edges must terminate
|
|
79
|
+
* at an entry or a service. Retained state is NOT a role — it is
|
|
80
|
+
* `construct: 'store'` (state-block anatomy, `writes`/`reads`/`watches`
|
|
81
|
+
* inbound, `produces` outbound).
|
|
82
|
+
*/
|
|
83
|
+
role?: SubsystemComponentRole;
|
|
84
|
+
/**
|
|
85
|
+
* Framework that owns the stereotype vocabulary (e.g. `react`, `nestjs`).
|
|
86
|
+
* Orthogonal to `construct` — leave empty for language-only units.
|
|
87
|
+
*/
|
|
88
|
+
framework?: SubsystemFramework;
|
|
89
|
+
/**
|
|
90
|
+
* Framework pattern this declaration plays (e.g. `component`, `hook`).
|
|
91
|
+
* When set, the node badge prefers this label over the construct name so
|
|
92
|
+
* a React UI unit reads as "component" rather than "function".
|
|
93
|
+
*/
|
|
94
|
+
stereotype?: SubsystemStereotype;
|
|
95
|
+
/**
|
|
96
|
+
* Runtime process membership — which deployment unit this node is a
|
|
97
|
+
* member of (e.g. `principal-studio/host`, `principal-studio/renderer`). Nodes
|
|
98
|
+
* sharing a `process` are drawn inside one boundary region (grouping is
|
|
99
|
+
* `process ?? purl`); nodes without one sit outside every boundary
|
|
100
|
+
* (external actors, services, libraries).
|
|
101
|
+
*/
|
|
102
|
+
process?: string;
|
|
103
|
+
/** A symbol this component exposes / is (the node's identity). */
|
|
104
|
+
symbol?: string;
|
|
105
|
+
/**
|
|
106
|
+
* Semantic layer/phase for the layout (e.g. `1` = input, `2` = processing,
|
|
107
|
+
* `3` = output). When set, ELK places the component in this layer so the
|
|
108
|
+
* graph reads as a left-to-right pipeline and *conveys the idea* rather than
|
|
109
|
+
* letting ELK guess the order.
|
|
110
|
+
*/
|
|
111
|
+
layer?: number;
|
|
112
|
+
/**
|
|
113
|
+
* How this session *occupied* the component — `edited` (modified it) vs
|
|
114
|
+
* `analyzed` (read deeply / built an understanding) vs `referenced`
|
|
115
|
+
* (touched in passing). Drives clustering: edits strengthen a subsystem,
|
|
116
|
+
* but a read-only investigation can still form one around an analyzed seam.
|
|
117
|
+
*/
|
|
118
|
+
capture?: 'edited' | 'analyzed' | 'referenced';
|
|
119
|
+
/**
|
|
120
|
+
* Graphify drill-down detail for this component, when the facet is anchored
|
|
121
|
+
* to a graphify node. Discriminated by kind (class/function/type/module/store/
|
|
122
|
+
* external); rendered in the detail panel on click.
|
|
123
|
+
*/
|
|
124
|
+
detail?: GraphifyComponentDetail;
|
|
125
|
+
/**
|
|
126
|
+
* Where the drill-down `detail` came from. `verified` = extracted from
|
|
127
|
+
* source by tooling (graphify AST, signature extraction) — may be trusted
|
|
128
|
+
* as matching the code. `authored` = written by the authoring agent/human
|
|
129
|
+
* to highlight specific inputs/outputs — informative, not checked against
|
|
130
|
+
* source. Detail without provenance is treated as `authored`; only tooling
|
|
131
|
+
* may claim `verified`.
|
|
132
|
+
*/
|
|
133
|
+
detailProvenance?: 'verified' | 'authored';
|
|
134
|
+
/**
|
|
135
|
+
* Pre-tokenized declaration for the detail panel. When present, the
|
|
136
|
+
* renderer skips client-side tokenization. Tokens are language-agnostic;
|
|
137
|
+
* a different language just needs a different tokenizer and text joiner.
|
|
138
|
+
*/
|
|
139
|
+
tokens?: SubsystemDeclToken[];
|
|
140
|
+
/**
|
|
141
|
+
* Anchored declaration location: graphify start line + hash of that line's
|
|
142
|
+
* content at capture time. Populated by verify when an exact anchor resolves.
|
|
143
|
+
*/
|
|
144
|
+
declarationRef?: SubsystemDeclarationRef;
|
|
145
|
+
}
|
|
146
|
+
/** A cross-component edge in the subsystem graph. */
|
|
147
|
+
export interface SubsystemComponentEdge {
|
|
148
|
+
id: string;
|
|
149
|
+
from: string;
|
|
150
|
+
to: string;
|
|
151
|
+
mechanism: SubsystemEdgeMechanism;
|
|
152
|
+
/** Concrete file/symbol refs backing the edge (the seam). */
|
|
153
|
+
refs?: string[];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* A single site on an existing edge — the exact `file:line` where that edge's
|
|
157
|
+
* seam manifests for a given flow. The edge stays the abstract contract
|
|
158
|
+
* (`from`, `to`, `mechanism`); a throughline step picks the concrete
|
|
159
|
+
* manifestation. One edge can appear in many steps.
|
|
160
|
+
*/
|
|
161
|
+
export interface SubsystemThroughlineStep {
|
|
162
|
+
/** Id of the existing edge this hop traverses. */
|
|
163
|
+
edgeId: string;
|
|
164
|
+
/** Repo-root-relative path of the file where the edge fires. */
|
|
165
|
+
file: string;
|
|
166
|
+
/** 1-based line of the site within `file`. */
|
|
167
|
+
line: number;
|
|
168
|
+
/**
|
|
169
|
+
* Frame name for this hop — the function/method/symbol on the stack at
|
|
170
|
+
* this site. Optional so existing throughlines keep working; when set the
|
|
171
|
+
* flows list shows it instead of mechanism + filename.
|
|
172
|
+
*/
|
|
173
|
+
symbol?: string;
|
|
174
|
+
/**
|
|
175
|
+
* Free-text note anchored to this hop's site line. Optional — informative
|
|
176
|
+
* only, never verified against source; the Pierre throughline code view
|
|
177
|
+
* surfaces it in the annotation column next to the highlighted line.
|
|
178
|
+
*/
|
|
179
|
+
annotation?: string;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* An ordered execution story over a graph's edges — each step references an
|
|
183
|
+
* existing edge and the exact site where that relationship fires for a flow;
|
|
184
|
+
* ordering is the array. One throughline per flow (save flow, load flow, …).
|
|
185
|
+
*/
|
|
186
|
+
export interface SubsystemThroughline {
|
|
187
|
+
id: string;
|
|
188
|
+
title: string;
|
|
189
|
+
steps: SubsystemThroughlineStep[];
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Derive a consistent display `name` from a code `symbol` + construct.
|
|
193
|
+
*
|
|
194
|
+
* `symbol` is the source of truth (fully-qualified code identity). The name
|
|
195
|
+
* is the symbol itself:
|
|
196
|
+
* - class/type/module/function/script/... symbol → symbol (e.g. `SessionReader`)
|
|
197
|
+
* - method `Owner.method` → last segment (e.g. `SessionReader.normalize` → `normalize`)
|
|
198
|
+
* - module, no symbol → basename of `file` (e.g. `transcript.ts` → `transcript`) —
|
|
199
|
+
* a common-sense convention for whole-file modules, not a real TS name
|
|
200
|
+
* - otherwise no symbol → fall back to an existing name
|
|
201
|
+
*/
|
|
202
|
+
export declare function deriveNameFromSymbol(symbol: string | undefined, construct: SubsystemComponentConstruct, existingName?: string, file?: string, stereotype?: string): string;
|
|
203
|
+
/**
|
|
204
|
+
* Human-readable purl identity — drops the `pkg:<type>/` scheme wrapper and
|
|
205
|
+
* trailing version, keeping the package / owner-repo identity:
|
|
206
|
+
*
|
|
207
|
+
* pkg:npm/@principal-ai/core → `@principal-ai/core`
|
|
208
|
+
* pkg:github/principal-ai/my-repo → `principal-ai/my-repo`
|
|
209
|
+
* pkg:npm/left-pad@1.3.0 → `left-pad`
|
|
210
|
+
* pkg:generic/local--Users-me-my-app → `Users-me-my-app (local)`
|
|
211
|
+
*
|
|
212
|
+
* Local purls encode the absolute path with dashes for slashes, which is not
|
|
213
|
+
* losslessly decodable — shown as-is with a `(local)` marker.
|
|
214
|
+
*/
|
|
215
|
+
export declare function formatPurl(purl: string): string;
|
|
216
|
+
export interface SubsystemModelDocument {
|
|
217
|
+
components: SubsystemComponent[];
|
|
218
|
+
edges: SubsystemComponentEdge[];
|
|
219
|
+
/** Ordered execution stories over the graph's edges (one per flow). */
|
|
220
|
+
throughlines?: SubsystemThroughline[];
|
|
221
|
+
}
|
|
222
|
+
export type SubsystemGraphNodeType = 'subsystem-component' | 'subsystem-group';
|
|
223
|
+
/**
|
|
224
|
+
* One process boundary region — all components sharing a `process` value.
|
|
225
|
+
* Nodes without a `process` sit outside every boundary (no region).
|
|
226
|
+
*/
|
|
227
|
+
export interface SubsystemProcessRegion {
|
|
228
|
+
/** The `process` value (e.g. `principal-studio/host`). */
|
|
229
|
+
key: string;
|
|
230
|
+
/** Display label for the boundary frame. */
|
|
231
|
+
label: string;
|
|
232
|
+
/** Component ids that are members of this region. */
|
|
233
|
+
memberIds: string[];
|
|
234
|
+
}
|
|
235
|
+
/** React Flow id for a process boundary group node. */
|
|
236
|
+
export declare function processGroupNodeId(processKey: string): string;
|
|
237
|
+
/**
|
|
238
|
+
* Derive boundary regions from a document — one per distinct non-empty
|
|
239
|
+
* `process` value, in first-appearance order.
|
|
240
|
+
*/
|
|
241
|
+
export declare function getSubsystemRegions(doc: Pick<SubsystemModelDocument, 'components'>): SubsystemProcessRegion[];
|
|
242
|
+
export interface SubsystemGraphNodeData extends Record<string, unknown> {
|
|
243
|
+
component: SubsystemComponent;
|
|
244
|
+
/** Set while a file is open in the drawer: true if this node's component
|
|
245
|
+
* lives in that file (spotlighted), false otherwise (dimmed). Absent when
|
|
246
|
+
* no file is open — render neutrally. */
|
|
247
|
+
fileMatch?: boolean;
|
|
248
|
+
/** True while this node is on an opened-but-unselected flow. */
|
|
249
|
+
dimmed?: boolean;
|
|
250
|
+
}
|
|
251
|
+
export interface SubsystemGroupNodeData extends Record<string, unknown> {
|
|
252
|
+
region: SubsystemProcessRegion;
|
|
253
|
+
/** True while the region's members are dimmed by flow focus. */
|
|
254
|
+
dimmed?: boolean;
|
|
255
|
+
}
|
|
256
|
+
export type SubsystemGraphNode = Node<SubsystemGraphNodeData, 'subsystem-component'> | Node<SubsystemGroupNodeData, 'subsystem-group'>;
|
|
257
|
+
export interface SubsystemGraphEdgeData extends Record<string, unknown> {
|
|
258
|
+
mechanism: SubsystemEdgeMechanism;
|
|
259
|
+
refs?: string[];
|
|
260
|
+
/** True while another edge is selected — render this edge (and its label)
|
|
261
|
+
* dimmed to focus the selected relationship. */
|
|
262
|
+
dimmed?: boolean;
|
|
263
|
+
/** ELK-computed label midpoint (from the actual edge path, not node centers). */
|
|
264
|
+
labelX?: number;
|
|
265
|
+
labelY?: number;
|
|
266
|
+
/** Polyline length in flow-space units (for capping screen-space label size). */
|
|
267
|
+
pathLength?: number;
|
|
268
|
+
/** ELK-computed SVG edge path (overrides React Flow's default path). */
|
|
269
|
+
elkPath?: string;
|
|
270
|
+
}
|
|
271
|
+
export type SubsystemGraphEdge = Edge<SubsystemGraphEdgeData>;
|
|
272
|
+
export declare const MECHANISM_COLOR: Record<SubsystemEdgeMechanism, string>;
|
|
273
|
+
export declare const MECHANISM_STYLE: Record<SubsystemEdgeMechanism, 'solid' | 'dashed' | 'dotted'>;
|
|
274
|
+
/** Mechanism → [description, verifiable-with-graphify]. Drives the "not
|
|
275
|
+
* directly verifiable" styling of edge labels. */
|
|
276
|
+
export declare const MECHANISM_DESCRIPTIONS: [SubsystemEdgeMechanism, string, boolean][];
|
|
277
|
+
/** Package color palette (derived deterministically from the package name). */
|
|
278
|
+
export declare function packageColor(name: string): string;
|
|
279
|
+
/** Color per semantic role — applied ONLY to the role badge (top-right tab on
|
|
280
|
+
* nodes that carry a role). The node border stays construct-colored. Note:
|
|
281
|
+
* `service` currently equals the old class hex; harmless while role badges
|
|
282
|
+
* are the only surface using it, but pick a distinct value if roles ever
|
|
283
|
+
* take over node borders. */
|
|
284
|
+
export declare const ROLE_COLOR: Record<SubsystemComponentRole, string>;
|
|
285
|
+
export declare const ROLE_LABEL: Record<SubsystemComponentRole, string>;
|
|
286
|
+
/**
|
|
287
|
+
* Primary badge text for a node: prefer framework stereotype over the
|
|
288
|
+
* language construct so a React UI unit reads as "component" / "hook"
|
|
289
|
+
* rather than "function". When both framework and stereotype are set,
|
|
290
|
+
* show `framework · stereotype` (e.g. `react · component`).
|
|
291
|
+
*/
|
|
292
|
+
export declare function constructBadgeLabel(component: {
|
|
293
|
+
construct: SubsystemComponentConstruct;
|
|
294
|
+
framework?: string;
|
|
295
|
+
stereotype?: string;
|
|
296
|
+
}): string;
|
|
297
|
+
/** Default CSS floor for component nodes (padding aside). */
|
|
298
|
+
export declare const NODE_CSS_MIN_WIDTH = 150;
|
|
299
|
+
/** Inset of each top badge from the node edge (`left` / `right` style). */
|
|
300
|
+
export declare const BADGE_EDGE_INSET = 5;
|
|
301
|
+
/** Estimated rendered width of a top tab badge label. */
|
|
302
|
+
export declare function estimateBadgeLabelWidth(label: string): number;
|
|
303
|
+
/**
|
|
304
|
+
* Minimum node width so top badges stay on one line and (when both are
|
|
305
|
+
* present) don't overlap — badges are absolutely positioned, so they don't
|
|
306
|
+
* contribute to layout unless we widen the node explicitly.
|
|
307
|
+
*/
|
|
308
|
+
export declare function nodeMinWidthForBadges(component: {
|
|
309
|
+
construct: SubsystemComponentConstruct;
|
|
310
|
+
framework?: string;
|
|
311
|
+
stereotype?: string;
|
|
312
|
+
role?: SubsystemComponentRole;
|
|
313
|
+
}): number;
|
|
314
|
+
/**
|
|
315
|
+
* Convert a subsystem graph document into React Flow nodes. Components that
|
|
316
|
+
* carry a `process` get a `parentId` pointing at their boundary group node
|
|
317
|
+
* (`process:<process>`); nodes without one stay top-level (outside every
|
|
318
|
+
* boundary). The initial grid groups by `process ?? purl` so the pre-ELK
|
|
319
|
+
* positions are already clustered; ELK then refines with compound layout.
|
|
320
|
+
*/
|
|
321
|
+
export declare function convertSubsystemToNodes(doc: SubsystemModelDocument, opts?: {
|
|
322
|
+
maxNodeWidth?: number;
|
|
323
|
+
}): SubsystemGraphNode[];
|
|
324
|
+
/**
|
|
325
|
+
* Convert boundary regions into React Flow parent (group) nodes. One per
|
|
326
|
+
* distinct `process` value; member components point at these via `parentId`.
|
|
327
|
+
* Positions/sizes are placeholders — ELK compound layout overwrites them.
|
|
328
|
+
*/
|
|
329
|
+
export declare function convertSubsystemToGroups(doc: Pick<SubsystemModelDocument, 'components'>): SubsystemGraphNode[];
|
|
330
|
+
/**
|
|
331
|
+
* Convert a subsystem graph document into React Flow edges. Edges whose target
|
|
332
|
+
* is an external label (not a component id) point at a synthetic stub so the
|
|
333
|
+
* relationship is visible without a member node.
|
|
334
|
+
*/
|
|
335
|
+
export declare function convertSubsystemToEdges(doc: SubsystemModelDocument): SubsystemGraphEdge[];
|
|
336
|
+
/** Stable key for layout-affecting graph fields (ignores declarationRef, etc.). */
|
|
337
|
+
export declare function subsystemGraphLayoutKey(doc: Pick<SubsystemModelDocument, 'components' | 'edges'>): string;
|
|
338
|
+
/**
|
|
339
|
+
* Build the full React Flow graph (nodes + edges) using **ELK auto-layout** to
|
|
340
|
+
* position every node (including external stub targets), so the graph is
|
|
341
|
+
* layered with minimized crossings.
|
|
342
|
+
*/
|
|
343
|
+
export declare function buildSubsystemGraph(doc: SubsystemModelDocument, opts?: {
|
|
344
|
+
maxNodeWidth?: number;
|
|
345
|
+
showEdgeLabels?: boolean;
|
|
346
|
+
measuredWidths?: Map<string, number>;
|
|
347
|
+
measuredHeights?: Map<string, number>;
|
|
348
|
+
}): Promise<{
|
|
349
|
+
nodes: SubsystemGraphNode[];
|
|
350
|
+
edges: SubsystemGraphEdge[];
|
|
351
|
+
regions: SubsystemProcessRegion[];
|
|
352
|
+
}>;
|
|
353
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/subsystem/model.ts"],"names":[],"mappings":"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"}
|