@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 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/graphify/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Graphify graph.json schema types.
3
+ *
4
+ * Mirrors the graphify data model (graphify/validate.py, graphify/export.py)
5
+ * so graphify output can be consumed by this library in a type-compatible way.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/graphify/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * React hook for ELK layout integration
3
+ *
4
+ * Provides automatic edge routing with circuit-board style paths.
5
+ */
6
+ import type { Node, Edge } from '@xyflow/react';
7
+ import { type ElkLayoutOptions } from '../utils/elkLayout';
8
+ export interface UseElkLayoutOptions extends ElkLayoutOptions {
9
+ /**
10
+ * Whether ELK layout is enabled
11
+ * @default true
12
+ */
13
+ enabled?: boolean;
14
+ /**
15
+ * Debounce delay in ms before recomputing layout
16
+ * @default 100
17
+ */
18
+ debounceMs?: number;
19
+ }
20
+ export interface UseElkLayoutResult {
21
+ /** Edge paths computed by ELK, keyed by edge ID */
22
+ edgePaths: Map<string, string>;
23
+ /** Edge label positions computed by ELK, keyed by edge ID */
24
+ edgeLabelPositions: Map<string, {
25
+ x: number;
26
+ y: number;
27
+ }>;
28
+ /** Whether layout is currently being computed */
29
+ isLayouting: boolean;
30
+ /** Any error that occurred during layout */
31
+ error: Error | null;
32
+ /** Manually trigger a layout recomputation */
33
+ recomputeLayout: () => void;
34
+ }
35
+ /**
36
+ * Hook for computing ELK layout for edges
37
+ *
38
+ * @param nodes - xyflow nodes
39
+ * @param edges - xyflow edges
40
+ * @param options - Layout options
41
+ * @returns Layout result with edge paths
42
+ *
43
+ * @example
44
+ * ```tsx
45
+ * const { edgePaths, isLayouting } = useElkLayout(nodes, edges, {
46
+ * routingStyle: 'orthogonal',
47
+ * edgeSpacing: 15,
48
+ * });
49
+ * ```
50
+ */
51
+ export declare function useElkLayout(nodes: Node[], edges: Edge[], options?: UseElkLayoutOptions): UseElkLayoutResult;
52
+ /**
53
+ * Apply ELK-computed paths to edges
54
+ *
55
+ * This utility injects the ELK path data into edge data so CustomEdge can use it.
56
+ *
57
+ * @param edges - Original edges
58
+ * @param edgePaths - ELK-computed paths
59
+ * @param edgeLabelPositions - ELK-computed label positions
60
+ * @returns Edges with ELK path data injected
61
+ */
62
+ export declare function applyElkPathsToEdges<T extends Edge>(edges: T[], edgePaths: Map<string, string>, edgeLabelPositions: Map<string, {
63
+ x: number;
64
+ y: number;
65
+ }>): T[];
66
+ //# sourceMappingURL=useElkLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useElkLayout.d.ts","sourceRoot":"","sources":["../../src/hooks/useElkLayout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,6DAA6D;IAC7D,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,iDAAiD;IACjD,WAAW,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,IAAI,EAAE,EACb,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,CAmGpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,IAAI,EACjD,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACxD,CAAC,EAAE,CAkBL"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * React hook for ELK layout integration
3
+ *
4
+ * Provides automatic edge routing with circuit-board style paths.
5
+ */
6
+ import { useState, useEffect, useCallback, useRef, useMemo } from 'react';
7
+ import { computeElkLayout } from '../utils/elkLayout';
8
+ /**
9
+ * Hook for computing ELK layout for edges
10
+ *
11
+ * @param nodes - xyflow nodes
12
+ * @param edges - xyflow edges
13
+ * @param options - Layout options
14
+ * @returns Layout result with edge paths
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * const { edgePaths, isLayouting } = useElkLayout(nodes, edges, {
19
+ * routingStyle: 'orthogonal',
20
+ * edgeSpacing: 15,
21
+ * });
22
+ * ```
23
+ */
24
+ export function useElkLayout(nodes, edges, options = {}) {
25
+ const { enabled = true, debounceMs = 100, ...layoutOptions } = options;
26
+ const [edgePaths, setEdgePaths] = useState(new Map());
27
+ const [edgeLabelPositions, setEdgeLabelPositions] = useState(new Map());
28
+ const [isLayouting, setIsLayouting] = useState(false);
29
+ const [error, setError] = useState(null);
30
+ const timeoutRef = useRef(null);
31
+ const abortRef = useRef(false);
32
+ const hasComputedRef = useRef(null);
33
+ // Create stable refs for nodes and edges
34
+ const nodesRef = useRef(nodes);
35
+ nodesRef.current = nodes;
36
+ const edgesRef = useRef(edges);
37
+ edgesRef.current = edges;
38
+ // Create a stable reference to layout options
39
+ const optionsRef = useRef(layoutOptions);
40
+ optionsRef.current = layoutOptions;
41
+ // Create a stable key based on node/edge structure
42
+ const layoutKey = useMemo(() => {
43
+ const nodeKey = nodes.map(n => `${n.id}:${n.position.x}:${n.position.y}:${n.width ?? 0}:${n.height ?? 0}`).join('|');
44
+ const edgeKey = edges.map(e => `${e.id}:${e.source}:${e.target}`).join('|');
45
+ return `${enabled}:${nodeKey}:${edgeKey}`;
46
+ }, [enabled, nodes, edges]);
47
+ // Compute layout when key changes
48
+ useEffect(() => {
49
+ // Skip if already computed for this key
50
+ if (hasComputedRef.current === layoutKey) {
51
+ return;
52
+ }
53
+ if (!enabled || nodesRef.current.length === 0) {
54
+ setEdgePaths(new Map());
55
+ setEdgeLabelPositions(new Map());
56
+ hasComputedRef.current = layoutKey;
57
+ return;
58
+ }
59
+ if (timeoutRef.current) {
60
+ clearTimeout(timeoutRef.current);
61
+ }
62
+ abortRef.current = false;
63
+ timeoutRef.current = setTimeout(async () => {
64
+ setIsLayouting(true);
65
+ setError(null);
66
+ try {
67
+ const result = await computeElkLayout(nodesRef.current, edgesRef.current, optionsRef.current);
68
+ if (abortRef.current)
69
+ return;
70
+ setEdgePaths(result.edgePaths);
71
+ setEdgeLabelPositions(result.edgeLabelPositions);
72
+ hasComputedRef.current = layoutKey;
73
+ }
74
+ catch (err) {
75
+ if (!abortRef.current) {
76
+ setError(err instanceof Error ? err : new Error(String(err)));
77
+ console.error('ELK layout error:', err);
78
+ }
79
+ }
80
+ finally {
81
+ if (!abortRef.current) {
82
+ setIsLayouting(false);
83
+ }
84
+ }
85
+ }, debounceMs);
86
+ return () => {
87
+ if (timeoutRef.current) {
88
+ clearTimeout(timeoutRef.current);
89
+ }
90
+ abortRef.current = true;
91
+ };
92
+ }, [layoutKey, enabled, debounceMs]);
93
+ const recomputeLayout = useCallback(() => {
94
+ hasComputedRef.current = null; // Force recompute
95
+ if (timeoutRef.current) {
96
+ clearTimeout(timeoutRef.current);
97
+ }
98
+ // Trigger effect by invalidating the key check
99
+ setIsLayouting(true);
100
+ }, []);
101
+ return {
102
+ edgePaths,
103
+ edgeLabelPositions,
104
+ isLayouting,
105
+ error,
106
+ recomputeLayout,
107
+ };
108
+ }
109
+ /**
110
+ * Apply ELK-computed paths to edges
111
+ *
112
+ * This utility injects the ELK path data into edge data so CustomEdge can use it.
113
+ *
114
+ * @param edges - Original edges
115
+ * @param edgePaths - ELK-computed paths
116
+ * @param edgeLabelPositions - ELK-computed label positions
117
+ * @returns Edges with ELK path data injected
118
+ */
119
+ export function applyElkPathsToEdges(edges, edgePaths, edgeLabelPositions) {
120
+ return edges.map((edge) => {
121
+ const elkPath = edgePaths.get(edge.id);
122
+ const elkLabelPosition = edgeLabelPositions.get(edge.id);
123
+ if (elkPath) {
124
+ return {
125
+ ...edge,
126
+ data: {
127
+ ...edge.data,
128
+ elkPath,
129
+ elkLabelPosition,
130
+ },
131
+ };
132
+ }
133
+ return edge;
134
+ });
135
+ }
136
+ //# sourceMappingURL=useElkLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useElkLayout.js","sourceRoot":"","sources":["../../src/hooks/useElkLayout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Hook for processing path-based events and mapping them to animations
3
+ *
4
+ * Handles ComponentActivityEvent and ComponentActionEvent from
5
+ * PathBasedEventProcessor (Milestone 1 & 2)
6
+ */
7
+ import type { PathBasedEvent } from '@principal-ai/subsystems-core';
8
+ import { type NodeAnimation, type EdgeAnimation } from '../utils/animationMapping';
9
+ /**
10
+ * Animation update callbacks
11
+ */
12
+ export interface AnimationCallbacks {
13
+ onNodeAnimation: (nodeId: string, animation: NodeAnimation & {
14
+ timestamp: number;
15
+ }) => void;
16
+ onEdgeAnimation: (edgeId: string, animation: EdgeAnimation & {
17
+ timestamp: number;
18
+ }) => void;
19
+ }
20
+ /**
21
+ * Hook options
22
+ */
23
+ export interface UsePathBasedEventsOptions {
24
+ /** Path-based events to process */
25
+ events: PathBasedEvent[];
26
+ /** Callbacks for triggering animations */
27
+ callbacks: AnimationCallbacks;
28
+ /** Optional callback when event is processed */
29
+ onEventProcessed?: (event: PathBasedEvent) => void;
30
+ /** Minimum log level to trigger animations (default: 'info') */
31
+ minLogLevel?: 'debug' | 'info' | 'warn' | 'error';
32
+ }
33
+ /**
34
+ * Process path-based events and trigger appropriate animations
35
+ */
36
+ export declare function usePathBasedEvents({ events, callbacks, onEventProcessed, minLogLevel, }: UsePathBasedEventsOptions): void;
37
+ /**
38
+ * Process a batch of path-based events
39
+ * Useful for processing historical logs or bulk updates
40
+ */
41
+ export declare function processBatchEvents(events: PathBasedEvent[], callbacks: AnimationCallbacks, minLogLevel?: 'debug' | 'info' | 'warn' | 'error'): void;
42
+ //# sourceMappingURL=usePathBasedEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePathBasedEvents.d.ts","sourceRoot":"","sources":["../../src/hooks/usePathBasedEvents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAIV,cAAc,EACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5F,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC7F;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,mCAAmC;IACnC,MAAM,EAAE,cAAc,EAAE,CAAC;IAEzB,0CAA0C;IAC1C,SAAS,EAAE,kBAAkB,CAAC;IAE9B,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAEnD,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACnD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,WAAoB,GACrB,EAAE,yBAAyB,GAAG,IAAI,CAqFlC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EAAE,EACxB,SAAS,EAAE,kBAAkB,EAC7B,WAAW,GAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAgB,GACxD,IAAI,CAyCN"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Hook for processing path-based events and mapping them to animations
3
+ *
4
+ * Handles ComponentActivityEvent and ComponentActionEvent from
5
+ * PathBasedEventProcessor (Milestone 1 & 2)
6
+ */
7
+ import { useEffect, useCallback } from 'react';
8
+ import { logLevelToNodeAnimation, actionToNodeAnimation, actionToEdgeAnimation, } from '../utils/animationMapping';
9
+ /**
10
+ * Process path-based events and trigger appropriate animations
11
+ */
12
+ export function usePathBasedEvents({ events, callbacks, onEventProcessed, minLogLevel = 'info', }) {
13
+ const { onNodeAnimation, onEdgeAnimation } = callbacks;
14
+ // Process component activity events (Milestone 1)
15
+ const processActivityEvent = useCallback((event) => {
16
+ // Map log level to animation
17
+ const animation = logLevelToNodeAnimation(event.level);
18
+ // Trigger node animation
19
+ onNodeAnimation(event.componentId, {
20
+ ...animation,
21
+ timestamp: event.timestamp,
22
+ });
23
+ onEventProcessed?.(event);
24
+ }, [onNodeAnimation, onEventProcessed]);
25
+ // Process component action events (Milestone 2)
26
+ const processActionEvent = useCallback((event) => {
27
+ // Map action/state to animation
28
+ const animation = actionToNodeAnimation(event.action, event.state);
29
+ // Trigger node animation
30
+ onNodeAnimation(event.componentId, {
31
+ ...animation,
32
+ timestamp: event.timestamp,
33
+ });
34
+ onEventProcessed?.(event);
35
+ }, [onNodeAnimation, onEventProcessed]);
36
+ // Process edge animation events (Milestone 2)
37
+ const processEdgeAnimationEvent = useCallback((event) => {
38
+ const animation = actionToEdgeAnimation(event.triggeredBy?.action || 'unknown', {
39
+ type: event.animation,
40
+ duration: event.duration,
41
+ direction: event.direction,
42
+ });
43
+ onEdgeAnimation(event.edgeId, {
44
+ ...animation,
45
+ timestamp: event.timestamp,
46
+ });
47
+ onEventProcessed?.(event);
48
+ }, [onEdgeAnimation, onEventProcessed]);
49
+ // Process events when they change
50
+ useEffect(() => {
51
+ if (events.length === 0)
52
+ return;
53
+ // Process the latest event
54
+ const latestEvent = events[events.length - 1];
55
+ switch (latestEvent.type) {
56
+ case 'component-activity': {
57
+ // Milestone 1: Component activity from log
58
+ // Check if log level is high enough to trigger animation
59
+ const levels = ['debug', 'info', 'warn', 'error'];
60
+ if (levels.indexOf(latestEvent.level) >= levels.indexOf(minLogLevel)) {
61
+ processActivityEvent(latestEvent);
62
+ }
63
+ break;
64
+ }
65
+ case 'component-action':
66
+ // Milestone 2: Specific action from pattern match
67
+ processActionEvent(latestEvent);
68
+ break;
69
+ case 'edge-animation':
70
+ // Milestone 2: Edge activation from action trigger
71
+ processEdgeAnimationEvent(latestEvent);
72
+ break;
73
+ }
74
+ }, [events, processActivityEvent, processActionEvent, processEdgeAnimationEvent, minLogLevel]);
75
+ }
76
+ /**
77
+ * Process a batch of path-based events
78
+ * Useful for processing historical logs or bulk updates
79
+ */
80
+ export function processBatchEvents(events, callbacks, minLogLevel = 'info') {
81
+ const levels = ['debug', 'info', 'warn', 'error'];
82
+ const minLevelIndex = levels.indexOf(minLogLevel);
83
+ for (const event of events) {
84
+ switch (event.type) {
85
+ case 'component-activity':
86
+ if (levels.indexOf(event.level) >= minLevelIndex) {
87
+ const animation = logLevelToNodeAnimation(event.level);
88
+ callbacks.onNodeAnimation(event.componentId, {
89
+ ...animation,
90
+ timestamp: event.timestamp,
91
+ });
92
+ }
93
+ break;
94
+ case 'component-action':
95
+ {
96
+ const animation = actionToNodeAnimation(event.action, event.state);
97
+ callbacks.onNodeAnimation(event.componentId, {
98
+ ...animation,
99
+ timestamp: event.timestamp,
100
+ });
101
+ }
102
+ break;
103
+ case 'edge-animation':
104
+ {
105
+ const animation = actionToEdgeAnimation(event.triggeredBy?.action || 'unknown', {
106
+ type: event.animation,
107
+ duration: event.duration,
108
+ direction: event.direction,
109
+ });
110
+ callbacks.onEdgeAnimation(event.edgeId, {
111
+ ...animation,
112
+ timestamp: event.timestamp,
113
+ });
114
+ }
115
+ break;
116
+ }
117
+ }
118
+ }
119
+ //# sourceMappingURL=usePathBasedEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePathBasedEvents.js","sourceRoot":"","sources":["../../src/hooks/usePathBasedEvents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * React hook for sequence diagram layout
3
+ *
4
+ * Computes swimlane-based positioning for events. Lanes default to the first
5
+ * dotted segment of each event name. Callers can drill deeper by passing
6
+ * `openedNamespaces`: any prefix listed there has its events pushed one level
7
+ * deeper, so its children appear as their own lanes instead of being grouped
8
+ * under the parent.
9
+ */
10
+ import type { Node, Edge } from '@xyflow/react';
11
+ /**
12
+ * Input event for sequence layout
13
+ */
14
+ export interface SequenceEvent {
15
+ /** Unique event identifier */
16
+ id: string;
17
+ /** Event name with namespace (e.g., "auth.validation.started") */
18
+ name: string;
19
+ /** Optional display label (defaults to name) */
20
+ label?: string;
21
+ /** Optional event type for styling */
22
+ type?: string;
23
+ /** Whether this is a move event (crosses participant boundaries) */
24
+ moveEvent?: boolean;
25
+ /** Participant this event belongs to (for move events, this is the target) */
26
+ participant?: string;
27
+ /**
28
+ * Optional source-file path this event originated from, expressed
29
+ * relative to the repository root (e.g.
30
+ * `auth-server/src/lib/auth-provider.ts`). Surfaced on the React Flow
31
+ * node `data` so downstream renderers (file-city overlays, jump-to-source,
32
+ * IDE bridges) can react to selection without reaching into `data`.
33
+ */
34
+ sourcePath?: string;
35
+ /** Additional data to pass through to the node */
36
+ data?: Record<string, unknown>;
37
+ }
38
+ /**
39
+ * Input edge for sequence layout
40
+ */
41
+ export interface SequenceEdge {
42
+ /** Unique edge identifier */
43
+ id: string;
44
+ /** Source event ID */
45
+ fromEvent: string;
46
+ /** Target event ID */
47
+ toEvent: string;
48
+ /** Optional edge label */
49
+ label?: string;
50
+ /** Optional edge type for styling */
51
+ type?: string;
52
+ }
53
+ /**
54
+ * Swimlane information computed from events
55
+ */
56
+ export interface Swimlane {
57
+ /** Namespace identifier for this lane */
58
+ namespace: string;
59
+ /** Display label for the lane header (last segment of the namespace) */
60
+ label: string;
61
+ /** X position of the lane center */
62
+ x: number;
63
+ /** Parent namespace (one segment shallower), if any */
64
+ parentNamespace?: string;
65
+ /** Whether this lane's namespace is in `openedNamespaces` (its events have been drilled deeper) */
66
+ isOpened: boolean;
67
+ /** Whether the immediate parent namespace is opened (this lane only exists because its parent was drilled into) */
68
+ isParentOpened: boolean;
69
+ /** Whether any event extends strictly past this lane's namespace (so opening would split it further) */
70
+ canExpand: boolean;
71
+ /** Events directly assigned to this lane */
72
+ eventIds: string[];
73
+ }
74
+ /**
75
+ * Options for sequence layout
76
+ */
77
+ export interface UseSequenceLayoutOptions {
78
+ /**
79
+ * Namespace prefixes whose events should be drilled one segment deeper.
80
+ * Pass an array or a Set. Each entry is a dotted prefix (e.g. `auth` or
81
+ * `auth.user`). When listed, events under that prefix land in lanes one
82
+ * level deeper than the prefix, instead of all sharing the prefix lane.
83
+ * Drilling is recursive: list both `auth` and `auth.user` to drill twice.
84
+ */
85
+ openedNamespaces?: string[] | Set<string>;
86
+ /**
87
+ * Explicit left-to-right order for lanes, by resolved namespace. Listed
88
+ * namespaces are placed first in the given order; any lanes not present in
89
+ * the list fall back to first-event order (the order in which their first
90
+ * event appears in `events`). Unknown entries are ignored.
91
+ */
92
+ laneOrder?: string[];
93
+ /**
94
+ * Width of each swimlane
95
+ * @default 250
96
+ */
97
+ laneWidth?: number;
98
+ /**
99
+ * Gap between swimlanes
100
+ * @default 10
101
+ */
102
+ laneGap?: number;
103
+ /**
104
+ * Vertical spacing between events
105
+ * @default 80
106
+ */
107
+ eventSpacing?: number;
108
+ /**
109
+ * Height reserved for lane headers
110
+ * @default 60
111
+ */
112
+ headerHeight?: number;
113
+ /**
114
+ * Node marker width
115
+ * @default 14
116
+ */
117
+ nodeWidth?: number;
118
+ /**
119
+ * Node marker height
120
+ * @default 14
121
+ */
122
+ nodeHeight?: number;
123
+ }
124
+ /**
125
+ * A header cell for an opened ancestor namespace, sitting above the leaf
126
+ * lanes it groups. Rendered as a row in the header strip.
127
+ */
128
+ export interface ParentHeader {
129
+ /** Full ancestor namespace (always in `openedNamespaces`) */
130
+ namespace: string;
131
+ /** Last segment, for display */
132
+ label: string;
133
+ /** Center x of the cell */
134
+ x: number;
135
+ /** Total span width across the leaf lanes underneath */
136
+ width: number;
137
+ /** 1-based depth in the header strip (1 = topmost row) */
138
+ depth: number;
139
+ }
140
+ /**
141
+ * Result from sequence layout computation
142
+ */
143
+ export interface UseSequenceLayoutResult {
144
+ /** Positioned nodes for React Flow */
145
+ nodes: Node[];
146
+ /** Edges for React Flow */
147
+ edges: Edge[];
148
+ /** Leaf swimlanes — each gets a lifeline and a leaf header row */
149
+ swimlanes: Swimlane[];
150
+ /**
151
+ * Header cells for opened ancestor namespaces. Stack above the leaf
152
+ * headers; depth 1 sits at the top of the header strip.
153
+ */
154
+ parentHeaders: ParentHeader[];
155
+ /** Number of header rows (= max leaf depth). At least 1. */
156
+ headerRows: number;
157
+ /** Total width of the diagram */
158
+ totalWidth: number;
159
+ /** Total height of the diagram */
160
+ totalHeight: number;
161
+ }
162
+ /**
163
+ * useSequenceLayout
164
+ *
165
+ * @param events - Events to lay out
166
+ * @param sequenceEdges - Edges connecting events
167
+ * @param options - Layout options (lane sizing, openedNamespaces)
168
+ *
169
+ * @example
170
+ * ```tsx
171
+ * const { nodes, edges, swimlanes } = useSequenceLayout(
172
+ * [
173
+ * { id: '1', name: 'auth.validation.started' },
174
+ * { id: '2', name: 'auth.validation.completed' },
175
+ * { id: '3', name: 'database.query.executed' },
176
+ * ],
177
+ * [
178
+ * { id: 'e1', fromEvent: '1', toEvent: '2' },
179
+ * { id: 'e2', fromEvent: '2', toEvent: '3' },
180
+ * ],
181
+ * { openedNamespaces: ['auth'] }, // drill `auth` to show validation/token as separate lanes
182
+ * );
183
+ * ```
184
+ */
185
+ export declare function useSequenceLayout(events: SequenceEvent[], sequenceEdges: SequenceEdge[], options?: UseSequenceLayoutOptions): UseSequenceLayoutResult;
186
+ //# sourceMappingURL=useSequenceLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSequenceLayout.d.ts","sourceRoot":"","sources":["../../src/hooks/useSequenceLayout.ts"],"names":[],"mappings":"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"}