@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.
Files changed (496) hide show
  1. package/README.md +93 -0
  2. package/dist/components/ConfigurationSelector.d.ts +35 -0
  3. package/dist/components/ConfigurationSelector.d.ts.map +1 -0
  4. package/dist/components/ConfigurationSelector.js +63 -0
  5. package/dist/components/ConfigurationSelector.js.map +1 -0
  6. package/dist/components/GraphRenderer.d.ts +295 -0
  7. package/dist/components/GraphRenderer.d.ts.map +1 -0
  8. package/dist/components/GraphRenderer.js +2008 -0
  9. package/dist/components/GraphRenderer.js.map +1 -0
  10. package/dist/components/MultiCanvasRenderer.d.ts +75 -0
  11. package/dist/components/MultiCanvasRenderer.d.ts.map +1 -0
  12. package/dist/components/MultiCanvasRenderer.js +203 -0
  13. package/dist/components/MultiCanvasRenderer.js.map +1 -0
  14. package/dist/components/NodeTooltip.d.ts +24 -0
  15. package/dist/components/NodeTooltip.d.ts.map +1 -0
  16. package/dist/components/NodeTooltip.js +160 -0
  17. package/dist/components/NodeTooltip.js.map +1 -0
  18. package/dist/components/SelectionSidebar.d.ts +18 -0
  19. package/dist/components/SelectionSidebar.d.ts.map +1 -0
  20. package/dist/components/SelectionSidebar.js +190 -0
  21. package/dist/components/SelectionSidebar.js.map +1 -0
  22. package/dist/components/SequenceDiagramRenderer.d.ts +77 -0
  23. package/dist/components/SequenceDiagramRenderer.d.ts.map +1 -0
  24. package/dist/components/SequenceDiagramRenderer.js +604 -0
  25. package/dist/components/SequenceDiagramRenderer.js.map +1 -0
  26. package/dist/components/WorkflowSequenceDiagram.d.ts +63 -0
  27. package/dist/components/WorkflowSequenceDiagram.d.ts.map +1 -0
  28. package/dist/components/WorkflowSequenceDiagram.js +147 -0
  29. package/dist/components/WorkflowSequenceDiagram.js.map +1 -0
  30. package/dist/components/dashboard/DashboardRenderer.d.ts +10 -0
  31. package/dist/components/dashboard/DashboardRenderer.d.ts.map +1 -0
  32. package/dist/components/dashboard/DashboardRenderer.js +179 -0
  33. package/dist/components/dashboard/DashboardRenderer.js.map +1 -0
  34. package/dist/components/dashboard/MetricPanel.d.ts +10 -0
  35. package/dist/components/dashboard/MetricPanel.d.ts.map +1 -0
  36. package/dist/components/dashboard/MetricPanel.js +103 -0
  37. package/dist/components/dashboard/MetricPanel.js.map +1 -0
  38. package/dist/components/dashboard/MockDataProvider.d.ts +30 -0
  39. package/dist/components/dashboard/MockDataProvider.d.ts.map +1 -0
  40. package/dist/components/dashboard/MockDataProvider.js +270 -0
  41. package/dist/components/dashboard/MockDataProvider.js.map +1 -0
  42. package/dist/components/dashboard/components/BarChart.d.ts +10 -0
  43. package/dist/components/dashboard/components/BarChart.d.ts.map +1 -0
  44. package/dist/components/dashboard/components/BarChart.js +167 -0
  45. package/dist/components/dashboard/components/BarChart.js.map +1 -0
  46. package/dist/components/dashboard/components/LineChart.d.ts +10 -0
  47. package/dist/components/dashboard/components/LineChart.d.ts.map +1 -0
  48. package/dist/components/dashboard/components/LineChart.js +141 -0
  49. package/dist/components/dashboard/components/LineChart.js.map +1 -0
  50. package/dist/components/dashboard/components/MetricCard.d.ts +9 -0
  51. package/dist/components/dashboard/components/MetricCard.d.ts.map +1 -0
  52. package/dist/components/dashboard/components/MetricCard.js +163 -0
  53. package/dist/components/dashboard/components/MetricCard.js.map +1 -0
  54. package/dist/components/dashboard/components/SourceLink.d.ts +9 -0
  55. package/dist/components/dashboard/components/SourceLink.d.ts.map +1 -0
  56. package/dist/components/dashboard/components/SourceLink.js +39 -0
  57. package/dist/components/dashboard/components/SourceLink.js.map +1 -0
  58. package/dist/components/dashboard/components/TimeRangeSelector.d.ts +9 -0
  59. package/dist/components/dashboard/components/TimeRangeSelector.d.ts.map +1 -0
  60. package/dist/components/dashboard/components/TimeRangeSelector.js +167 -0
  61. package/dist/components/dashboard/components/TimeRangeSelector.js.map +1 -0
  62. package/dist/components/dashboard/components/index.d.ts +6 -0
  63. package/dist/components/dashboard/components/index.d.ts.map +1 -0
  64. package/dist/components/dashboard/components/index.js +6 -0
  65. package/dist/components/dashboard/components/index.js.map +1 -0
  66. package/dist/components/dashboard/index.d.ts +6 -0
  67. package/dist/components/dashboard/index.d.ts.map +1 -0
  68. package/dist/components/dashboard/index.js +8 -0
  69. package/dist/components/dashboard/index.js.map +1 -0
  70. package/dist/components/dashboard/types.d.ts +74 -0
  71. package/dist/components/dashboard/types.d.ts.map +1 -0
  72. package/dist/components/dashboard/types.js +8 -0
  73. package/dist/components/dashboard/types.js.map +1 -0
  74. package/dist/components/session-events/SessionEventFeed.d.ts +34 -0
  75. package/dist/components/session-events/SessionEventFeed.d.ts.map +1 -0
  76. package/dist/components/session-events/SessionEventFeed.js +1196 -0
  77. package/dist/components/session-events/SessionEventFeed.js.map +1 -0
  78. package/dist/components/session-events/index.d.ts +7 -0
  79. package/dist/components/session-events/index.d.ts.map +1 -0
  80. package/dist/components/session-events/index.js +6 -0
  81. package/dist/components/session-events/index.js.map +1 -0
  82. package/dist/components/state-view/PipelineView.d.ts +14 -0
  83. package/dist/components/state-view/PipelineView.d.ts.map +1 -0
  84. package/dist/components/state-view/PipelineView.js +195 -0
  85. package/dist/components/state-view/PipelineView.js.map +1 -0
  86. package/dist/components/state-view/index.d.ts +14 -0
  87. package/dist/components/state-view/index.d.ts.map +1 -0
  88. package/dist/components/state-view/index.js +12 -0
  89. package/dist/components/state-view/index.js.map +1 -0
  90. package/dist/components/state-view/types.d.ts +188 -0
  91. package/dist/components/state-view/types.d.ts.map +1 -0
  92. package/dist/components/state-view/types.js +10 -0
  93. package/dist/components/state-view/types.js.map +1 -0
  94. package/dist/components/state-view/useStateView.d.ts +32 -0
  95. package/dist/components/state-view/useStateView.d.ts.map +1 -0
  96. package/dist/components/state-view/useStateView.js +129 -0
  97. package/dist/components/state-view/useStateView.js.map +1 -0
  98. package/dist/contexts/GraphEditContext.d.ts +20 -0
  99. package/dist/contexts/GraphEditContext.d.ts.map +1 -0
  100. package/dist/contexts/GraphEditContext.js +8 -0
  101. package/dist/contexts/GraphEditContext.js.map +1 -0
  102. package/dist/contexts/TooltipPortalContext.d.ts +8 -0
  103. package/dist/contexts/TooltipPortalContext.d.ts.map +1 -0
  104. package/dist/contexts/TooltipPortalContext.js +8 -0
  105. package/dist/contexts/TooltipPortalContext.js.map +1 -0
  106. package/dist/edges/CustomEdge.d.ts +24 -0
  107. package/dist/edges/CustomEdge.d.ts.map +1 -0
  108. package/dist/edges/CustomEdge.js +222 -0
  109. package/dist/edges/CustomEdge.js.map +1 -0
  110. package/dist/edges/GenericEdge.d.ts +18 -0
  111. package/dist/edges/GenericEdge.d.ts.map +1 -0
  112. package/dist/edges/GenericEdge.js +10 -0
  113. package/dist/edges/GenericEdge.js.map +1 -0
  114. package/dist/graphify/anchor.d.ts +28 -0
  115. package/dist/graphify/anchor.d.ts.map +1 -0
  116. package/dist/graphify/anchor.js +132 -0
  117. package/dist/graphify/anchor.js.map +1 -0
  118. package/dist/graphify/consolidated.d.ts +210 -0
  119. package/dist/graphify/consolidated.d.ts.map +1 -0
  120. package/dist/graphify/consolidated.js +11 -0
  121. package/dist/graphify/consolidated.js.map +1 -0
  122. package/dist/graphify/ids.d.ts +19 -0
  123. package/dist/graphify/ids.d.ts.map +1 -0
  124. package/dist/graphify/ids.js +46 -0
  125. package/dist/graphify/ids.js.map +1 -0
  126. package/dist/graphify/index.d.ts +18 -0
  127. package/dist/graphify/index.d.ts.map +1 -0
  128. package/dist/graphify/index.js +12 -0
  129. package/dist/graphify/index.js.map +1 -0
  130. package/dist/graphify/kind.d.ts +23 -0
  131. package/dist/graphify/kind.d.ts.map +1 -0
  132. package/dist/graphify/kind.js +77 -0
  133. package/dist/graphify/kind.js.map +1 -0
  134. package/dist/graphify/resolve.d.ts +48 -0
  135. package/dist/graphify/resolve.d.ts.map +1 -0
  136. package/dist/graphify/resolve.js +83 -0
  137. package/dist/graphify/resolve.js.map +1 -0
  138. package/dist/graphify/signature.d.ts +87 -0
  139. package/dist/graphify/signature.d.ts.map +1 -0
  140. package/dist/graphify/signature.js +276 -0
  141. package/dist/graphify/signature.js.map +1 -0
  142. package/dist/graphify/types.d.ts +141 -0
  143. package/dist/graphify/types.d.ts.map +1 -0
  144. package/dist/graphify/types.js +8 -0
  145. package/dist/graphify/types.js.map +1 -0
  146. package/dist/hooks/useElkLayout.d.ts +66 -0
  147. package/dist/hooks/useElkLayout.d.ts.map +1 -0
  148. package/dist/hooks/useElkLayout.js +136 -0
  149. package/dist/hooks/useElkLayout.js.map +1 -0
  150. package/dist/hooks/usePathBasedEvents.d.ts +42 -0
  151. package/dist/hooks/usePathBasedEvents.d.ts.map +1 -0
  152. package/dist/hooks/usePathBasedEvents.js +119 -0
  153. package/dist/hooks/usePathBasedEvents.js.map +1 -0
  154. package/dist/hooks/useSequenceLayout.d.ts +186 -0
  155. package/dist/hooks/useSequenceLayout.d.ts.map +1 -0
  156. package/dist/hooks/useSequenceLayout.js +327 -0
  157. package/dist/hooks/useSequenceLayout.js.map +1 -0
  158. package/dist/hooks/useUndoRedo.d.ts +80 -0
  159. package/dist/hooks/useUndoRedo.d.ts.map +1 -0
  160. package/dist/hooks/useUndoRedo.js +70 -0
  161. package/dist/hooks/useUndoRedo.js.map +1 -0
  162. package/dist/index.d.ts +73 -0
  163. package/dist/index.d.ts.map +1 -0
  164. package/dist/index.js +51 -0
  165. package/dist/index.js.map +1 -0
  166. package/dist/nodes/CustomNode.d.ts +28 -0
  167. package/dist/nodes/CustomNode.d.ts.map +1 -0
  168. package/dist/nodes/CustomNode.js +820 -0
  169. package/dist/nodes/CustomNode.js.map +1 -0
  170. package/dist/nodes/GenericNode.d.ts +20 -0
  171. package/dist/nodes/GenericNode.d.ts.map +1 -0
  172. package/dist/nodes/GenericNode.js +20 -0
  173. package/dist/nodes/GenericNode.js.map +1 -0
  174. package/dist/nodes/otel/OtelBoundaryNode.d.ts +55 -0
  175. package/dist/nodes/otel/OtelBoundaryNode.d.ts.map +1 -0
  176. package/dist/nodes/otel/OtelBoundaryNode.js +81 -0
  177. package/dist/nodes/otel/OtelBoundaryNode.js.map +1 -0
  178. package/dist/nodes/otel/OtelEventNode.d.ts +59 -0
  179. package/dist/nodes/otel/OtelEventNode.d.ts.map +1 -0
  180. package/dist/nodes/otel/OtelEventNode.js +82 -0
  181. package/dist/nodes/otel/OtelEventNode.js.map +1 -0
  182. package/dist/nodes/otel/OtelResourceNode.d.ts +53 -0
  183. package/dist/nodes/otel/OtelResourceNode.d.ts.map +1 -0
  184. package/dist/nodes/otel/OtelResourceNode.js +105 -0
  185. package/dist/nodes/otel/OtelResourceNode.js.map +1 -0
  186. package/dist/nodes/otel/OtelScopeNode.d.ts +53 -0
  187. package/dist/nodes/otel/OtelScopeNode.d.ts.map +1 -0
  188. package/dist/nodes/otel/OtelScopeNode.js +81 -0
  189. package/dist/nodes/otel/OtelScopeNode.js.map +1 -0
  190. package/dist/nodes/otel/OtelSpanConventionNode.d.ts +61 -0
  191. package/dist/nodes/otel/OtelSpanConventionNode.d.ts.map +1 -0
  192. package/dist/nodes/otel/OtelSpanConventionNode.js +131 -0
  193. package/dist/nodes/otel/OtelSpanConventionNode.js.map +1 -0
  194. package/dist/nodes/otel/index.d.ts +17 -0
  195. package/dist/nodes/otel/index.d.ts.map +1 -0
  196. package/dist/nodes/otel/index.js +13 -0
  197. package/dist/nodes/otel/index.js.map +1 -0
  198. package/dist/nodes/otel/shared/NodeBadges.d.ts +10 -0
  199. package/dist/nodes/otel/shared/NodeBadges.d.ts.map +1 -0
  200. package/dist/nodes/otel/shared/NodeBadges.js +178 -0
  201. package/dist/nodes/otel/shared/NodeBadges.js.map +1 -0
  202. package/dist/nodes/otel/shared/NodeContent.d.ts +10 -0
  203. package/dist/nodes/otel/shared/NodeContent.d.ts.map +1 -0
  204. package/dist/nodes/otel/shared/NodeContent.js +96 -0
  205. package/dist/nodes/otel/shared/NodeContent.js.map +1 -0
  206. package/dist/nodes/otel/shared/index.d.ts +8 -0
  207. package/dist/nodes/otel/shared/index.d.ts.map +1 -0
  208. package/dist/nodes/otel/shared/index.js +8 -0
  209. package/dist/nodes/otel/shared/index.js.map +1 -0
  210. package/dist/nodes/otel/shared/types.d.ts +129 -0
  211. package/dist/nodes/otel/shared/types.d.ts.map +1 -0
  212. package/dist/nodes/otel/shared/types.js +5 -0
  213. package/dist/nodes/otel/shared/types.js.map +1 -0
  214. package/dist/nodes/otel/shared/useNodeBehavior.d.ts +42 -0
  215. package/dist/nodes/otel/shared/useNodeBehavior.d.ts.map +1 -0
  216. package/dist/nodes/otel/shared/useNodeBehavior.js +61 -0
  217. package/dist/nodes/otel/shared/useNodeBehavior.js.map +1 -0
  218. package/dist/pierre/PierreFileView.d.ts +17 -0
  219. package/dist/pierre/PierreFileView.d.ts.map +1 -0
  220. package/dist/pierre/PierreFileView.js +46 -0
  221. package/dist/pierre/PierreFileView.js.map +1 -0
  222. package/dist/pierre/PierreSnippetView.d.ts +28 -0
  223. package/dist/pierre/PierreSnippetView.d.ts.map +1 -0
  224. package/dist/pierre/PierreSnippetView.js +105 -0
  225. package/dist/pierre/PierreSnippetView.js.map +1 -0
  226. package/dist/pierre/PierreThroughlineCodeView.d.ts +22 -0
  227. package/dist/pierre/PierreThroughlineCodeView.d.ts.map +1 -0
  228. package/dist/pierre/PierreThroughlineCodeView.js +206 -0
  229. package/dist/pierre/PierreThroughlineCodeView.js.map +1 -0
  230. package/dist/pierre/constructColors.d.ts +24 -0
  231. package/dist/pierre/constructColors.d.ts.map +1 -0
  232. package/dist/pierre/constructColors.js +91 -0
  233. package/dist/pierre/constructColors.js.map +1 -0
  234. package/dist/pierre/index.d.ts +12 -0
  235. package/dist/pierre/index.d.ts.map +1 -0
  236. package/dist/pierre/index.js +7 -0
  237. package/dist/pierre/index.js.map +1 -0
  238. package/dist/pierre/pierreBackground.d.ts +15 -0
  239. package/dist/pierre/pierreBackground.d.ts.map +1 -0
  240. package/dist/pierre/pierreBackground.js +31 -0
  241. package/dist/pierre/pierreBackground.js.map +1 -0
  242. package/dist/pierre/pierreFileLang.d.ts +27 -0
  243. package/dist/pierre/pierreFileLang.d.ts.map +1 -0
  244. package/dist/pierre/pierreFileLang.js +52 -0
  245. package/dist/pierre/pierreFileLang.js.map +1 -0
  246. package/dist/pierre/pierreSyntaxTheme.d.ts +11 -0
  247. package/dist/pierre/pierreSyntaxTheme.d.ts.map +1 -0
  248. package/dist/pierre/pierreSyntaxTheme.js +20 -0
  249. package/dist/pierre/pierreSyntaxTheme.js.map +1 -0
  250. package/dist/pierre/scrollAnchor.d.ts +5 -0
  251. package/dist/pierre/scrollAnchor.d.ts.map +1 -0
  252. package/dist/pierre/scrollAnchor.js +9 -0
  253. package/dist/pierre/scrollAnchor.js.map +1 -0
  254. package/dist/pierre/sliceSnippet.d.ts +10 -0
  255. package/dist/pierre/sliceSnippet.d.ts.map +1 -0
  256. package/dist/pierre/sliceSnippet.js +16 -0
  257. package/dist/pierre/sliceSnippet.js.map +1 -0
  258. package/dist/pierre/syntaxTokens.d.ts +11 -0
  259. package/dist/pierre/syntaxTokens.d.ts.map +1 -0
  260. package/dist/pierre/syntaxTokens.js +51 -0
  261. package/dist/pierre/syntaxTokens.js.map +1 -0
  262. package/dist/stories/Subsystem/ComponentGraph/fixtures.d.ts +8 -0
  263. package/dist/stories/Subsystem/ComponentGraph/fixtures.d.ts.map +1 -0
  264. package/dist/stories/Subsystem/ComponentGraph/fixtures.js +116 -0
  265. package/dist/stories/Subsystem/ComponentGraph/fixtures.js.map +1 -0
  266. package/dist/subsystem/ComponentDeclaration.d.ts +87 -0
  267. package/dist/subsystem/ComponentDeclaration.d.ts.map +1 -0
  268. package/dist/subsystem/ComponentDeclaration.js +374 -0
  269. package/dist/subsystem/ComponentDeclaration.js.map +1 -0
  270. package/dist/subsystem/FileDrawer.d.ts +17 -0
  271. package/dist/subsystem/FileDrawer.d.ts.map +1 -0
  272. package/dist/subsystem/FileDrawer.js +72 -0
  273. package/dist/subsystem/FileDrawer.js.map +1 -0
  274. package/dist/subsystem/GraphLayoutCover.d.ts +20 -0
  275. package/dist/subsystem/GraphLayoutCover.d.ts.map +1 -0
  276. package/dist/subsystem/GraphLayoutCover.js +42 -0
  277. package/dist/subsystem/GraphLayoutCover.js.map +1 -0
  278. package/dist/subsystem/SubsystemComponentGraph.d.ts +96 -0
  279. package/dist/subsystem/SubsystemComponentGraph.d.ts.map +1 -0
  280. package/dist/subsystem/SubsystemComponentGraph.js +1059 -0
  281. package/dist/subsystem/SubsystemComponentGraph.js.map +1 -0
  282. package/dist/subsystem/SubsystemFileTree.d.ts +24 -0
  283. package/dist/subsystem/SubsystemFileTree.d.ts.map +1 -0
  284. package/dist/subsystem/SubsystemFileTree.js +150 -0
  285. package/dist/subsystem/SubsystemFileTree.js.map +1 -0
  286. package/dist/subsystem/declarationRef.d.ts +39 -0
  287. package/dist/subsystem/declarationRef.d.ts.map +1 -0
  288. package/dist/subsystem/declarationRef.js +32 -0
  289. package/dist/subsystem/declarationRef.js.map +1 -0
  290. package/dist/subsystem/formatDeclaration.d.ts +11 -0
  291. package/dist/subsystem/formatDeclaration.d.ts.map +1 -0
  292. package/dist/subsystem/formatDeclaration.js +146 -0
  293. package/dist/subsystem/formatDeclaration.js.map +1 -0
  294. package/dist/subsystem/model.d.ts +353 -0
  295. package/dist/subsystem/model.d.ts.map +1 -0
  296. package/dist/subsystem/model.js +503 -0
  297. package/dist/subsystem/model.js.map +1 -0
  298. package/dist/subsystem/nodes.d.ts +69 -0
  299. package/dist/subsystem/nodes.d.ts.map +1 -0
  300. package/dist/subsystem/nodes.js +289 -0
  301. package/dist/subsystem/nodes.js.map +1 -0
  302. package/dist/subsystem/paths.d.ts +63 -0
  303. package/dist/subsystem/paths.d.ts.map +1 -0
  304. package/dist/subsystem/paths.js +86 -0
  305. package/dist/subsystem/paths.js.map +1 -0
  306. package/dist/subsystem/tokenizeComponent.d.ts +20 -0
  307. package/dist/subsystem/tokenizeComponent.d.ts.map +1 -0
  308. package/dist/subsystem/tokenizeComponent.js +56 -0
  309. package/dist/subsystem/tokenizeComponent.js.map +1 -0
  310. package/dist/subsystem/tokenizeFormatted.d.ts +12 -0
  311. package/dist/subsystem/tokenizeFormatted.d.ts.map +1 -0
  312. package/dist/subsystem/tokenizeFormatted.js +13 -0
  313. package/dist/subsystem/tokenizeFormatted.js.map +1 -0
  314. package/dist/utils/animationMapping.d.ts +53 -0
  315. package/dist/utils/animationMapping.d.ts.map +1 -0
  316. package/dist/utils/animationMapping.js +126 -0
  317. package/dist/utils/animationMapping.js.map +1 -0
  318. package/dist/utils/canvasBounds.d.ts +50 -0
  319. package/dist/utils/canvasBounds.d.ts.map +1 -0
  320. package/dist/utils/canvasBounds.js +88 -0
  321. package/dist/utils/canvasBounds.js.map +1 -0
  322. package/dist/utils/elkLayout.d.ts +137 -0
  323. package/dist/utils/elkLayout.d.ts.map +1 -0
  324. package/dist/utils/elkLayout.js +596 -0
  325. package/dist/utils/elkLayout.js.map +1 -0
  326. package/dist/utils/graphConverter.d.ts +18 -0
  327. package/dist/utils/graphConverter.d.ts.map +1 -0
  328. package/dist/utils/graphConverter.js +114 -0
  329. package/dist/utils/graphConverter.js.map +1 -0
  330. package/dist/utils/iconResolver.d.ts +29 -0
  331. package/dist/utils/iconResolver.d.ts.map +1 -0
  332. package/dist/utils/iconResolver.js +30 -0
  333. package/dist/utils/iconResolver.js.map +1 -0
  334. package/dist/utils/orientationUtils.d.ts +19 -0
  335. package/dist/utils/orientationUtils.d.ts.map +1 -0
  336. package/dist/utils/orientationUtils.js +62 -0
  337. package/dist/utils/orientationUtils.js.map +1 -0
  338. package/package.json +80 -0
  339. package/src/components/ConfigurationSelector.tsx +133 -0
  340. package/src/components/GraphRenderer.tsx +3195 -0
  341. package/src/components/MultiCanvasRenderer.tsx +295 -0
  342. package/src/components/NodeTooltip.tsx +279 -0
  343. package/src/components/PendingChanges.test.tsx +375 -0
  344. package/src/components/SelectionSidebar.tsx +352 -0
  345. package/src/components/SequenceDiagramRenderer.tsx +1156 -0
  346. package/src/components/WorkflowSequenceDiagram.tsx +270 -0
  347. package/src/components/dashboard/DashboardRenderer.tsx +317 -0
  348. package/src/components/dashboard/MetricPanel.tsx +254 -0
  349. package/src/components/dashboard/MockDataProvider.ts +330 -0
  350. package/src/components/dashboard/components/BarChart.tsx +299 -0
  351. package/src/components/dashboard/components/LineChart.tsx +279 -0
  352. package/src/components/dashboard/components/MetricCard.tsx +270 -0
  353. package/src/components/dashboard/components/SourceLink.tsx +63 -0
  354. package/src/components/dashboard/components/TimeRangeSelector.tsx +280 -0
  355. package/src/components/dashboard/components/index.ts +5 -0
  356. package/src/components/dashboard/index.ts +47 -0
  357. package/src/components/dashboard/types.ts +126 -0
  358. package/src/components/session-events/SessionEventFeed.tsx +1797 -0
  359. package/src/components/session-events/index.ts +13 -0
  360. package/src/components/state-view/PipelineView.tsx +347 -0
  361. package/src/components/state-view/index.ts +14 -0
  362. package/src/components/state-view/types.ts +261 -0
  363. package/src/components/state-view/useStateView.ts +205 -0
  364. package/src/contexts/GraphEditContext.tsx +27 -0
  365. package/src/contexts/TooltipPortalContext.ts +8 -0
  366. package/src/edges/CustomEdge.tsx +402 -0
  367. package/src/edges/GenericEdge.tsx +36 -0
  368. package/src/graphify/anchor.test.ts +124 -0
  369. package/src/graphify/anchor.ts +160 -0
  370. package/src/graphify/consolidated.ts +246 -0
  371. package/src/graphify/ids.ts +48 -0
  372. package/src/graphify/index.ts +72 -0
  373. package/src/graphify/kind.test.ts +108 -0
  374. package/src/graphify/kind.ts +120 -0
  375. package/src/graphify/resolve.test.ts +89 -0
  376. package/src/graphify/resolve.ts +115 -0
  377. package/src/graphify/signature.test.ts +278 -0
  378. package/src/graphify/signature.ts +354 -0
  379. package/src/graphify/types.ts +164 -0
  380. package/src/hooks/useElkLayout.test.ts +134 -0
  381. package/src/hooks/useElkLayout.ts +191 -0
  382. package/src/hooks/usePathBasedEvents.ts +192 -0
  383. package/src/hooks/useSequenceLayout.ts +543 -0
  384. package/src/hooks/useUndoRedo.ts +144 -0
  385. package/src/index.ts +341 -0
  386. package/src/nodes/CustomNode.tsx +1231 -0
  387. package/src/nodes/GenericNode.tsx +55 -0
  388. package/src/nodes/otel/OtelBoundaryNode.tsx +224 -0
  389. package/src/nodes/otel/OtelEventNode.tsx +225 -0
  390. package/src/nodes/otel/OtelResourceNode.tsx +251 -0
  391. package/src/nodes/otel/OtelScopeNode.tsx +221 -0
  392. package/src/nodes/otel/OtelSpanConventionNode.tsx +295 -0
  393. package/src/nodes/otel/index.ts +23 -0
  394. package/src/nodes/otel/shared/NodeBadges.tsx +295 -0
  395. package/src/nodes/otel/shared/NodeContent.tsx +204 -0
  396. package/src/nodes/otel/shared/index.ts +8 -0
  397. package/src/nodes/otel/shared/types.ts +138 -0
  398. package/src/nodes/otel/shared/useNodeBehavior.ts +114 -0
  399. package/src/pierre/PierreFileView.tsx +81 -0
  400. package/src/pierre/PierreSnippetView.tsx +184 -0
  401. package/src/pierre/PierreThroughlineCodeView.tsx +304 -0
  402. package/src/pierre/constructColors.test.ts +52 -0
  403. package/src/pierre/constructColors.ts +112 -0
  404. package/src/pierre/index.ts +18 -0
  405. package/src/pierre/pierreBackground.ts +33 -0
  406. package/src/pierre/pierreFileLang.test.ts +26 -0
  407. package/src/pierre/pierreFileLang.ts +55 -0
  408. package/src/pierre/pierreSyntaxTheme.ts +23 -0
  409. package/src/pierre/scrollAnchor.test.ts +13 -0
  410. package/src/pierre/scrollAnchor.ts +11 -0
  411. package/src/pierre/sliceSnippet.test.ts +21 -0
  412. package/src/pierre/sliceSnippet.ts +31 -0
  413. package/src/pierre/syntaxTokens.test.ts +35 -0
  414. package/src/pierre/syntaxTokens.ts +60 -0
  415. package/src/stories/Audit/BoundaryNodes.stories.tsx +385 -0
  416. package/src/stories/Audit/CanvasEdgeTypes.stories.tsx +1448 -0
  417. package/src/stories/Audit/CanvasNodeTypes.stories.tsx +1049 -0
  418. package/src/stories/Audit/ColorPriority.stories.tsx +895 -0
  419. package/src/stories/Audit/DiamondBadges.stories.tsx +629 -0
  420. package/src/stories/Audit/NodeDimensionsTesting.stories.tsx +724 -0
  421. package/src/stories/Audit/NodeFieldsAudit.stories.tsx +996 -0
  422. package/src/stories/Audit/NodeFontSizeTesting.stories.tsx +715 -0
  423. package/src/stories/Audit/NodeShapes.stories.tsx +1208 -0
  424. package/src/stories/Audit/WideNodesTesting.stories.tsx +1045 -0
  425. package/src/stories/Components/DashboardRenderer.stories.tsx +263 -0
  426. package/src/stories/Components/GraphRenderer.stories.tsx +3236 -0
  427. package/src/stories/Components/MultiCanvasRenderer.stories.tsx +370 -0
  428. package/src/stories/Components/SequenceDiagram.stories.tsx +255 -0
  429. package/src/stories/Components/StateView.stories.tsx +417 -0
  430. package/src/stories/Components/TraceViewer.stories.tsx +442 -0
  431. package/src/stories/Components/WorkflowSequenceDiagram.stories.tsx +802 -0
  432. package/src/stories/Features/AnimationWorkshop.stories.tsx +727 -0
  433. package/src/stories/Features/ChangeTypeVisual.stories.tsx +67 -0
  434. package/src/stories/Features/EventDrivenAnimations.stories.tsx +513 -0
  435. package/src/stories/Features/MultiConfig.stories.tsx +539 -0
  436. package/src/stories/Introduction.mdx +34 -0
  437. package/src/stories/Layout/ElkEdgeRouting.stories.tsx +539 -0
  438. package/src/stories/Layout/GraphOrientation.stories.tsx +500 -0
  439. package/src/stories/Layout/MultiDirectionalConnections.stories.tsx +352 -0
  440. package/src/stories/Nodes/NodeDefinitionComparison.stories.tsx +560 -0
  441. package/src/stories/Nodes/NodeNameFallbacks.stories.tsx +491 -0
  442. package/src/stories/Nodes/NumericColors.stories.tsx +440 -0
  443. package/src/stories/OTEL/EventNameDisplay.stories.tsx +694 -0
  444. package/src/stories/OTEL/EventNameFallback.stories.tsx +578 -0
  445. package/src/stories/OTEL/OtelComponents.stories.tsx +422 -0
  446. package/src/stories/OTEL/OtelNodeTypesPrototype.stories.tsx +806 -0
  447. package/src/stories/OTEL/RawEventCards.stories.tsx +57 -0
  448. package/src/stories/OTEL/SpanBadges.stories.tsx +840 -0
  449. package/src/stories/OTEL/ValidationEventsCanvas.stories.tsx +209 -0
  450. package/src/stories/Pierre/CodeView.stories.tsx +219 -0
  451. package/src/stories/RealWorld/BacklogMdCanvases.stories.tsx +721 -0
  452. package/src/stories/RealWorld/FileCitySequence.stories.tsx +516 -0
  453. package/src/stories/RealWorld/RealCanvasFiles.stories.tsx +336 -0
  454. package/src/stories/Subsystem/ComponentDeclarationAudit.stories.tsx +321 -0
  455. package/src/stories/Subsystem/ComponentGraph/Appearance.stories.tsx +365 -0
  456. package/src/stories/Subsystem/ComponentGraph/Basics.stories.tsx +137 -0
  457. package/src/stories/Subsystem/ComponentGraph/Captures.stories.tsx +238 -0
  458. package/src/stories/Subsystem/ComponentGraph/DetailPanel.stories.tsx +315 -0
  459. package/src/stories/Subsystem/ComponentGraph/Flows.stories.tsx +239 -0
  460. package/src/stories/Subsystem/ComponentGraph/FrameworkStereotype.stories.tsx +216 -0
  461. package/src/stories/Subsystem/ComponentGraph/GraphTitle.stories.tsx +70 -0
  462. package/src/stories/Subsystem/ComponentGraph/Processes.stories.tsx +68 -0
  463. package/src/stories/Subsystem/ComponentGraph/Scenarios.stories.tsx +959 -0
  464. package/src/stories/Subsystem/ComponentGraph/Spotlights.stories.tsx +681 -0
  465. package/src/stories/Subsystem/ComponentGraph/fixtures.ts +129 -0
  466. package/src/stories/__traces__/test-run.canvas.json +241 -0
  467. package/src/stories/data/activity-feed-analytics.dashboard.json +300 -0
  468. package/src/stories/data/file-city-images-transformed.otel.canvas.json +295 -0
  469. package/src/stories/data/file-city-workflows.json +269 -0
  470. package/src/stories/data/graph-converter-test-execution.json +443 -0
  471. package/src/stories/data/graph-converter-test.workflow.json +105 -0
  472. package/src/stories/data/graph-converter-validated-execution.json +58 -0
  473. package/src/stories/data/opencode-session-raw-events.json +273396 -0
  474. package/src/subsystem/ComponentDeclaration.tsx +643 -0
  475. package/src/subsystem/FileDrawer.tsx +106 -0
  476. package/src/subsystem/GraphLayoutCover.tsx +69 -0
  477. package/src/subsystem/SubsystemComponentGraph.tsx +1644 -0
  478. package/src/subsystem/SubsystemFileTree.tsx +190 -0
  479. package/src/subsystem/declarationRef.test.ts +33 -0
  480. package/src/subsystem/declarationRef.ts +63 -0
  481. package/src/subsystem/formatDeclaration.ts +174 -0
  482. package/src/subsystem/model.test.ts +244 -0
  483. package/src/subsystem/model.ts +850 -0
  484. package/src/subsystem/nodes.test.ts +56 -0
  485. package/src/subsystem/nodes.tsx +443 -0
  486. package/src/subsystem/paths.test.ts +123 -0
  487. package/src/subsystem/paths.ts +127 -0
  488. package/src/subsystem/tokenizeComponent.ts +70 -0
  489. package/src/subsystem/tokenizeFormatted.ts +19 -0
  490. package/src/utils/animationMapping.ts +166 -0
  491. package/src/utils/canvasBounds.ts +146 -0
  492. package/src/utils/elkLayout.test.ts +240 -0
  493. package/src/utils/elkLayout.ts +779 -0
  494. package/src/utils/graphConverter.ts +148 -0
  495. package/src/utils/iconResolver.tsx +53 -0
  496. package/src/utils/orientationUtils.ts +73 -0
@@ -0,0 +1,503 @@
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 { MarkerType, } from '@xyflow/react';
15
+ import { computeElkLayout, calculatePathLength } from '../utils/elkLayout';
16
+ /**
17
+ * Derive a consistent display `name` from a code `symbol` + construct.
18
+ *
19
+ * `symbol` is the source of truth (fully-qualified code identity). The name
20
+ * is the symbol itself:
21
+ * - class/type/module/function/script/... symbol → symbol (e.g. `SessionReader`)
22
+ * - method `Owner.method` → last segment (e.g. `SessionReader.normalize` → `normalize`)
23
+ * - module, no symbol → basename of `file` (e.g. `transcript.ts` → `transcript`) —
24
+ * a common-sense convention for whole-file modules, not a real TS name
25
+ * - otherwise no symbol → fall back to an existing name
26
+ */
27
+ export function deriveNameFromSymbol(symbol, construct, existingName, file, stereotype) {
28
+ let name;
29
+ if (symbol && symbol.trim()) {
30
+ name = symbol;
31
+ }
32
+ else if (construct === 'module' && file) {
33
+ const base = file.split('/').pop() ?? '';
34
+ const clean = base.replace(/\.[^.]+$/, ''); // strip extension
35
+ if (clean)
36
+ name = clean;
37
+ }
38
+ if (!name)
39
+ name = existingName ?? 'untitled';
40
+ // Decorations = what the drill-down shows. Framework stereotypes can override
41
+ // the language decoration (a React component wears `<>` instead of `()`).
42
+ // Executable constructs wear `()`; brace-bodied constructs (interface,
43
+ // type_alias, enum) wear ` {}`. Classes render bare — the construct badge
44
+ // already says "class".
45
+ // Everything else (class, store, module, external) renders bare.
46
+ if (stereotype === 'component' && !name.startsWith('<')) {
47
+ return `<${name}>`;
48
+ }
49
+ if ((construct === 'function' || construct === 'method') && !name.endsWith('()')) {
50
+ name = `${name}()`;
51
+ }
52
+ if ((construct === 'interface' ||
53
+ construct === 'type_alias' ||
54
+ construct === 'enum') &&
55
+ !name.endsWith('{}')) {
56
+ name = `${name} {}`;
57
+ }
58
+ return name;
59
+ }
60
+ /**
61
+ * Human-readable purl identity — drops the `pkg:<type>/` scheme wrapper and
62
+ * trailing version, keeping the package / owner-repo identity:
63
+ *
64
+ * pkg:npm/@principal-ai/core → `@principal-ai/core`
65
+ * pkg:github/principal-ai/my-repo → `principal-ai/my-repo`
66
+ * pkg:npm/left-pad@1.3.0 → `left-pad`
67
+ * pkg:generic/local--Users-me-my-app → `Users-me-my-app (local)`
68
+ *
69
+ * Local purls encode the absolute path with dashes for slashes, which is not
70
+ * losslessly decodable — shown as-is with a `(local)` marker.
71
+ */
72
+ export function formatPurl(purl) {
73
+ const match = /^pkg:[^/#?]+\/(.+)$/.exec(purl);
74
+ if (!match)
75
+ return purl;
76
+ let identity = match[1].split(/[?#]/)[0];
77
+ const at = identity.indexOf('@');
78
+ if (at > 0)
79
+ identity = identity.slice(0, at); // trailing @version
80
+ if (identity.startsWith('local--')) {
81
+ return `${identity.slice('local--'.length)} (local)`;
82
+ }
83
+ return identity;
84
+ }
85
+ /** React Flow id for a process boundary group node. */
86
+ export function processGroupNodeId(processKey) {
87
+ return `process:${processKey}`;
88
+ }
89
+ /**
90
+ * Derive boundary regions from a document — one per distinct non-empty
91
+ * `process` value, in first-appearance order.
92
+ */
93
+ export function getSubsystemRegions(doc) {
94
+ const byProcess = new Map();
95
+ for (const c of doc.components) {
96
+ const p = c.process?.trim();
97
+ if (!p)
98
+ continue;
99
+ const list = byProcess.get(p) ?? [];
100
+ list.push(c.id);
101
+ byProcess.set(p, list);
102
+ }
103
+ return [...byProcess.entries()].map(([key, memberIds]) => ({
104
+ key,
105
+ label: key,
106
+ memberIds,
107
+ }));
108
+ }
109
+ export const MECHANISM_COLOR = {
110
+ imports: '#0893d2',
111
+ imports_from: '#5aa9e6',
112
+ re_exports: '#3aa5c9',
113
+ defines: '#2e86ab',
114
+ calls: '#4ec9b0',
115
+ extends: '#b48ead',
116
+ inherits: '#9b6fd0',
117
+ implements: '#c586c0',
118
+ mixes_in: '#d474a8',
119
+ uses: '#e3b341',
120
+ method: '#c586c0',
121
+ references: '#e07a5f',
122
+ contains: '#6c5ce7',
123
+ feeds: '#22c55e',
124
+ produces: '#e07a5f',
125
+ writes: '#2f9e44',
126
+ reads: '#0ea5e9',
127
+ watches: '#9ca3af',
128
+ 'registers-into': '#ff6b35', // orange
129
+ };
130
+ export const MECHANISM_STYLE = {
131
+ imports: 'solid',
132
+ imports_from: 'solid',
133
+ re_exports: 'solid',
134
+ defines: 'solid',
135
+ calls: 'solid',
136
+ extends: 'dashed',
137
+ inherits: 'dashed',
138
+ implements: 'dashed',
139
+ mixes_in: 'dashed',
140
+ uses: 'solid',
141
+ method: 'solid',
142
+ references: 'dotted',
143
+ contains: 'solid',
144
+ feeds: 'solid',
145
+ produces: 'solid',
146
+ writes: 'solid',
147
+ reads: 'solid',
148
+ watches: 'dashed',
149
+ 'registers-into': 'dashed',
150
+ };
151
+ /** Mechanism → [description, verifiable-with-graphify]. Drives the "not
152
+ * directly verifiable" styling of edge labels. */
153
+ export const MECHANISM_DESCRIPTIONS = [
154
+ ['imports', 'import statement (code-level dependency)', true],
155
+ ['imports_from', 'imported by (reverse dependency)', true],
156
+ ['re_exports', 're-exports symbols from', true],
157
+ ['defines', 'defines / declares symbol', true],
158
+ ['calls', 'function/method call (call graph edge)', true],
159
+ ['extends', 'class inheritance', true],
160
+ ['inherits', 'class inheritance', true],
161
+ ['implements', 'implements interface / protocol', true],
162
+ ['mixes_in', 'applies mixin', true],
163
+ ['uses', 'general dependency (import, call, or reference)', false],
164
+ ['method', 'structural: has method / member', true],
165
+ ['references', 'type / symbol reference (not a call)', true],
166
+ ['contains', 'structural: contains / encapsulates', true],
167
+ ['feeds', 'data flow: output feeds into input', false],
168
+ ['produces', 'data flow: produces / outputs', false],
169
+ ['writes', 'state access: mutates retained state', true],
170
+ ['reads', 'state access: reads retained state', true],
171
+ ['watches', 'observes retained state without owning it', false],
172
+ ['registers-into', 'registration pattern', false],
173
+ ];
174
+ /** Package color palette (derived deterministically from the package name). */
175
+ export function packageColor(name) {
176
+ const palette = [
177
+ '#0893d2',
178
+ '#4ec9b0',
179
+ '#ff6b35',
180
+ '#b48ead',
181
+ '#e3b341',
182
+ '#5aa9e6',
183
+ ];
184
+ let h = 0;
185
+ for (let i = 0; i < name.length; i++)
186
+ h = (h * 31 + name.charCodeAt(i)) >>> 0;
187
+ return palette[h % palette.length];
188
+ }
189
+ /** Color per semantic role — applied ONLY to the role badge (top-right tab on
190
+ * nodes that carry a role). The node border stays construct-colored. Note:
191
+ * `service` currently equals the old class hex; harmless while role badges
192
+ * are the only surface using it, but pick a distinct value if roles ever
193
+ * take over node borders. */
194
+ export const ROLE_COLOR = {
195
+ entry: '#ff6b35',
196
+ service: '#0893d2', // blue — external system
197
+ };
198
+ export const ROLE_LABEL = {
199
+ entry: 'entry',
200
+ service: 'service',
201
+ };
202
+ /**
203
+ * Primary badge text for a node: prefer framework stereotype over the
204
+ * language construct so a React UI unit reads as "component" / "hook"
205
+ * rather than "function". When both framework and stereotype are set,
206
+ * show `framework · stereotype` (e.g. `react · component`).
207
+ */
208
+ export function constructBadgeLabel(component) {
209
+ const constructLabel = component.construct === 'type_alias' ? 'type alias' : component.construct;
210
+ if (component.stereotype && component.framework) {
211
+ return `${component.framework} · ${component.stereotype}`;
212
+ }
213
+ if (component.stereotype)
214
+ return component.stereotype;
215
+ return constructLabel ?? '';
216
+ }
217
+ /** Default CSS floor for component nodes (padding aside). */
218
+ export const NODE_CSS_MIN_WIDTH = 150;
219
+ /** Inset of each top badge from the node edge (`left` / `right` style). */
220
+ export const BADGE_EDGE_INSET = 5;
221
+ /** Minimum gap between left construct badge and right role badge. */
222
+ const BADGE_PAIR_GAP = 8;
223
+ /** Badge box chrome: padding 5+5 + border 1+1. */
224
+ const BADGE_BOX_CHROME = 12;
225
+ /** Approx monospace uppercase width incl. letter-spacing (~0.5px). */
226
+ const BADGE_CHAR_WIDTH = 8;
227
+ /** Estimated rendered width of a top tab badge label. */
228
+ export function estimateBadgeLabelWidth(label) {
229
+ return (label?.length ?? 0) * BADGE_CHAR_WIDTH + BADGE_BOX_CHROME;
230
+ }
231
+ /**
232
+ * Minimum node width so top badges stay on one line and (when both are
233
+ * present) don't overlap — badges are absolutely positioned, so they don't
234
+ * contribute to layout unless we widen the node explicitly.
235
+ */
236
+ export function nodeMinWidthForBadges(component) {
237
+ const left = estimateBadgeLabelWidth(constructBadgeLabel(component));
238
+ if (component.role == null) {
239
+ return Math.max(NODE_CSS_MIN_WIDTH, BADGE_EDGE_INSET + left + BADGE_EDGE_INSET);
240
+ }
241
+ const right = estimateBadgeLabelWidth(ROLE_LABEL[component.role]);
242
+ return Math.max(NODE_CSS_MIN_WIDTH, BADGE_EDGE_INSET + left + BADGE_PAIR_GAP + right + BADGE_EDGE_INSET);
243
+ }
244
+ /**
245
+ * Convert a subsystem graph document into React Flow nodes. Components that
246
+ * carry a `process` get a `parentId` pointing at their boundary group node
247
+ * (`process:<process>`); nodes without one stay top-level (outside every
248
+ * boundary). The initial grid groups by `process ?? purl` so the pre-ELK
249
+ * positions are already clustered; ELK then refines with compound layout.
250
+ */
251
+ export function convertSubsystemToNodes(doc, opts = {}) {
252
+ const { maxNodeWidth } = opts;
253
+ // Group components into boundary regions by process when authored, else by
254
+ // package. Process is runtime membership (drawn as one boundary region);
255
+ // purl is code identity — nodes without a process (external actors,
256
+ // services, libraries) fall back to purl and sit outside every boundary.
257
+ const byPkg = new Map();
258
+ for (const c of doc.components) {
259
+ const regionKey = c.process ?? c.purl;
260
+ const list = byPkg.get(regionKey) ?? [];
261
+ list.push(c);
262
+ byPkg.set(regionKey, list);
263
+ }
264
+ const nodes = [];
265
+ const COLS = 2;
266
+ const COL_W = 240;
267
+ const ROW_H = 150;
268
+ const PAD = 30;
269
+ const GROUP_GAP = 60;
270
+ let cursorY = PAD;
271
+ for (const comps of byPkg.values()) {
272
+ const rows = Math.ceil(comps.length / COLS);
273
+ const heightPx = ROW_H * rows;
274
+ comps.forEach((c, i) => {
275
+ const col = i % COLS;
276
+ const row = Math.floor(i / COLS);
277
+ // Estimate rendered node width from the longest text line so ELK reserves
278
+ // the right space (names can wrap, so we cap at the configurable max).
279
+ const text = [c.symbol, c.name, c.file?.split('/').pop() ?? '']
280
+ .filter((t) => !!t)
281
+ .sort((a, b) => b.length - a.length)[0];
282
+ const cap = maxNodeWidth ?? 300;
283
+ const textWidth = Math.min(cap, Math.max(60, (text?.length ?? 10) * 8));
284
+ // Account for CSS minWidth (incl. top badges) and padding/border so ELK's
285
+ // port positions match the actual rendered node boundaries.
286
+ const cssMinWidth = nodeMinWidthForBadges(c);
287
+ const cssPadding = 20; // horizontal padding (left + right)
288
+ const cssBorder = 4; // 2px border each side
289
+ const rawWidth = Math.max(cssMinWidth, textWidth + cssPadding + cssBorder);
290
+ const nodeWidth = Math.max(cssMinWidth, Math.min(cap, rawWidth));
291
+ const processKey = c.process?.trim();
292
+ nodes.push({
293
+ id: c.id,
294
+ type: 'subsystem-component',
295
+ ...(processKey ? { parentId: processGroupNodeId(processKey) } : {}),
296
+ position: { x: PAD + col * COL_W, y: cursorY + row * ROW_H },
297
+ width: nodeWidth,
298
+ height: 84,
299
+ data: { component: c },
300
+ });
301
+ });
302
+ cursorY += heightPx + PAD * 2 + GROUP_GAP;
303
+ }
304
+ return nodes;
305
+ }
306
+ /**
307
+ * Convert boundary regions into React Flow parent (group) nodes. One per
308
+ * distinct `process` value; member components point at these via `parentId`.
309
+ * Positions/sizes are placeholders — ELK compound layout overwrites them.
310
+ */
311
+ export function convertSubsystemToGroups(doc) {
312
+ return getSubsystemRegions(doc).map((region) => ({
313
+ id: processGroupNodeId(region.key),
314
+ type: 'subsystem-group',
315
+ position: { x: 0, y: 0 },
316
+ width: 400,
317
+ height: 300,
318
+ data: { region },
319
+ }));
320
+ }
321
+ /**
322
+ * Convert a subsystem graph document into React Flow edges. Edges whose target
323
+ * is an external label (not a component id) point at a synthetic stub so the
324
+ * relationship is visible without a member node.
325
+ */
326
+ export function convertSubsystemToEdges(doc) {
327
+ const compIds = new Set(doc.components.map((c) => c.id));
328
+ const edges = [];
329
+ for (const e of doc.edges) {
330
+ const color = MECHANISM_COLOR[e.mechanism];
331
+ const style = MECHANISM_STYLE[e.mechanism];
332
+ // If `to` is a real component, connect directly; otherwise point at a stub node.
333
+ const isExternal = !compIds.has(e.to);
334
+ const targetId = isExternal ? `external:${e.to}` : e.to;
335
+ edges.push({
336
+ id: e.id,
337
+ source: e.from,
338
+ target: targetId,
339
+ data: { mechanism: e.mechanism, refs: e.refs },
340
+ type: 'subsystem-edge',
341
+ markerEnd: { type: MarkerType.ArrowClosed, color, width: 32, height: 32 },
342
+ style: { color, stroke: color, strokeDasharray: style === 'dashed' ? '6 4' : undefined },
343
+ // `label` feeds ELK's label-space reservation only; the visible label is
344
+ // rendered by the custom SubsystemEdge as an HTML overlay.
345
+ label: e.mechanism,
346
+ // Mechanism label rendered via the custom SubsystemEdge (an HTML overlay
347
+ // above the SVG edges, so it can't be hidden behind other edge lines).
348
+ });
349
+ }
350
+ return edges;
351
+ }
352
+ /** Stable key for layout-affecting graph fields (ignores declarationRef, etc.). */
353
+ export function subsystemGraphLayoutKey(doc) {
354
+ const components = doc.components
355
+ .map(({ id, purl, name, symbol, construct, file, purpose, process }) => [id, purl, name, symbol ?? '', construct, file, purpose ?? '', process ?? ''].join('\0'))
356
+ .sort()
357
+ .join('\n');
358
+ const edgeKey = doc.edges
359
+ .map(({ id, from, to, mechanism }) => [id, from, to, mechanism].join('\0'))
360
+ .sort()
361
+ .join('\n');
362
+ return `${components}|${edgeKey}`;
363
+ }
364
+ /**
365
+ * Build the full React Flow graph (nodes + edges) using **ELK auto-layout** to
366
+ * position every node (including external stub targets), so the graph is
367
+ * layered with minimized crossings.
368
+ */
369
+ export async function buildSubsystemGraph(doc, opts = {}) {
370
+ const { maxNodeWidth, showEdgeLabels, measuredWidths, measuredHeights } = opts;
371
+ const nodes = convertSubsystemToNodes(doc, { maxNodeWidth });
372
+ const edges = convertSubsystemToEdges(doc);
373
+ // Boundary regions: one per multi-member process. Singletons get no frame —
374
+ // strip the parentId convertSubsystemToNodes stamped so React Flow never
375
+ // points at a non-existent parent.
376
+ const regions = getSubsystemRegions(doc).filter((r) => r.memberIds.length >= 2);
377
+ const regionKeys = new Set(regions.map((r) => r.key));
378
+ for (const n of nodes) {
379
+ if (n.type !== 'subsystem-component')
380
+ continue;
381
+ const proc = n.data.component?.process?.trim();
382
+ if (proc && !regionKeys.has(proc)) {
383
+ delete n.parentId;
384
+ }
385
+ }
386
+ // External edge targets that aren't real components → create stub nodes so
387
+ // cross-package edges have something to land on.
388
+ const realIds = new Set(doc.components.map((c) => c.id));
389
+ const externalIds = [];
390
+ for (const e of doc.edges) {
391
+ if (!realIds.has(e.to)) {
392
+ const extId = `external:${e.to}`;
393
+ if (!externalIds.includes(extId))
394
+ externalIds.push(extId);
395
+ }
396
+ }
397
+ for (const extId of externalIds) {
398
+ const label = extId.replace(/^external:/, '');
399
+ const extTextWidth = Math.min(300, Math.max(150, label.length * 8));
400
+ nodes.push({
401
+ id: extId,
402
+ type: 'subsystem-component',
403
+ position: { x: 0, y: 0 },
404
+ width: Math.max(150, extTextWidth + 24),
405
+ height: 60,
406
+ data: {
407
+ component: {
408
+ id: extId,
409
+ name: label,
410
+ construct: 'external',
411
+ purl: 'external',
412
+ file: '',
413
+ purpose: 'cross-package integration target (not a member node)',
414
+ },
415
+ },
416
+ draggable: false,
417
+ });
418
+ }
419
+ // Apply measured dimensions (second pass) so ELK gets the real node sizes.
420
+ if (measuredWidths && measuredWidths.size > 0) {
421
+ for (const n of nodes) {
422
+ const mw = measuredWidths.get(n.id);
423
+ if (mw)
424
+ n.width = mw;
425
+ }
426
+ }
427
+ if (measuredHeights && measuredHeights.size > 0) {
428
+ for (const n of nodes) {
429
+ const mh = measuredHeights.get(n.id);
430
+ if (mh)
431
+ n.height = mh;
432
+ }
433
+ }
434
+ // ELK auto-layout: position nodes (layered, minimized crossings) with
435
+ // process partitions as compound parents so boundaries shape the layout.
436
+ let placedNodes = nodes;
437
+ let labelPositions = new Map();
438
+ let elkPathStrings = new Map();
439
+ let elkPathPoints = new Map();
440
+ if (nodes.length > 0) {
441
+ try {
442
+ const result = await computeElkLayout(nodes, edges, {
443
+ routingStyle: 'orthogonal',
444
+ direction: 'RIGHT',
445
+ nodeSpacing: 60,
446
+ edgeSpacing: 30,
447
+ edgeNodeSpacing: 60,
448
+ interLayerSpacing: 120,
449
+ preserveNodePositions: false,
450
+ edgeLabels: showEdgeLabels === false ? { enabled: false } : { enabled: true, placement: 'CENTER' },
451
+ groups: regions.map((r) => ({
452
+ id: processGroupNodeId(r.key),
453
+ memberIds: r.memberIds,
454
+ })),
455
+ });
456
+ const groupNodes = regions.flatMap((region) => {
457
+ const bounds = result.groupBounds.get(processGroupNodeId(region.key));
458
+ if (!bounds)
459
+ return [];
460
+ const group = {
461
+ id: processGroupNodeId(region.key),
462
+ type: 'subsystem-group',
463
+ position: { x: bounds.x, y: bounds.y },
464
+ width: Math.max(200, bounds.width),
465
+ height: Math.max(160, bounds.height),
466
+ data: { region },
467
+ };
468
+ return [group];
469
+ });
470
+ // Parents first — React Flow resolves children via parentId.
471
+ placedNodes = [...groupNodes, ...result.nodes];
472
+ labelPositions = result.edgeLabelPositions;
473
+ elkPathStrings = result.edgePaths;
474
+ elkPathPoints = result.edgePathPoints;
475
+ }
476
+ catch (err) {
477
+ // Fall back to the (unpositioned) grid if ELK is unavailable.
478
+ console.warn('[subsystem-graph] ELK layout failed, using manual positions:', err);
479
+ }
480
+ }
481
+ // Stamp ELK-computed label midpoints onto edge data so the overlay can
482
+ // position labels at the actual path midpoint (not the node-center midpoint).
483
+ for (const e of edges) {
484
+ const pos = labelPositions.get(e.id);
485
+ if (pos) {
486
+ const d = e.data;
487
+ d.labelX = pos.x;
488
+ d.labelY = pos.y;
489
+ }
490
+ const elkP = elkPathStrings.get(e.id);
491
+ if (elkP) {
492
+ const d = e.data;
493
+ d.elkPath = elkP;
494
+ }
495
+ const pts = elkPathPoints.get(e.id);
496
+ if (pts && pts.length > 1) {
497
+ const d = e.data;
498
+ d.pathLength = calculatePathLength(pts);
499
+ }
500
+ }
501
+ return { nodes: placedNodes, edges, regions };
502
+ }
503
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/subsystem/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Subsystem component/group node + edge renderers.
3
+ *
4
+ * Lightweight, purpose-built for the subsystem component graph: a component
5
+ * renders its name (kind-tagged, colored by package) plus its symbol/purpose.
6
+ * Groups render as package containers. Clicking
7
+ * a component calls `onSelect` (to open the entry point / file).
8
+ */
9
+ /// <reference types="react" />
10
+ import { type Node, type NodeProps, type EdgeProps } from '@xyflow/react';
11
+ import { type SubsystemGraphNodeData, type SubsystemGroupNodeData, type SubsystemGraphEdge } from './model';
12
+ export declare const CONSTRUCT_LABEL: Record<string, string>;
13
+ export interface SubsystemGraphCallbacks {
14
+ /** Click a component — open its file/entry point. */
15
+ onSelect?: (componentId: string) => void;
16
+ /** Click the filename badge — open that component's file in the drawer
17
+ * (same path as clicking the file link in the declaration panel). */
18
+ onOpenFile?: (componentId: string) => void;
19
+ /** Click an edge (or its label) — select the relationship. */
20
+ onEdgeSelect?: (edgeId: string) => void;
21
+ /** Hover a component (null on leave) — associates it with the file tree. */
22
+ onHover?: (componentId: string | null) => void;
23
+ /** Upper bound for node width; nodes grow with content up to this, then wrap. */
24
+ maxNodeWidth?: number;
25
+ }
26
+ /** Root callbacks carried through node data (injected by the graph component). */
27
+ export declare const SUBSYSTEM_CALLBACKS: SubsystemGraphCallbacks;
28
+ export declare function SubsystemComponentNode(props: NodeProps<Node<SubsystemGraphNodeData, 'subsystem-component'>>): import("react").JSX.Element;
29
+ /**
30
+ * Process boundary frame — a React Flow parent node. Members render inside
31
+ * via `parentId`; this draws the labeled container only (no handles, no
32
+ * selection). The border color derives deterministically from the process key
33
+ * so each deployment unit reads as its own region.
34
+ */
35
+ export declare function SubsystemGroupNode(props: NodeProps<Node<SubsystemGroupNodeData, 'subsystem-group'>>): import("react").JSX.Element | null;
36
+ /** `#rrggbb` + alpha → `#rrggbbaa`. Used to dim a stroke/marker by color so
37
+ * each opacity gets its own SVG marker id — path `opacity` leaks across every
38
+ * edge that shares a `url(#marker)` (the focused edge's arrowhead dims). */
39
+ export declare function hexWithAlpha(hex: string, alpha: number): string;
40
+ /**
41
+ * File-open spotlight flag for a node. `true` = lives in the open file,
42
+ * `false` = dim, `undefined` = render neutrally.
43
+ *
44
+ * Focused-edge endpoints stay neutral when they don't live in the open file
45
+ * (the target of a focused edge must not dim with the rest).
46
+ */
47
+ export declare function fileMatchForNode(nodeFile: string | undefined, openFile: string | null, isFocusEndpoint: boolean): boolean | undefined;
48
+ /**
49
+ * Hide / dim a node or edge while flows are open.
50
+ * - not in any opened flow → hidden
51
+ * - in an opened flow, but not the selected flow/step → dimmed
52
+ * - in the selected flow or step (or opened with nothing selected) → full
53
+ */
54
+ export declare function flowElementVisibility(opts: {
55
+ inOpened: boolean;
56
+ inSelected: boolean;
57
+ anyOpened: boolean;
58
+ anySelected: boolean;
59
+ }): {
60
+ hidden: boolean;
61
+ dimmed: boolean;
62
+ };
63
+ export declare const EDGE_DIM_ALPHA = 0.15;
64
+ /** Subsystem edge — SVG path only. The mechanism label is rendered as an
65
+ * absolutely-positioned HTML overlay OUTSIDE the ReactFlow tree (by the
66
+ * parent Inner component) so it sits above the pane and receives pointer
67
+ * events. */
68
+ export declare function SubsystemEdge({ data, markerEnd, }: EdgeProps<SubsystemGraphEdge>): import("react").JSX.Element;
69
+ //# sourceMappingURL=nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/subsystem/nodes.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;;AAGH,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAUL,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACxB,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUlD,CAAC;AAgBF,MAAM,WAAW,uBAAuB;IACtC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;0EACsE;IACtE,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,8DAA8D;IAC9D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,kFAAkF;AAClF,eAAO,MAAM,mBAAmB,EAAE,uBAA4B,CAAC;AAE/D,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,CAAC,+BA6M3G;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC,sCAmDnG;AAED;;6EAE6E;AAC7E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,eAAe,EAAE,OAAO,GACvB,OAAO,GAAG,SAAS,CAKrB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAMvC;AAED,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;;cAGc;AACd,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,SAAS,GACV,EAAE,SAAS,CAAC,kBAAkB,CAAC,+BAsC/B"}